@dcl/content-validator 2.1.1-20220621133633.commit-24da31f → 2.1.1-20220623134639.commit-ca80e03

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 (90) hide show
  1. package/dist/content-validator.api.json +104 -217
  2. package/dist/the-graph-client/the-graph-client.d.ts.map +1 -1
  3. package/dist/the-graph-client/the-graph-client.js +7 -13
  4. package/dist/the-graph-client/the-graph-client.js.map +1 -1
  5. package/dist/types.d.ts +11 -24
  6. package/dist/types.d.ts.map +1 -1
  7. package/dist/types.js +1 -16
  8. package/dist/types.js.map +1 -1
  9. package/dist/validations/ADR51.d.ts +3 -5
  10. package/dist/validations/ADR51.d.ts.map +1 -1
  11. package/dist/validations/ADR51.js +4 -0
  12. package/dist/validations/ADR51.js.map +1 -1
  13. package/dist/validations/access-checker/access.d.ts.map +1 -1
  14. package/dist/validations/access-checker/access.js +5 -3
  15. package/dist/validations/access-checker/access.js.map +1 -1
  16. package/dist/validations/access-checker/emotes.d.ts +3 -0
  17. package/dist/validations/access-checker/emotes.d.ts.map +1 -0
  18. package/dist/validations/access-checker/emotes.js +13 -0
  19. package/dist/validations/access-checker/emotes.js.map +1 -0
  20. package/dist/validations/access-checker/items/collection-asset.d.ts +15 -0
  21. package/dist/validations/access-checker/items/collection-asset.d.ts.map +1 -0
  22. package/dist/validations/access-checker/items/collection-asset.js +133 -0
  23. package/dist/validations/access-checker/items/collection-asset.js.map +1 -0
  24. package/dist/validations/access-checker/items/items.d.ts +13 -0
  25. package/dist/validations/access-checker/items/items.d.ts.map +1 -0
  26. package/dist/validations/access-checker/items/items.js +68 -0
  27. package/dist/validations/access-checker/items/items.js.map +1 -0
  28. package/dist/validations/access-checker/items/off-chain-asset.d.ts +3 -0
  29. package/dist/validations/access-checker/items/off-chain-asset.d.ts.map +1 -0
  30. package/dist/validations/access-checker/items/off-chain-asset.js +17 -0
  31. package/dist/validations/access-checker/items/off-chain-asset.js.map +1 -0
  32. package/dist/validations/access-checker/items/third-party-asset.d.ts +3 -0
  33. package/dist/validations/access-checker/items/third-party-asset.d.ts.map +1 -0
  34. package/dist/validations/access-checker/items/third-party-asset.js +107 -0
  35. package/dist/validations/access-checker/items/third-party-asset.js.map +1 -0
  36. package/dist/validations/access-checker/profiles.d.ts.map +1 -1
  37. package/dist/validations/access-checker/profiles.js +3 -3
  38. package/dist/validations/access-checker/profiles.js.map +1 -1
  39. package/dist/validations/access-checker/scenes.d.ts.map +1 -1
  40. package/dist/validations/access-checker/scenes.js +3 -3
  41. package/dist/validations/access-checker/scenes.js.map +1 -1
  42. package/dist/validations/access-checker/wearables.d.ts +0 -18
  43. package/dist/validations/access-checker/wearables.d.ts.map +1 -1
  44. package/dist/validations/access-checker/wearables.js +9 -308
  45. package/dist/validations/access-checker/wearables.js.map +1 -1
  46. package/dist/validations/content.d.ts +3 -0
  47. package/dist/validations/content.d.ts.map +1 -1
  48. package/dist/validations/content.js +30 -17
  49. package/dist/validations/content.js.map +1 -1
  50. package/dist/validations/index.d.ts +4 -23
  51. package/dist/validations/index.d.ts.map +1 -1
  52. package/dist/validations/index.js +4 -31
  53. package/dist/validations/index.js.map +1 -1
  54. package/dist/validations/ipfs-hashing.d.ts.map +1 -1
  55. package/dist/validations/ipfs-hashing.js +3 -6
  56. package/dist/validations/ipfs-hashing.js.map +1 -1
  57. package/dist/validations/items/emotes.d.ts +5 -0
  58. package/dist/validations/items/emotes.d.ts.map +1 -0
  59. package/dist/validations/items/emotes.js +35 -0
  60. package/dist/validations/items/emotes.js.map +1 -0
  61. package/dist/validations/items/items.d.ts +10 -0
  62. package/dist/validations/items/items.d.ts.map +1 -0
  63. package/dist/validations/items/items.js +79 -0
  64. package/dist/validations/items/items.js.map +1 -0
  65. package/dist/validations/{wearable.d.ts → items/wearables.d.ts} +2 -5
  66. package/dist/validations/items/wearables.d.ts.map +1 -0
  67. package/dist/validations/items/wearables.js +32 -0
  68. package/dist/validations/items/wearables.js.map +1 -0
  69. package/dist/validations/metadata-schema.d.ts +2 -5
  70. package/dist/validations/metadata-schema.d.ts.map +1 -1
  71. package/dist/validations/metadata-schema.js +37 -7
  72. package/dist/validations/metadata-schema.js.map +1 -1
  73. package/dist/validations/profile.d.ts.map +1 -1
  74. package/dist/validations/profile.js +8 -18
  75. package/dist/validations/profile.js.map +1 -1
  76. package/dist/validations/size.d.ts.map +1 -1
  77. package/dist/validations/size.js +4 -3
  78. package/dist/validations/size.js.map +1 -1
  79. package/dist/validations/timestamps.d.ts +21 -0
  80. package/dist/validations/timestamps.d.ts.map +1 -0
  81. package/dist/validations/timestamps.js +24 -0
  82. package/dist/validations/timestamps.js.map +1 -0
  83. package/dist/validations/validations.d.ts +9 -0
  84. package/dist/validations/validations.d.ts.map +1 -0
  85. package/dist/validations/validations.js +47 -0
  86. package/dist/validations/validations.js.map +1 -0
  87. package/package.json +4 -3
  88. package/dist/validations/wearable.d.ts.map +0 -1
  89. package/dist/validations/wearable.js +0 -110
  90. package/dist/validations/wearable.js.map +0 -1
