@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
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.items = exports.thumbnailMaxSizeIsNotExceeded = exports.deploymentMaxSizeExcludingThumbnailIsNotExceeded = void 0;
6
+ exports.createItemsValidateFn = exports.createThumbnailMaxSizeIsNotExceededValidateFn = exports.createDeploymentMaxSizeExcludingThumbnailIsNotExceededValidateFn = void 0;
7
7
  const schemas_1 = require("@dcl/schemas");
8
8
  const sharp_1 = __importDefault(require("sharp"));
9
9
  const __1 = require("..");
@@ -11,68 +11,83 @@ const types_1 = require("../../types");
11
11
  const ADR51_1 = require("../ADR51");
12
12
  const validations_1 = require("../validations");
13
13
  /** Validate item files size, excluding thumbnail, is less than expected */
14
- async function deploymentMaxSizeExcludingThumbnailIsNotExceeded(components, deployment) {
15
- const entity = deployment.entity;
16
- const maxSizeInMB = ADR51_1.entityParameters[entity.type]?.maxSizeInMB;
17
- if (!maxSizeInMB)
18
- return (0, types_1.validationFailed)(`Type ${entity.type} is not supported yet`);
19
- const modelSizeInMB = maxSizeInMB - maxThumbnailSizeInB / 1024;
20
- const metadata = entity.metadata;
21
- const thumbnailHash = entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
22
- if (!thumbnailHash)
23
- return (0, types_1.validationFailed)("Couldn't find the thumbnail hash");
24
- const totalDeploymentSizeInB = await (0, __1.calculateDeploymentSize)(deployment, components.externalCalls);
25
- if (typeof totalDeploymentSizeInB === 'string')
26
- return (0, types_1.validationFailed)(totalDeploymentSizeInB);
27
- const thumbnailSize = deployment.files.get(thumbnailHash)?.byteLength ?? 0;
28
- const modelSize = totalDeploymentSizeInB - thumbnailSize;
29
- if (modelSize > modelSizeInMB * 1024 * 1024)
30
- return (0, types_1.validationFailed)(`The deployment is too big. The maximum allowed size for ${entity.type} model files is ${modelSizeInMB} MB. You can upload up to ${modelSizeInMB * 1024 * 1024} bytes but you tried to upload ${modelSize}.`);
31
- return types_1.OK;
14
+ function createDeploymentMaxSizeExcludingThumbnailIsNotExceededValidateFn(components) {
15
+ async function validateFn(deployment) {
16
+ const entity = deployment.entity;
17
+ const maxSizeInMB = ADR51_1.entityParameters[entity.type]?.maxSizeInMB;
18
+ if (!maxSizeInMB) {
19
+ return (0, types_1.validationFailed)(`Type ${entity.type} is not supported yet`);
20
+ }
21
+ const modelSizeInMB = maxSizeInMB - maxThumbnailSizeInB / 1024;
22
+ const metadata = entity.metadata;
23
+ const thumbnailHash = entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
24
+ if (!thumbnailHash) {
25
+ return (0, types_1.validationFailed)("Couldn't find the thumbnail hash");
26
+ }
27
+ const totalDeploymentSizeInB = await (0, __1.calculateDeploymentSize)(deployment, components.externalCalls);
28
+ if (typeof totalDeploymentSizeInB === 'string')
29
+ return (0, types_1.validationFailed)(totalDeploymentSizeInB);
30
+ const thumbnailSize = deployment.files.get(thumbnailHash)?.byteLength ?? 0;
31
+ const modelSize = totalDeploymentSizeInB - thumbnailSize;
32
+ if (modelSize > modelSizeInMB * 1024 * 1024)
33
+ return (0, types_1.validationFailed)(`The deployment is too big. The maximum allowed size for ${entity.type} model files is ${modelSizeInMB} MB. You can upload up to ${modelSizeInMB * 1024 * 1024} bytes but you tried to upload ${modelSize}.`);
34
+ return types_1.OK;
35
+ }
36
+ return (0, validations_1.validateAfterADR45)(validateFn);
32
37
  }
33
- exports.deploymentMaxSizeExcludingThumbnailIsNotExceeded = deploymentMaxSizeExcludingThumbnailIsNotExceeded;
38
+ exports.createDeploymentMaxSizeExcludingThumbnailIsNotExceededValidateFn = createDeploymentMaxSizeExcludingThumbnailIsNotExceededValidateFn;
34
39
  /** Validate that given item deployment includes a thumbnail with valid format and size */
35
40
  const maxThumbnailSizeInB = 1024;
36
- async function thumbnailMaxSizeIsNotExceeded(components, deployment) {
41
+ function createThumbnailMaxSizeIsNotExceededValidateFn(components) {
37
42
  const { externalCalls, logs } = components;
38
- const logger = logs.getLogger(`${deployment.entity.type} validator`);
39
- // read thumbnail field from metadata
40
- const metadata = deployment.entity.metadata;
41
- const hash = deployment.entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
42
- if (!hash)
43
- return (0, types_1.validationFailed)(`Couldn't find hash for thumbnail file with name: ${metadata.thumbnail}`);
44
- const errors = [];
45
- // check size
46
- const thumbnailBuffer = deployment.files.get(hash);
47
- if (!thumbnailBuffer) {
48
- const isHashStored = (await externalCalls.isContentStoredAlready([hash])).get(hash) ?? false;
49
- if (!isHashStored) {
50
- return (0, types_1.validationFailed)(`Couldn't find thumbnail file with hash: ${hash}`);
43
+ const logger = logs.getLogger('thumbnail size validator');
44
+ async function validateFn(deployment) {
45
+ // read thumbnail field from metadata
46
+ const metadata = deployment.entity.metadata;
47
+ const hash = deployment.entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
48
+ if (!hash) {
49
+ return (0, types_1.validationFailed)(`Couldn't find hash for thumbnail file with name: ${metadata.thumbnail}`);
51
50
  }
52
- // otherwise, thumbnail was already uploaded and won't be validated again
53
- logger.debug(`Thumbnail file with hash: ${hash} is not in the deployment, but it is already stored`);
54
- return types_1.OK;
55
- }
56
- try {
57
- const { width, height, format } = await (0, sharp_1.default)(thumbnailBuffer).metadata();
58
- if (!format || format !== 'png')
59
- errors.push(`Invalid or unknown image format. Only 'PNG' format is accepted.`);
60
- if (!width || !height) {
61
- errors.push(`Couldn't validate thumbnail size for file ${metadata.thumbnail}`);
51
+ const errors = [];
52
+ // check size
53
+ const thumbnailBuffer = deployment.files.get(hash);
54
+ if (!thumbnailBuffer) {
55
+ const isHashStored = (await externalCalls.isContentStoredAlready([hash])).get(hash) ?? false;
56
+ if (!isHashStored) {
57
+ return (0, types_1.validationFailed)(`Couldn't find thumbnail file with hash: ${hash}`);
58
+ }
59
+ // otherwise, thumbnail was already uploaded and won't be validated again
60
+ logger.debug(`Thumbnail file with hash: ${hash} is not in the deployment, but it is already stored`, {
61
+ type: deployment.entity.type
62
+ });
63
+ return types_1.OK;
62
64
  }
63
- else if (width > maxThumbnailSizeInB || height > maxThumbnailSizeInB) {
64
- errors.push(`Invalid thumbnail image size (width = ${width} / height = ${height})`);
65
+ try {
66
+ const { width, height, format } = await (0, sharp_1.default)(thumbnailBuffer).metadata();
67
+ if (!format || format !== 'png') {
68
+ errors.push(`Invalid or unknown image format. Only 'PNG' format is accepted.`);
69
+ }
70
+ if (!width || !height) {
71
+ errors.push(`Couldn't validate thumbnail size for file ${metadata.thumbnail}`);
72
+ }
73
+ else if (width > maxThumbnailSizeInB || height > maxThumbnailSizeInB) {
74
+ errors.push(`Invalid thumbnail image size (width = ${width} / height = ${height})`);
75
+ }
65
76
  }
77
+ catch (e) {
78
+ errors.push(`Couldn't parse thumbnail, please check image format.`);
79
+ }
80
+ return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
66
81
  }
67
- catch (e) {
68
- errors.push(`Couldn't parse thumbnail, please check image format.`);
69
- }
70
- return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
82
+ return (0, validations_1.validateAfterADR45)(validateFn);
71
83
  }
72
- exports.thumbnailMaxSizeIsNotExceeded = thumbnailMaxSizeIsNotExceeded;
84
+ exports.createThumbnailMaxSizeIsNotExceededValidateFn = createThumbnailMaxSizeIsNotExceededValidateFn;
73
85
  /**
74
86
  * Validate that given item deployment includes the thumbnail and doesn't exceed file sizes
75
87
  * * @public
76
88
  */
77
- exports.items = (0, validations_1.validateIfConditionMet)((deployment) => deployment.entity.type === schemas_1.EntityType.WEARABLE || deployment.entity.type === schemas_1.EntityType.EMOTE, (0, validations_1.validateAfterADR45)((0, validations_1.validateAll)(thumbnailMaxSizeIsNotExceeded, deploymentMaxSizeExcludingThumbnailIsNotExceeded)));
89
+ function createItemsValidateFn(components) {
90
+ return (0, validations_1.validateIfConditionMet)((deployment) => deployment.entity.type === schemas_1.EntityType.WEARABLE || deployment.entity.type === schemas_1.EntityType.EMOTE, (0, validations_1.validateAll)(createThumbnailMaxSizeIsNotExceededValidateFn(components), createDeploymentMaxSizeExcludingThumbnailIsNotExceededValidateFn(components)));
91
+ }
92
+ exports.createItemsValidateFn = createItemsValidateFn;
78
93
  //# sourceMappingURL=items.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"items.js","sourceRoot":"","sources":["../../../src/validations/items/items.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"items.js","sourceRoot":"","sources":["../../../src/validations/items/items.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { DeploymentToValidate } from '../..';
2
- import { ContentValidatorComponents, ValidateFn } from '../../types';
2
+ import { ValidationResponse } from '../../types';
3
3
  /** Validate wearable representations are referencing valid content */
4
- export declare function wearableRepresentationContent(components: ContentValidatorComponents, deployment: DeploymentToValidate): Promise<import("../..").ValidationResponse>;
4
+ export declare function wearableRepresentationContentValidateFn(deployment: DeploymentToValidate): Promise<ValidationResponse>;
5
5
  /**
6
6
  * Validate that given wearable deployment includes the thumbnail and doesn't exceed file sizes
7
7
  * * @public
8
8
  */
9
- export declare const wearable: ValidateFn;
9
+ export declare const wearableValidateFn: import("../..").ValidateFn;
10
10
  //# sourceMappingURL=wearables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wearables.d.ts","sourceRoot":"","sources":["../../../src/validations/items/wearables.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAE,0BAA0B,EAAM,UAAU,EAAoB,MAAM,aAAa,CAAA;AAG1F,sEAAsE;AACtE,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,0BAA0B,EACtC,UAAU,EAAE,oBAAoB,+CAgBjC;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,UAAsF,CAAA"}
1
+ {"version":3,"file":"wearables.d.ts","sourceRoot":"","sources":["../../../src/validations/items/wearables.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAwB,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGtE,sEAAsE;AACtE,wBAAsB,uCAAuC,CAC3D,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAe7B;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,4BAAsF,CAAA"}
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wearable = exports.wearableRepresentationContent = void 0;
3
+ exports.wearableValidateFn = exports.wearableRepresentationContentValidateFn = void 0;
4
4
  const schemas_1 = require("@dcl/schemas");
5
5
  const types_1 = require("../../types");
6
6
  const validations_1 = require("../validations");
7
7
  /** Validate wearable representations are referencing valid content */
8
- async function wearableRepresentationContent(components, deployment) {
8
+ async function wearableRepresentationContentValidateFn(deployment) {
9
9
  const { entity } = deployment;
10
10
  const wearableMetadata = entity.metadata;
11
11
  const representations = wearableMetadata?.data?.representations;
@@ -22,10 +22,10 @@ async function wearableRepresentationContent(components, deployment) {
22
22
  }
23
23
  return types_1.OK;
24
24
  }
25
- exports.wearableRepresentationContent = wearableRepresentationContent;
25
+ exports.wearableRepresentationContentValidateFn = wearableRepresentationContentValidateFn;
26
26
  /**
27
27
  * Validate that given wearable deployment includes the thumbnail and doesn't exceed file sizes
28
28
  * * @public
29
29
  */
30
- exports.wearable = (0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.WEARABLE, wearableRepresentationContent);
30
+ exports.wearableValidateFn = (0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.WEARABLE, wearableRepresentationContentValidateFn);
31
31
  //# sourceMappingURL=wearables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wearables.js","sourceRoot":"","sources":["../../../src/validations/items/wearables.ts"],"names":[],"mappings":";;;AAAA,0CAAmD;AAEnD,uCAA0F;AAC1F,gDAAsD;AAEtD,sEAAsE;AAC/D,KAAK,UAAU,6BAA6B,CACjD,UAAsC,EACtC,UAAgC;IAEhC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;IAC7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAoB,CAAA;IACpD,MAAM,eAAe,GAAG,gBAAgB,EAAE,IAAI,EAAE,eAAe,CAAA;IAC/D,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAA,wBAAgB,EAAC,mCAAmC,CAAC,CAAA;IAClH,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAA,wBAAgB,EAAC,kBAAkB,CAAC,CAAA;IAE/F,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;QAC5C,KAAK,MAAM,qBAAqB,IAAI,cAAc,CAAC,QAAQ,EAAE;YAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,qBAAqB,CAAC,EAAE;gBAC7E,OAAO,IAAA,wBAAgB,EAAC,4BAA4B,qBAAqB,mCAAmC,CAAC,CAAA;aAC9G;SACF;KACF;IACD,OAAO,UAAE,CAAA;AACX,CAAC;AAlBD,sEAkBC;AAED;;;GAGG;AACU,QAAA,QAAQ,GAAe,IAAA,mCAAqB,EAAC,oBAAU,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAA"}
1
+ {"version":3,"file":"wearables.js","sourceRoot":"","sources":["../../../src/validations/items/wearables.ts"],"names":[],"mappings":";;;AAAA,0CAAmD;AAEnD,uCAAsE;AACtE,gDAAsD;AAEtD,sEAAsE;AAC/D,KAAK,UAAU,uCAAuC,CAC3D,UAAgC;IAEhC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;IAC7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAoB,CAAA;IACpD,MAAM,eAAe,GAAG,gBAAgB,EAAE,IAAI,EAAE,eAAe,CAAA;IAC/D,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAA,wBAAgB,EAAC,mCAAmC,CAAC,CAAA;IAClH,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAA,wBAAgB,EAAC,kBAAkB,CAAC,CAAA;IAE/F,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;QAC5C,KAAK,MAAM,qBAAqB,IAAI,cAAc,CAAC,QAAQ,EAAE;YAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,qBAAqB,CAAC,EAAE;gBAC7E,OAAO,IAAA,wBAAgB,EAAC,4BAA4B,qBAAqB,mCAAmC,CAAC,CAAA;aAC9G;SACF;KACF;IACD,OAAO,UAAE,CAAA;AACX,CAAC;AAjBD,0FAiBC;AAED;;;GAGG;AACU,QAAA,kBAAkB,GAAG,IAAA,mCAAqB,EAAC,oBAAU,CAAC,QAAQ,EAAE,uCAAuC,CAAC,CAAA"}
@@ -1,3 +1,12 @@
1
1
  import { ValidateFn } from '../types';
2
- export declare const metadata: ValidateFn;
2
+ /**
3
+ * Validate entities metadata against its corresponding schema
4
+ * @public
5
+ */
6
+ export declare const metadataSchemaValidateFn: ValidateFn;
7
+ /**
8
+ * This validation is being ran only for emotes currently
9
+ */
10
+ export declare const metadataVersionIsCorrectForTimestampValidateFn: ValidateFn;
11
+ export declare const metadataValidateFn: ValidateFn;
3
12
  //# sourceMappingURL=metadata-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-schema.d.ts","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,UAAU,EAAoB,MAAM,UAAU,CAAA;AA0D7G,eAAO,MAAM,QAAQ,EAAE,UAGtB,CAAA"}
1
+ {"version":3,"file":"metadata-schema.d.ts","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,UAAU,EAAwC,MAAM,UAAU,CAAA;AAKrG;;;GAGG;AAEH,eAAO,MAAM,wBAAwB,YAUnC,CAAA;AA2BF;;GAEG;AACH,eAAO,MAAM,8CAA8C,YAW1D,CAAA;AAED,eAAO,MAAM,kBAAkB,YAAwF,CAAA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.metadata = void 0;
3
+ exports.metadataValidateFn = exports.metadataVersionIsCorrectForTimestampValidateFn = exports.metadataSchemaValidateFn = void 0;
4
4
  const schemas_1 = require("@dcl/schemas");
5
5
  const types_1 = require("../types");
6
6
  const ADR51_1 = require("./ADR51");
@@ -10,7 +10,7 @@ const validations_1 = require("./validations");
10
10
  * Validate entities metadata against its corresponding schema
11
11
  * @public
12
12
  */
13
- function metadataSchemaIsValid(components, deployment) {
13
+ exports.metadataSchemaValidateFn = (0, validations_1.validateAfterADR45)(async function validateFn(deployment) {
14
14
  const { type, metadata } = deployment.entity;
15
15
  const validator = ADR51_1.entityParameters[type].validate;
16
16
  if (validator(metadata)) {
@@ -18,7 +18,7 @@ function metadataSchemaIsValid(components, deployment) {
18
18
  }
19
19
  const errors = validator.errors?.map(($) => '' + $.message) || [];
20
20
  return (0, types_1.validationFailed)(`The metadata for this entity type (${deployment.entity.type}) is not valid.`, ...errors);
21
- }
21
+ });
22
22
  /**
23
23
  * This map contains one ADR timeline per entity type. In a timeline, each element has
24
24
  * a number and a timestamp. The number corresponds to the number of an ADR and the timestamp
@@ -35,16 +35,19 @@ const ADRMetadataVersionTimelines = {
35
35
  wearable: [],
36
36
  store: []
37
37
  };
38
+ function validateIfEmote(validateFn) {
39
+ return (0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.EMOTE, validateFn);
40
+ }
38
41
  /**
39
42
  * This validation is being ran only for emotes currently
40
43
  */
41
- function metadataVersionIsCorrectForTimestamp(components, deployment) {
44
+ exports.metadataVersionIsCorrectForTimestampValidateFn = validateIfEmote((0, validations_1.validateAfterADR74)(async function validateFn(deployment) {
42
45
  const entity = deployment.entity;
43
46
  const adrNumber = ADRMetadataVersionTimelines[entity.type].find((v) => v.timestamp < entity.timestamp)?.number;
44
47
  const expectedDataField = `${entity.type}DataADR${adrNumber}`;
45
48
  return `${expectedDataField}` in deployment.entity.metadata
46
49
  ? types_1.OK
47
50
  : (0, types_1.validationFailed)(`'emoteData' field version is incorrect. It must be: '${expectedDataField} but it is: ${deployment.entity.metadata} `);
48
- }
49
- exports.metadata = (0, validations_1.validateAll)((0, validations_1.validateAfterADR45)(metadataSchemaIsValid), (0, validations_1.validateAfterADR74)((0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.EMOTE, metadataVersionIsCorrectForTimestamp)));
51
+ }));
52
+ exports.metadataValidateFn = (0, validations_1.validateAll)(exports.metadataSchemaValidateFn, exports.metadataVersionIsCorrectForTimestampValidateFn);
50
53
  //# sourceMappingURL=metadata-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-schema.js","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AACzC,oCAA6G;AAC7G,mCAA0C;AAC1C,6CAA+C;AAC/C,+CAA0G;AAE1G;;;GAGG;AACH,SAAS,qBAAqB,CAAC,UAAsC,EAAE,UAAgC;IACrG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,MAAM,CAAA;IAC5C,MAAM,SAAS,GAAG,wBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAA;IACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;QACvB,OAAO,UAAE,CAAA;KACV;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IACjE,OAAO,IAAA,wBAAgB,EAAC,sCAAsC,UAAU,CAAC,MAAM,CAAC,IAAI,iBAAiB,EAAE,GAAG,MAAM,CAAC,CAAA;AACnH,CAAC;AAOD;;;;;;;;GAQG;AACH,MAAM,2BAA2B,GAA8B;IAC7D,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,6BAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;IAClG,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,EAAE;CACV,CAAA;AAED;;GAEG;AACH,SAAS,oCAAoC,CAC3C,UAAsC,EACtC,UAAgC;IAEhC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAChC,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC9G,MAAM,iBAAiB,GAAG,GAAG,MAAM,CAAC,IAAI,UAAU,SAAS,EAAE,CAAA;IAC7D,OAAO,GAAG,iBAAiB,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,QAAQ;QACzD,CAAC,CAAC,UAAE;QACJ,CAAC,CAAC,IAAA,wBAAgB,EACd,wDAAwD,iBAAiB,eAAe,UAAU,CAAC,MAAM,CAAC,QAAQ,GAAG,CACtH,CAAA;AACP,CAAC;AAEY,QAAA,QAAQ,GAAe,IAAA,yBAAW,EAC7C,IAAA,gCAAkB,EAAC,qBAAqB,CAAC,EACzC,IAAA,gCAAkB,EAAC,IAAA,mCAAqB,EAAC,oBAAU,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC,CAClG,CAAA"}
1
+ {"version":3,"file":"metadata-schema.js","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AACzC,oCAAqG;AACrG,mCAA0C;AAC1C,6CAA+C;AAC/C,+CAA0G;AAE1G;;;GAGG;AAEU,QAAA,wBAAwB,GAAG,IAAA,gCAAkB,EAAC,KAAK,UAAU,UAAU,CAClF,UAAgC;IAEhC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,MAAM,CAAA;IAC5C,MAAM,SAAS,GAAG,wBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAA;IACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;QACvB,OAAO,UAAE,CAAA;KACV;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IACjE,OAAO,IAAA,wBAAgB,EAAC,sCAAsC,UAAU,CAAC,MAAM,CAAC,IAAI,iBAAiB,EAAE,GAAG,MAAM,CAAC,CAAA;AACnH,CAAC,CAAC,CAAA;AAOF;;;;;;;;GAQG;AACH,MAAM,2BAA2B,GAA8B;IAC7D,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,6BAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;IAClG,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,EAAE;CACV,CAAA;AAED,SAAS,eAAe,CAAC,UAAsB;IAC7C,OAAO,IAAA,mCAAqB,EAAC,oBAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;AAC5D,CAAC;AACD;;GAEG;AACU,QAAA,8CAA8C,GAAG,eAAe,CAC3E,IAAA,gCAAkB,EAAC,KAAK,UAAU,UAAU,CAAC,UAAgC;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAChC,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC9G,MAAM,iBAAiB,GAAG,GAAG,MAAM,CAAC,IAAI,UAAU,SAAS,EAAE,CAAA;IAC7D,OAAO,GAAG,iBAAiB,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,QAAQ;QACzD,CAAC,CAAC,UAAE;QACJ,CAAC,CAAC,IAAA,wBAAgB,EACd,wDAAwD,iBAAiB,eAAe,UAAU,CAAC,MAAM,CAAC,QAAQ,GAAG,CACtH,CAAA;AACP,CAAC,CAAC,CACH,CAAA;AAEY,QAAA,kBAAkB,GAAG,IAAA,yBAAW,EAAC,gCAAwB,EAAE,sDAA8C,CAAC,CAAA"}
@@ -1,12 +1,9 @@
1
- import { ValidateFn } from '../types';
1
+ import { ContentValidatorComponents, DeploymentToValidate, ValidateFn, ValidationResponse } from '../types';
2
2
  export declare const isOldEmote: (wearable: string) => boolean;
3
- export declare const faceThumbnail: ValidateFn;
4
- export declare const wearableUrns: ValidateFn;
5
- export declare const emoteUrns: ValidateFn;
6
- export declare const profileMustHaveEmotes: ValidateFn;
7
- /**
8
- * Validate that given profile deployment includes the face256 file with the correct size
9
- * * @public
10
- */
11
- export declare const profile: ValidateFn;
3
+ export declare function createFaceThumbnailValidateFn(components: ContentValidatorComponents): ValidateFn;
4
+ export declare const wearableUrnsValidateFn: ValidateFn;
5
+ export declare const emoteUrnsValidateFn: ValidateFn;
6
+ export declare const profileMustHaveEmotesValidateFn: ValidateFn;
7
+ export declare function profileSlotsAreNotRepeatedValidateFn(deployment: DeploymentToValidate): Promise<ValidationResponse>;
8
+ export declare function createProfileValidateFn(components: ContentValidatorComponents): ValidateFn;
12
9
  //# sourceMappingURL=profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwD,UAAU,EAAoB,MAAM,UAAU,CAAA;AAY7G,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,OAAqC,CAAA;AAEnF,eAAO,MAAM,aAAa,EAAE,UA8B3B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,UAgB1B,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,UAmBvB,CAAA;AAYD,eAAO,MAAM,qBAAqB,EAAE,UAOnC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,UAGrB,CAAA"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EAEpB,UAAU,EAEV,kBAAkB,EACnB,MAAM,UAAU,CAAA;AAYjB,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,OAAqC,CAAA;AAEnF,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,0BAA0B,cAgCnF;AAED,eAAO,MAAM,sBAAsB,YAgBjC,CAAA;AAEF,eAAO,MAAM,mBAAmB,YAmB9B,CAAA;AAYF,eAAO,MAAM,+BAA+B,YAO1C,CAAA;AAEF,wBAAsB,oCAAoC,CACxD,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAW7B;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,0BAA0B,GAAG,UAAU,CAe1F"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.profile = exports.profileMustHaveEmotes = exports.emoteUrns = exports.wearableUrns = exports.faceThumbnail = exports.isOldEmote = void 0;
6
+ exports.createProfileValidateFn = exports.profileSlotsAreNotRepeatedValidateFn = exports.profileMustHaveEmotesValidateFn = exports.emoteUrnsValidateFn = exports.wearableUrnsValidateFn = exports.createFaceThumbnailValidateFn = exports.isOldEmote = void 0;
7
7
  const schemas_1 = require("@dcl/schemas");
8
8
  const urn_resolver_1 = require("@dcl/urn-resolver");
9
9
  const sharp_1 = __importDefault(require("sharp"));
@@ -13,39 +13,43 @@ const validations_1 = require("./validations");
13
13
  const defaultThumbnailSize = 256;
14
14
  const isOldEmote = (wearable) => /^[a-z]+$/i.test(wearable);
15
15
  exports.isOldEmote = isOldEmote;
16
- exports.faceThumbnail = (0, validations_1.validateAfterADR45)(async (components, deployment) => {
17
- const errors = [];
18
- const allAvatars = deployment.entity.metadata?.avatars ?? [];
19
- for (const avatar of allAvatars) {
20
- const hash = avatar.avatar.snapshots.face256;
21
- if (!hash)
22
- return (0, types_1.validationFailed)(`Couldn't find hash for face256 thumbnail file with name: 'face256'`);
23
- const isAlreadyStored = (await components.externalCalls.isContentStoredAlready([hash])).get(hash) ?? false;
24
- if (isAlreadyStored) {
25
- return types_1.OK;
26
- }
27
- // check size
28
- const thumbnailBuffer = deployment.files.get(hash);
29
- if (!thumbnailBuffer)
30
- return (0, types_1.validationFailed)(`Couldn't find thumbnail file with hash: ${hash}`);
31
- try {
32
- const { width, height, format } = await (0, sharp_1.default)(thumbnailBuffer).metadata();
33
- if (!format || format !== 'png')
34
- errors.push(`Invalid or unknown image format. Only 'PNG' format is accepted.`);
35
- if (!width || !height) {
36
- errors.push(`Couldn't validate thumbnail size for file 'face256'`);
16
+ function createFaceThumbnailValidateFn(components) {
17
+ async function validateFn(deployment) {
18
+ const errors = [];
19
+ const allAvatars = deployment.entity.metadata?.avatars ?? [];
20
+ for (const avatar of allAvatars) {
21
+ const hash = avatar.avatar.snapshots.face256;
22
+ if (!hash)
23
+ return (0, types_1.validationFailed)(`Couldn't find hash for face256 thumbnail file with name: 'face256'`);
24
+ const isAlreadyStored = (await components.externalCalls.isContentStoredAlready([hash])).get(hash) ?? false;
25
+ if (isAlreadyStored) {
26
+ return types_1.OK;
37
27
  }
38
- else if (width !== defaultThumbnailSize || height !== defaultThumbnailSize) {
39
- errors.push(`Invalid face256 thumbnail image size (width = ${width} / height = ${height})`);
28
+ // check size
29
+ const thumbnailBuffer = deployment.files.get(hash);
30
+ if (!thumbnailBuffer)
31
+ return (0, types_1.validationFailed)(`Couldn't find thumbnail file with hash: ${hash}`);
32
+ try {
33
+ const { width, height, format } = await (0, sharp_1.default)(thumbnailBuffer).metadata();
34
+ if (!format || format !== 'png')
35
+ errors.push(`Invalid or unknown image format. Only 'PNG' format is accepted.`);
36
+ if (!width || !height) {
37
+ errors.push(`Couldn't validate thumbnail size for file 'face256'`);
38
+ }
39
+ else if (width !== defaultThumbnailSize || height !== defaultThumbnailSize) {
40
+ errors.push(`Invalid face256 thumbnail image size (width = ${width} / height = ${height})`);
41
+ }
42
+ }
43
+ catch (e) {
44
+ errors.push(`Couldn't parse face256 thumbnail, please check image format.`);
40
45
  }
41
46
  }
42
- catch (e) {
43
- errors.push(`Couldn't parse face256 thumbnail, please check image format.`);
44
- }
47
+ return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
45
48
  }
46
- return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
47
- });
48
- exports.wearableUrns = (0, validations_1.validateAfterADR75)(async (components, deployment) => {
49
+ return (0, validations_1.validateAfterADR45)(validateFn);
50
+ }
51
+ exports.createFaceThumbnailValidateFn = createFaceThumbnailValidateFn;
52
+ exports.wearableUrnsValidateFn = (0, validations_1.validateAfterADR75)(async function validateFn(deployment) {
49
53
  const allAvatars = deployment.entity.metadata?.avatars ?? [];
50
54
  for (const avatar of allAvatars) {
51
55
  for (const pointer of avatar.avatar.wearables) {
@@ -58,7 +62,7 @@ exports.wearableUrns = (0, validations_1.validateAfterADR75)(async (components,
58
62
  }
59
63
  return types_1.OK;
60
64
  });
61
- exports.emoteUrns = (0, validations_1.validateAfterADR74)(async (components, deployment) => {
65
+ exports.emoteUrnsValidateFn = (0, validations_1.validateAfterADR74)(async function validateFn(deployment) {
62
66
  const allAvatars = deployment.entity.metadata?.avatars ?? [];
63
67
  for (const avatar of allAvatars) {
64
68
  const allEmotes = avatar.avatar.emotes ?? [];
@@ -84,15 +88,31 @@ function profileHasEmotes(deployment) {
84
88
  }
85
89
  return false;
86
90
  }
87
- exports.profileMustHaveEmotes = (0, validations_1.validateAfterADR74)(async (components, deployment) => {
91
+ exports.profileMustHaveEmotesValidateFn = (0, validations_1.validateAfterADR74)(async function validateFn(deployment) {
88
92
  if (!profileHasEmotes(deployment)) {
89
93
  return (0, types_1.validationFailed)('Profile must have emotes after ADR 74.');
90
94
  }
91
95
  return types_1.OK;
92
96
  });
93
- /**
94
- * Validate that given profile deployment includes the face256 file with the correct size
95
- * * @public
96
- */
97
- exports.profile = (0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.PROFILE, (0, validations_1.validateAll)(exports.faceThumbnail, exports.wearableUrns, exports.emoteUrns, exports.profileMustHaveEmotes));
97
+ async function profileSlotsAreNotRepeatedValidateFn(deployment) {
98
+ const allAvatars = deployment.entity.metadata?.avatars ?? [];
99
+ const allEmotes = allAvatars.flatMap((avatar) => avatar.avatar.emotes ?? []);
100
+ const usedSlots = new Set();
101
+ for (const { slot } of allEmotes) {
102
+ if (usedSlots.has(slot)) {
103
+ return (0, types_1.validationFailed)('Emote slots should not be repeated.');
104
+ }
105
+ usedSlots.add(slot);
106
+ }
107
+ return types_1.OK;
108
+ }
109
+ exports.profileSlotsAreNotRepeatedValidateFn = profileSlotsAreNotRepeatedValidateFn;
110
+ function createProfileValidateFn(components) {
111
+ /**
112
+ * Validate that given profile deployment includes the face256 file with the correct size
113
+ * * @public
114
+ */
115
+ return (0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.PROFILE, (0, validations_1.validateAll)(createFaceThumbnailValidateFn(components), exports.wearableUrnsValidateFn, exports.emoteUrnsValidateFn, exports.profileMustHaveEmotesValidateFn, profileSlotsAreNotRepeatedValidateFn));
116
+ }
117
+ exports.createProfileValidateFn = createProfileValidateFn;
98
118
  //# sourceMappingURL=profile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,10 @@ import { ValidateFn } from '../types';
3
3
  * Validate that given scene deployment does not contain worldConfiguration section
4
4
  * @public
5
5
  */
6
- export declare const noWorldsConfiguration: ValidateFn;
6
+ export declare const noWorldsConfigurationValidateFn: ValidateFn;
7
7
  /**
8
8
  * Validate that given scene deployment is valid
9
9
  * @public
10
10
  */
11
- export declare const scene: ValidateFn;
11
+ export declare const sceneValidateFn: ValidateFn;
12
12
  //# sourceMappingURL=scene.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../src/validations/scene.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,UAAU,EAAoB,MAAM,UAAU,CAAA;AAO7G;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,UAOnC,CAAA;AACD;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,UAA2E,CAAA"}
1
+ {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../src/validations/scene.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,UAAU,EAAwC,MAAM,UAAU,CAAA;AAOrG;;;GAGG;AACH,eAAO,MAAM,+BAA+B,YAQ3C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,YAAkC,CAAA"}
@@ -1,25 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.scene = exports.noWorldsConfiguration = void 0;
3
+ exports.sceneValidateFn = exports.noWorldsConfigurationValidateFn = void 0;
4
4
  const schemas_1 = require("@dcl/schemas");
5
5
  const types_1 = require("../types");
6
6
  const validations_1 = require("./validations");
7
- function sceneHasWorldConfiguration(deployment) {
8
- return deployment.entity.metadata?.worldConfiguration !== undefined;
7
+ function validateIfScene(validateFn) {
8
+ return (0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.SCENE, validateFn);
9
9
  }
10
10
  /**
11
11
  * Validate that given scene deployment does not contain worldConfiguration section
12
12
  * @public
13
13
  */
14
- exports.noWorldsConfiguration = (0, validations_1.validateAfterADR173)(async (components, deployment) => {
15
- if (sceneHasWorldConfiguration(deployment)) {
14
+ exports.noWorldsConfigurationValidateFn = validateIfScene((0, validations_1.validateAfterADR173)(async function validateFn(deployment) {
15
+ const sceneHasWorldConfiguration = deployment.entity.metadata?.worldConfiguration !== undefined;
16
+ if (sceneHasWorldConfiguration) {
16
17
  return (0, types_1.validationFailed)('Scenes cannot have worldConfiguration section after ADR 173.');
17
18
  }
18
19
  return types_1.OK;
19
- });
20
+ }));
20
21
  /**
21
22
  * Validate that given scene deployment is valid
22
23
  * @public
23
24
  */
24
- exports.scene = (0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.SCENE, exports.noWorldsConfiguration);
25
+ exports.sceneValidateFn = exports.noWorldsConfigurationValidateFn;
25
26
  //# sourceMappingURL=scene.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scene.js","sourceRoot":"","sources":["../../src/validations/scene.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AACzC,oCAA6G;AAC7G,+CAA0E;AAE1E,SAAS,0BAA0B,CAAC,UAAgC;IAClE,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,KAAK,SAAS,CAAA;AACrE,CAAC;AAED;;;GAGG;AACU,QAAA,qBAAqB,GAAe,IAAA,iCAAmB,EAClE,KAAK,EAAE,UAAsC,EAAE,UAAgC,EAAE,EAAE;IACjF,IAAI,0BAA0B,CAAC,UAAU,CAAC,EAAE;QAC1C,OAAO,IAAA,wBAAgB,EAAC,8DAA8D,CAAC,CAAA;KACxF;IACD,OAAO,UAAE,CAAA;AACX,CAAC,CACF,CAAA;AACD;;;GAGG;AACU,QAAA,KAAK,GAAe,IAAA,mCAAqB,EAAC,oBAAU,CAAC,KAAK,EAAE,6BAAqB,CAAC,CAAA"}
1
+ {"version":3,"file":"scene.js","sourceRoot":"","sources":["../../src/validations/scene.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AACzC,oCAAqG;AACrG,+CAA0E;AAE1E,SAAS,eAAe,CAAC,UAAsB;IAC7C,OAAO,IAAA,mCAAqB,EAAC,oBAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;AAC5D,CAAC;AAED;;;GAGG;AACU,QAAA,+BAA+B,GAAG,eAAe,CAC5D,IAAA,iCAAmB,EAAC,KAAK,UAAU,UAAU,CAAC,UAAgC;IAC5E,MAAM,0BAA0B,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,KAAK,SAAS,CAAA;IAC/F,IAAI,0BAA0B,EAAE;QAC9B,OAAO,IAAA,wBAAgB,EAAC,8DAA8D,CAAC,CAAA;KACxF;IACD,OAAO,UAAE,CAAA;AACX,CAAC,CAAC,CACH,CAAA;AAED;;;GAGG;AACU,QAAA,eAAe,GAAG,uCAA+B,CAAA"}
@@ -1,7 +1,7 @@
1
- import { ContentValidatorComponents, DeploymentToValidate } from '../types';
1
+ import { ContentValidatorComponents, ValidateFn } from '../types';
2
2
  /**
3
3
  * Validate that the signature belongs to the Ethereum address
4
4
  * @public
5
5
  */
6
- export declare function signature(components: ContentValidatorComponents, deployment: DeploymentToValidate): Promise<import("../types").ValidationResponse>;
6
+ export declare function createSignatureValidateFn(components: ContentValidatorComponents): ValidateFn;
7
7
  //# sourceMappingURL=signature.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../src/validations/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAwB,MAAM,UAAU,CAAA;AAEjG;;;GAGG;AACH,wBAAsB,SAAS,CAAC,UAAU,EAAE,0BAA0B,EAAE,UAAU,EAAE,oBAAoB,kDAIvG"}
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../src/validations/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAG1B,UAAU,EAGX,MAAM,UAAU,CAAA;AAEjB;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,0BAA0B,GAAG,UAAU,CAM5F"}
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.signature = void 0;
3
+ exports.createSignatureValidateFn = void 0;
4
4
  const types_1 = require("../types");
5
5
  /**
6
6
  * Validate that the signature belongs to the Ethereum address
7
7
  * @public
8
8
  */
9
- async function signature(components, deployment) {
10
- const { entity, auditInfo } = deployment;
11
- const validationResult = await components.externalCalls.validateSignature(entity.id, auditInfo, entity.timestamp);
12
- return !validationResult.ok ? (0, types_1.validationFailed)('The signature is invalid. ' + validationResult.message) : types_1.OK;
9
+ function createSignatureValidateFn(components) {
10
+ return async function validateFn(deployment) {
11
+ const { entity, auditInfo } = deployment;
12
+ const validationResult = await components.externalCalls.validateSignature(entity.id, auditInfo, entity.timestamp);
13
+ return !validationResult.ok ? (0, types_1.validationFailed)('The signature is invalid. ' + validationResult.message) : types_1.OK;
14
+ };
13
15
  }
14
- exports.signature = signature;
16
+ exports.createSignatureValidateFn = createSignatureValidateFn;
15
17
  //# sourceMappingURL=signature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/validations/signature.ts"],"names":[],"mappings":";;;AAAA,oCAAiG;AAEjG;;;GAGG;AACI,KAAK,UAAU,SAAS,CAAC,UAAsC,EAAE,UAAgC;IACtG,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;IACxC,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;IACjH,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,4BAA4B,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAE,CAAA;AAC9G,CAAC;AAJD,8BAIC"}
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/validations/signature.ts"],"names":[],"mappings":";;;AAAA,oCAOiB;AAEjB;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,UAAsC;IAC9E,OAAO,KAAK,UAAU,UAAU,CAAC,UAAgC;QAC/D,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;QACxC,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;QACjH,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,4BAA4B,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAE,CAAA;IAC9G,CAAC,CAAA;AACH,CAAC;AAND,8DAMC"}