@dcl/content-validator 2.1.0 → 2.1.1-20220622185224.commit-163289a

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 (99) hide show
  1. package/dist/content-validator.api.json +38 -180
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/the-graph-client/the-graph-client.d.ts.map +1 -1
  5. package/dist/the-graph-client/the-graph-client.js +4 -13
  6. package/dist/the-graph-client/the-graph-client.js.map +1 -1
  7. package/dist/types.d.ts +0 -4
  8. package/dist/types.d.ts.map +1 -1
  9. package/dist/types.js +1 -16
  10. package/dist/types.js.map +1 -1
  11. package/dist/validations/ADR51.d.ts +3 -5
  12. package/dist/validations/ADR51.d.ts.map +1 -1
  13. package/dist/validations/ADR51.js +4 -0
  14. package/dist/validations/ADR51.js.map +1 -1
  15. package/dist/validations/access-checker/access.d.ts.map +1 -1
  16. package/dist/validations/access-checker/access.js +7 -7
  17. package/dist/validations/access-checker/access.js.map +1 -1
  18. package/dist/validations/access-checker/emotes.d.ts +3 -0
  19. package/dist/validations/access-checker/emotes.d.ts.map +1 -0
  20. package/dist/validations/access-checker/emotes.js +13 -0
  21. package/dist/validations/access-checker/emotes.js.map +1 -0
  22. package/dist/validations/access-checker/items/collection-asset.d.ts +15 -0
  23. package/dist/validations/access-checker/items/collection-asset.d.ts.map +1 -0
  24. package/dist/validations/access-checker/items/collection-asset.js +133 -0
  25. package/dist/validations/access-checker/items/collection-asset.js.map +1 -0
  26. package/dist/validations/access-checker/items/items.d.ts +13 -0
  27. package/dist/validations/access-checker/items/items.d.ts.map +1 -0
  28. package/dist/validations/access-checker/items/items.js +68 -0
  29. package/dist/validations/access-checker/items/items.js.map +1 -0
  30. package/dist/validations/access-checker/items/off-chain-asset.d.ts +3 -0
  31. package/dist/validations/access-checker/items/off-chain-asset.d.ts.map +1 -0
  32. package/dist/validations/access-checker/items/off-chain-asset.js +17 -0
  33. package/dist/validations/access-checker/items/off-chain-asset.js.map +1 -0
  34. package/dist/validations/access-checker/items/third-party-asset.d.ts +3 -0
  35. package/dist/validations/access-checker/items/third-party-asset.d.ts.map +1 -0
  36. package/dist/validations/access-checker/items/third-party-asset.js +107 -0
  37. package/dist/validations/access-checker/items/third-party-asset.js.map +1 -0
  38. package/dist/validations/access-checker/profiles.d.ts.map +1 -1
  39. package/dist/validations/access-checker/profiles.js +3 -3
  40. package/dist/validations/access-checker/profiles.js.map +1 -1
  41. package/dist/validations/access-checker/scenes.d.ts.map +1 -1
  42. package/dist/validations/access-checker/scenes.js +3 -10
  43. package/dist/validations/access-checker/scenes.js.map +1 -1
  44. package/dist/validations/access-checker/stores.d.ts.map +1 -1
  45. package/dist/validations/access-checker/stores.js.map +1 -1
  46. package/dist/validations/access-checker/wearables.d.ts +0 -18
  47. package/dist/validations/access-checker/wearables.d.ts.map +1 -1
  48. package/dist/validations/access-checker/wearables.js +9 -322
  49. package/dist/validations/access-checker/wearables.js.map +1 -1
  50. package/dist/validations/content.d.ts +3 -0
  51. package/dist/validations/content.d.ts.map +1 -1
  52. package/dist/validations/content.js +30 -17
  53. package/dist/validations/content.js.map +1 -1
  54. package/dist/validations/entity-structure.d.ts.map +1 -1
  55. package/dist/validations/entity-structure.js.map +1 -1
  56. package/dist/validations/index.d.ts +4 -23
  57. package/dist/validations/index.d.ts.map +1 -1
  58. package/dist/validations/index.js +6 -51
  59. package/dist/validations/index.js.map +1 -1
  60. package/dist/validations/ipfs-hashing.d.ts.map +1 -1
  61. package/dist/validations/ipfs-hashing.js +3 -6
  62. package/dist/validations/ipfs-hashing.js.map +1 -1
  63. package/dist/validations/items/emotes.d.ts +5 -0
  64. package/dist/validations/items/emotes.d.ts.map +1 -0
  65. package/dist/validations/items/emotes.js +35 -0
  66. package/dist/validations/items/emotes.js.map +1 -0
  67. package/dist/validations/items/items.d.ts +10 -0
  68. package/dist/validations/items/items.d.ts.map +1 -0
  69. package/dist/validations/items/items.js +79 -0
  70. package/dist/validations/items/items.js.map +1 -0
  71. package/dist/validations/{wearable.d.ts → items/wearables.d.ts} +2 -5
  72. package/dist/validations/items/wearables.d.ts.map +1 -0
  73. package/dist/validations/items/wearables.js +32 -0
  74. package/dist/validations/items/wearables.js.map +1 -0
  75. package/dist/validations/metadata-schema.d.ts +2 -5
  76. package/dist/validations/metadata-schema.d.ts.map +1 -1
  77. package/dist/validations/metadata-schema.js +37 -7
  78. package/dist/validations/metadata-schema.js.map +1 -1
  79. package/dist/validations/profile.d.ts.map +1 -1
  80. package/dist/validations/profile.js +9 -20
  81. package/dist/validations/profile.js.map +1 -1
  82. package/dist/validations/signature.d.ts.map +1 -1
  83. package/dist/validations/signature.js +1 -3
  84. package/dist/validations/signature.js.map +1 -1
  85. package/dist/validations/size.d.ts.map +1 -1
  86. package/dist/validations/size.js +4 -3
  87. package/dist/validations/size.js.map +1 -1
  88. package/dist/validations/timestamps.d.ts +21 -0
  89. package/dist/validations/timestamps.d.ts.map +1 -0
  90. package/dist/validations/timestamps.js +24 -0
  91. package/dist/validations/timestamps.js.map +1 -0
  92. package/dist/validations/validations.d.ts +9 -0
  93. package/dist/validations/validations.d.ts.map +1 -0
  94. package/dist/validations/validations.js +47 -0
  95. package/dist/validations/validations.js.map +1 -0
  96. package/package.json +4 -4
  97. package/dist/validations/wearable.d.ts.map +0 -1
  98. package/dist/validations/wearable.js +0 -110
  99. package/dist/validations/wearable.js.map +0 -1
