@dcl/content-validator 1.5.1-20220530155052.commit-b8727b9 → 1.5.2-20220605005015.commit-d14082f
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/content-validator.api.json +66 -62
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/dist/types.d.ts +13 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validations/ADR51.d.ts +10 -0
- package/dist/validations/ADR51.d.ts.map +1 -0
- package/dist/validations/ADR51.js +23 -0
- package/dist/validations/ADR51.js.map +1 -0
- package/dist/validations/access-checker/access.js +7 -7
- package/dist/validations/access-checker/access.js.map +1 -1
- package/dist/validations/access-checker/profiles.d.ts.map +1 -1
- package/dist/validations/access-checker/profiles.js +6 -6
- package/dist/validations/access-checker/profiles.js.map +1 -1
- package/dist/validations/access-checker/scenes.d.ts.map +1 -1
- package/dist/validations/access-checker/scenes.js +27 -5
- package/dist/validations/access-checker/scenes.js.map +1 -1
- package/dist/validations/access-checker/stores.d.ts.map +1 -1
- package/dist/validations/access-checker/stores.js +4 -4
- package/dist/validations/access-checker/stores.js.map +1 -1
- package/dist/validations/access-checker/wearables.d.ts.map +1 -1
- package/dist/validations/access-checker/wearables.js +13 -17
- package/dist/validations/access-checker/wearables.js.map +1 -1
- package/dist/validations/content.d.ts.map +1 -1
- package/dist/validations/content.js +3 -3
- package/dist/validations/content.js.map +1 -1
- package/dist/validations/entity-structure.js +2 -2
- package/dist/validations/entity-structure.js.map +1 -1
- package/dist/validations/ipfs-hashing.js +1 -1
- package/dist/validations/ipfs-hashing.js.map +1 -1
- package/dist/validations/metadata-schema.js +4 -4
- package/dist/validations/metadata-schema.js.map +1 -1
- package/dist/validations/profile.js +6 -6
- package/dist/validations/profile.js.map +1 -1
- package/dist/validations/signature.js +1 -1
- package/dist/validations/signature.js.map +1 -1
- package/dist/validations/size.js +6 -6
- package/dist/validations/size.js.map +1 -1
- package/dist/validations/wearable.js +17 -16
- package/dist/validations/wearable.js.map +1 -1
- package/package.json +11 -16
|
@@ -5,7 +5,7 @@ const urn_resolver_1 = require("@dcl/urn-resolver");
|
|
|
5
5
|
const types_1 = require("../../types");
|
|
6
6
|
const parseUrnNoFail = async (pointer) => {
|
|
7
7
|
try {
|
|
8
|
-
const parsed = await urn_resolver_1.parseUrn(pointer);
|
|
8
|
+
const parsed = await (0, urn_resolver_1.parseUrn)(pointer);
|
|
9
9
|
if (!parsed || parsed?.type !== 'off-chain')
|
|
10
10
|
return undefined;
|
|
11
11
|
return parsed;
|
|
@@ -21,13 +21,13 @@ exports.stores = {
|
|
|
21
21
|
const pointers = deployment.entity.pointers;
|
|
22
22
|
const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
|
|
23
23
|
if (pointers.length !== 1)
|
|
24
|
-
return types_1.validationFailed(`Only one pointer is allowed when you create a Store. Received: ${pointers}`);
|
|
24
|
+
return (0, types_1.validationFailed)(`Only one pointer is allowed when you create a Store. Received: ${pointers}`);
|
|
25
25
|
const pointer = pointers[0].toLowerCase();
|
|
26
26
|
const offchainAsset = await parseUrnNoFail(pointer);
|
|
27
27
|
if (!offchainAsset)
|
|
28
|
-
return types_1.validationFailed(`Store pointers should be a urn, for example (urn:decentraland:off-chain:marketplace-stores:{address}). Invalid pointer: ${pointer}`);
|
|
28
|
+
return (0, types_1.validationFailed)(`Store pointers should be a urn, for example (urn:decentraland:off-chain:marketplace-stores:{address}). Invalid pointer: ${pointer}`);
|
|
29
29
|
if (offchainAsset.id !== ethAddress)
|
|
30
|
-
return types_1.validationFailed(`You can only alter your own store. The pointer address and the signer address are different (address:${offchainAsset.id.toLowerCase()} signer: ${ethAddress.toLowerCase()}).`);
|
|
30
|
+
return (0, types_1.validationFailed)(`You can only alter your own store. The pointer address and the signer address are different (address:${offchainAsset.id.toLowerCase()} signer: ${ethAddress.toLowerCase()}).`);
|
|
31
31
|
return types_1.OK;
|
|
32
32
|
}
|
|
33
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stores.js","sourceRoot":"","sources":["../../../src/validations/access-checker/stores.ts"],"names":[],"mappings":";;;AAAA,oDAA2D;
|
|
1
|
+
{"version":3,"file":"stores.js","sourceRoot":"","sources":["../../../src/validations/access-checker/stores.ts"],"names":[],"mappings":";;;AAAA,oDAA2D;AAC3D,uCAA8D;AAE9D,MAAM,cAAc,GAAG,KAAK,EAC1B,OAAe,EACqB,EAAE;IACtC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAQ,EAAC,OAAO,CAAC,CAAA;QACtC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,IAAI,KAAK,WAAW;YAAE,OAAO,SAAS,CAAA;QAC7D,OAAO,MAAM,CAAA;KACd;IAAC,MAAM,GAAE;AACZ,CAAC,CAAA;AAED;;;GAGG;AACU,QAAA,MAAM,GAAe;IAChC,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE;QAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAA;QAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAEnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YACvB,OAAO,IAAA,wBAAgB,EACrB,kEAAkE,QAAQ,EAAE,CAC7E,CAAA;QAEH,MAAM,OAAO,GAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;QACjD,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAA;QAEnD,IAAI,CAAC,aAAa;YAChB,OAAO,IAAA,wBAAgB,EACrB,2HAA2H,OAAO,EAAE,CACrI,CAAA;QAEH,IAAI,aAAa,CAAC,EAAE,KAAK,UAAU;YACjC,OAAO,IAAA,wBAAgB,EACrB,wGAAwG,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,UAAU,CAAC,WAAW,EAAE,IAAI,CAC/K,CAAA;QAEH,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wearables.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wearables.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":"AAYA,OAAO,EAAM,UAAU,EAAE,MAAM,aAAa,CAAA;AAQ5C,eAAO,MAAM,0BAA0B,yFAS7B,CAAA;AAkCV,oBAAY,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,sBAAsB,EAAE,CAAA;CAChC,CAAA;AAED,aAAK,sBAAsB,GAAG;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAmDD;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,UAydvB,CAAA"}
|
|
@@ -8,7 +8,6 @@ const content_hash_tree_1 = require("@dcl/content-hash-tree");
|
|
|
8
8
|
const hashing_1 = require("@dcl/hashing");
|
|
9
9
|
const schemas_1 = require("@dcl/schemas");
|
|
10
10
|
const urn_resolver_1 = require("@dcl/urn-resolver");
|
|
11
|
-
const dcl_catalyst_commons_1 = require("dcl-catalyst-commons");
|
|
12
11
|
const ms_1 = __importDefault(require("ms"));
|
|
13
12
|
const __1 = require("../..");
|
|
14
13
|
const types_1 = require("../../types");
|
|
@@ -29,7 +28,7 @@ exports.MERKLE_PROOF_REQUIRED_KEYS = [
|
|
|
29
28
|
];
|
|
30
29
|
// When we want to find a block for a specific timestamp, we define an access window. This means that
|
|
31
30
|
// we will place will try to find the closes block to the timestamp, but only if it's within the window
|
|
32
|
-
const ACCESS_WINDOW_IN_SECONDS = ms_1.default('15s') / 1000;
|
|
31
|
+
const ACCESS_WINDOW_IN_SECONDS = (0, ms_1.default)('15s') / 1000;
|
|
33
32
|
const validUrnTypes = [
|
|
34
33
|
'off-chain',
|
|
35
34
|
'blockchain-collection-v1-asset',
|
|
@@ -48,7 +47,7 @@ const resolveSameUrn = (alreadyParsed, parsed) => {
|
|
|
48
47
|
};
|
|
49
48
|
const parseUrnNoFail = async (urn) => {
|
|
50
49
|
try {
|
|
51
|
-
const parsed = await urn_resolver_1.parseUrn(urn);
|
|
50
|
+
const parsed = await (0, urn_resolver_1.parseUrn)(urn);
|
|
52
51
|
if (parsed?.type === 'blockchain-collection-v1-asset') {
|
|
53
52
|
return parsed;
|
|
54
53
|
}
|
|
@@ -100,10 +99,7 @@ exports.wearables = {
|
|
|
100
99
|
.map(({ file, hash }) => ({ key: file, hash }))
|
|
101
100
|
.sort(compare);
|
|
102
101
|
const buffer = Buffer.from(JSON.stringify({ content: contentAsJson, metadata }));
|
|
103
|
-
return Promise.all([
|
|
104
|
-
dcl_catalyst_commons_1.Hashing.calculateBufferHash(buffer),
|
|
105
|
-
dcl_catalyst_commons_1.Hashing.calculateIPFSHash(buffer)
|
|
106
|
-
]);
|
|
102
|
+
return Promise.all([(0, hashing_1.hashV0)(buffer), (0, hashing_1.hashV1)(buffer)]);
|
|
107
103
|
};
|
|
108
104
|
return (deployedByCommittee &&
|
|
109
105
|
(await calculateHashes()).includes(permissions.contentHash));
|
|
@@ -273,7 +269,7 @@ exports.wearables = {
|
|
|
273
269
|
});
|
|
274
270
|
return false;
|
|
275
271
|
}
|
|
276
|
-
const generatedCrcHash = hashing_1.keccak256Hash(metadata, metadata.merkleProof.hashingKeys);
|
|
272
|
+
const generatedCrcHash = (0, hashing_1.keccak256Hash)(metadata, metadata.merkleProof.hashingKeys);
|
|
277
273
|
// The hash provided in the merkleProof for the entity MUST match the hash generated by the validator.
|
|
278
274
|
if (metadata.merkleProof.entityHash !== generatedCrcHash) {
|
|
279
275
|
logs?.debug(`The hash provided in the merkleProof doesn't match with the generated by the validator`, {
|
|
@@ -285,7 +281,7 @@ exports.wearables = {
|
|
|
285
281
|
// Verify if the entity belongs to the Merkle Tree.
|
|
286
282
|
const bufferedProofs = merkleProof.proof.map((value) => toHexBuffer(value));
|
|
287
283
|
const bufferedMerkleRoot = toHexBuffer(merkleRoot);
|
|
288
|
-
return content_hash_tree_1.verifyProof(merkleProof.index, merkleProof.entityHash, bufferedProofs, bufferedMerkleRoot);
|
|
284
|
+
return (0, content_hash_tree_1.verifyProof)(merkleProof.index, merkleProof.entityHash, bufferedProofs, bufferedMerkleRoot);
|
|
289
285
|
};
|
|
290
286
|
/**
|
|
291
287
|
* Verifies Third Party Wearable access by doing a Merkle Tree based verification, where the merkle root is stored in the blockchain
|
|
@@ -343,20 +339,20 @@ exports.wearables = {
|
|
|
343
339
|
for (const pointer of pointers) {
|
|
344
340
|
const parsed = await parseUrnNoFail(pointer);
|
|
345
341
|
if (!parsed)
|
|
346
|
-
return __1.validationFailed(`Wearable pointers should be a urn, for example (urn:decentraland:{protocol}:collections-v2:{contract(0x[a-fA-F0-9]+)}:{name}). Invalid pointer: (${pointer})`);
|
|
342
|
+
return (0, __1.validationFailed)(`Wearable pointers should be a urn, for example (urn:decentraland:{protocol}:collections-v2:{contract(0x[a-fA-F0-9]+)}:{name}). Invalid pointer: (${pointer})`);
|
|
347
343
|
if (!alreadySeen(resolvedPointers, parsed))
|
|
348
344
|
resolvedPointers.push(parsed);
|
|
349
345
|
}
|
|
350
346
|
if (resolvedPointers.length > 1)
|
|
351
|
-
return __1.validationFailed(`Only one pointer is allowed when you create a Wearable. Received: ${pointers}`);
|
|
347
|
+
return (0, __1.validationFailed)(`Only one pointer is allowed when you create a Wearable. Received: ${pointers}`);
|
|
352
348
|
const parsed = resolvedPointers[0];
|
|
353
349
|
if (!validUrnTypes.includes(parsed.type)) {
|
|
354
|
-
return __1.validationFailed(`Could not resolve the contractAddress of the urn ${parsed}`);
|
|
350
|
+
return (0, __1.validationFailed)(`Could not resolve the contractAddress of the urn ${parsed}`);
|
|
355
351
|
}
|
|
356
352
|
if (parsed.type === 'off-chain') {
|
|
357
353
|
// Validate Off Chain Asset
|
|
358
354
|
if (!externalCalls.isAddressOwnedByDecentraland(ethAddress))
|
|
359
|
-
return __1.validationFailed(`The provided Eth Address '${ethAddress}' does not have access to the following wearable: '${parsed.uri}'`);
|
|
355
|
+
return (0, __1.validationFailed)(`The provided Eth Address '${ethAddress}' does not have access to the following wearable: '${parsed.uri}'`);
|
|
360
356
|
}
|
|
361
357
|
else if (parsed?.type === 'blockchain-collection-v1-asset' ||
|
|
362
358
|
parsed?.type === 'blockchain-collection-v2-asset') {
|
|
@@ -366,7 +362,7 @@ exports.wearables = {
|
|
|
366
362
|
const isL1 = L1_NETWORKS.includes(network);
|
|
367
363
|
const isL2 = L2_NETWORKS.includes(network);
|
|
368
364
|
if (!isL1 && !isL2)
|
|
369
|
-
return __1.validationFailed(`Found an unknown network on the urn '${network}'`);
|
|
365
|
+
return (0, __1.validationFailed)(`Found an unknown network on the urn '${network}'`);
|
|
370
366
|
const blocksSubgraphUrl = isL1
|
|
371
367
|
? externalCalls.subgraphs.L1.blocks
|
|
372
368
|
: externalCalls.subgraphs.L2.blocks;
|
|
@@ -379,7 +375,7 @@ exports.wearables = {
|
|
|
379
375
|
});
|
|
380
376
|
if (!hasAccess) {
|
|
381
377
|
if (isL2)
|
|
382
|
-
return __1.validationFailed(`The provided Eth Address does not have access to the following wearable: (${parsed.contractAddress}, ${parsed.id})`);
|
|
378
|
+
return (0, __1.validationFailed)(`The provided Eth Address does not have access to the following wearable: (${parsed.contractAddress}, ${parsed.id})`);
|
|
383
379
|
// Some L1 collections are deployed by Decentraland Address
|
|
384
380
|
// Maybe this is not necessary as we already know that it's a 'blockchain-collection-v1-asset'
|
|
385
381
|
const isAllowlistedCollection = parsed.uri
|
|
@@ -387,7 +383,7 @@ exports.wearables = {
|
|
|
387
383
|
.startsWith('urn:decentraland:ethereum:collections-v1');
|
|
388
384
|
if (!externalCalls.isAddressOwnedByDecentraland(ethAddress) ||
|
|
389
385
|
!isAllowlistedCollection) {
|
|
390
|
-
return __1.validationFailed(`The provided Eth Address '${ethAddress}' does not have access to the following wearable: '${parsed.uri}'`);
|
|
386
|
+
return (0, __1.validationFailed)(`The provided Eth Address '${ethAddress}' does not have access to the following wearable: '${parsed.uri}'`);
|
|
391
387
|
}
|
|
392
388
|
}
|
|
393
389
|
}
|
|
@@ -395,7 +391,7 @@ exports.wearables = {
|
|
|
395
391
|
// Third Party wearables are validated doing merkle tree based verification proof
|
|
396
392
|
const verified = await verifyMerkleProofedEntity(parsed);
|
|
397
393
|
if (!verified) {
|
|
398
|
-
return __1.validationFailed(`Couldn't verify merkle proofed entity`);
|
|
394
|
+
return (0, __1.validationFailed)(`Couldn't verify merkle proofed entity`);
|
|
399
395
|
}
|
|
400
396
|
}
|
|
401
397
|
return types_1.OK;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wearables.js","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wearables.js","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,UAAU,EAAE,MAAM,UAAU,CAAA;AAiBjD;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,UA2CrB,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.content = void 0;
|
|
4
|
-
const
|
|
4
|
+
const schemas_1 = require("@dcl/schemas");
|
|
5
5
|
const _1 = require(".");
|
|
6
6
|
const types_1 = require("../types");
|
|
7
7
|
const correspondsToASnapshot = (fileName, hash, metadata) => {
|
|
@@ -37,14 +37,14 @@ exports.content = {
|
|
|
37
37
|
if (entity.timestamp > _1.ADR_45_TIMESTAMP) {
|
|
38
38
|
for (const { file, hash } of entity.content ?? []) {
|
|
39
39
|
// Validate all content files correspond to at least one avatar snapshot
|
|
40
|
-
if (entity.type ===
|
|
40
|
+
if (entity.type === schemas_1.EntityType.PROFILE) {
|
|
41
41
|
if (!correspondsToASnapshot(file, hash, entity.metadata)) {
|
|
42
42
|
errors.push(`This file is not expected: '${file}' or its hash is invalid: '${hash}'. Please, include only valid snapshot files.`);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
return types_1.fromErrors(...errors);
|
|
47
|
+
return (0, types_1.fromErrors)(...errors);
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
//# sourceMappingURL=content.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":";;;AAAA,0CAA0D;AAC1D,wBAAoC;AACpC,oCAAiD;AAEjD,MAAM,sBAAsB,GAAG,CAC7B,QAAgB,EAChB,IAAY,EACZ,QAAiB,EACjB,EAAE;IACF,MAAM,wBAAwB,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAEjE,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAChD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAc,EAAE,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAC1C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,wBAAwB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAChE,CACF,CAAA;AACH,CAAC,CAAA;AAED;;;GAGG;AACU,QAAA,OAAO,GAAe;IACjC,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE;QAChD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAA;QACpC,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC,sBAAsB,CACpE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAC/C,CAAA;YAED,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;gBACrC,0FAA0F;gBAC1F,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;oBACvD,MAAM,CAAC,IAAI,CACT,uFAAuF,IAAI,EAAE,CAC9F,CAAA;iBACF;aACF;SACF;QAED,6FAA6F;QAC7F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3E,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE;YAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,MAAM,CAAC,EAAE,EAAE;gBACjD,MAAM,CAAC,IAAI,CACT,+DAA+D,IAAI,EAAE,CACtE,CAAA;aACF;SACF;QAED,IAAI,MAAM,CAAC,SAAS,GAAG,mBAAgB,EAAE;YACvC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE;gBACjD,wEAAwE;gBACxE,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAU,CAAC,OAAO,EAAE;oBACtC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;wBACxD,MAAM,CAAC,IAAI,CACT,+BAA+B,IAAI,8BAA8B,IAAI,+CAA+C,CACrH,CAAA;qBACF;iBACF;aACF;SACF;QACD,OAAO,IAAA,kBAAU,EAAC,GAAG,MAAM,CAAC,CAAA;IAC9B,CAAC;CACF,CAAA"}
|
|
@@ -10,10 +10,10 @@ exports.entityStructure = {
|
|
|
10
10
|
validate: async ({ deployment }) => {
|
|
11
11
|
const { entity } = deployment;
|
|
12
12
|
if (new Set(entity.pointers).size != entity.pointers.length) {
|
|
13
|
-
return types_1.validationFailed('There are repeated pointers in your request.');
|
|
13
|
+
return (0, types_1.validationFailed)('There are repeated pointers in your request.');
|
|
14
14
|
}
|
|
15
15
|
else if (!entity.pointers || entity.pointers.length <= 0) {
|
|
16
|
-
return types_1.validationFailed('The entity needs to be pointed by one or more pointers.');
|
|
16
|
+
return (0, types_1.validationFailed)('The entity needs to be pointed by one or more pointers.');
|
|
17
17
|
}
|
|
18
18
|
return types_1.OK;
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-structure.js","sourceRoot":"","sources":["../../src/validations/entity-structure.ts"],"names":[],"mappings":";;;AAAA,oCAA2D;AAE3D;;;GAGG;AACU,QAAA,eAAe,GAAe;IACzC,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAC7B,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC3D,OAAO,wBAAgB,
|
|
1
|
+
{"version":3,"file":"entity-structure.js","sourceRoot":"","sources":["../../src/validations/entity-structure.ts"],"names":[],"mappings":";;;AAAA,oCAA2D;AAE3D;;;GAGG;AACU,QAAA,eAAe,GAAe;IACzC,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAC7B,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC3D,OAAO,IAAA,wBAAgB,EAAC,8CAA8C,CAAC,CAAA;SACxE;aAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YAC1D,OAAO,IAAA,wBAAgB,EACrB,yDAAyD,CAC1D,CAAA;SACF;QACD,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAA"}
|
|
@@ -19,7 +19,7 @@ exports.ipfsHashing = {
|
|
|
19
19
|
const errors = allHashes
|
|
20
20
|
.filter((hash) => !schemas_1.IPFSv2.validate(hash))
|
|
21
21
|
.map((hash) => `This hash '${hash}' is not valid. It should be IPFS v2 format.`);
|
|
22
|
-
return types_1.fromErrors(...errors);
|
|
22
|
+
return (0, types_1.fromErrors)(...errors);
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
//# sourceMappingURL=ipfs-hashing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipfs-hashing.js","sourceRoot":"","sources":["../../src/validations/ipfs-hashing.ts"],"names":[],"mappings":";;;AAAA,0CAAqC;AACrC,wBAAoC;AACpC,0BAAuB;AACvB,oCAAiD;AAEjD;;;GAGG;AACU,QAAA,WAAW,GAAe;IACrC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;QAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAE7B,IAAI,MAAM,CAAC,SAAS,GAAG,mBAAgB;YAAE,OAAO,MAAE,CAAA;QAElD,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACrE,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,eAAe,CAAC,CAAA;QAEjD,MAAM,MAAM,GAAG,SAAS;aACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACxC,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,cAAc,IAAI,8CAA8C,CACnE,CAAA;QAEH,OAAO,kBAAU,
|
|
1
|
+
{"version":3,"file":"ipfs-hashing.js","sourceRoot":"","sources":["../../src/validations/ipfs-hashing.ts"],"names":[],"mappings":";;;AAAA,0CAAqC;AACrC,wBAAoC;AACpC,0BAAuB;AACvB,oCAAiD;AAEjD;;;GAGG;AACU,QAAA,WAAW,GAAe;IACrC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;QAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAE7B,IAAI,MAAM,CAAC,SAAS,GAAG,mBAAgB;YAAE,OAAO,MAAE,CAAA;QAElD,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACrE,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,eAAe,CAAC,CAAA;QAEjD,MAAM,MAAM,GAAG,SAAS;aACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACxC,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,cAAc,IAAI,8CAA8C,CACnE,CAAA;QAEH,OAAO,IAAA,kBAAU,EAAC,GAAG,MAAM,CAAC,CAAA;IAC9B,CAAC;CACF,CAAA"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.metadata = void 0;
|
|
4
|
-
const
|
|
4
|
+
const ADR51_1 = require("./ADR51");
|
|
5
5
|
const _1 = require(".");
|
|
6
6
|
const types_1 = require("../types");
|
|
7
7
|
/**
|
|
8
8
|
* Validate entities metadata against its corresponding schema
|
|
9
9
|
* @public
|
|
10
10
|
*/
|
|
11
|
-
exports.metadata = types_1.conditionalValidation({
|
|
11
|
+
exports.metadata = (0, types_1.conditionalValidation)({
|
|
12
12
|
async predicate({ deployment }) {
|
|
13
13
|
if (deployment.entity.timestamp <= _1.ADR_45_TIMESTAMP)
|
|
14
14
|
return types_1.OK;
|
|
15
15
|
const { type, metadata } = deployment.entity;
|
|
16
|
-
const validator =
|
|
16
|
+
const validator = ADR51_1.entityParameters[type].validate;
|
|
17
17
|
if (validator(metadata)) {
|
|
18
18
|
return types_1.OK;
|
|
19
19
|
}
|
|
20
20
|
const errors = validator.errors?.map(($) => '' + $.message) || [];
|
|
21
|
-
return types_1.validationFailed(`The metadata for this entity type (${deployment.entity.type}) is not valid.`, ...errors);
|
|
21
|
+
return (0, types_1.validationFailed)(`The metadata for this entity type (${deployment.entity.type}) is not valid.`, ...errors);
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
24
|
//# sourceMappingURL=metadata-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-schema.js","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"metadata-schema.js","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAC1C,wBAAoC;AACpC,oCAAsE;AAEtE;;;GAGG;AACU,QAAA,QAAQ,GAAG,IAAA,6BAAqB,EAAC;IAC5C,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE;QAC5B,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,mBAAgB;YAAE,OAAO,UAAE,CAAA;QAE9D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,MAAM,CAAA;QAC5C,MAAM,SAAS,GAAG,wBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAA;QACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;YACvB,OAAO,UAAE,CAAA;SACV;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACjE,OAAO,IAAA,wBAAgB,EACrB,sCAAsC,UAAU,CAAC,MAAM,CAAC,IAAI,iBAAiB,EAC7E,GAAG,MAAM,CACV,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.profile = exports.faceThumbnail = void 0;
|
|
7
|
-
const
|
|
7
|
+
const schemas_1 = require("@dcl/schemas");
|
|
8
8
|
const sharp_1 = __importDefault(require("sharp"));
|
|
9
9
|
const _1 = require(".");
|
|
10
10
|
const types_1 = require("../types");
|
|
@@ -19,7 +19,7 @@ exports.faceThumbnail = {
|
|
|
19
19
|
for (const avatar of allAvatars) {
|
|
20
20
|
const hash = avatar.avatar.snapshots.face256;
|
|
21
21
|
if (!hash)
|
|
22
|
-
return types_1.validationFailed(`Couldn't find hash for face256 thumbnail file with name: 'face256'`);
|
|
22
|
+
return (0, types_1.validationFailed)(`Couldn't find hash for face256 thumbnail file with name: 'face256'`);
|
|
23
23
|
const isAlreadyStored = (await externalCalls.isContentStoredAlready([hash])).get(hash) ?? false;
|
|
24
24
|
if (isAlreadyStored) {
|
|
25
25
|
return types_1.OK;
|
|
@@ -27,9 +27,9 @@ exports.faceThumbnail = {
|
|
|
27
27
|
// check size
|
|
28
28
|
const thumbnailBuffer = deployment.files.get(hash);
|
|
29
29
|
if (!thumbnailBuffer)
|
|
30
|
-
return types_1.validationFailed(`Couldn't find thumbnail file with hash: ${hash}`);
|
|
30
|
+
return (0, types_1.validationFailed)(`Couldn't find thumbnail file with hash: ${hash}`);
|
|
31
31
|
try {
|
|
32
|
-
const { width, height, format } = await sharp_1.default(thumbnailBuffer).metadata();
|
|
32
|
+
const { width, height, format } = await (0, sharp_1.default)(thumbnailBuffer).metadata();
|
|
33
33
|
if (!format || format !== 'png')
|
|
34
34
|
errors.push(`Invalid or unknown image format. Only 'PNG' format is accepted.`);
|
|
35
35
|
if (!width || !height) {
|
|
@@ -44,7 +44,7 @@ exports.faceThumbnail = {
|
|
|
44
44
|
errors.push(`Couldn't parse face256 thumbnail, please check image format.`);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
return errors.length > 0 ? types_1.validationFailed(...errors) : types_1.OK;
|
|
47
|
+
return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
/**
|
|
@@ -53,7 +53,7 @@ exports.faceThumbnail = {
|
|
|
53
53
|
*/
|
|
54
54
|
exports.profile = {
|
|
55
55
|
validate: async (args) => {
|
|
56
|
-
if (args.deployment.entity.type !==
|
|
56
|
+
if (args.deployment.entity.type !== schemas_1.EntityType.PROFILE)
|
|
57
57
|
return types_1.OK;
|
|
58
58
|
const response = await exports.faceThumbnail.validate(args);
|
|
59
59
|
if (!response.ok)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":";;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":";;;;;;AAAA,0CAAyC;AACzC,kDAAyB;AACzB,wBAAoC;AACpC,oCAA+E;AAE/E,0FAA0F;AAC1F,MAAM,oBAAoB,GAAG,GAAG,CAAA;AACnB,QAAA,aAAa,GAAe;IACvC,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE;QAChD,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,GAAG,mBAAgB;YAAE,OAAO,UAAE,CAAA;QAE7D,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,UAAU,GAAU,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAA;QAEnE,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;YAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAA;YAC5C,IAAI,CAAC,IAAI;gBACP,OAAO,IAAA,wBAAgB,EACrB,oEAAoE,CACrE,CAAA;YAEH,MAAM,eAAe,GACnB,CAAC,MAAM,aAAa,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAA;YACzE,IAAI,eAAe,EAAE;gBACnB,OAAO,UAAE,CAAA;aACV;YACD,aAAa;YACb,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAClD,IAAI,CAAC,eAAe;gBAClB,OAAO,IAAA,wBAAgB,EACrB,2CAA2C,IAAI,EAAE,CAClD,CAAA;YACH,IAAI;gBACF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,eAAK,EAC3C,eAAe,CAChB,CAAC,QAAQ,EAAE,CAAA;gBACZ,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,KAAK;oBAC7B,MAAM,CAAC,IAAI,CACT,iEAAiE,CAClE,CAAA;gBACH,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;oBACrB,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAA;iBACnE;qBAAM,IACL,KAAK,KAAK,oBAAoB;oBAC9B,MAAM,KAAK,oBAAoB,EAC/B;oBACA,MAAM,CAAC,IAAI,CACT,iDAAiD,KAAK,eAAe,MAAM,GAAG,CAC/E,CAAA;iBACF;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,CAAC,IAAI,CACT,8DAA8D,CAC/D,CAAA;aACF;SACF;QACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAE,CAAA;IAC7D,CAAC;CACF,CAAA;AAED;;;GAGG;AACU,QAAA,OAAO,GAAe;IACjC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,oBAAU,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"}
|
|
@@ -12,7 +12,7 @@ exports.signature = {
|
|
|
12
12
|
const { entity, auditInfo } = deployment;
|
|
13
13
|
const validationResult = await externalCalls.validateSignature(entity.id, auditInfo, entity.timestamp);
|
|
14
14
|
return !validationResult.ok
|
|
15
|
-
? types_1.validationFailed('The signature is invalid. ' + validationResult.message)
|
|
15
|
+
? (0, types_1.validationFailed)('The signature is invalid. ' + validationResult.message)
|
|
16
16
|
: types_1.OK;
|
|
17
17
|
}
|
|
18
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/validations/signature.ts"],"names":[],"mappings":";;;AAAA,oCAA2D;AAE3D;;;GAGG;AACU,QAAA,SAAS,GAAe;IACnC,oDAAoD;IACpD,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE;QAChD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;QACxC,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAC5D,MAAM,CAAC,EAAE,EACT,SAAS,EACT,MAAM,CAAC,SAAS,CACjB,CAAA;QACD,OAAO,CAAC,gBAAgB,CAAC,EAAE;YACzB,CAAC,CAAC,wBAAgB,
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/validations/signature.ts"],"names":[],"mappings":";;;AAAA,oCAA2D;AAE3D;;;GAGG;AACU,QAAA,SAAS,GAAe;IACnC,oDAAoD;IACpD,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE;QAChD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;QACxC,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAC5D,MAAM,CAAC,EAAE,EACT,SAAS,EACT,MAAM,CAAC,SAAS,CACjB,CAAA;QACD,OAAO,CAAC,gBAAgB,CAAC,EAAE;YACzB,CAAC,CAAC,IAAA,wBAAgB,EACd,4BAA4B,GAAG,gBAAgB,CAAC,OAAO,CACxD;YACH,CAAC,CAAC,UAAE,CAAA;IACR,CAAC;CACF,CAAA"}
|
package/dist/validations/size.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.size = void 0;
|
|
4
|
-
const
|
|
4
|
+
const ADR51_1 = require("./ADR51");
|
|
5
5
|
const _1 = require(".");
|
|
6
6
|
const types_1 = require("../types");
|
|
7
7
|
/** Validate that the full request size is within limits
|
|
@@ -14,17 +14,17 @@ exports.size = {
|
|
|
14
14
|
const { entity } = deployment;
|
|
15
15
|
if (entity.timestamp <= _1.LEGACY_CONTENT_MIGRATION_TIMESTAMP)
|
|
16
16
|
return types_1.OK;
|
|
17
|
-
const maxSizeInMB =
|
|
17
|
+
const maxSizeInMB = ADR51_1.entityParameters[entity.type].maxSizeInMB;
|
|
18
18
|
let errors = [];
|
|
19
19
|
if (!maxSizeInMB) {
|
|
20
|
-
return types_1.validationFailed(`Type ${entity.type} is not supported yet`);
|
|
20
|
+
return (0, types_1.validationFailed)(`Type ${entity.type} is not supported yet`);
|
|
21
21
|
}
|
|
22
22
|
const maxSizeInBytes = maxSizeInMB * 1024 * 1024;
|
|
23
23
|
let totalSize = 0;
|
|
24
24
|
if (entity.timestamp > _1.ADR_45_TIMESTAMP) {
|
|
25
|
-
const result = await _1.calculateDeploymentSize(deployment, externalCalls);
|
|
25
|
+
const result = await (0, _1.calculateDeploymentSize)(deployment, externalCalls);
|
|
26
26
|
if (typeof result === 'string')
|
|
27
|
-
return types_1.validationFailed(result);
|
|
27
|
+
return (0, types_1.validationFailed)(result);
|
|
28
28
|
totalSize = result;
|
|
29
29
|
}
|
|
30
30
|
else {
|
|
@@ -36,7 +36,7 @@ exports.size = {
|
|
|
36
36
|
`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}.`
|
|
37
37
|
];
|
|
38
38
|
}
|
|
39
|
-
return errors.length > 0 ? types_1.validationFailed(...errors) : types_1.OK;
|
|
39
|
+
return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
//# sourceMappingURL=size.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAC1C,wBAIU;AACV,oCAA2D;AAE3D;;;;GAIG;AACU,QAAA,IAAI,GAAe;IAC9B,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAC7B,IAAI,MAAM,CAAC,SAAS,IAAI,qCAAkC;YAAE,OAAO,UAAE,CAAA;QAErE,MAAM,WAAW,GAAG,wBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAA;QAC7D,IAAI,MAAM,GAAa,EAAE,CAAA;QACzB,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,IAAA,wBAAgB,EAAC,QAAQ,MAAM,CAAC,IAAI,uBAAuB,CAAC,CAAA;SACpE;QACD,MAAM,cAAc,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAA;QAChD,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,MAAM,CAAC,SAAS,GAAG,mBAAgB,EAAE;YACvC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAuB,EAAC,UAAU,EAAE,aAAa,CAAC,CAAA;YACvE,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO,IAAA,wBAAgB,EAAC,MAAM,CAAC,CAAA;YAC/D,SAAS,GAAG,MAAM,CAAA;SACnB;aAAM;YACL,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACtD,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,EACpC,CAAC,CACF,CAAA;SACF;QACD,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA;QACzD,IAAI,cAAc,GAAG,cAAc,EAAE;YACnC,MAAM,GAAG;gBACP,sEAAsE,WAAW,WAC/E,MAAM,CAAC,IACT,0BACE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,cAC3B,kCAAkC,SAAS,GAAG;aAC/C,CAAA;SACF;QACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAE,CAAA;IAC7D,CAAC;CACF,CAAA"}
|
|
@@ -4,7 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.wearable = exports.wearableThumbnail = exports.wearableSize = exports.wearableRepresentationContent = void 0;
|
|
7
|
-
const
|
|
7
|
+
const schemas_1 = require("@dcl/schemas");
|
|
8
|
+
const ADR51_1 = require("./ADR51");
|
|
8
9
|
const sharp_1 = __importDefault(require("sharp"));
|
|
9
10
|
const _1 = require(".");
|
|
10
11
|
const types_1 = require("../types");
|
|
@@ -16,13 +17,13 @@ exports.wearableRepresentationContent = {
|
|
|
16
17
|
const wearableMetadata = entity.metadata;
|
|
17
18
|
const representations = wearableMetadata?.data?.representations;
|
|
18
19
|
if (!representations)
|
|
19
|
-
return types_1.validationFailed('No wearable representations found');
|
|
20
|
+
return (0, types_1.validationFailed)('No wearable representations found');
|
|
20
21
|
if (!entity.content)
|
|
21
|
-
return types_1.validationFailed('No content found');
|
|
22
|
+
return (0, types_1.validationFailed)('No content found');
|
|
22
23
|
for (const representation of representations) {
|
|
23
24
|
for (const representationContent of representation.contents) {
|
|
24
25
|
if (!entity.content.find((content) => content.file === representationContent)) {
|
|
25
|
-
return types_1.validationFailed(`Representation content: '${representationContent}' is not one of the content files`);
|
|
26
|
+
return (0, types_1.validationFailed)(`Representation content: '${representationContent}' is not one of the content files`);
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
}
|
|
@@ -35,22 +36,22 @@ exports.wearableSize = {
|
|
|
35
36
|
const entity = deployment.entity;
|
|
36
37
|
if (entity.timestamp < _1.ADR_45_TIMESTAMP)
|
|
37
38
|
return types_1.OK;
|
|
38
|
-
const maxSizeInMB =
|
|
39
|
+
const maxSizeInMB = ADR51_1.entityParameters[schemas_1.EntityType.WEARABLE]?.maxSizeInMB;
|
|
39
40
|
if (!maxSizeInMB)
|
|
40
|
-
return types_1.validationFailed(`Type ${
|
|
41
|
+
return (0, types_1.validationFailed)(`Type ${schemas_1.EntityType.WEARABLE} is not supported yet`);
|
|
41
42
|
const modelSizeInMB = wearableSizeLimitInMB;
|
|
42
43
|
const metadata = entity.metadata;
|
|
43
44
|
const thumbnailHash = entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
|
|
44
45
|
if (!thumbnailHash)
|
|
45
|
-
return types_1.validationFailed("Couldn't find the thumbnail hash");
|
|
46
|
-
const result = await _1.calculateDeploymentSize(deployment, externalCalls);
|
|
46
|
+
return (0, types_1.validationFailed)("Couldn't find the thumbnail hash");
|
|
47
|
+
const result = await (0, _1.calculateDeploymentSize)(deployment, externalCalls);
|
|
47
48
|
if (typeof result === 'string')
|
|
48
|
-
return types_1.validationFailed(result);
|
|
49
|
+
return (0, types_1.validationFailed)(result);
|
|
49
50
|
const totalDeploymentSize = result;
|
|
50
51
|
const thumbnailSize = deployment.files.get(thumbnailHash)?.byteLength ?? 0;
|
|
51
52
|
const modelSize = totalDeploymentSize - thumbnailSize;
|
|
52
53
|
if (modelSize > modelSizeInMB * 1024 * 1024)
|
|
53
|
-
return types_1.validationFailed(`The deployment is too big. The maximum allowed size for wearable model files is ${modelSizeInMB} MB. You can upload up to ${modelSizeInMB * 1024 * 1024} bytes but you tried to upload ${modelSize}.`);
|
|
54
|
+
return (0, types_1.validationFailed)(`The deployment is too big. The maximum allowed size for wearable model files is ${modelSizeInMB} MB. You can upload up to ${modelSizeInMB * 1024 * 1024} bytes but you tried to upload ${modelSize}.`);
|
|
54
55
|
return types_1.OK;
|
|
55
56
|
}
|
|
56
57
|
};
|
|
@@ -64,21 +65,21 @@ exports.wearableThumbnail = {
|
|
|
64
65
|
const metadata = deployment.entity.metadata;
|
|
65
66
|
const hash = deployment.entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
|
|
66
67
|
if (!hash)
|
|
67
|
-
return types_1.validationFailed(`Couldn't find hash for thumbnail file with name: ${metadata.thumbnail}`);
|
|
68
|
+
return (0, types_1.validationFailed)(`Couldn't find hash for thumbnail file with name: ${metadata.thumbnail}`);
|
|
68
69
|
const errors = [];
|
|
69
70
|
// check size
|
|
70
71
|
const thumbnailBuffer = deployment.files.get(hash);
|
|
71
72
|
if (!thumbnailBuffer) {
|
|
72
73
|
const isHashStored = (await externalCalls.isContentStoredAlready([hash])).get(hash) ?? false;
|
|
73
74
|
if (!isHashStored) {
|
|
74
|
-
return types_1.validationFailed(`Couldn't find thumbnail file with hash: ${hash}`);
|
|
75
|
+
return (0, types_1.validationFailed)(`Couldn't find thumbnail file with hash: ${hash}`);
|
|
75
76
|
}
|
|
76
77
|
// otherwise, thumbnail was already uploaded and won't be validated again
|
|
77
78
|
log?.debug(`Thumbnail file with hash: ${hash} is not in the deployment, but it is already stored`);
|
|
78
79
|
return types_1.OK;
|
|
79
80
|
}
|
|
80
81
|
try {
|
|
81
|
-
const { width, height, format } = await sharp_1.default(thumbnailBuffer).metadata();
|
|
82
|
+
const { width, height, format } = await (0, sharp_1.default)(thumbnailBuffer).metadata();
|
|
82
83
|
if (!format || format !== 'png')
|
|
83
84
|
errors.push(`Invalid or unknown image format. Only 'PNG' format is accepted.`);
|
|
84
85
|
if (!width || !height) {
|
|
@@ -91,7 +92,7 @@ exports.wearableThumbnail = {
|
|
|
91
92
|
catch (e) {
|
|
92
93
|
errors.push(`Couldn't parse thumbnail, please check image format.`);
|
|
93
94
|
}
|
|
94
|
-
return errors.length > 0 ? types_1.validationFailed(...errors) : types_1.OK;
|
|
95
|
+
return errors.length > 0 ? (0, types_1.validationFailed)(...errors) : types_1.OK;
|
|
95
96
|
}
|
|
96
97
|
};
|
|
97
98
|
/**
|
|
@@ -100,9 +101,9 @@ exports.wearableThumbnail = {
|
|
|
100
101
|
*/
|
|
101
102
|
exports.wearable = {
|
|
102
103
|
validate: async (args) => {
|
|
103
|
-
if (args.deployment.entity.type !==
|
|
104
|
+
if (args.deployment.entity.type !== schemas_1.EntityType.WEARABLE)
|
|
104
105
|
return types_1.OK;
|
|
105
|
-
return _1.validateInRow(args, exports.wearableRepresentationContent, exports.wearableThumbnail, exports.wearableSize);
|
|
106
|
+
return (0, _1.validateInRow)(args, exports.wearableRepresentationContent, exports.wearableThumbnail, exports.wearableSize);
|
|
106
107
|
}
|
|
107
108
|
};
|
|
108
109
|
//# sourceMappingURL=wearable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wearable.js","sourceRoot":"","sources":["../../src/validations/wearable.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"wearable.js","sourceRoot":"","sources":["../../src/validations/wearable.ts"],"names":[],"mappings":"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"}
|