@dcl/content-validator 1.0.1-20220128144241.commit-9e37746 → 1.0.2-20220207171651.commit-57ffa8d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -172,18 +172,22 @@
172
172
  {
173
173
  "kind": "Variable",
174
174
  "canonicalReference": "@dcl/content-validator!ADR_45_TIMESTAMP:var",
175
- "docComment": "/**\n * @public\n */\n",
175
+ "docComment": "/**\n * 1648771200000 = April 1st 2022 UTC\n *\n * @public\n */\n",
176
176
  "excerptTokens": [
177
177
  {
178
178
  "kind": "Content",
179
- "text": "ADR_45_TIMESTAMP = 1648954800000"
179
+ "text": "ADR_45_TIMESTAMP: "
180
+ },
181
+ {
182
+ "kind": "Content",
183
+ "text": "number"
180
184
  }
181
185
  ],
182
186
  "releaseTag": "Public",
183
187
  "name": "ADR_45_TIMESTAMP",
184
188
  "variableTypeTokenRange": {
185
- "startIndex": 0,
186
- "endIndex": 0
189
+ "startIndex": 1,
190
+ "endIndex": 2
187
191
  }
188
192
  },
189
193
  {
@@ -815,6 +819,15 @@
815
819
  "text": "Validation",
816
820
  "canonicalReference": "@dcl/content-validator!Validation:type"
817
821
  },
822
+ {
823
+ "kind": "Content",
824
+ "text": ", "
825
+ },
826
+ {
827
+ "kind": "Reference",
828
+ "text": "Validation",
829
+ "canonicalReference": "@dcl/content-validator!Validation:type"
830
+ },
818
831
  {
819
832
  "kind": "Content",
820
833
  "text": "]"
@@ -824,7 +837,7 @@
824
837
  "name": "statefulValidations",
825
838
  "variableTypeTokenRange": {
826
839
  "startIndex": 1,
827
- "endIndex": 12
840
+ "endIndex": 14
828
841
  }
829
842
  },
830
843
  {
@@ -1186,6 +1199,15 @@
1186
1199
  "text": "Validation",
1187
1200
  "canonicalReference": "@dcl/content-validator!Validation:type"
1188
1201
  },
1202
+ {
1203
+ "kind": "Content",
1204
+ "text": ", "
1205
+ },
1206
+ {
1207
+ "kind": "Reference",
1208
+ "text": "Validation",
1209
+ "canonicalReference": "@dcl/content-validator!Validation:type"
1210
+ },
1189
1211
  {
1190
1212
  "kind": "Content",
1191
1213
  "text": "]"
@@ -1195,7 +1217,7 @@
1195
1217
  "name": "validations",
1196
1218
  "variableTypeTokenRange": {
1197
1219
  "startIndex": 1,
1198
- "endIndex": 18
1220
+ "endIndex": 20
1199
1221
  }
1200
1222
  },