@@ -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":"size.d.ts","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":"AAEA,OAAO,EAAM,UAAU,EAAoB,MAAM,UAAU,CAAA;AAE3D;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,UA6BlB,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,wBAAiG;AACjG,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,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"}
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validations.js","sourceRoot":"","sources":["../../src/validations/validations.ts"],"names":[],"mappings":";;;AACA,oCAA+G;AAC/G,6CAAmF;AAEnF,SAAgB,eAAe,CAAC,GAAG,WAAyB;IAC1D,OAAO;QACL,KAAK,CAAC,QAAQ,CACZ,UAAsC,EACtC,UAAgC;YAEhC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;gBACpC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;gBAClE,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAAE,OAAO,QAAQ,CAAA;aAClC;YACD,OAAO,UAAE,CAAA;QACX,CAAC;KACF,CAAA;AACH,CAAC;AAbD,0CAaC;AAED,SAAgB,qBAAqB,CACnC,SAA2E,EAC3E,UAAsB;IAEtB,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,UAAsC,EAAE,UAAgC;YACrF,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAA;YAClD,IAAI,cAAc,EAAE;gBAClB,OAAO,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;aACnD;YACD,OAAO,UAAE,CAAA;QACX,CAAC;KACF,CAAA;AACH,CAAC;AAbD,sDAaC;AAED,SAAgB,oBAAoB,CAAC,UAAsB;IACzD,OAAO,qBAAqB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,6BAAgB,EAAE,UAAU,CAAC,CAAA;AAC3G,CAAC;AAFD,oDAEC;AAED,SAAgB,oBAAoB,CAAC,UAAsB;IACzD,OAAO,qBAAqB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,6BAAgB,EAAE,UAAU,CAAC,CAAA;AAC3G,CAAC;AAFD,oDAEC;AAED,SAAgB,oBAAoB,CAAC,UAAsB;IACzD,OAAO,qBAAqB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,6BAAgB,EAAE,UAAU,CAAC,CAAA;AAC3G,CAAC;AAFD,oDAEC;AAED,SAAgB,iBAAiB,CAAC,UAAsB,EAAE,UAAsB;IAC9E,OAAO,qBAAqB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,UAAU,CAAC,CAAA;AACjG,CAAC;AAFD,8CAEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcl/content-validator",
3
- "version": "2.1.1-20220621133633.commit-24da31f",
3
+ "version": "2.1.1-20220623134639.commit-ca80e03",
4
4
  "description": "Catalyst content validations",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -50,14 +50,15 @@
