@dcl/content-validator 4.3.0 → 4.3.1-4346672765.commit-51a4f9f
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.
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -12
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +60 -24
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validations/ADR45.d.ts +2 -2
- package/dist/validations/ADR45.d.ts.map +1 -1
- package/dist/validations/ADR45.js +3 -3
- package/dist/validations/ADR45.js.map +1 -1
- package/dist/validations/access/common/items.d.ts +10 -0
- package/dist/validations/access/common/items.d.ts.map +1 -0
- package/dist/validations/access/common/items.js +94 -0
- package/dist/validations/access/common/items.js.map +1 -0
- package/dist/validations/access/common/profiles.d.ts +3 -0
- package/dist/validations/access/common/profiles.d.ts.map +1 -0
- package/dist/validations/access/common/profiles.js +28 -0
- package/dist/validations/access/common/profiles.js.map +1 -0
- package/dist/validations/access/common/stores.d.ts +7 -0
- package/dist/validations/access/common/stores.d.ts.map +1 -0
- package/dist/validations/access/common/stores.js +35 -0
- package/dist/validations/access/common/stores.js.map +1 -0
- package/dist/validations/access/index.d.ts +8 -0
- package/dist/validations/access/index.d.ts.map +1 -0
- package/dist/validations/access/index.js +30 -0
- package/dist/validations/access/index.js.map +1 -0
- package/dist/validations/access/on-chain/client.d.ts +14 -0
- package/dist/validations/access/on-chain/client.d.ts.map +1 -0
- package/dist/validations/access/on-chain/client.js +177 -0
- package/dist/validations/access/on-chain/client.js.map +1 -0
- package/dist/validations/access/on-chain/collection-asset.d.ts +3 -0
- package/dist/validations/access/on-chain/collection-asset.d.ts.map +1 -0
- package/dist/validations/access/on-chain/collection-asset.js +66 -0
- package/dist/validations/access/on-chain/collection-asset.js.map +1 -0
- package/dist/validations/access/on-chain/index.d.ts +4 -0
- package/dist/validations/access/on-chain/index.d.ts.map +1 -0
- package/dist/validations/access/on-chain/index.js +23 -0
- package/dist/validations/access/on-chain/index.js.map +1 -0
- package/dist/validations/access/on-chain/profiles.d.ts +5 -0
- package/dist/validations/access/on-chain/profiles.d.ts.map +1 -0
- package/dist/validations/access/on-chain/profiles.js +84 -0
- package/dist/validations/access/on-chain/profiles.js.map +1 -0
- package/dist/validations/access/on-chain/scenes.d.ts +7 -0
- package/dist/validations/access/on-chain/scenes.d.ts.map +1 -0
- package/dist/validations/access/on-chain/scenes.js +53 -0
- package/dist/validations/access/on-chain/scenes.js.map +1 -0
- package/dist/validations/access/on-chain/third-party-asset.d.ts +3 -0
- package/dist/validations/access/on-chain/third-party-asset.d.ts.map +1 -0
- package/dist/validations/access/on-chain/third-party-asset.js +53 -0
- package/dist/validations/access/on-chain/third-party-asset.js.map +1 -0
- package/dist/validations/access/subgraph/collection-asset.d.ts +15 -0
- package/dist/validations/access/subgraph/collection-asset.d.ts.map +1 -0
- package/dist/validations/{access-checker/items → access/subgraph}/collection-asset.js +10 -13
- package/dist/validations/access/subgraph/collection-asset.js.map +1 -0
- package/dist/validations/access/subgraph/index.d.ts +4 -0
- package/dist/validations/access/subgraph/index.d.ts.map +1 -0
- package/dist/validations/access/subgraph/index.js +23 -0
- package/dist/validations/access/subgraph/index.js.map +1 -0
- package/dist/validations/access/subgraph/profiles.d.ts +5 -0
- package/dist/validations/access/subgraph/profiles.d.ts.map +1 -0
- package/dist/validations/access/subgraph/profiles.js +84 -0
- package/dist/validations/access/subgraph/profiles.js.map +1 -0
- package/dist/validations/access/subgraph/scenes.d.ts +7 -0
- package/dist/validations/access/subgraph/scenes.d.ts.map +1 -0
- package/dist/validations/access/subgraph/scenes.js +262 -0
- package/dist/validations/access/subgraph/scenes.js.map +1 -0
- package/dist/validations/access/subgraph/the-graph-client.d.ts +10 -0
- package/dist/validations/access/subgraph/the-graph-client.d.ts.map +1 -0
- package/dist/validations/access/subgraph/the-graph-client.js.map +1 -0
- package/dist/validations/access/subgraph/third-party-asset.d.ts +3 -0
- package/dist/validations/access/subgraph/third-party-asset.d.ts.map +1 -0
- package/dist/validations/{access-checker/items → access/subgraph}/third-party-asset.js +6 -8
- package/dist/validations/access/subgraph/third-party-asset.js.map +1 -0
- package/dist/validations/content.d.ts +6 -10
- package/dist/validations/content.d.ts.map +1 -1
- package/dist/validations/content.js +29 -24
- package/dist/validations/content.js.map +1 -1
- package/dist/validations/entity-structure.d.ts +2 -2
- package/dist/validations/entity-structure.d.ts.map +1 -1
- package/dist/validations/entity-structure.js +3 -3
- package/dist/validations/entity-structure.js.map +1 -1
- package/dist/validations/index.d.ts +2 -18
- package/dist/validations/index.d.ts.map +1 -1
- package/dist/validations/index.js +20 -15
- package/dist/validations/index.js.map +1 -1
- package/dist/validations/ipfs-hashing.d.ts +1 -2
- package/dist/validations/ipfs-hashing.d.ts.map +1 -1
- package/dist/validations/ipfs-hashing.js +2 -2
- package/dist/validations/ipfs-hashing.js.map +1 -1
- package/dist/validations/items/emotes.d.ts +4 -4
- package/dist/validations/items/emotes.d.ts.map +1 -1
- package/dist/validations/items/emotes.js +6 -6
- package/dist/validations/items/emotes.js.map +1 -1
- package/dist/validations/items/items.d.ts +4 -4
- package/dist/validations/items/items.d.ts.map +1 -1
- package/dist/validations/items/items.js +67 -52
- package/dist/validations/items/items.js.map +1 -1
- package/dist/validations/items/wearables.d.ts +3 -3
- package/dist/validations/items/wearables.d.ts.map +1 -1
- package/dist/validations/items/wearables.js +4 -4
- package/dist/validations/items/wearables.js.map +1 -1
- package/dist/validations/metadata-schema.d.ts +10 -1
- package/dist/validations/metadata-schema.d.ts.map +1 -1
- package/dist/validations/metadata-schema.js +9 -6
- package/dist/validations/metadata-schema.js.map +1 -1
- package/dist/validations/profile.d.ts +7 -10
- package/dist/validations/profile.d.ts.map +1 -1
- package/dist/validations/profile.js +57 -37
- package/dist/validations/profile.js.map +1 -1
- package/dist/validations/scene.d.ts +2 -2
- package/dist/validations/scene.d.ts.map +1 -1
- package/dist/validations/scene.js +8 -7
- package/dist/validations/scene.js.map +1 -1
- package/dist/validations/signature.d.ts +2 -2
- package/dist/validations/signature.d.ts.map +1 -1
- package/dist/validations/signature.js +8 -6
- package/dist/validations/signature.js.map +1 -1
- package/dist/validations/size.d.ts +2 -2
- package/dist/validations/size.d.ts.map +1 -1
- package/dist/validations/size.js +31 -29
- package/dist/validations/size.js.map +1 -1
- package/dist/validations/validations.d.ts.map +1 -1
- package/dist/validations/validations.js +6 -5
- package/dist/validations/validations.js.map +1 -1
- package/package.json +7 -4
- package/dist/the-graph-client/the-graph-client.d.ts +0 -10
- package/dist/the-graph-client/the-graph-client.d.ts.map +0 -1
- package/dist/the-graph-client/the-graph-client.js.map +0 -1
- package/dist/validations/access-checker/access.d.ts +0 -7
- package/dist/validations/access-checker/access.d.ts.map +0 -1
- package/dist/validations/access-checker/access.js +0 -42
- package/dist/validations/access-checker/access.js.map +0 -1
- package/dist/validations/access-checker/emotes.d.ts +0 -3
- package/dist/validations/access-checker/emotes.d.ts.map +0 -1
- package/dist/validations/access-checker/emotes.js +0 -12
- package/dist/validations/access-checker/emotes.js.map +0 -1
- package/dist/validations/access-checker/items/collection-asset.d.ts +0 -15
- package/dist/validations/access-checker/items/collection-asset.d.ts.map +0 -1
- package/dist/validations/access-checker/items/collection-asset.js.map +0 -1
- package/dist/validations/access-checker/items/items.d.ts +0 -11
- package/dist/validations/access-checker/items/items.d.ts.map +0 -1
- package/dist/validations/access-checker/items/items.js +0 -67
- package/dist/validations/access-checker/items/items.js.map +0 -1
- package/dist/validations/access-checker/items/off-chain-asset.d.ts +0 -3
- package/dist/validations/access-checker/items/off-chain-asset.d.ts.map +0 -1
- package/dist/validations/access-checker/items/off-chain-asset.js +0 -17
- package/dist/validations/access-checker/items/off-chain-asset.js.map +0 -1
- package/dist/validations/access-checker/items/third-party-asset.d.ts +0 -3
- package/dist/validations/access-checker/items/third-party-asset.d.ts.map +0 -1
- package/dist/validations/access-checker/items/third-party-asset.js.map +0 -1
- package/dist/validations/access-checker/profiles.d.ts +0 -7
- package/dist/validations/access-checker/profiles.d.ts.map +0 -1
- package/dist/validations/access-checker/profiles.js +0 -114
- package/dist/validations/access-checker/profiles.js.map +0 -1
- package/dist/validations/access-checker/scenes.d.ts +0 -7
- package/dist/validations/access-checker/scenes.d.ts.map +0 -1
- package/dist/validations/access-checker/scenes.js +0 -261
- package/dist/validations/access-checker/scenes.js.map +0 -1
- package/dist/validations/access-checker/stores.d.ts +0 -7
- package/dist/validations/access-checker/stores.d.ts.map +0 -1
- package/dist/validations/access-checker/stores.js +0 -33
- package/dist/validations/access-checker/stores.js.map +0 -1
- package/dist/validations/access-checker/wearables.d.ts +0 -3
- package/dist/validations/access-checker/wearables.d.ts.map +0 -1
- package/dist/validations/access-checker/wearables.js +0 -14
- package/dist/validations/access-checker/wearables.js.map +0 -1
- /package/dist/{the-graph-client → validations/access/subgraph}/the-graph-client.js +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
|
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.
|
|
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.
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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,
|
|
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
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
7
|
-
|
|
8
|
-
|
|
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,
|
|
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.
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
39
|
-
|
|
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
|
-
|
|
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
|
|
47
|
-
}
|
|
48
|
-
exports.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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":";;;;;;AAAA,0CAAiD;AACjD,oDAA4C;AAC5C,kDAAyB;AACzB,
|
|
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
|
|
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
|
|
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,
|
|
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.
|
|
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
|
|
8
|
-
return
|
|
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.
|
|
15
|
-
|
|
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.
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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.
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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.
|
|
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,
|
|
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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ContentValidatorComponents,
|
|
1
|
+
import { ContentValidatorComponents, ValidateFn } from '../types';
|
|
2
2
|
/** Validate that the full request size is within limits
|
|
3
3
|
*
|
|
4
4
|
* ADR 45: After given TIMESTAMP will also include previous deployments in the validation
|
|
5
5
|
* @public
|
|
6
6
|
*/
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function createSizeValidateFn(components: ContentValidatorComponents): ValidateFn;
|
|
8
8
|
//# sourceMappingURL=size.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAG1B,UAAU,EAGX,MAAM,UAAU,CAAA;AAIjB;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,0BAA0B,GAAG,UAAU,CA6BvF"}
|
package/dist/validations/size.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createSizeValidateFn = void 0;
|
|
4
4
|
const _1 = require(".");
|
|
5
5
|
const types_1 = require("../types");
|
|
6
6
|
const ADR51_1 = require("./ADR51");
|
|
@@ -10,33 +10,35 @@ const timestamps_1 = require("./timestamps");
|
|
|
10
10
|
* ADR 45: After given TIMESTAMP will also include previous deployments in the validation
|
|
11
11
|
* @public
|
|
12
12
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
13
|
+
function createSizeValidateFn(components) {
|
|
14
|
+
return async function validateFn(deployment) {
|
|
15
|
+
const { entity } = deployment;
|
|
16
|
+
if (entity.timestamp <= timestamps_1.LEGACY_CONTENT_MIGRATION_TIMESTAMP)
|
|
17
|
+
return types_1.OK;
|
|
18
|
+
const maxSizeInMB = ADR51_1.entityParameters[entity.type].maxSizeInMB;
|
|
19
|
+
let errors = [];
|
|
20
|
+
if (!maxSizeInMB) {
|
|
21
|
+
return (0, types_1.validationFailed)(`Type ${entity.type} is not supported yet`);
|
|
22
|
+
}
|
|
23
|
+
const maxSizeInBytes = maxSizeInMB * 1024 * 1024;
|
|
24
|
+
let totalSize = 0;
|
|
25
|
+
if (entity.timestamp > timestamps_1.ADR_45_TIMESTAMP) {
|
|
26
|
+
const result = await (0, _1.calculateDeploymentSize)(deployment, components.externalCalls);
|
|
27
|
+
if (typeof result === 'string')
|
|
28
|
+
return (0, types_1.validationFailed)(result);
|
|
29
|
+
totalSize = result;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
totalSize = Array.from(deployment.files.values()).reduce((acc, file) => acc + file.byteLength, 0);
|
|
33
|
+
}
|
|
34
|
+
const sizePerPointer = totalSize / entity.pointers.length;
|
|
35
|
+
if (sizePerPointer > maxSizeInBytes) {
|
|
36
|
+
errors = [
|
|
37
|
+
`The deployment is too big. The maximum allowed size per pointer is ${maxSizeInMB} MB for ${entity.type}. You can upload up to ${entity.pointers.length * maxSizeInBytes} bytes but you tried to upload ${totalSize}.`
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
|
|
41
|
+
};
|
|
40
42
|
}
|
|
41
|
-
exports.
|
|
43
|
+
exports.createSizeValidateFn = createSizeValidateFn;
|
|
42
44
|
//# sourceMappingURL=size.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":";;;AAAA,wBAA2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":";;;AAAA,wBAA2C;AAC3C,oCAOiB;AACjB,mCAA0C;AAC1C,6CAAmF;AAEnF;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,UAAsC;IACzE,OAAO,KAAK,UAAU,UAAU,CAAC,UAAgC;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAC7B,IAAI,MAAM,CAAC,SAAS,IAAI,+CAAkC;YAAE,OAAO,UAAE,CAAA;QAErE,MAAM,WAAW,GAAG,wBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAA;QAC7D,IAAI,MAAM,GAAa,EAAE,CAAA;QACzB,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,IAAA,wBAAgB,EAAC,QAAQ,MAAM,CAAC,IAAI,uBAAuB,CAAC,CAAA;SACpE;QACD,MAAM,cAAc,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAA;QAChD,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,MAAM,CAAC,SAAS,GAAG,6BAAgB,EAAE;YACvC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAuB,EAAC,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;YAClF,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO,IAAA,wBAAgB,EAAC,MAAM,CAAC,CAAA;YAC/D,SAAS,GAAG,MAAM,CAAA;SACnB;aAAM;YACL,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;SAClG;QACD,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA;QACzD,IAAI,cAAc,GAAG,cAAc,EAAE;YACnC,MAAM,GAAG;gBACP,sEAAsE,WAAW,WAC/E,MAAM,CAAC,IACT,0BAA0B,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,cAAc,kCAAkC,SAAS,GAAG;aAChH,CAAA;SACF;QACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAE,CAAA;IAC7D,CAAC,CAAA;AACH,CAAC;AA7BD,oDA6BC"}
|
|
@@ -1 +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,
|
|
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,EAAE,oBAAoB,EAAM,UAAU,EAAE,MAAM,UAAU,CAAA;AAS/D,wBAAgB,WAAW,CAAC,GAAG,aAAa,EAAE,UAAU,EAAE,GAAG,UAAU,CAUtE;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAC3E,UAAU,EAAE,UAAU,GACrB,UAAU,CAQZ;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,CAEnE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,CAEnE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,CAEnE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,CAEpE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,CAEpE;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,cAEjF"}
|
|
@@ -4,21 +4,22 @@ exports.validateIfTypeMatches = exports.validateAfterADR173 = exports.validateAf
|
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
const timestamps_1 = require("./timestamps");
|
|
6
6
|
function validateAll(...validationFns) {
|
|
7
|
-
return async (
|
|
7
|
+
return async (deployment) => {
|
|
8
8
|
for (const validateFn of validationFns) {
|
|
9
|
-
const response = await validateFn(
|
|
10
|
-
if (!response.ok)
|
|
9
|
+
const response = await validateFn(deployment);
|
|
10
|
+
if (!response.ok) {
|
|
11
11
|
return response;
|
|
12
|
+
}
|
|
12
13
|
}
|
|
13
14
|
return types_1.OK;
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
17
|
exports.validateAll = validateAll;
|
|
17
18
|
function validateIfConditionMet(condition, validateFn) {
|
|
18
|
-
return async (
|
|
19
|
+
return async (deployment) => {
|
|
19
20
|
const conditionIsMet = await condition(deployment);
|
|
20
21
|
if (conditionIsMet) {
|
|
21
|
-
return validateFn(
|
|
22
|
+
return validateFn(deployment);
|
|
22
23
|
}
|
|
23
24
|
return types_1.OK;
|
|
24
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../../src/validations/validations.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../../src/validations/validations.ts"],"names":[],"mappings":";;;AACA,oCAA+D;AAC/D,6CAMqB;AAErB,SAAgB,WAAW,CAAC,GAAG,aAA2B;IACxD,OAAO,KAAK,EAAE,UAAgC,EAAE,EAAE;QAChD,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE;YACtC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAA;YAC7C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAChB,OAAO,QAAQ,CAAA;aAChB;SACF;QACD,OAAO,UAAE,CAAA;IACX,CAAC,CAAA;AACH,CAAC;AAVD,kCAUC;AAED,SAAgB,sBAAsB,CACpC,SAA2E,EAC3E,UAAsB;IAEtB,OAAO,KAAK,EAAE,UAAgC,EAAE,EAAE;QAChD,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAA;QAClD,IAAI,cAAc,EAAE;YAClB,OAAO,UAAU,CAAC,UAAU,CAAC,CAAA;SAC9B;QACD,OAAO,UAAE,CAAA;IACX,CAAC,CAAA;AACH,CAAC;AAXD,wDAWC;AAED,SAAgB,kBAAkB,CAAC,QAAoB;IACrD,OAAO,sBAAsB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,6BAAgB,EAAE,QAAQ,CAAC,CAAA;AAC1G,CAAC;AAFD,gDAEC;AAED,SAAgB,kBAAkB,CAAC,QAAoB;IACrD,OAAO,sBAAsB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,6BAAgB,EAAE,QAAQ,CAAC,CAAA;AAC1G,CAAC;AAFD,gDAEC;AAED,SAAgB,kBAAkB,CAAC,QAAoB;IACrD,OAAO,sBAAsB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,6BAAgB,EAAE,QAAQ,CAAC,CAAA;AAC1G,CAAC;AAFD,gDAEC;AAED,SAAgB,mBAAmB,CAAC,QAAoB;IACtD,OAAO,sBAAsB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,8BAAiB,EAAE,QAAQ,CAAC,CAAA;AAC3G,CAAC;AAFD,kDAEC;AAED,SAAgB,mBAAmB,CAAC,QAAoB;IACtD,OAAO,sBAAsB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,8BAAiB,EAAE,QAAQ,CAAC,CAAA;AAC3G,CAAC;AAFD,kDAEC;AAED,SAAgB,qBAAqB,CAAC,UAAsB,EAAE,QAAoB;IAChF,OAAO,sBAAsB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,QAAQ,CAAC,CAAA;AAChG,CAAC;AAFD,sDAEC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dcl/content-validator",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.1-4346672765.commit-51a4f9f",
|
|
4
4
|
"description": "Catalyst content validations",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -27,7 +27,9 @@
|
|
|
27
27
|
"prettier": {
|
|
28
28
|
"printWidth": 120,
|
|
29
29
|
"semi": false,
|
|
30
|
-
"singleQuote": true
|
|
30
|
+
"singleQuote": true,
|
|
31
|
+
"trailingComma": "none",
|
|
32
|
+
"tabWidth": 2
|
|
31
33
|
},
|
|
32
34
|
"homepage": "https://github.com/decentraland/content-validator#readme",
|
|
33
35
|
"devDependencies": {
|
|
@@ -49,7 +51,8 @@
|
|
|
49
51
|
"typescript": "^4.7.3"
|
|
50
52
|
},
|
|
51
53
|
"dependencies": {
|
|
52
|
-
"@dcl/
|
|
54
|
+
"@dcl/block-indexer": "^1.1.1-4056737184.commit-2112891",
|
|
55
|
+
"@dcl/content-hash-tree": "^1.1.4",
|
|
53
56
|
"@dcl/hashing": "1.1.3",
|
|
54
57
|
"@dcl/schemas": "^6.4.1",
|
|
55
58
|
"@dcl/urn-resolver": "2.0.3",
|
|
@@ -61,5 +64,5 @@
|
|
|
61
64
|
"files": [
|
|
62
65
|
"dist"
|
|
63
66
|
],
|
|
64
|
-
"commit": "
|
|
67
|
+
"commit": "51a4f9f291b4ac1b5497ea3536c52c026dec68e1"
|
|
65
68
|
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ContentValidatorComponents, TheGraphClient } from '../types';
|
|
2
|
-
export declare type PermissionResult = {
|
|
3
|
-
result: boolean;
|
|
4
|
-
failing?: string[];
|
|
5
|
-
};
|
|
6
|
-
/**
|
|
7
|
-
* @public
|
|
8
|
-
*/
|
|
9
|
-
export declare const createTheGraphClient: (components: Pick<ContentValidatorComponents, 'logs' | 'subGraphs'>) => TheGraphClient;
|
|
10
|
-
//# sourceMappingURL=the-graph-client.d.ts.map
|