1201
1223
  {
@@ -4,9 +4,10 @@ import { DeploymentToValidate, ExternalCalls, Validation, ValidationArgs, Valida
4
4
  */
5
5
  export declare const validateInRow: (validationArgs: ValidationArgs, ...validations: Validation[]) => Promise<ValidationResponse>;
6
6
  /**
7
+ * 1648771200000 = April 1st 2022 UTC
7
8
  * @public
8
9
  */
9
- export declare const ADR_45_TIMESTAMP = 1648954800000;
10
+ export declare const ADR_45_TIMESTAMP: number;
10
11
  /**
11
12
  * DCL Launch Day
12
13
  * @public
@@ -20,7 +21,7 @@ export declare const calculateDeploymentSize: (deployment: DeploymentToValidate,
20
21
  * Stateful validations that are run on a deployment.
21
22
  * @public
22
23
  */
23
- export declare const statefulValidations: readonly [Validation, Validation, Validation, Validation, Validation];
24
+ export declare const statefulValidations: readonly [Validation, Validation, Validation, Validation, Validation, Validation];
24
25
  /**
25
26
  * Stateless validations that are run on a deployment.
26
27
  * @public
@@ -30,5 +31,5 @@ export declare const statelessValidations: readonly [Validation, Validation, Val
30
31
  * All validations that are run on a deployment.
31
32
  * @public
32
33
  */
33
- export declare const validations: readonly [Validation, Validation, Validation, Validation, Validation, Validation, Validation, Validation];
34
+ export declare const validations: readonly [Validation, Validation, Validation, Validation, Validation, Validation, Validation, Validation, Validation];
34
35
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAM,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAUlH;;GAEG;AACH,eAAO,MAAM,aAAa,mBACR,cAAc,kBACd,UAAU,EAAE,KAC3B,QAAQ,kBAAkB,CAM5B,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,gBAAgB,gBAAgB,CAAA;AAE7C;;;GAGG;AACH,eAAO,MAAM,kCAAkC,gBAAgB,CAAA;AAE/D;;GAEG;AACH,eAAO,MAAM,uBAAuB,eACtB,oBAAoB,iBACjB,aAAa,KAC3B,QAAQ,MAAM,GAAG,MAAM,CAazB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,uEAAwD,CAAA;AAExF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,+CAAoD,CAAA;AAErF;;;GAGG;AACH,eAAO,MAAM,WAAW,2GAA6D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAM,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAWlH;;GAEG;AACH,eAAO,MAAM,aAAa,mBACR,cAAc,kBACd,UAAU,EAAE,KAC3B,QAAQ,kBAAkB,CAM5B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAwF,CAAA;AAErH;;;GAGG;AACH,eAAO,MAAM,kCAAkC,gBAAgB,CAAA;AAE/D;;GAEG;AACH,eAAO,MAAM,uBAAuB,eACtB,oBAAoB,iBACjB,aAAa,KAC3B,QAAQ,MAAM,GAAG,MAAM,CAazB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,mFAAiE,CAAA;AAEjG;;;GAGG;AACH,eAAO,MAAM,oBAAoB,+CAAoD,CAAA;AAErF;;;GAGG;AACH,eAAO,MAAM,WAAW,uHAA6D,CAAA"}
@@ -10,6 +10,7 @@ const metadata_schema_1 = require("./metadata-schema");
10
10
  const signature_1 = require("./signature");
11
11
  const size_1 = require("./size");
12
12
  const wearable_1 = require("./wearable");
13
+ const profile_1 = require("./profile");
13
14
  /**
14
15
  * @public
15
16
  */
@@ -22,11 +23,11 @@ const validateInRow = async (validationArgs, ...validations) => {
22
23
  return types_1.OK;
23
24
  };
24
25
  exports.validateInRow = validateInRow;
25
- // todo: review/define date for entities v4 (for the time being, it is set for test purposes)
26
26
  /**
27
+ * 1648771200000 = April 1st 2022 UTC
27
28
  * @public
28
29
  */
29
- exports.ADR_45_TIMESTAMP = 1648954800000;
30
+ exports.ADR_45_TIMESTAMP = process.env.ADR_45_TIMESTAMP ? parseInt(process.env.ADR_45_TIMESTAMP) : 1648771200000;
30
31
  /**
31
32
  * DCL Launch Day
32
33
  * @public
@@ -56,7 +57,7 @@ exports.calculateDeploymentSize = calculateDeploymentSize;
56
57
  * Stateful validations that are run on a deployment.
57
58
  * @public
58
59
  */
59
- exports.statefulValidations = [signature_1.signature, access_1.access, size_1.size, wearable_1.wearable, content_1.content];
60
+ exports.statefulValidations = [signature_1.signature, access_1.access, size_1.size, wearable_1.wearable, profile_1.profile, content_1.content];
60
61
  /**
61
62
  * Stateless validations that are run on a deployment.
62
63
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":";;;AAAA,oCAAkH;AAClH,oDAAgD;AAChD,uCAAmC;AACnC,yDAAoD;AACpD,iDAA4C;AAC5C,uDAA4C;AAC5C,2CAAuC;AACvC,iCAA6B;AAC7B,yCAAqC;AAErC;;GAEG;AACI,MAAM,aAAa,GAAG,KAAK,EAChC,cAA8B,EAC9B,GAAG,WAAyB,EACC,EAAE;IAC/B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QACpC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAA;KAClC;IACD,OAAO,UAAE,CAAA;AACX,CAAC,CAAA;AATY,QAAA,aAAa,iBASzB;AAED,6FAA6F;AAC7F;;GAEG;AACU,QAAA,gBAAgB,GAAG,aAAa,CAAA;AAE7C;;;GAGG;AACU,QAAA,kCAAkC,GAAG,aAAa,CAAA;AAE/D;;GAEG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAC1C,UAAgC,EAChC,aAA4B,EACF,EAAE;IAC5B,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;QACrF,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,YAAY,EAAE;YAChB,SAAS,IAAI,YAAY,CAAC,UAAU,CAAA;SACrC;aAAM;YACL,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAClE,IAAI,CAAC,WAAW;gBAAE,OAAO,0CAA0C,IAAI,EAAE,CAAA;YACzE,SAAS,IAAI,WAAW,CAAA;SACzB;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAhBY,QAAA,uBAAuB,2BAgBnC;AAED;;;GAGG;AACU,QAAA,mBAAmB,GAAG,CAAC,qBAAS,EAAE,eAAM,EAAE,WAAI,EAAE,mBAAQ,EAAE,iBAAO,CAAU,CAAA;AAExF;;;GAGG;AACU,QAAA,oBAAoB,GAAG,CAAC,kCAAe,EAAE,0BAAW,EAAE,0BAAQ,CAAU,CAAA;AAErF;;;GAGG;AACU,QAAA,WAAW,GAAG,CAAC,GAAG,4BAAoB,EAAE,GAAG,2BAAmB,CAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":";;;AAAA,oCAAkH;AAClH,oDAAgD;AAChD,uCAAmC;AACnC,yDAAoD;AACpD,iDAA4C;AAC5C,uDAA4C;AAC5C,2CAAuC;AACvC,iCAA6B;AAC7B,yCAAqC;AACrC,uCAAmC;AAEnC;;GAEG;AACI,MAAM,aAAa,GAAG,KAAK,EAChC,cAA8B,EAC9B,GAAG,WAAyB,EACC,EAAE;IAC/B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QACpC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAA;KAClC;IACD,OAAO,UAAE,CAAA;AACX,CAAC,CAAA;AATY,QAAA,aAAa,iBASzB;AAED;;;GAGG;AACU,QAAA,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAA;AAErH;;;GAGG;AACU,QAAA,kCAAkC,GAAG,aAAa,CAAA;AAE/D;;GAEG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAC1C,UAAgC,EAChC,aAA4B,EACF,EAAE;IAC5B,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;QACrF,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,YAAY,EAAE;YAChB,SAAS,IAAI,YAAY,CAAC,UAAU,CAAA;SACrC;aAAM;YACL,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAClE,IAAI,CAAC,WAAW;gBAAE,OAAO,0CAA0C,IAAI,EAAE,CAAA;YACzE,SAAS,IAAI,WAAW,CAAA;SACzB;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAhBY,QAAA,uBAAuB,2BAgBnC;AAED;;;GAGG;AACU,QAAA,mBAAmB,GAAG,CAAC,qBAAS,EAAE,eAAM,EAAE,WAAI,EAAE,mBAAQ,EAAE,iBAAO,EAAE,iBAAO,CAAU,CAAA;AAEjG;;;GAGG;AACU,QAAA,oBAAoB,GAAG,CAAC,kCAAe,EAAE,0BAAW,EAAE,0BAAQ,CAAU,CAAA;AAErF;;;GAGG;AACU,QAAA,WAAW,GAAG,CAAC,GAAG,4BAAoB,EAAE,GAAG,2BAAmB,CAAU,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { Validation } from '../types';
2
+ export declare const faceThumbnail: Validation;
3
+ /**
4
+ * Validate that given profile deployment includes the face256 file with the correct size
5
+ * * @public
6
+ */
7
+ export declare const profile: Validation;
8
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAM,UAAU,EAAwC,MAAM,UAAU,CAAA;AAM/E,eAAO,MAAM,aAAa,EAAE,UAwB3B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,UAQrB,CAAA"}
@@ -0,0 +1,57 @@
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.profile = exports.faceThumbnail = void 0;
7
+ const dcl_catalyst_commons_1 = require("dcl-catalyst-commons");
8
+ const sharp_1 = __importDefault(require("sharp"));
9
+ const _1 = require(".");
10
+ const types_1 = require("../types");
11
+ /** Validate that given profile deployment includes a face256 thumbnail with valid size */
12
+ const defaultThumbnailSize = 256;
13
+ const faceThumbnailFileName = 'face256.png';
14
+ exports.faceThumbnail = {
15
+ validate: async ({ deployment }) => {
16
+ if (deployment.entity.timestamp < _1.ADR_45_TIMESTAMP)
17
+ return types_1.OK;
18
+ const hash = deployment.entity.content?.find(({ file }) => file === faceThumbnailFileName)?.hash;
19
+ if (!hash)
20
+ return (0, types_1.validationFailed)(`Couldn't find hash for face256 thumbnail file with name: ${faceThumbnailFileName}`);
21
+ const errors = [];
22
+ // check size
23
+ const thumbnailBuffer = deployment.files.get(hash);
24
+ if (!thumbnailBuffer)
25
+ return (0, types_1.validationFailed)(`Couldn't find thumbnail file with hash: ${hash}`);
26
+ try {
27
+ const { width, height, format } = await (0, sharp_1.default)(thumbnailBuffer).metadata();
28
+ if (!format || format !== 'png')
29
+ errors.push(`Invalid or unknown image format. Only 'PNG' format is accepted.`);
30
+ if (!width || !height) {
31
+ errors.push(`Couldn't validate thumbnail size for file ${faceThumbnailFileName}`);
32
+ }
33
+ else if (width !== defaultThumbnailSize || height !== defaultThumbnailSize) {
34
+ errors.push(`Invalid face256 thumbnail image size (width = ${width} / height = ${height})`);
35
+ }
36
+ }
37
+ catch (e) {
38
+ errors.push(`Couldn't parse face256 thumbnail, please check image format.`);
39
+ }
40
+ return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
41
+ },
42
+ };
43
+ /**
44
+ * Validate that given profile deployment includes the face256 file with the correct size
45
+ * * @public
46
+ */
47
+ exports.profile = {
48
+ validate: async (args) => {
49
+ if (args.deployment.entity.type !== dcl_catalyst_commons_1.EntityType.PROFILE)
50
+ return types_1.OK;
51
+ const response = await exports.faceThumbnail.validate(args);
52
+ if (!response.ok)
53
+ return response;
54
+ return types_1.OK;
55
+ },
56
+ };
57
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":";;;;;;AAAA,+DAAiD;AACjD,kDAAyB;AACzB,wBAAoC;AACpC,oCAA+E;AAG/E,0FAA0F;AAC1F,MAAM,oBAAoB,GAAG,GAAG,CAAA;AAChC,MAAM,qBAAqB,GAAG,aAAa,CAAA;AAC9B,QAAA,aAAa,GAAe;IACvC,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACjC,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,GAAG,mBAAgB;YAAE,OAAO,UAAE,CAAA;QAE7D,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,qBAAqB,CAAC,EAAE,IAAI,CAAA;QAChG,IAAI,CAAC,IAAI;YAAE,OAAO,IAAA,wBAAgB,EAAC,4DAA4D,qBAAqB,EAAE,CAAC,CAAA;QAEvH,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,aAAa;QACb,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAClD,IAAI,CAAC,eAAe;YAAE,OAAO,IAAA,wBAAgB,EAAC,2CAA2C,IAAI,EAAE,CAAC,CAAA;QAChG,IAAI;YACF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,eAAK,EAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAA;YACzE,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;YAC/G,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;gBACrB,MAAM,CAAC,IAAI,CAAC,6CAA6C,qBAAqB,EAAE,CAAC,CAAA;aAClF;iBAAM,IAAI,KAAK,KAAK,oBAAoB,IAAI,MAAM,KAAK,oBAAoB,EAAE;gBAC5E,MAAM,CAAC,IAAI,CAAC,iDAAiD,KAAK,eAAe,MAAM,GAAG,CAAC,CAAA;aAC5F;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAA;SAC5E;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;AAED;;;GAGG;AACU,QAAA,OAAO,GAAe;IACjC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,iCAAU,CAAC,OAAO;YAAE,OAAO,UAAE,CAAA;QACjE,MAAM,QAAQ,GAAuB,MAAM,qBAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEvE,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAA;QACjC,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcl/content-validator",
3
- "version": "1.0.1-20220128144241.commit-9e37746",
3
+ "version": "1.0.2-20220207171651.commit-57ffa8d",
4
4
  "description": "Catalyst content validations",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -37,12 +37,12 @@
37
37
  "@dcl/urn-resolver": "^1.3.0",
38
38
  "@ethersproject/address": "^5.5.0",
39
39
  "@well-known-components/interfaces": "1.1.1",
40
- "dcl-catalyst-commons": "7.2.2",
40
+ "dcl-catalyst-commons": "7.3.0",
41
41
  "ms": "^2.1.3",
42
42
  "sharp": "^0.29.3"
43
43
  },
44
44
  "files": [
45
45
  "dist"
46
46
  ],
47
- "commit": "9e37746ed16e2839e8f714a2d5b8291afdc36d8c"
47
+ "commit": "57ffa8dbc0e4b6e6aef409c0cb429633cc4608f2"
48
48
  }