@@ -2,18 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ipfsHashing = void 0;
4
4
  const schemas_1 = require("@dcl/schemas");
5
- const _1 = require(".");
6
- const __1 = require("..");
7
5
  const types_1 = require("../types");
6
+ const validations_1 = require("./validations");
8
7
  /**
9
8
  * Validate that all hashes used by the entity were actually IPFS hashes
10
9
  * @public
11
10
  */
12
- exports.ipfsHashing = {
11
+ exports.ipfsHashing = (0, validations_1.validationAfterADR45)({
13
12
  validate: (components, deployment) => {
14
13
  const { entity } = deployment;
15
- if (entity.timestamp < _1.ADR_45_TIMESTAMP)
16
- return __1.OK;
17
14
  const hashesInContent = entity.content?.map(({ hash }) => hash) ?? [];
18
15
  const allHashes = [entity.id, ...hashesInContent];
19
16
  const errors = allHashes
@@ -21,5 +18,5 @@ exports.ipfsHashing = {
21
18
  .map((hash) => `This hash '${hash}' is not valid. It should be IPFS v2 format.`);
22
19
  return (0, types_1.fromErrors)(...errors);
23
20
  }
24
- };
21
+ });
25
22
  //# sourceMappingURL=ipfs-hashing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipfs-hashing.js","sourceRoot":"","sources":["../../src/validations/ipfs-hashing.ts"],"names":[],"mappings":";;;AAAA,0CAAqC;AACrC,wBAAoC;AACpC,0BAAmD;AACnD,oCAAiD;AAEjD;;;GAGG;AACU,QAAA,WAAW,GAAe;IACrC,QAAQ,EAAE,CAAC,UAAsC,EAAE,UAAU,EAAE,EAAE;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAE7B,IAAI,MAAM,CAAC,SAAS,GAAG,mBAAgB;YAAE,OAAO,MAAE,CAAA;QAElD,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACrE,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,eAAe,CAAC,CAAA;QAEjD,MAAM,MAAM,GAAG,SAAS;aACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACxC,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,cAAc,IAAI,8CAA8C,CACnE,CAAA;QAEH,OAAO,IAAA,kBAAU,EAAC,GAAG,MAAM,CAAC,CAAA;IAC9B,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"ipfs-hashing.js","sourceRoot":"","sources":["../../src/validations/ipfs-hashing.ts"],"names":[],"mappings":";;;AAAA,0CAAqC;AAErC,oCAAiD;AACjD,+CAAoD;AAEpD;;;GAGG;AACU,QAAA,WAAW,GAAe,IAAA,kCAAoB,EAAC;IAC1D,QAAQ,EAAE,CAAC,UAAsC,EAAE,UAAU,EAAE,EAAE;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAE7B,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACrE,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,eAAe,CAAC,CAAA;QAEjD,MAAM,MAAM,GAAG,SAAS;aACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,8CAA8C,CAAC,CAAA;QAElF,OAAO,IAAA,kBAAU,EAAC,GAAG,MAAM,CAAC,CAAA;IAC9B,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { Validation } from '../../types';
2
+ export declare const wasCreatedAfterADR74: Validation;
3
+ export declare const emoteRepresentationContent: Validation;
4
+ export declare const emote: Validation;
5
+ //# sourceMappingURL=emotes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emotes.d.ts","sourceRoot":"","sources":["../../../src/validations/items/emotes.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,UAAU,EAAoB,MAAM,aAAa,CAAA;AAIhH,eAAO,MAAM,oBAAoB,EAAE,UAQlC,CAAA;AAED,eAAO,MAAM,0BAA0B,EAAE,UAiBxC,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,UAGnB,CAAA"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emote = exports.emoteRepresentationContent = exports.wasCreatedAfterADR74 = void 0;
4
+ const schemas_1 = require("@dcl/schemas");
5
+ const types_1 = require("../../types");
6
+ const timestamps_1 = require("../timestamps");
7
+ const validations_1 = require("../validations");
8
+ exports.wasCreatedAfterADR74 = {
9
+ validate(components, deployment) {
10
+ return deployment.entity.timestamp < timestamps_1.ADR_74_TIMESTAMP
11
+ ? (0, types_1.validationFailed)(`The emote timestamp ${deployment.entity.timestamp} is before ADR 74. Emotes did not exist before ADR 74.`)
12
+ : types_1.OK;
13
+ }
14
+ };
15
+ exports.emoteRepresentationContent = {
16
+ validate: async (components, deployment) => {
17
+ const { entity } = deployment;
18
+ const metadata = entity.metadata;
19
+ const representations = metadata?.emoteDataADR74?.representations;
20
+ if (!representations || representations.length === 0)
21
+ return (0, types_1.validationFailed)('No emote representations found');
22
+ if (!entity.content || entity.content.length === 0)
23
+ return (0, types_1.validationFailed)('No content found');
24
+ for (const representation of representations) {
25
+ for (const representationContent of representation.contents) {
26
+ if (!entity.content.find((content) => content.file === representationContent)) {
27
+ return (0, types_1.validationFailed)(`Representation content: '${representationContent}' is not one of the content files`);
28
+ }
29
+ }
30
+ }
31
+ return types_1.OK;
32
+ }
33
+ };
34
+ exports.emote = (0, validations_1.validationForType)(schemas_1.EntityType.EMOTE, (0, validations_1.validationGroup)(exports.wasCreatedAfterADR74, exports.emoteRepresentationContent));
35
+ //# sourceMappingURL=emotes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emotes.js","sourceRoot":"","sources":["../../../src/validations/items/emotes.ts"],"names":[],"mappings":";;;AAAA,0CAAgD;AAChD,uCAAgH;AAChH,8CAAgD;AAChD,gDAAmE;AAEtD,QAAA,oBAAoB,GAAe;IAC9C,QAAQ,CAAC,UAAsC,EAAE,UAAgC;QAC/E,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,GAAG,6BAAgB;YACnD,CAAC,CAAC,IAAA,wBAAgB,EACd,uBAAuB,UAAU,CAAC,MAAM,CAAC,SAAS,wDAAwD,CAC3G;YACH,CAAC,CAAC,UAAE,CAAA;IACR,CAAC;CACF,CAAA;AAEY,QAAA,0BAA0B,GAAe;IACpD,QAAQ,EAAE,KAAK,EAAE,UAAsC,EAAE,UAAU,EAAE,EAAE;QACrE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAiB,CAAA;QACzC,MAAM,eAAe,GAAG,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAA;QACjE,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAA,wBAAgB,EAAC,gCAAgC,CAAC,CAAA;QAC/G,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAA,wBAAgB,EAAC,kBAAkB,CAAC,CAAA;QAE/F,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;YAC5C,KAAK,MAAM,qBAAqB,IAAI,cAAc,CAAC,QAAQ,EAAE;gBAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,qBAAqB,CAAC,EAAE;oBAC7E,OAAO,IAAA,wBAAgB,EAAC,4BAA4B,qBAAqB,mCAAmC,CAAC,CAAA;iBAC9G;aACF;SACF;QACD,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAA;AAEY,QAAA,KAAK,GAAe,IAAA,+BAAiB,EAChD,oBAAU,CAAC,KAAK,EAChB,IAAA,6BAAe,EAAC,4BAAoB,EAAE,kCAA0B,CAAC,CAClE,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { Validation } from '../../types';
2
+ /** Validate item files size, excluding thumbnail, is less than expected */
3
+ export declare const deploymentMaxSizeExcludingThumbnailIsNotExceeded: Validation;
4
+ export declare const thumbnailMaxSizeIsNotExceeded: Validation;
5
+ /**
6
+ * Validate that given item deployment includes the thumbnail and doesn't exceed file sizes
7
+ * * @public
8
+ */
9
+ export declare const items: Validation;
10
+ //# sourceMappingURL=items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../src/validations/items/items.ts"],"names":[],"mappings":"AAIA,OAAO,EAAM,UAAU,EAAoB,MAAM,aAAa,CAAA;AAI9D,2EAA2E;AAC3E,eAAO,MAAM,gDAAgD,EAAE,UA0B9D,CAAA;AAID,eAAO,MAAM,6BAA6B,EAAE,UAkC3C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,UAGnB,CAAA"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.items = exports.thumbnailMaxSizeIsNotExceeded = exports.deploymentMaxSizeExcludingThumbnailIsNotExceeded = void 0;
7
+ const schemas_1 = require("@dcl/schemas");
8
+ const sharp_1 = __importDefault(require("sharp"));
9
+ const __1 = require("..");
10
+ const types_1 = require("../../types");
11
+ const ADR51_1 = require("../ADR51");
12
+ const validations_1 = require("../validations");
13
+ /** Validate item files size, excluding thumbnail, is less than expected */
14
+ exports.deploymentMaxSizeExcludingThumbnailIsNotExceeded = {
15
+ validate: async ({ externalCalls }, 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
+ const modelSizeInMB = maxSizeInMB - maxThumbnailSizeInB / 1024;
21
+ const metadata = entity.metadata;
22
+ const thumbnailHash = entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
23
+ if (!thumbnailHash)
24
+ return (0, types_1.validationFailed)("Couldn't find the thumbnail hash");
25
+ const totalDeploymentSizeInB = await (0, __1.calculateDeploymentSize)(deployment, externalCalls);
26
+ if (typeof totalDeploymentSizeInB === 'string')
27
+ return (0, types_1.validationFailed)(totalDeploymentSizeInB);
28
+ const thumbnailSize = deployment.files.get(thumbnailHash)?.byteLength ?? 0;
29
+ const modelSize = totalDeploymentSizeInB - thumbnailSize;
30
+ if (modelSize > modelSizeInMB * 1024 * 1024)
31
+ 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}.`);
32
+ return types_1.OK;
33
+ }
34
+ };
35
+ /** Validate that given item deployment includes a thumbnail with valid format and size */
36
+ const maxThumbnailSizeInB = 1024;
37
+ exports.thumbnailMaxSizeIsNotExceeded = {
38
+ validate: async ({ externalCalls, logs }, deployment) => {
39
+ const logger = logs.getLogger(`${deployment.entity.type} validator`);
40
+ // read thumbnail field from metadata
41
+ const metadata = deployment.entity.metadata;
42
+ const hash = deployment.entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
43
+ if (!hash)
44
+ return (0, types_1.validationFailed)(`Couldn't find hash for thumbnail file with name: ${metadata.thumbnail}`);
45
+ const errors = [];
46
+ // check size
47
+ const thumbnailBuffer = deployment.files.get(hash);
48
+ if (!thumbnailBuffer) {
49
+ const isHashStored = (await externalCalls.isContentStoredAlready([hash])).get(hash) ?? false;
50
+ if (!isHashStored) {
51
+ return (0, types_1.validationFailed)(`Couldn't find thumbnail file with hash: ${hash}`);
52
+ }
53
+ // otherwise, thumbnail was already uploaded and won't be validated again
54
+ logger.debug(`Thumbnail file with hash: ${hash} is not in the deployment, but it is already stored`);
55
+ return types_1.OK;
56
+ }
57
+ try {
58
+ const { width, height, format } = await (0, sharp_1.default)(thumbnailBuffer).metadata();
59
+ if (!format || format !== 'png')
60
+ errors.push(`Invalid or unknown image format. Only 'PNG' format is accepted.`);
61
+ if (!width || !height) {
62
+ errors.push(`Couldn't validate thumbnail size for file ${metadata.thumbnail}`);
63
+ }
64
+ else if (width > maxThumbnailSizeInB || height > maxThumbnailSizeInB) {
65
+ errors.push(`Invalid thumbnail image size (width = ${width} / height = ${height})`);
66
+ }
67
+ }
68
+ catch (e) {
69
+ errors.push(`Couldn't parse thumbnail, please check image format.`);
70
+ }
71
+ return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
72
+ }
73
+ };
74
+ /**
75
+ * Validate that given item deployment includes the thumbnail and doesn't exceed file sizes
76
+ * * @public
77
+ */
78
+ exports.items = (0, validations_1.conditionalValidation)((deployment) => deployment.entity.type === schemas_1.EntityType.WEARABLE || deployment.entity.type === schemas_1.EntityType.EMOTE, (0, validations_1.validationAfterADR45)((0, validations_1.validationGroup)(exports.thumbnailMaxSizeIsNotExceeded, exports.deploymentMaxSizeExcludingThumbnailIsNotExceeded)));
79
+ //# sourceMappingURL=items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.js","sourceRoot":"","sources":["../../../src/validations/items/items.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,9 @@
1
- import { Validation } from '../types';
1
+ import { Validation } from '../../types';
2
2
  /** Validate wearable representations are referencing valid content */