50
50
  "dependencies": {
51
51
  "@dcl/content-hash-tree": "^1.1.3",
52
52
  "@dcl/hashing": "1.1.0",
53
- "@dcl/schemas": "^4.14.0",
53
+ "@dcl/schemas": "^5.0.3",
54
54
  "@dcl/urn-resolver": "1.3.1",
55
55
  "@well-known-components/interfaces": "1.1.1",
56
+ "@well-known-components/thegraph-component": "^1.1.0",
56
57
  "ms": "2.1.3",
57
58
  "sharp": "^0.30.6"
58
59
  },
59
60
  "files": [
60
61
  "dist"
61
62
  ],
62
- "commit": "24da31fab32a97741362e297019e242365d7a772"
63
+ "commit": "ca80e03095d3d7d09d70ef26738f5cb03e1483d8"
63
64
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"wearable.d.ts","sourceRoot":"","sources":["../../src/validations/wearable.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkC,UAAU,EAAoB,MAAM,UAAU,CAAA;AAIvF,sEAAsE;AACtE,eAAO,MAAM,6BAA6B,EAAE,UAiB3C,CAAA;AAED,+EAA+E;AAC/E,eAAO,MAAM,YAAY,EAAE,UA0B1B,CAAA;AAID,eAAO,MAAM,iBAAiB,EAAE,UAoC/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,UAKtB,CAAA"}
@@ -1,110 +0,0 @@
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.wearable = exports.wearableThumbnail = exports.wearableSize = exports.wearableRepresentationContent = void 0;
7
- const schemas_1 = require("@dcl/schemas");
8
- const ADR51_1 = require("./ADR51");
9
- const sharp_1 = __importDefault(require("sharp"));
10
- const _1 = require(".");
11
- const types_1 = require("../types");
12
- const wearableSizeLimitInMB = 2;
13
- /** Validate wearable representations are referencing valid content */
14
- exports.wearableRepresentationContent = {
15
- validate: async (components, deployment) => {
16
- const { entity } = deployment;
17
- const wearableMetadata = entity.metadata;
18
- const representations = wearableMetadata?.data?.representations;
19
- if (!representations)
20
- return (0, types_1.validationFailed)('No wearable representations found');
21
- if (!entity.content)
22
- return (0, types_1.validationFailed)('No content found');
23
- for (const representation of representations) {
24
- for (const representationContent of representation.contents) {
25
- if (!entity.content.find((content) => content.file === representationContent)) {
26
- return (0, types_1.validationFailed)(`Representation content: '${representationContent}' is not one of the content files`);
27
- }
28
- }
29
- }
30
- return types_1.OK;
31
- }
32
- };
33
- /** Validate wearable files size, excluding thumbnail, is less than expected */
34
- exports.wearableSize = {
35
- validate: async ({ externalCalls }, deployment) => {
36
- const entity = deployment.entity;
37
- if (entity.timestamp < _1.ADR_45_TIMESTAMP)
38
- return types_1.OK;
39
- const maxSizeInMB = ADR51_1.entityParameters[schemas_1.EntityType.WEARABLE]?.maxSizeInMB;
40
- if (!maxSizeInMB)
41
- return (0, types_1.validationFailed)(`Type ${schemas_1.EntityType.WEARABLE} is not supported yet`);
42
- const modelSizeInMB = wearableSizeLimitInMB;
43
- const metadata = entity.metadata;
44
- const thumbnailHash = entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
45
- if (!thumbnailHash)
46
- return (0, types_1.validationFailed)("Couldn't find the thumbnail hash");
47
- const result = await (0, _1.calculateDeploymentSize)(deployment, externalCalls);
48
- if (typeof result === 'string')
49
- return (0, types_1.validationFailed)(result);
50
- const totalDeploymentSize = result;
51
- const thumbnailSize = deployment.files.get(thumbnailHash)?.byteLength ?? 0;
52
- const modelSize = totalDeploymentSize - thumbnailSize;
53
- if (modelSize > modelSizeInMB * 1024 * 1024)
54
- return (0, types_1.validationFailed)(`The deployment is too big. The maximum allowed size for wearable model files is ${modelSizeInMB} MB. You can upload up to ${modelSizeInMB * 1024 * 1024} bytes but you tried to upload ${modelSize}.`);
55
- return types_1.OK;
56
- }
57
- };
58
- /** Validate that given wearable deployment includes a thumbnail with valid format and size */
59
- const maxThumbnailSize = 1024;
60
- exports.wearableThumbnail = {
61
- validate: async ({ externalCalls, logs }, deployment) => {
62
- const logger = logs.getLogger('wearable validator');
63
- if (deployment.entity.timestamp < _1.ADR_45_TIMESTAMP)
64
- return types_1.OK;
65
- // read thumbnail field from metadata
66
- const metadata = deployment.entity.metadata;
67
- const hash = deployment.entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
68
- if (!hash)
69
- return (0, types_1.validationFailed)(`Couldn't find hash for thumbnail file with name: ${metadata.thumbnail}`);
70
- const errors = [];
71
- // check size
72
- const thumbnailBuffer = deployment.files.get(hash);
73
- if (!thumbnailBuffer) {
74
- const isHashStored = (await externalCalls.isContentStoredAlready([hash])).get(hash) ?? false;
75
- if (!isHashStored) {
76
- return (0, types_1.validationFailed)(`Couldn't find thumbnail file with hash: ${hash}`);
77
- }
78
- // otherwise, thumbnail was already uploaded and won't be validated again
79
- logger.debug(`Thumbnail file with hash: ${hash} is not in the deployment, but it is already stored`);
80
- return types_1.OK;
81
- }
82
- try {
83
- const { width, height, format } = await (0, sharp_1.default)(thumbnailBuffer).metadata();
84
- if (!format || format !== 'png')
85
- errors.push(`Invalid or unknown image format. Only 'PNG' format is accepted.`);
86
- if (!width || !height) {
87
- errors.push(`Couldn't validate thumbnail size for file ${metadata.thumbnail}`);
88
- }
89
- else if (width > maxThumbnailSize || height > maxThumbnailSize) {
90
- errors.push(`Invalid thumbnail image size (width = ${width} / height = ${height})`);
91
- }
92
- }
93
- catch (e) {
94
- errors.push(`Couldn't parse thumbnail, please check image format.`);
95
- }
96
- return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
97
- }
98
- };
99
- /**
100
- * Validate that given wearable deployment includes the thumbnail and doesn't exceed file sizes
101
- * * @public
102
- */
103
- exports.wearable = {
104
- validate: async (components, deployment) => {
105
- if (deployment.entity.type !== schemas_1.EntityType.WEARABLE)
106
- return types_1.OK;
107
- return (0, _1.validateInRow)(components, deployment, exports.wearableRepresentationContent, exports.wearableThumbnail, exports.wearableSize);
108
- }
109
- };
110
- //# sourceMappingURL=wearable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wearable.js","sourceRoot":"","sources":["../../src/validations/wearable.ts"],"names":[],"mappings":"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"}