@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,31 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createContentValidateFn = exports.allMandatoryContentFilesArePresentValidateFn = exports.allContentFilesCorrespondToAtLeastOneAvatarSnapshotAfterADR45ValidateFn = exports.allHashesInUploadedFilesAreReportedInTheEntityValidateFn = exports.createAllHashesWereUploadedOrStoredValidateFn = 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
|
+
function correspondsToASnapshot(fileName, hash, metadata) {
|
|
8
8
|
const fileNameWithoutExtension = fileName.replace(/.[^/.]+$/, '');
|
|
9
9
|
if (!metadata || !metadata.avatars)
|
|
10
10
|
return false;
|
|
11
11
|
return metadata.avatars.some((avatar) => Object.entries(avatar.avatar.snapshots).some((key) => key[0] === fileNameWithoutExtension && key[1] === hash));
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
12
|
+
}
|
|
13
|
+
function createAllHashesWereUploadedOrStoredValidateFn({ externalCalls }) {
|
|
14
|
+
return async function validateFn(deployment) {
|
|
15
|
+
const { entity, files } = deployment;
|
|
16
|
+
const errors = [];
|
|
17
|
+
if (entity.content) {
|
|
18
|
+
const alreadyStoredHashes = await externalCalls.isContentStoredAlready(entity.content?.map((file) => file.hash) ?? []);
|
|
19
|
+
for (const { hash } of entity.content) {
|
|
20
|
+
// Validate that all hashes in entity were uploaded, or were already stored on the service
|
|
21
|
+
if (!(files.has(hash) || alreadyStoredHashes.get(hash))) {
|
|
22
|
+
errors.push(`This hash is referenced in the entity but was not uploaded or previously available: ${hash}`);
|
|
23
|
+
}
|
|
22
24
|
}
|
|
23
25
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
return (0, types_1.fromErrors)(...errors);
|
|
27
|
+
};
|
|
26
28
|
}
|
|
27
|
-
exports.
|
|
28
|
-
async function
|
|
29
|
+
exports.createAllHashesWereUploadedOrStoredValidateFn = createAllHashesWereUploadedOrStoredValidateFn;
|
|
30
|
+
async function allHashesInUploadedFilesAreReportedInTheEntityValidateFn(deployment) {
|
|
29
31
|
const { entity, files } = deployment;
|
|
30
32
|
const errors = [];
|
|
31
33
|
// Validate that all hashes that belong to uploaded files are actually reported on the entity
|
|
@@ -37,8 +39,8 @@ async function allHashesInUploadedFilesAreReportedInTheEntity(components, deploy
|
|
|
37
39
|
}
|
|
38
40
|
return (0, types_1.fromErrors)(...errors);
|
|
39
41
|
}
|
|
40
|
-
exports.
|
|
41
|
-
exports.
|
|
42
|
+
exports.allHashesInUploadedFilesAreReportedInTheEntityValidateFn = allHashesInUploadedFilesAreReportedInTheEntityValidateFn;
|
|
43
|
+
exports.allContentFilesCorrespondToAtLeastOneAvatarSnapshotAfterADR45ValidateFn = (0, validations_1.validateAfterADR45)(async function validateFn(deployment) {
|
|
42
44
|
const { entity } = deployment;
|
|
43
45
|
const errors = [];
|
|
44
46
|
for (const { file, hash } of entity.content ?? []) {
|
|
@@ -51,7 +53,7 @@ exports.allContentFilesCorrespondToAtLeastOneAvatarSnapshotAfterADR45 = (0, vali
|
|
|
51
53
|
}
|
|
52
54
|
return (0, types_1.fromErrors)(...errors);
|
|
53
55
|
});
|
|
54
|
-
exports.
|
|
56
|
+
exports.allMandatoryContentFilesArePresentValidateFn = (0, validations_1.validateAfterADR158)(async function validateFn(deployment) {
|
|
55
57
|
const { entity } = deployment;
|
|
56
58
|
const errors = [];
|
|
57
59
|
if (entity.type === schemas_1.EntityType.PROFILE) {
|
|
@@ -65,9 +67,12 @@ exports.allMandatoryContentFilesArePresent = (0, validations_1.validateAfterADR1
|
|
|
65
67
|
}
|
|
66
68
|
return (0, types_1.fromErrors)(...errors);
|
|
67
69
|
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
function createContentValidateFn(components) {
|
|
71
|
+
/**
|
|
72
|
+
* Validate that uploaded and reported hashes are corrects and files corresponds to snapshots
|
|
73
|
+
* @public
|
|
74
|
+
*/
|
|
75
|
+
return (0, validations_1.validateAll)(createAllHashesWereUploadedOrStoredValidateFn(components), allHashesInUploadedFilesAreReportedInTheEntityValidateFn, exports.allContentFilesCorrespondToAtLeastOneAvatarSnapshotAfterADR45ValidateFn, exports.allMandatoryContentFilesArePresentValidateFn);
|
|
76
|
+
}
|
|
77
|
+
exports.createContentValidateFn = createContentValidateFn;
|
|
73
78
|
//# sourceMappingURL=content.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":";;;AAAA,0CAA0D;AAC1D,
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DeploymentToValidate, ValidationResponse } from '../types';
|
|
2
2
|
/**
|
|
3
3
|
* Validate that entity is actually ok
|
|
4
4
|
* @public
|
|
5
5
|
*/
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function entityStructureValidationFn(deployment: DeploymentToValidate): Promise<ValidationResponse>;
|
|
7
7
|
//# sourceMappingURL=entity-structure.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-structure.d.ts","sourceRoot":"","sources":["../../src/validations/entity-structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"entity-structure.d.ts","sourceRoot":"","sources":["../../src/validations/entity-structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAwB,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAEzF;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,UAAU,EAAE,oBAAoB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQ/G"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.entityStructureValidationFn = void 0;
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
/**
|
|
6
6
|
* Validate that entity is actually ok
|
|
7
7
|
* @public
|
|
8
8
|
*/
|
|
9
|
-
async function
|
|
9
|
+
async function entityStructureValidationFn(deployment) {
|
|
10
10
|
const { entity } = deployment;
|
|
11
11
|
if (new Set(entity.pointers).size != entity.pointers.length) {
|
|
12
12
|
return (0, types_1.validationFailed)('There are repeated pointers in your request.');
|
|
@@ -16,5 +16,5 @@ async function entityStructure(components, deployment) {
|
|
|
16
16
|
}
|
|
17
17
|
return types_1.OK;
|
|
18
18
|
}
|
|
19
|
-
exports.
|
|
19
|
+
exports.entityStructureValidationFn = entityStructureValidationFn;
|
|
20
20
|
//# sourceMappingURL=entity-structure.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-structure.js","sourceRoot":"","sources":["../../src/validations/entity-structure.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"entity-structure.js","sourceRoot":"","sources":["../../src/validations/entity-structure.ts"],"names":[],"mappings":";;;AAAA,oCAAyF;AAEzF;;;GAGG;AACI,KAAK,UAAU,2BAA2B,CAAC,UAAgC;IAChF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;IAC7B,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC3D,OAAO,IAAA,wBAAgB,EAAC,8CAA8C,CAAC,CAAA;KACxE;SAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;QAC1D,OAAO,IAAA,wBAAgB,EAAC,yDAAyD,CAAC,CAAA;KACnF;IACD,OAAO,UAAE,CAAA;AACX,CAAC;AARD,kEAQC"}
|
|
@@ -1,26 +1,10 @@
|
|
|
1
|
-
import { DeploymentToValidate, ExternalCalls } from '../types';
|
|
2
|
-
import { access } from './access-checker/access';
|
|
3
|
-
import { adr45 } from './ADR45';
|
|
4
|
-
import { entityStructure } from './entity-structure';
|
|
5
|
-
import { signature } from './signature';
|
|
6
|
-
import { size } from './size';
|
|
1
|
+
import { ContentValidatorComponents, DeploymentToValidate, ExternalCalls, ValidateFn } from '../types';
|
|
7
2
|
/**
|
|
8
3
|
* @public
|
|
9
4
|
*/
|
|
10
5
|
export declare function calculateDeploymentSize(deployment: DeploymentToValidate, externalCalls: ExternalCalls): Promise<number | string>;
|
|
11
6
|
/**
|
|
12
|
-
* Stateful validations that are run on a deployment.
|
|
13
7
|
* @public
|
|
14
8
|
*/
|
|
15
|
-
export declare
|
|
16
|
-
/**
|
|
17
|
-
* Stateless validations that are run on a deployment.
|
|
18
|
-
* @public
|
|
19
|
-
*/
|
|
20
|
-
export declare const statelessValidateFns: readonly [typeof entityStructure, import("../types").ValidateFn, import("../types").ValidateFn, typeof adr45];
|
|
21
|
-
/**
|
|
22
|
-
* All validations that are run on a deployment.
|
|
23
|
-
* @public
|
|
24
|
-
*/
|
|
25
|
-
export declare const validateFns: readonly [typeof entityStructure, import("../types").ValidateFn, import("../types").ValidateFn, typeof adr45, typeof signature, typeof access, typeof size, import("../types").ValidateFn, import("../types").ValidateFn, import("../types").ValidateFn, import("../types").ValidateFn, import("../types").ValidateFn];
|
|
9
|
+
export declare function createValidateFns(components: ContentValidatorComponents): ValidateFn[];
|
|
26
10
|
//# 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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAatG;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,oBAAoB,EAChC,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAa1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,0BAA0B,GAAG,UAAU,EAAE,CAiBtF"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const access_1 = require("./access-checker/access");
|
|
3
|
+
exports.createValidateFns = exports.calculateDeploymentSize = void 0;
|
|
5
4
|
const ADR45_1 = require("./ADR45");
|
|
6
5
|
const content_1 = require("./content");
|
|
7
6
|
const entity_structure_1 = require("./entity-structure");
|
|
@@ -10,9 +9,9 @@ const emotes_1 = require("./items/emotes");
|
|
|
10
9
|
const wearables_1 = require("./items/wearables");
|
|
11
10
|
const metadata_schema_1 = require("./metadata-schema");
|
|
12
11
|
const profile_1 = require("./profile");
|
|
12
|
+
const scene_1 = require("./scene");
|
|
13
13
|
const signature_1 = require("./signature");
|
|
14
14
|
const size_1 = require("./size");
|
|
15
|
-
const scene_1 = require("./scene");
|
|
16
15
|
/**
|
|
17
16
|
* @public
|
|
18
17
|
*/
|
|
@@ -34,18 +33,24 @@ async function calculateDeploymentSize(deployment, externalCalls) {
|
|
|
34
33
|
}
|
|
35
34
|
exports.calculateDeploymentSize = calculateDeploymentSize;
|
|
36
35
|
/**
|
|
37
|
-
* Stateful validations that are run on a deployment.
|
|
38
|
-
* @public
|
|
39
|
-
*/
|
|
40
|
-
exports.statefulValidateFns = [signature_1.signature, access_1.access, size_1.size, wearables_1.wearable, emotes_1.emote, profile_1.profile, scene_1.scene, content_1.content];
|
|
41
|
-
/**
|
|
42
|
-
* Stateless validations that are run on a deployment.
|
|
43
36
|
* @public
|
|
44
37
|
*/
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
38
|
+
function createValidateFns(components) {
|
|
39
|
+
return [
|
|
40
|
+
// Stateless validations that are run on a deployment.
|
|
41
|
+
entity_structure_1.entityStructureValidationFn,
|
|
42
|
+
ipfs_hashing_1.ipfsHashingValidateFn,
|
|
43
|
+
metadata_schema_1.metadataValidateFn,
|
|
44
|
+
ADR45_1.adr45ValidateFn,
|
|
45
|
+
// Stateful validations that are run on a deployment.
|
|
46
|
+
(0, signature_1.createSignatureValidateFn)(components),
|
|
47
|
+
(0, size_1.createSizeValidateFn)(components),
|
|
48
|
+
wearables_1.wearableValidateFn,
|
|
49
|
+
emotes_1.emoteValidateFn,
|
|
50
|
+
(0, profile_1.createProfileValidateFn)(components),
|
|
51
|
+
scene_1.sceneValidateFn,
|
|
52
|
+
(0, content_1.createContentValidateFn)(components)
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
exports.createValidateFns = createValidateFns;
|
|
51
56
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":";;;AACA,mCAAyC;AACzC,uCAAmD;AACnD,yDAAgE;AAChE,iDAAsD;AACtD,2CAAgD;AAChD,iDAAsD;AACtD,uDAAsD;AACtD,uCAAmD;AACnD,mCAAyC;AACzC,2CAAuD;AACvD,iCAA6C;AAE7C;;GAEG;AACI,KAAK,UAAU,uBAAuB,CAC3C,UAAgC,EAChC,aAA4B;IAE5B,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,WAAW,KAAK,SAAS;gBAAE,OAAO,0CAA0C,IAAI,EAAE,CAAA;YACtF,SAAS,IAAI,WAAW,CAAA;SACzB;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAhBD,0DAgBC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,UAAsC;IACtE,OAAO;QACL,sDAAsD;QACtD,8CAA2B;QAC3B,oCAAqB;QACrB,oCAAkB;QAClB,uBAAe;QAEf,qDAAqD;QACrD,IAAA,qCAAyB,EAAC,UAAU,CAAC;QACrC,IAAA,2BAAoB,EAAC,UAAU,CAAC;QAChC,8BAAkB;QAClB,wBAAe;QACf,IAAA,iCAAuB,EAAC,UAAU,CAAC;QACnC,uBAAe;QACf,IAAA,iCAAuB,EAAC,UAAU,CAAC;KACpC,CAAA;AACH,CAAC;AAjBD,8CAiBC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { ValidateFn } from '../types';
|
|
2
1
|
/**
|
|
3
2
|
* Validate that all hashes used by the entity were actually IPFS hashes
|
|
4
3
|
* @public
|
|
5
4
|
*/
|
|
6
|
-
export declare const
|
|
5
|
+
export declare const ipfsHashingValidateFn: import("../types").ValidateFn;
|
|
7
6
|
//# sourceMappingURL=ipfs-hashing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipfs-hashing.d.ts","sourceRoot":"","sources":["../../src/validations/ipfs-hashing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ipfs-hashing.d.ts","sourceRoot":"","sources":["../../src/validations/ipfs-hashing.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,qBAAqB,+BAahC,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ipfsHashingValidateFn = void 0;
|
|
4
4
|
const schemas_1 = require("@dcl/schemas");
|
|
5
5
|
const types_1 = require("../types");
|
|
6
6
|
const validations_1 = require("./validations");
|
|
@@ -8,7 +8,7 @@ const validations_1 = require("./validations");
|
|
|
8
8
|
* Validate that all hashes used by the entity were actually IPFS hashes
|
|
9
9
|
* @public
|
|
10
10
|
*/
|
|
11
|
-
exports.
|
|
11
|
+
exports.ipfsHashingValidateFn = (0, validations_1.validateAfterADR45)(async function validateFn(deployment) {
|
|
12
12
|
const { entity } = deployment;
|
|
13
13
|
const hashesInContent = entity.content?.map(({ hash }) => hash) ?? [];
|
|
14
14
|
const allHashes = [entity.id, ...hashesInContent];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipfs-hashing.js","sourceRoot":"","sources":["../../src/validations/ipfs-hashing.ts"],"names":[],"mappings":";;;AAAA,0CAAqC;
|
|
1
|
+
{"version":3,"file":"ipfs-hashing.js","sourceRoot":"","sources":["../../src/validations/ipfs-hashing.ts"],"names":[],"mappings":";;;AAAA,0CAAqC;AACrC,oCAA+E;AAC/E,+CAAkD;AAElD;;;GAGG;AACU,QAAA,qBAAqB,GAAG,IAAA,gCAAkB,EAAC,KAAK,UAAU,UAAU,CAC/E,UAAgC;IAEhC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;IAE7B,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IACrE,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,eAAe,CAAC,CAAA;IAEjD,MAAM,MAAM,GAAG,SAAS;SACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,8CAA8C,CAAC,CAAA;IAElF,OAAO,IAAA,kBAAU,EAAC,GAAG,MAAM,CAAC,CAAA;AAC9B,CAAC,CAAC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
4
|
-
export declare const
|
|
1
|
+
import { DeploymentToValidate, ValidationResponse } from '../../types';
|
|
2
|
+
export declare function wasCreatedAfterADR74ValidateFn(deployment: DeploymentToValidate): Promise<ValidationResponse>;
|
|
3
|
+
export declare function emoteRepresentationContentValidateFn(deployment: DeploymentToValidate): Promise<ValidationResponse>;
|
|
4
|
+
export declare const emoteValidateFn: import("../../types").ValidateFn;
|
|
5
5
|
//# sourceMappingURL=emotes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emotes.d.ts","sourceRoot":"","sources":["../../../src/validations/items/emotes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"emotes.d.ts","sourceRoot":"","sources":["../../../src/validations/items/emotes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAwB,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAI5F,wBAAsB,8BAA8B,CAAC,UAAU,EAAE,oBAAoB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAMlH;AAED,wBAAsB,oCAAoC,CAAC,UAAU,EAAE,oBAAoB,+BAe1F;AAED,eAAO,MAAM,eAAe,kCAG3B,CAAA"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.emoteValidateFn = exports.emoteRepresentationContentValidateFn = exports.wasCreatedAfterADR74ValidateFn = void 0;
|
|
4
4
|
const schemas_1 = require("@dcl/schemas");
|
|
5
5
|
const types_1 = require("../../types");
|
|
6
6
|
const timestamps_1 = require("../timestamps");
|
|
7
7
|
const validations_1 = require("../validations");
|
|
8
|
-
async function
|
|
8
|
+
async function wasCreatedAfterADR74ValidateFn(deployment) {
|
|
9
9
|
return deployment.entity.timestamp < timestamps_1.ADR_74_TIMESTAMP
|
|
10
10
|
? (0, types_1.validationFailed)(`The emote timestamp ${deployment.entity.timestamp} is before ADR 74. Emotes did not exist before ADR 74.`)
|
|
11
11
|
: types_1.OK;
|
|
12
12
|
}
|
|
13
|
-
exports.
|
|
14
|
-
async function
|
|
13
|
+
exports.wasCreatedAfterADR74ValidateFn = wasCreatedAfterADR74ValidateFn;
|
|
14
|
+
async function emoteRepresentationContentValidateFn(deployment) {
|
|
15
15
|
const { entity } = deployment;
|
|
16
16
|
const metadata = entity.metadata;
|
|
17
17
|
const representations = metadata?.emoteDataADR74?.representations;
|
|
@@ -28,6 +28,6 @@ async function emoteRepresentationContent(components, deployment) {
|
|
|
28
28
|
}
|
|
29
29
|
return types_1.OK;
|
|
30
30
|
}
|
|
31
|
-
exports.
|
|
32
|
-
exports.
|
|
31
|
+
exports.emoteRepresentationContentValidateFn = emoteRepresentationContentValidateFn;
|
|
32
|
+
exports.emoteValidateFn = (0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.EMOTE, (0, validations_1.validateAll)(wasCreatedAfterADR74ValidateFn, emoteRepresentationContentValidateFn));
|
|
33
33
|
//# sourceMappingURL=emotes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emotes.js","sourceRoot":"","sources":["../../../src/validations/items/emotes.ts"],"names":[],"mappings":";;;AAAA,0CAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"emotes.js","sourceRoot":"","sources":["../../../src/validations/items/emotes.ts"],"names":[],"mappings":";;;AAAA,0CAAgD;AAChD,uCAA4F;AAC5F,8CAAgD;AAChD,gDAAmE;AAE5D,KAAK,UAAU,8BAA8B,CAAC,UAAgC;IACnF,OAAO,UAAU,CAAC,MAAM,CAAC,SAAS,GAAG,6BAAgB;QACnD,CAAC,CAAC,IAAA,wBAAgB,EACd,uBAAuB,UAAU,CAAC,MAAM,CAAC,SAAS,wDAAwD,CAC3G;QACH,CAAC,CAAC,UAAE,CAAA;AACR,CAAC;AAND,wEAMC;AAEM,KAAK,UAAU,oCAAoC,CAAC,UAAgC;IACzF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;IAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAiB,CAAA;IACzC,MAAM,eAAe,GAAG,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAA;IACjE,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAA,wBAAgB,EAAC,gCAAgC,CAAC,CAAA;IAC/G,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;AAfD,oFAeC;AAEY,QAAA,eAAe,GAAG,IAAA,mCAAqB,EAClD,oBAAU,CAAC,KAAK,EAChB,IAAA,yBAAW,EAAC,8BAA8B,EAAE,oCAAoC,CAAC,CAClF,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { ContentValidatorComponents,
|
|
1
|
+
import { ContentValidatorComponents, ValidateFn } from '../../types';
|
|
2
2
|
/** Validate item files size, excluding thumbnail, is less than expected */
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
3
|
+
export declare function createDeploymentMaxSizeExcludingThumbnailIsNotExceededValidateFn(components: Pick<ContentValidatorComponents, 'externalCalls'>): ValidateFn;
|
|
4
|
+
export declare function createThumbnailMaxSizeIsNotExceededValidateFn(components: Pick<ContentValidatorComponents, 'externalCalls' | 'logs'>): ValidateFn;
|
|
5
5
|
/**
|
|
6
6
|
* Validate that given item deployment includes the thumbnail and doesn't exceed file sizes
|
|
7
7
|
* * @public
|
|
8
8
|
*/
|
|
9
|
-
export declare
|
|
9
|
+
export declare function createItemsValidateFn(components: ContentValidatorComponents): ValidateFn;
|
|
10
10
|
//# sourceMappingURL=items.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../src/validations/items/items.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../src/validations/items/items.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,0BAA0B,EAG1B,UAAU,EAGX,MAAM,aAAa,CAAA;AAIpB,2EAA2E;AAC3E,wBAAgB,gEAAgE,CAC9E,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,GAC5D,UAAU,CAgCZ;AAKD,wBAAgB,6CAA6C,CAC3D,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,GAAG,MAAM,CAAC,GACrE,UAAU,CA2CZ;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,0BAA0B,GAAG,UAAU,CAQxF"}
|
|
@@ -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.createItemsValidateFn = exports.createThumbnailMaxSizeIsNotExceededValidateFn = exports.createDeploymentMaxSizeExcludingThumbnailIsNotExceededValidateFn = void 0;
|
|
7
7
|
const schemas_1 = require("@dcl/schemas");
|
|
8
8
|
const sharp_1 = __importDefault(require("sharp"));
|
|
9
9
|
const __1 = require("..");
|
|
@@ -11,68 +11,83 @@ const types_1 = require("../../types");
|
|
|
11
11
|
const ADR51_1 = require("../ADR51");
|
|
12
12
|
const validations_1 = require("../validations");
|
|
13
13
|
/** Validate item files size, excluding thumbnail, is less than expected */
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
14
|
+
function createDeploymentMaxSizeExcludingThumbnailIsNotExceededValidateFn(components) {
|
|
15
|
+
async function validateFn(deployment) {
|
|
16
|
+
const entity = deployment.entity;
|
|
17
|
+
const maxSizeInMB = ADR51_1.entityParameters[entity.type]?.maxSizeInMB;
|
|
18
|
+
if (!maxSizeInMB) {
|
|
19
|
+
return (0, types_1.validationFailed)(`Type ${entity.type} is not supported yet`);
|
|
20
|
+
}
|
|
21
|
+
const modelSizeInMB = maxSizeInMB - maxThumbnailSizeInB / 1024;
|
|
22
|
+
const metadata = entity.metadata;
|
|
23
|
+
const thumbnailHash = entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
|
|
24
|
+
if (!thumbnailHash) {
|
|
25
|
+
return (0, types_1.validationFailed)("Couldn't find the thumbnail hash");
|
|
26
|
+
}
|
|
27
|
+
const totalDeploymentSizeInB = await (0, __1.calculateDeploymentSize)(deployment, components.externalCalls);
|
|
28
|
+
if (typeof totalDeploymentSizeInB === 'string')
|
|
29
|
+
return (0, types_1.validationFailed)(totalDeploymentSizeInB);
|
|
30
|
+
const thumbnailSize = deployment.files.get(thumbnailHash)?.byteLength ?? 0;
|
|
31
|
+
const modelSize = totalDeploymentSizeInB - thumbnailSize;
|
|
32
|
+
if (modelSize > modelSizeInMB * 1024 * 1024)
|
|
33
|
+
return (0, types_1.validationFailed)(`The deployment is too big. The maximum allowed size for ${entity.type} model files is ${modelSizeInMB} MB. You can upload up to ${modelSizeInMB * 1024 * 1024} bytes but you tried to upload ${modelSize}.`);
|
|
34
|
+
return types_1.OK;
|
|
35
|
+
}
|
|
36
|
+
return (0, validations_1.validateAfterADR45)(validateFn);
|
|
32
37
|
}
|
|
33
|
-
exports.
|
|
38
|
+
exports.createDeploymentMaxSizeExcludingThumbnailIsNotExceededValidateFn = createDeploymentMaxSizeExcludingThumbnailIsNotExceededValidateFn;
|
|
34
39
|
/** Validate that given item deployment includes a thumbnail with valid format and size */
|
|
35
40
|
const maxThumbnailSizeInB = 1024;
|
|
36
|
-
|
|
41
|
+
function createThumbnailMaxSizeIsNotExceededValidateFn(components) {
|
|
37
42
|
const { externalCalls, logs } = components;
|
|
38
|
-
const logger = logs.getLogger(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
// check size
|
|
46
|
-
const thumbnailBuffer = deployment.files.get(hash);
|
|
47
|
-
if (!thumbnailBuffer) {
|
|
48
|
-
const isHashStored = (await externalCalls.isContentStoredAlready([hash])).get(hash) ?? false;
|
|
49
|
-
if (!isHashStored) {
|
|
50
|
-
return (0, types_1.validationFailed)(`Couldn't find thumbnail file with hash: ${hash}`);
|
|
43
|
+
const logger = logs.getLogger('thumbnail size validator');
|
|
44
|
+
async function validateFn(deployment) {
|
|
45
|
+
// read thumbnail field from metadata
|
|
46
|
+
const metadata = deployment.entity.metadata;
|
|
47
|
+
const hash = deployment.entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
|
|
48
|
+
if (!hash) {
|
|
49
|
+
return (0, types_1.validationFailed)(`Couldn't find hash for thumbnail file with name: ${metadata.thumbnail}`);
|
|
51
50
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
51
|
+
const errors = [];
|
|
52
|
+
// check size
|
|
53
|
+
const thumbnailBuffer = deployment.files.get(hash);
|
|
54
|
+
if (!thumbnailBuffer) {
|
|
55
|
+
const isHashStored = (await externalCalls.isContentStoredAlready([hash])).get(hash) ?? false;
|
|
56
|
+
if (!isHashStored) {
|
|
57
|
+
return (0, types_1.validationFailed)(`Couldn't find thumbnail file with hash: ${hash}`);
|
|
58
|
+
}
|
|
59
|
+
// otherwise, thumbnail was already uploaded and won't be validated again
|
|
60
|
+
logger.debug(`Thumbnail file with hash: ${hash} is not in the deployment, but it is already stored`, {
|
|
61
|
+
type: deployment.entity.type
|
|
62
|
+
});
|
|
63
|
+
return types_1.OK;
|
|
62
64
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
try {
|
|
66
|
+
const { width, height, format } = await (0, sharp_1.default)(thumbnailBuffer).metadata();
|
|
67
|
+
if (!format || format !== 'png') {
|
|
68
|
+
errors.push(`Invalid or unknown image format. Only 'PNG' format is accepted.`);
|
|
69
|
+
}
|
|
70
|
+
if (!width || !height) {
|
|
71
|
+
errors.push(`Couldn't validate thumbnail size for file ${metadata.thumbnail}`);
|
|
72
|
+
}
|
|
73
|
+
else if (width > maxThumbnailSizeInB || height > maxThumbnailSizeInB) {
|
|
74
|
+
errors.push(`Invalid thumbnail image size (width = ${width} / height = ${height})`);
|
|
75
|
+
}
|
|
65
76
|
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
errors.push(`Couldn't parse thumbnail, please check image format.`);
|
|
79
|
+
}
|
|
80
|
+
return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
|
|
66
81
|
}
|
|
67
|
-
|
|
68
|
-
errors.push(`Couldn't parse thumbnail, please check image format.`);
|
|
69
|
-
}
|
|
70
|
-
return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
|
|
82
|
+
return (0, validations_1.validateAfterADR45)(validateFn);
|
|
71
83
|
}
|
|
72
|
-
exports.
|
|
84
|
+
exports.createThumbnailMaxSizeIsNotExceededValidateFn = createThumbnailMaxSizeIsNotExceededValidateFn;
|
|
73
85
|
/**
|
|
74
86
|
* Validate that given item deployment includes the thumbnail and doesn't exceed file sizes
|
|
75
87
|
* * @public
|
|
76
88
|
*/
|
|
77
|
-
|
|
89
|
+
function createItemsValidateFn(components) {
|
|
90
|
+
return (0, validations_1.validateIfConditionMet)((deployment) => deployment.entity.type === schemas_1.EntityType.WEARABLE || deployment.entity.type === schemas_1.EntityType.EMOTE, (0, validations_1.validateAll)(createThumbnailMaxSizeIsNotExceededValidateFn(components), createDeploymentMaxSizeExcludingThumbnailIsNotExceededValidateFn(components)));
|
|
91
|
+
}
|
|
92
|
+
exports.createItemsValidateFn = createItemsValidateFn;
|
|
78
93
|
//# sourceMappingURL=items.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"items.js","sourceRoot":"","sources":["../../../src/validations/items/items.ts"],"names":[],"mappings":";;;;;;AAAA,0CAAmD;AAEnD,kDAAyB;AACzB,0BAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"items.js","sourceRoot":"","sources":["../../../src/validations/items/items.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { DeploymentToValidate } from '../..';
|
|
2
|
-
import {
|
|
2
|
+
import { ValidationResponse } from '../../types';
|
|
3
3
|
/** Validate wearable representations are referencing valid content */
|
|
4
|
-
export declare function
|
|
4
|
+
export declare function wearableRepresentationContentValidateFn(deployment: DeploymentToValidate): Promise<ValidationResponse>;
|
|
5
5
|
/**
|
|
6
6
|
* Validate that given wearable deployment includes the thumbnail and doesn't exceed file sizes
|
|
7
7
|
* * @public
|
|
8
8
|
*/
|
|
9
|
-
export declare const
|
|
9
|
+
export declare const wearableValidateFn: import("../..").ValidateFn;
|
|
10
10
|
//# sourceMappingURL=wearables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wearables.d.ts","sourceRoot":"","sources":["../../../src/validations/items/wearables.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"wearables.d.ts","sourceRoot":"","sources":["../../../src/validations/items/wearables.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAwB,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGtE,sEAAsE;AACtE,wBAAsB,uCAAuC,CAC3D,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAe7B;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,4BAAsF,CAAA"}
|