3
3
  export declare const wearableRepresentationContent: Validation;
4
- /** Validate wearable files size, excluding thumbnail, is less than expected */
5
- export declare const wearableSize: Validation;
6
- export declare const wearableThumbnail: Validation;
7
4
  /**
8
5
  * Validate that given wearable deployment includes the thumbnail and doesn't exceed file sizes
9
6
  * * @public
10
7
  */
11
8
  export declare const wearable: Validation;
12
- //# sourceMappingURL=wearable.d.ts.map
9
+ //# sourceMappingURL=wearables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wearables.d.ts","sourceRoot":"","sources":["../../../src/validations/items/wearables.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,UAAU,EAAoB,MAAM,aAAa,CAAA;AAG1F,sEAAsE;AACtE,eAAO,MAAM,6BAA6B,EAAE,UAiB3C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,UAAkF,CAAA"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wearable = exports.wearableRepresentationContent = void 0;
4
+ const schemas_1 = require("@dcl/schemas");
5
+ const types_1 = require("../../types");
6
+ const validations_1 = require("../validations");
7
+ /** Validate wearable representations are referencing valid content */
8
+ exports.wearableRepresentationContent = {
9
+ validate: async (components, deployment) => {
10
+ const { entity } = deployment;
11
+ const wearableMetadata = entity.metadata;
12
+ const representations = wearableMetadata?.data?.representations;
13
+ if (!representations || representations.length === 0)
14
+ return (0, types_1.validationFailed)('No wearable representations found');
15
+ if (!entity.content || entity.content.length === 0)
16
+ return (0, types_1.validationFailed)('No content found');
17
+ for (const representation of representations) {
18
+ for (const representationContent of representation.contents) {
19
+ if (!entity.content.find((content) => content.file === representationContent)) {
20
+ return (0, types_1.validationFailed)(`Representation content: '${representationContent}' is not one of the content files`);
21
+ }
22
+ }
23
+ }
24
+ return types_1.OK;
25
+ }
26
+ };
27
+ /**
28
+ * Validate that given wearable deployment includes the thumbnail and doesn't exceed file sizes
29
+ * * @public
30
+ */
31
+ exports.wearable = (0, validations_1.validationForType)(schemas_1.EntityType.WEARABLE, exports.wearableRepresentationContent);
32
+ //# sourceMappingURL=wearables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wearables.js","sourceRoot":"","sources":["../../../src/validations/items/wearables.ts"],"names":[],"mappings":";;;AAAA,0CAAmD;AACnD,uCAA0F;AAC1F,gDAAkD;AAElD,sEAAsE;AACzD,QAAA,6BAA6B,GAAe;IACvD,QAAQ,EAAE,KAAK,EAAE,UAAsC,EAAE,UAAU,EAAE,EAAE;QACrE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAC7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAoB,CAAA;QACpD,MAAM,eAAe,GAAG,gBAAgB,EAAE,IAAI,EAAE,eAAe,CAAA;QAC/D,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAA,wBAAgB,EAAC,mCAAmC,CAAC,CAAA;QAClH,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAA,wBAAgB,EAAC,kBAAkB,CAAC,CAAA;QAE/F,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;YAC5C,KAAK,MAAM,qBAAqB,IAAI,cAAc,CAAC,QAAQ,EAAE;gBAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,qBAAqB,CAAC,EAAE;oBAC7E,OAAO,IAAA,wBAAgB,EAAC,4BAA4B,qBAAqB,mCAAmC,CAAC,CAAA;iBAC9G;aACF;SACF;QACD,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAA;AAED;;;GAGG;AACU,QAAA,QAAQ,GAAe,IAAA,+BAAiB,EAAC,oBAAU,CAAC,QAAQ,EAAE,qCAA6B,CAAC,CAAA"}
@@ -1,6 +1,3 @@
1
- /**
2
- * Validate entities metadata against its corresponding schema
3
- * @public
4
- */
5
- export declare const metadata: import("../types").Validation;
1
+ import { Validation } from '../types';
2
+ export declare const metadata: Validation;
6
3
  //# 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":"AASA;;;GAGG;AACH,eAAO,MAAM,QAAQ,+BAenB,CAAA"}
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;AA2D7G,eAAO,MAAM,QAAQ,EAAE,UAGtB,CAAA"}
@@ -1,17 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.metadata = void 0;
4
- const ADR51_1 = require("./ADR51");
5
- const _1 = require(".");
4
+ const schemas_1 = require("@dcl/schemas");
6
5
  const types_1 = require("../types");
6
+ const ADR51_1 = require("./ADR51");
7
+ const timestamps_1 = require("./timestamps");
8
+ const validations_1 = require("./validations");
7
9
  /**
8
10
  * Validate entities metadata against its corresponding schema
9
11
  * @public
10
12
  */
11
- exports.metadata = (0, types_1.conditionalValidation)({
12
- async predicate(components, deployment) {
13
- if (deployment.entity.timestamp <= _1.ADR_45_TIMESTAMP)
14
- return types_1.OK;
13
+ const metadataSchemaIsValid = {
14
+ async validate(components, deployment) {
15
15
  const { type, metadata } = deployment.entity;
16
16
  const validator = ADR51_1.entityParameters[type].validate;
17
17
  if (validator(metadata)) {
@@ -20,5 +20,35 @@ exports.metadata = (0, types_1.conditionalValidation)({
20
20
  const errors = validator.errors?.map(($) => '' + $.message) || [];
21
21
  return (0, types_1.validationFailed)(`The metadata for this entity type (${deployment.entity.type}) is not valid.`, ...errors);
22
22
  }
23
- });
23
+ };
24
+ /**
25
+ * This map contains one ADR timeline per entity type. In a timeline, each element has
26
+ * a number and a timestamp. The number corresponds to the number of an ADR and the timestamp
27
+ * to the creation of that ADR. Each timeline is sorted by timestamp.
28
+ * The idea behind this is the ability to version schemas over the time, but run validations
29
+ * according with the deployment original time. (Imagining starting a Content Server from scratch,
30
+ * it will have to sync deployments since the launcha date).
31
+ * See ADR 74 for more details of schema versioning.
32
+ */
33
+ const ADRMetadataVersionTimelines = {
34
+ emote: [{ number: 74, timestamp: timestamps_1.ADR_74_TIMESTAMP }].sort((v1, v2) => v1.timestamp - v2.timestamp),
35
+ scene: [],
36
+ profile: [],
37
+ wearable: [],
38
+ store: []
39
+ };
40
+ /**
41
+ * This validation is being ran only for emotes currently
42
+ */
43
+ const metadataVersionIsCorrectForTimestamp = {
44
+ validate(components, deployment) {
45
+ const entity = deployment.entity;
46
+ const adrNumber = ADRMetadataVersionTimelines[entity.type].find((v) => v.timestamp < entity.timestamp)?.number;
47
+ const expectedDataField = `${entity.type}DataADR${adrNumber}`;
48
+ return `${expectedDataField}` in deployment.entity.metadata
49
+ ? types_1.OK
50
+ : (0, types_1.validationFailed)(`'emoteData' field version is incorrect. It must be: '${expectedDataField} but it is: ${deployment.entity.metadata} `);
51
+ }
52
+ };
53
+ exports.metadata = (0, validations_1.validationGroup)((0, validations_1.validationAfterADR45)(metadataSchemaIsValid), (0, validations_1.validationAfterADR74)((0, validations_1.validationForType)(schemas_1.EntityType.EMOTE, metadataVersionIsCorrectForTimestamp)));
24
54
  //# sourceMappingURL=metadata-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-schema.js","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAC1C,wBAAoC;AACpC,oCAKiB;AAEjB;;;GAGG;AACU,QAAA,QAAQ,GAAG,IAAA,6BAAqB,EAAC;IAC5C,KAAK,CAAC,SAAS,CAAC,UAAsC,EAAE,UAAU;QAChE,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,mBAAgB;YAAE,OAAO,UAAE,CAAA;QAE9D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,MAAM,CAAA;QAC5C,MAAM,SAAS,GAAG,wBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAA;QACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;YACvB,OAAO,UAAE,CAAA;SACV;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACjE,OAAO,IAAA,wBAAgB,EACrB,sCAAsC,UAAU,CAAC,MAAM,CAAC,IAAI,iBAAiB,EAC7E,GAAG,MAAM,CACV,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
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,+CAA8G;AAE9G;;;GAGG;AACH,MAAM,qBAAqB,GAAe;IACxC,KAAK,CAAC,QAAQ,CAAC,UAAsC,EAAE,UAAU;QAC/D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,MAAM,CAAA;QAC5C,MAAM,SAAS,GAAG,wBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAA;QACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;YACvB,OAAO,UAAE,CAAA;SACV;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACjE,OAAO,IAAA,wBAAgB,EAAC,sCAAsC,UAAU,CAAC,MAAM,CAAC,IAAI,iBAAiB,EAAE,GAAG,MAAM,CAAC,CAAA;IACnH,CAAC;CACF,CAAA;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,MAAM,oCAAoC,GAAe;IACvD,QAAQ,CAAC,UAAsC,EAAE,UAAgC;QAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAChC,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;QAC9G,MAAM,iBAAiB,GAAG,GAAG,MAAM,CAAC,IAAI,UAAU,SAAS,EAAE,CAAA;QAC7D,OAAO,GAAG,iBAAiB,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,QAAQ;YACzD,CAAC,CAAC,UAAE;YACJ,CAAC,CAAC,IAAA,wBAAgB,EACd,wDAAwD,iBAAiB,eAAe,UAAU,CAAC,MAAM,CAAC,QAAQ,GAAG,CACtH,CAAA;IACP,CAAC;CACF,CAAA;AAEY,QAAA,QAAQ,GAAe,IAAA,6BAAe,EACjD,IAAA,kCAAoB,EAAC,qBAAqB,CAAC,EAC3C,IAAA,kCAAoB,EAAC,IAAA,+BAAiB,EAAC,oBAAU,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC,CAChG,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAM,UAAU,EAAoB,MAAM,UAAU,CAAA;AAM3D,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,OAClB,CAAA;AAE5B,eAAO,MAAM,aAAa,EAAE,UAmD3B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,UAkB1B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,UAMrB,CAAA"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAM,UAAU,EAAoB,MAAM,UAAU,CAAA;AAM3D,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,OAAqC,CAAA;AAEnF,eAAO,MAAM,aAAa,EAAE,UA8B1B,CAAA;AAEF,eAAO,MAAM,YAAY,EAAE,UAgBzB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,UAAgG,CAAA"}
@@ -5,18 +5,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.profile = exports.wearableUrns = exports.faceThumbnail = exports.isOldEmote = void 0;
7
7
  const schemas_1 = require("@dcl/schemas");
8
+ const urn_resolver_1 = require("@dcl/urn-resolver");
8
9
  const sharp_1 = __importDefault(require("sharp"));
9
- const _1 = require(".");
10
10
  const types_1 = require("../types");
11
- const urn_resolver_1 = require("@dcl/urn-resolver");
11
+ const validations_1 = require("./validations");
12
12
  /** Validate that given profile deployment includes a face256 thumbnail with valid size */
13
13
  const defaultThumbnailSize = 256;
14
14
  const isOldEmote = (wearable) => /^[a-z]+$/i.test(wearable);
15
15
  exports.isOldEmote = isOldEmote;
16
- exports.faceThumbnail = {
16
+ exports.faceThumbnail = (0, validations_1.validationAfterADR45)({
17
17
  validate: async ({ externalCalls }, deployment) => {
18
- if (deployment.entity.timestamp < _1.ADR_45_TIMESTAMP)
19
- return types_1.OK;
20
18
  const errors = [];
21
19
  const allAvatars = deployment.entity.metadata?.avatars ?? [];
22
20
  for (const avatar of allAvatars) {
@@ -38,8 +36,7 @@ exports.faceThumbnail = {
38
36
  if (!width || !height) {
39
37
  errors.push(`Couldn't validate thumbnail size for file 'face256'`);
40
38
  }
41
- else if (width !== defaultThumbnailSize ||
42
- height !== defaultThumbnailSize) {
39
+ else if (width !== defaultThumbnailSize || height !== defaultThumbnailSize) {
43
40
  errors.push(`Invalid face256 thumbnail image size (width = ${width} / height = ${height})`);
44
41
  }
45
42
  }
@@ -49,11 +46,9 @@ exports.faceThumbnail = {
49
46
  }
50
47
  return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
51
48
  }
52
- };
53
- exports.wearableUrns = {
49
+ });
50
+ exports.wearableUrns = (0, validations_1.validationAfterADR75)({
54
51
  validate: async (components, deployment) => {
55
- if (deployment.entity.timestamp < _1.ADR_75_TIMESTAMP)
56
- return types_1.OK;
57
52
  const allAvatars = deployment.entity.metadata?.avatars ?? [];
58
53
  for (const avatar of allAvatars) {
59
54
  for (const pointer of avatar.avatar.wearables) {
@@ -61,21 +56,15 @@ exports.wearableUrns = {
61
56
  continue;
62
57
  const parsed = await (0, urn_resolver_1.parseUrn)(pointer);
63
58
  if (!parsed)
64
- return (0, types_1.validationFailed)(`Wearable pointers should be a urn, for example (urn:decentraland:{protocol}:collections-v2:{contract(0x[a-fA-F0-9]+)}:{name}). Invalid pointer: (${pointer})`);
59
+ return (0, types_1.validationFailed)(`Each profile pointer should be a urn, for example (urn:decentraland:{protocol}:collections-v2:{contract(0x[a-fA-F0-9]+)}:{name}). Invalid pointer: (${pointer})`);
65
60
  }
66
61
  }
67
62
  return types_1.OK;
68
63
  }
69
- };
64
+ });
70
65
  /**
71
66
  * Validate that given profile deployment includes the face256 file with the correct size
72
67
  * * @public
73
68
  */
74
- exports.profile = {
75
- validate: async (components, deployment) => {
76
- if (deployment.entity.type !== schemas_1.EntityType.PROFILE)
77
- return types_1.OK;
78
- return (0, _1.validateInRow)(components, deployment, exports.faceThumbnail, exports.wearableUrns);
79
- }
80
- };
69
+ exports.profile = (0, validations_1.validationForType)(schemas_1.EntityType.PROFILE, (0, validations_1.validationGroup)(exports.faceThumbnail, exports.wearableUrns));
81
70
  //# 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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../src/validations/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,UAAU,EAAoB,MAAM,UAAU,CAAA;AAE3D;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,UAevB,CAAA"}
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../src/validations/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,UAAU,EAAoB,MAAM,UAAU,CAAA;AAE3D;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,UAOvB,CAAA"}
@@ -11,9 +11,7 @@ exports.signature = {
11
11
  validate: async ({ externalCalls }, deployment) => {
12
12
  const { entity, auditInfo } = deployment;
13
13
  const validationResult = await externalCalls.validateSignature(entity.id, auditInfo, entity.timestamp);
14
- return !validationResult.ok
15
- ? (0, types_1.validationFailed)('The signature is invalid. ' + validationResult.message)
16
- : types_1.OK;
14
+ return !validationResult.ok ? (0, types_1.validationFailed)('The signature is invalid. ' + validationResult.message) : types_1.OK;
17
15
  }
18
16
  };
19
17
  //# sourceMappingURL=signature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/validations/signature.ts"],"names":[],"mappings":";;;AAAA,oCAA2D;AAE3D;;;GAGG;AACU,QAAA,SAAS,GAAe;IACnC,oDAAoD;IACpD,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,EAAE;QAChD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;QACxC,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAC5D,MAAM,CAAC,EAAE,EACT,SAAS,EACT,MAAM,CAAC,SAAS,CACjB,CAAA;QACD,OAAO,CAAC,gBAAgB,CAAC,EAAE;YACzB,CAAC,CAAC,IAAA,wBAAgB,EACd,4BAA4B,GAAG,gBAAgB,CAAC,OAAO,CACxD;YACH,CAAC,CAAC,UAAE,CAAA;IACR,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/validations/signature.ts"],"names":[],"mappings":";;;AAAA,oCAA2D;AAE3D;;;GAGG;AACU,QAAA,SAAS,GAAe;IACnC,oDAAoD;IACpD,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,EAAE;QAChD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;QACxC,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;QACtG,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,4BAA4B,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAE,CAAA;IAC9G,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":"AAMA,OAAO,EAAM,UAAU,EAAoB,MAAM,UAAU,CAAA;AAE3D;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,UAkClB,CAAA"}
1
+ {"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,UAAU,EAAoB,MAAM,UAAU,CAAA;AAI3D;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,UA6BlB,CAAA"}
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.size = void 0;
4
- const ADR51_1 = require("./ADR51");
5
4
  const _1 = require(".");
6
5
  const types_1 = require("../types");
6
+ const ADR51_1 = require("./ADR51");
7
+ const timestamps_1 = require("./timestamps");
7
8
  /** Validate that the full request size is within limits
8
9
  *
9
10
  * ADR 45: After given TIMESTAMP will also include previous deployments in the validation
@@ -12,7 +13,7 @@ const types_1 = require("../types");
12
13
  exports.size = {
13
14
  validate: async ({ externalCalls }, deployment) => {
14
15
  const { entity } = deployment;
15
- if (entity.timestamp <= _1.LEGACY_CONTENT_MIGRATION_TIMESTAMP)
16
+ if (entity.timestamp <= timestamps_1.LEGACY_CONTENT_MIGRATION_TIMESTAMP)
16
17
  return types_1.OK;
17
18
  const maxSizeInMB = ADR51_1.entityParameters[entity.type].maxSizeInMB;
18
19
  let errors = [];
@@ -21,7 +22,7 @@ exports.size = {
21
22
  }
22
23
  const maxSizeInBytes = maxSizeInMB * 1024 * 1024;
23
24
  let totalSize = 0;
24
- if (entity.timestamp > _1.ADR_45_TIMESTAMP) {
25
+ if (entity.timestamp > timestamps_1.ADR_45_TIMESTAMP) {
25
26
  const result = await (0, _1.calculateDeploymentSize)(deployment, externalCalls);
26
27
  if (typeof result === 'string')
27
28
  return (0, types_1.validationFailed)(result);
@@ -1 +1 @@
1
- {"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAC1C,wBAIU;AACV,oCAA2D;AAE3D;;;;GAIG;AACU,QAAA,IAAI,GAAe;IAC9B,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,EAAE;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAC7B,IAAI,MAAM,CAAC,SAAS,IAAI,qCAAkC;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,mBAAgB,EAAE;YACvC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAuB,EAAC,UAAU,EAAE,aAAa,CAAC,CAAA;YACvE,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,CACtD,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,EACpC,CAAC,CACF,CAAA;SACF;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,0BACE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,cAC3B,kCAAkC,SAAS,GAAG;aAC/C,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;CACF,CAAA"}
1
+ {"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":";;;AAAA,wBAA2C;AAC3C,oCAA2D;AAC3D,mCAA0C;AAC1C,6CAAmF;AAEnF;;;;GAIG;AACU,QAAA,IAAI,GAAe;IAC9B,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,EAAE;QAChD,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,aAAa,CAAC,CAAA;YACvE,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;CACF,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 1656633600000 = 2022-07-01T00:00:00Z
3
+ * @public
4
+ */
5
+ export declare const ADR_74_TIMESTAMP: number;
6
+ /**
7
+ * 1652191200000 = 2022-05-10T14:00:00Z
8
+ * @public
9
+ */
10
+ export declare const ADR_45_TIMESTAMP: number;
11
+ /**
12
+ * 1658275200000 = 2022-07-20T00:00:00Z
13
+ * @public
14
+ */
15
+ export declare const ADR_75_TIMESTAMP: number;
16
+ /**
17
+ * DCL Launch Day
18
+ * @public
19
+ */
20
+ export declare const LEGACY_CONTENT_MIGRATION_TIMESTAMP = 1582167600000;
21
+ //# sourceMappingURL=timestamps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestamps.d.ts","sourceRoot":"","sources":["../../src/validations/timestamps.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAwF,CAAA;AAErH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAwF,CAAA;AAErH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAwF,CAAA;AAErH;;;GAGG;AACH,eAAO,MAAM,kCAAkC,gBAAgB,CAAA"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LEGACY_CONTENT_MIGRATION_TIMESTAMP = exports.ADR_75_TIMESTAMP = exports.ADR_45_TIMESTAMP = exports.ADR_74_TIMESTAMP = void 0;
4
+ /**
5
+ * 1656633600000 = 2022-07-01T00:00:00Z
6
+ * @public
7
+ */
8
+ exports.ADR_74_TIMESTAMP = process.env.ADR_74_TIMESTAMP ? parseInt(process.env.ADR_74_TIMESTAMP) : 1656633600000;
9
+ /**
10
+ * 1652191200000 = 2022-05-10T14:00:00Z
11
+ * @public
12
+ */
13
+ exports.ADR_45_TIMESTAMP = process.env.ADR_45_TIMESTAMP ? parseInt(process.env.ADR_45_TIMESTAMP) : 1652191200000;
14
+ /**
15
+ * 1658275200000 = 2022-07-20T00:00:00Z
16
+ * @public
17
+ */
18
+ exports.ADR_75_TIMESTAMP = process.env.ADR_75_TIMESTAMP ? parseInt(process.env.ADR_75_TIMESTAMP) : 1658275200000;
19
+ /**
20
+ * DCL Launch Day
21
+ * @public
22
+ */
23
+ exports.LEGACY_CONTENT_MIGRATION_TIMESTAMP = 1582167600000;
24
+ //# sourceMappingURL=timestamps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestamps.js","sourceRoot":"","sources":["../../src/validations/timestamps.ts"],"names":[],"mappings":";;;AAAA;;;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,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,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"}
@@ -0,0 +1,9 @@
1
+ import { EntityType } from '@dcl/schemas';
2
+ import { DeploymentToValidate, Validation } from '../types';
3
+ export declare function validationGroup(...validations: Validation[]): Validation;
4
+ export declare function conditionalValidation(condition: (deployment: DeploymentToValidate) => boolean | Promise<boolean>, validation: Validation): Validation;
5
+ export declare function validationAfterADR45(validation: Validation): Validation;
6
+ export declare function validationAfterADR75(validation: Validation): Validation;
7
+ export declare function validationAfterADR74(validation: Validation): Validation;
8
+ export declare function validationForType(entityType: EntityType, validation: Validation): Validation;
9
+ //# sourceMappingURL=validations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/validations/validations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAA8B,oBAAoB,EAAM,UAAU,EAAsB,MAAM,UAAU,CAAA;AAG/G,wBAAgB,eAAe,CAAC,GAAG,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,CAaxE;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAC3E,UAAU,EAAE,UAAU,GACrB,UAAU,CAUZ;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAEvE;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAEvE;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAEvE;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,cAE/E"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validationForType = exports.validationAfterADR74 = exports.validationAfterADR75 = exports.validationAfterADR45 = exports.conditionalValidation = exports.validationGroup = void 0;
4
+ const types_1 = require("../types");
5
+ const timestamps_1 = require("./timestamps");
6
+ function validationGroup(...validations) {
7
+ return {
8
+ async validate(components, deployment) {
9
+ for (const validation of validations) {
10
+ const response = await validation.validate(components, deployment);
11
+ if (!response.ok)
12
+ return response;
13
+ }
14
+ return types_1.OK;
15
+ }
16
+ };
17
+ }
18
+ exports.validationGroup = validationGroup;
19
+ function conditionalValidation(condition, validation) {
20
+ return {
21
+ async validate(components, deployment) {
22
+ const conditionIsMet = await condition(deployment);
23
+ if (conditionIsMet) {
24
+ return validation.validate(components, deployment);
25
+ }
26
+ return types_1.OK;
27
+ }
28
+ };
29
+ }
30
+ exports.conditionalValidation = conditionalValidation;
31
+ function validationAfterADR45(validation) {
32
+ return conditionalValidation((deployment) => deployment.entity.timestamp >= timestamps_1.ADR_45_TIMESTAMP, validation);
33
+ }
34
+ exports.validationAfterADR45 = validationAfterADR45;
35
+ function validationAfterADR75(validation) {
36
+ return conditionalValidation((deployment) => deployment.entity.timestamp >= timestamps_1.ADR_75_TIMESTAMP, validation);
37
+ }
38
+ exports.validationAfterADR75 = validationAfterADR75;
39
+ function validationAfterADR74(validation) {
40
+ return conditionalValidation((deployment) => deployment.entity.timestamp >= timestamps_1.ADR_74_TIMESTAMP, validation);
41
+ }
42
+ exports.validationAfterADR74 = validationAfterADR74;
43
+ function validationForType(entityType, validation) {
44
+ return conditionalValidation((deployment) => deployment.entity.type === entityType, validation);
45
+ }
46
+ exports.validationForType = validationForType;
47
+ //# sourceMappingURL=validations.js.map