@dcl/content-validator 1.0.0-20220105210353.commit-baf07b8 → 1.0.0-20220105215254.commit-95d161b
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/README.md +5 -4
- package/dist/content-validator.api.json +8 -89
- package/dist/types.d.ts +1 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validations/content.js +1 -1
- package/dist/validations/content.js.map +1 -1
- package/dist/validations/index.d.ts +1 -1
- package/dist/validations/index.d.ts.map +1 -1
- package/dist/validations/index.js +3 -20
- package/dist/validations/index.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 +1 -1
- package/dist/validations/metadata-schema.js.map +1 -1
- package/dist/validations/size.d.ts +1 -1
- package/dist/validations/size.d.ts.map +1 -1
- package/dist/validations/size.js +4 -3
- package/dist/validations/size.js.map +1 -1
- package/dist/validations/wearable.d.ts.map +1 -1
- package/dist/validations/wearable.js +3 -2
- package/dist/validations/wearable.js.map +1 -1
- package/package.json +2 -2
- package/dist/validations/must-have-failed-before.d.ts +0 -6
- package/dist/validations/must-have-failed-before.d.ts.map +0 -1
- package/dist/validations/must-have-failed-before.js +0 -13
- package/dist/validations/must-have-failed-before.js.map +0 -1
- package/dist/validations/no-newer.d.ts +0 -6
- package/dist/validations/no-newer.d.ts.map +0 -1
- package/dist/validations/no-newer.js +0 -14
- package/dist/validations/no-newer.js.map +0 -1
- package/dist/validations/no-redeploy.d.ts +0 -6
- package/dist/validations/no-redeploy.d.ts.map +0 -1
- package/dist/validations/no-redeploy.js +0 -13
- package/dist/validations/no-redeploy.js.map +0 -1
- package/dist/validations/rate-limit.d.ts +0 -6
- package/dist/validations/rate-limit.d.ts.map +0 -1
- package/dist/validations/rate-limit.js +0 -13
- package/dist/validations/rate-limit.js.map +0 -1
- package/dist/validations/recent.d.ts +0 -7
- package/dist/validations/recent.d.ts.map +0 -1
- package/dist/validations/recent.js +0 -27
- package/dist/validations/recent.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @dcl/content-validator
|
|
2
2
|
|
|
3
|
-
Contains all validations to run against entity deployments
|
|
3
|
+
Contains all validations to run against entity deployments.
|
|
4
4
|
|
|
5
5
|
## Getting Started
|
|
6
6
|
|
|
@@ -24,6 +24,7 @@ To make Catalysts accept deployments of new entity types, they must have defined
|
|
|
24
24
|
|
|
25
25
|
### In steps
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
1. Create entity schema on [@dcl/schemas](https://github.com/decentraland/common-schemas).
|
|
28
|
+
2. Add entity type and schema on [catalyst-commons](https://github.com/decentraland/catalyst-commons/).
|
|
29
|
+
3. Add entity type and access checker in [access.ts](./src/validations/access-checker/access.ts).
|
|
30
|
+
a. Verify entity pointers can be resolved. If required add a new resolver in [@dcl/urn-resolver](https://github.com/decentraland/urn-resolver).
|
|
@@ -171,16 +171,16 @@
|
|
|
171
171
|
"members": [
|
|
172
172
|
{
|
|
173
173
|
"kind": "Variable",
|
|
174
|
-
"canonicalReference": "@dcl/content-validator!
|
|
174
|
+
"canonicalReference": "@dcl/content-validator!ADR_45_TIMESTAMP:var",
|
|
175
175
|
"docComment": "/**\n * @public\n */\n",
|
|
176
176
|
"excerptTokens": [
|
|
177
177
|
{
|
|
178
178
|
"kind": "Content",
|
|
179
|
-
"text": "
|
|
179
|
+
"text": "ADR_45_TIMESTAMP = 1648954800000"
|
|
180
180
|
}
|
|
181
181
|
],
|
|
182
182
|
"releaseTag": "Public",
|
|
183
|
-
"name": "
|
|
183
|
+
"name": "ADR_45_TIMESTAMP",
|
|
184
184
|
"variableTypeTokenRange": {
|
|
185
185
|
"startIndex": 0,
|
|
186
186
|
"endIndex": 0
|
|
@@ -457,52 +457,7 @@
|
|
|
457
457
|
},
|
|
458
458
|
{
|
|
459
459
|
"kind": "Content",
|
|
460
|
-
"text": "{\n
|
|
461
|
-
},
|
|
462
|
-
{
|
|
463
|
-
"kind": "Reference",
|
|
464
|
-
"text": "Entity",
|
|
465
|
-
"canonicalReference": "dcl-catalyst-commons!Entity:type"
|
|
466
|
-
},
|
|
467
|
-
{
|
|
468
|
-
"kind": "Content",
|
|
469
|
-
"text": ") => "
|
|
470
|
-
},
|
|
471
|
-
{
|
|
472
|
-
"kind": "Reference",
|
|
473
|
-
"text": "Promise",
|
|
474
|
-
"canonicalReference": "!Promise:interface"
|
|
475
|
-
},
|
|
476
|
-
{
|
|
477
|
-
"kind": "Content",
|
|
478
|
-
"text": "<boolean>;\n isFailedDeployment: (entityType: "
|
|
479
|
-
},
|
|
480
|
-
{
|
|
481
|
-
"kind": "Reference",
|
|
482
|
-
"text": "EntityType",
|
|
483
|
-
"canonicalReference": "dcl-catalyst-commons!EntityType:enum"
|
|
484
|
-
},
|
|
485
|
-
{
|
|
486
|
-
"kind": "Content",
|
|
487
|
-
"text": ", entityId: "
|
|
488
|
-
},
|
|
489
|
-
{
|
|
490
|
-
"kind": "Reference",
|
|
491
|
-
"text": "EntityId",
|
|
492
|
-
"canonicalReference": "dcl-catalyst-commons!EntityId:type"
|
|
493
|
-
},
|
|
494
|
-
{
|
|
495
|
-
"kind": "Content",
|
|
496
|
-
"text": ") => "
|
|
497
|
-
},
|
|
498
|
-
{
|
|
499
|
-
"kind": "Reference",
|
|
500
|
-
"text": "Promise",
|
|
501
|
-
"canonicalReference": "!Promise:interface"
|
|
502
|
-
},
|
|
503
|
-
{
|
|
504
|
-
"kind": "Content",
|
|
505
|
-
"text": "<boolean>;\n isContentStoredAlready: (hashes: "
|
|
460
|
+
"text": "{\n isContentStoredAlready: (hashes: "
|
|
506
461
|
},
|
|
507
462
|
{
|
|
508
463
|
"kind": "Reference",
|
|
@@ -538,34 +493,7 @@
|
|
|
538
493
|
},
|
|
539
494
|
{
|
|
540
495
|
"kind": "Content",
|
|
541
|
-
"text": ", boolean>>;\n
|
|
542
|
-
},
|
|
543
|
-
{
|
|
544
|
-
"kind": "Reference",
|
|
545
|
-
"text": "Promise",
|
|
546
|
-
"canonicalReference": "!Promise:interface"
|
|
547
|
-
},
|
|
548
|
-
{
|
|
549
|
-
"kind": "Content",
|
|
550
|
-
"text": "<boolean>;\n isEntityRateLimited: (entity: "
|
|
551
|
-
},
|
|
552
|
-
{
|
|
553
|
-
"kind": "Reference",
|
|
554
|
-
"text": "Entity",
|
|
555
|
-
"canonicalReference": "dcl-catalyst-commons!Entity:type"
|
|
556
|
-
},
|
|
557
|
-
{
|
|
558
|
-
"kind": "Content",
|
|
559
|
-
"text": ") => "
|
|
560
|
-
},
|
|
561
|
-
{
|
|
562
|
-
"kind": "Reference",
|
|
563
|
-
"text": "Promise",
|
|
564
|
-
"canonicalReference": "!Promise:interface"
|
|
565
|
-
},
|
|
566
|
-
{
|
|
567
|
-
"kind": "Content",
|
|
568
|
-
"text": "<boolean>;\n fetchContentFileSize: (hash: string) => "
|
|
496
|
+
"text": ", boolean>>;\n fetchContentFileSize: (hash: string) => "
|
|
569
497
|
},
|
|
570
498
|
{
|
|
571
499
|
"kind": "Reference",
|
|
@@ -601,16 +529,7 @@
|
|
|
601
529
|
},
|
|
602
530
|
{
|
|
603
531
|
"kind": "Content",
|
|
604
|
-
"text": "<{\n ok: boolean;\n message?: string;\n }>;\n
|
|
605
|
-
},
|
|
606
|
-
{
|
|
607
|
-
"kind": "Reference",
|
|
608
|
-
"text": "EntityType",
|
|
609
|
-
"canonicalReference": "dcl-catalyst-commons!EntityType:enum"
|
|
610
|
-
},
|
|
611
|
-
{
|
|
612
|
-
"kind": "Content",
|
|
613
|
-
"text": ") => number;\n ownerAddress: (auditInfo: "
|
|
532
|
+
"text": "<{\n ok: boolean;\n message?: string;\n }>;\n ownerAddress: (auditInfo: "
|
|
614
533
|
},
|
|
615
534
|
{
|
|
616
535
|
"kind": "Reference",
|
|
@@ -619,7 +538,7 @@
|
|
|
619
538
|
},
|
|
620
539
|
{
|
|
621
540
|
"kind": "Content",
|
|
622
|
-
"text": ") => string;\n isAddressOwnedByDecentraland: (address: string) => boolean;\n
|
|
541
|
+
"text": ") => string;\n isAddressOwnedByDecentraland: (address: string) => boolean;\n queryGraph: "
|
|
623
542
|
},
|
|
624
543
|
{
|
|
625
544
|
"kind": "Reference",
|
|
@@ -639,7 +558,7 @@
|
|
|
639
558
|
"name": "ExternalCalls",
|
|
640
559
|
"typeTokenRange": {
|
|
641
560
|
"startIndex": 1,
|
|
642
|
-
"endIndex":
|
|
561
|
+
"endIndex": 22
|
|
643
562
|
}
|
|
644
563
|
},
|
|
645
564
|
{
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AuditInfo, ContentFileHash, Entity, EntityId,
|
|
1
|
+
import { AuditInfo, ContentFileHash, Entity, EntityId, Fetcher } from 'dcl-catalyst-commons';
|
|
2
2
|
/**
|
|
3
3
|
* @public
|
|
4
4
|
*/
|
|
@@ -32,21 +32,14 @@ export declare type DeploymentToValidate = {
|
|
|
32
32
|
* @public
|
|
33
33
|
*/
|
|
34
34
|
export declare type ExternalCalls = {
|
|
35
|
-
areThereNewerEntities: (entity: Entity) => Promise<boolean>;
|
|
36
|
-
isFailedDeployment: (entityType: EntityType, entityId: EntityId) => Promise<boolean>;
|
|
37
35
|
isContentStoredAlready: (hashes: ContentFileHash[]) => Promise<Map<ContentFileHash, boolean>>;
|
|
38
|
-
isEntityDeployedAlready: () => Promise<boolean>;
|
|
39
|
-
isEntityRateLimited: (entity: Entity) => Promise<boolean>;
|
|
40
36
|
fetchContentFileSize: (hash: string) => Promise<number | undefined>;
|
|
41
37
|
validateSignature: (entityId: EntityId, auditInfo: LocalDeploymentAuditInfo, timestamp: number) => Promise<{
|
|
42
38
|
ok: boolean;
|
|
43
39
|
message?: string;
|
|
44
40
|
}>;
|
|
45
|
-
getMaxUploadSizePerTypeInMB: (entityType: EntityType) => number;
|
|
46
41
|
ownerAddress: (auditInfo: LocalDeploymentAuditInfo) => string;
|
|
47
42
|
isAddressOwnedByDecentraland: (address: string) => boolean;
|
|
48
|
-
requestTtlBackwards: number;
|
|
49
|
-
wearableSizeLimitInMB: number;
|
|
50
43
|
queryGraph: Fetcher['queryGraph'];
|
|
51
44
|
subgraphs: {
|
|
52
45
|
L1: {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAuGA;;GAEG;AACU,QAAA,EAAE,GAAuB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AAElD;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,GAAG,KAAe,EAAsB,EAAE,CAAC,CAAC;IAC3E,EAAE,EAAE,KAAK;IACT,MAAM,EAAE,KAAK;CACd,CAAC,CAAA;AAHW,QAAA,gBAAgB,oBAG3B;AAEF;;GAEG;AACI,MAAM,qBAAqB,GAAG,CAAC,SAAgC,EAAc,EAAE,CAAC,CAAC;IACtF,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;YACtC,OAAO,IAAA,wBAAgB,EAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;SACjD;QACD,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAC,CAAA;AAPW,QAAA,qBAAqB,yBAOhC;AAEF;;GAEG;AACI,MAAM,UAAU,GAAG,CAAC,GAAG,MAAc,EAAsB,EAAE,CAAC,CAAC;IACpE,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;CAC/C,CAAC,CAAA;AAHW,QAAA,UAAU,cAGrB"}
|
|
@@ -32,7 +32,7 @@ exports.content = {
|
|
|
32
32
|
errors.push(`This hash was uploaded but is not referenced in the entity: ${hash}`);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
if (entity.timestamp > _1.
|
|
35
|
+
if (entity.timestamp > _1.ADR_45_TIMESTAMP) {
|
|
36
36
|
for (const { file, hash } of entity.content ?? []) {
|
|
37
37
|
// Validate all content files correspond to at least one avatar snapshot
|
|
38
38
|
if (entity.type === dcl_catalyst_commons_1.EntityType.PROFILE) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":";;;AACA,+DAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":";;;AACA,+DAAiD;AACjD,wBAAoC;AACpC,oCAAiD;AAEjD,MAAM,sBAAsB,GAAG,CAAC,QAAgB,EAAE,IAAY,EAAE,QAAiB,EAAE,EAAE;IACnF,MAAM,wBAAwB,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAEjE,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAc,EAAE,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,wBAAwB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAC9G,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,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAEhG,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,CAAC,uFAAuF,IAAI,EAAE,CAAC,CAAA;iBAC3G;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,CAAC,+DAA+D,IAAI,EAAE,CAAC,CAAA;aACnF;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,iCAAU,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAM,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAM,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAWlH;;GAEG;AACH,eAAO,MAAM,aAAa,mBACR,cAAc,kBACd,UAAU,EAAE,KAC3B,QAAQ,kBAAkB,CAM5B,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,gBAAgB,gBAAgB,CAAA;AAE7C;;GAEG;AACH,eAAO,MAAM,uBAAuB,eACtB,oBAAoB,iBACjB,aAAa,KAC3B,QAAQ,MAAM,GAAG,MAAM,CAazB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,cAAoE,CAAA;AAEpG;;GAEG;AACH,eAAO,MAAM,oBAAoB,cAA2C,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.statelessValidations = exports.statefulValidations = exports.calculateDeploymentSize = exports.
|
|
3
|
+
exports.statelessValidations = exports.statefulValidations = exports.calculateDeploymentSize = exports.ADR_45_TIMESTAMP = exports.validateInRow = void 0;
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
const access_1 = require("./access-checker/access");
|
|
6
6
|
const content_1 = require("./content");
|
|
@@ -8,11 +8,6 @@ const decentraland_address_1 = require("./decentraland-address");
|
|
|
8
8
|
const entity_structure_1 = require("./entity-structure");
|
|
9
9
|
const ipfs_hashing_1 = require("./ipfs-hashing");
|
|
10
10
|
const metadata_schema_1 = require("./metadata-schema");
|
|
11
|
-
const must_have_failed_before_1 = require("./must-have-failed-before");
|
|
12
|
-
const no_newer_1 = require("./no-newer");
|
|
13
|
-
const no_redeploy_1 = require("./no-redeploy");
|
|
14
|
-
const rate_limit_1 = require("./rate-limit");
|
|
15
|
-
const recent_1 = require("./recent");
|
|
16
11
|
const signature_1 = require("./signature");
|
|
17
12
|
const size_1 = require("./size");
|
|
18
13
|
const wearable_1 = require("./wearable");
|
|
@@ -32,7 +27,7 @@ exports.validateInRow = validateInRow;
|
|
|
32
27
|
/**
|
|
33
28
|
* @public
|
|
34
29
|
*/
|
|
35
|
-
exports.
|
|
30
|
+
exports.ADR_45_TIMESTAMP = 1648954800000;
|
|
36
31
|
/**
|
|
37
32
|
* @public
|
|
38
33
|
*/
|
|
@@ -56,19 +51,7 @@ exports.calculateDeploymentSize = calculateDeploymentSize;
|
|
|
56
51
|
/**
|
|
57
52
|
* @public
|
|
58
53
|
*/
|
|
59
|
-
exports.statefulValidations = [
|
|
60
|
-
no_redeploy_1.noRedeploy,
|
|
61
|
-
signature_1.signature,
|
|
62
|
-
recent_1.recent,
|
|
63
|
-
no_newer_1.noNewer,
|
|
64
|
-
access_1.access,
|
|
65
|
-
size_1.size,
|
|
66
|
-
must_have_failed_before_1.mustHaveFailedBefore,
|
|
67
|
-
wearable_1.wearable,
|
|
68
|
-
content_1.content,
|
|
69
|
-
decentraland_address_1.decentralandAddress,
|
|
70
|
-
rate_limit_1.rateLimit,
|
|
71
|
-
];
|
|
54
|
+
exports.statefulValidations = [signature_1.signature, access_1.access, size_1.size, wearable_1.wearable, content_1.content, decentraland_address_1.decentralandAddress];
|
|
72
55
|
/**
|
|
73
56
|
* @public
|
|
74
57
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":";;;AAAA,oCAAkH;AAClH,oDAAgD;AAChD,uCAAmC;AACnC,iEAA4D;AAC5D,yDAAoD;AACpD,iDAA4C;AAC5C,uDAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":";;;AAAA,oCAAkH;AAClH,oDAAgD;AAChD,uCAAmC;AACnC,iEAA4D;AAC5D,yDAAoD;AACpD,iDAA4C;AAC5C,uDAA4C;AAC5C,2CAAuC;AACvC,iCAA6B;AAC7B,yCAAqC;AAErC;;GAEG;AACI,MAAM,aAAa,GAAG,KAAK,EAChC,cAA8B,EAC9B,GAAG,WAAyB,EACC,EAAE;IAC/B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QACpC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAA;KAClC;IACD,OAAO,UAAE,CAAA;AACX,CAAC,CAAA;AATY,QAAA,aAAa,iBASzB;AAED,6FAA6F;AAC7F;;GAEG;AACU,QAAA,gBAAgB,GAAG,aAAa,CAAA;AAE7C;;GAEG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAC1C,UAAgC,EAChC,aAA4B,EACF,EAAE;IAC5B,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;QACrF,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,YAAY,EAAE;YAChB,SAAS,IAAI,YAAY,CAAC,UAAU,CAAA;SACrC;aAAM;YACL,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAClE,IAAI,CAAC,WAAW;gBAAE,OAAO,0CAA0C,IAAI,EAAE,CAAA;YACzE,SAAS,IAAI,WAAW,CAAA;SACzB;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAhBY,QAAA,uBAAuB,2BAgBnC;AAED;;GAEG;AACU,QAAA,mBAAmB,GAAG,CAAC,qBAAS,EAAE,eAAM,EAAE,WAAI,EAAE,mBAAQ,EAAE,iBAAO,EAAE,0CAAmB,CAAC,CAAA;AAEpG;;GAEG;AACU,QAAA,oBAAoB,GAAG,CAAC,kCAAe,EAAE,0BAAW,EAAE,0BAAQ,CAAC,CAAA"}
|
|
@@ -12,7 +12,7 @@ const types_1 = require("../types");
|
|
|
12
12
|
exports.ipfsHashing = {
|
|
13
13
|
validate: ({ deployment }) => {
|
|
14
14
|
const { entity } = deployment;
|
|
15
|
-
if (entity.timestamp < _1.
|
|
15
|
+
if (entity.timestamp < _1.ADR_45_TIMESTAMP)
|
|
16
16
|
return __1.OK;
|
|
17
17
|
const hashesInContent = entity.content?.map(({ hash }) => hash) ?? [];
|
|
18
18
|
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;AACrC,
|
|
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,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,8CAA8C,CAAC,CAAA;QAElF,OAAO,IAAA,kBAAU,EAAC,GAAG,MAAM,CAAC,CAAA;IAC9B,CAAC;CACF,CAAA"}
|
|
@@ -10,7 +10,7 @@ const types_1 = require("../types");
|
|
|
10
10
|
*/
|
|
11
11
|
exports.metadata = (0, types_1.conditionalValidation)({
|
|
12
12
|
predicate: ({ deployment }) => {
|
|
13
|
-
if (deployment.entity.timestamp <= _1.
|
|
13
|
+
if (deployment.entity.timestamp <= _1.ADR_45_TIMESTAMP)
|
|
14
14
|
return true;
|
|
15
15
|
const { type, metadata } = deployment.entity;
|
|
16
16
|
return dcl_catalyst_commons_1.entityParameters[type].validate(metadata);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-schema.js","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":";;;AACA,+DAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"metadata-schema.js","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":";;;AACA,+DAAmE;AACnE,wBAAoC;AACpC,oCAAgD;AAEhD;;;GAGG;AACU,QAAA,QAAQ,GAAG,IAAA,6BAAqB,EAAC;IAC5C,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;QAC5B,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,mBAAgB;YAAE,OAAO,IAAI,CAAA;QAEhE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,MAAM,CAAA;QAE5C,OAAO,uCAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,sCAAsC,UAAU,CAAC,MAAM,CAAC,IAAI,iBAAiB;CAC3G,CAAC,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Validation } from '../types';
|
|
2
2
|
/** Validate that the full request size is within limits
|
|
3
3
|
*
|
|
4
|
-
* ADR
|
|
4
|
+
* ADR 45: After given TIMESTAMPT will also include previous deployments in the validation
|
|
5
5
|
* @public
|
|
6
6
|
*/
|
|
7
7
|
export declare const size: Validation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../src/validations/size.ts"],"names":[],"mappings":"AAEA,OAAO,EAAM,UAAU,EAAoB,MAAM,UAAU,CAAA;AAE3D;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,UA2BlB,CAAA"}
|
package/dist/validations/size.js
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.size = void 0;
|
|
4
|
+
const dcl_catalyst_commons_1 = require("dcl-catalyst-commons");
|
|
4
5
|
const _1 = require(".");
|
|
5
6
|
const types_1 = require("../types");
|
|
6
7
|
/** Validate that the full request size is within limits
|
|
7
8
|
*
|
|
8
|
-
* ADR
|
|
9
|
+
* ADR 45: After given TIMESTAMPT will also include previous deployments in the validation
|
|
9
10
|
* @public
|
|
10
11
|
*/
|
|
11
12
|
exports.size = {
|
|
12
13
|
validate: async ({ deployment, externalCalls }) => {
|
|
13
14
|
const { entity } = deployment;
|
|
14
|
-
const maxSizeInMB =
|
|
15
|
+
const maxSizeInMB = dcl_catalyst_commons_1.entityParameters[entity.type].maxSizeInMB;
|
|
15
16
|
let errors = [];
|
|
16
17
|
if (!maxSizeInMB) {
|
|
17
18
|
return (0, types_1.validationFailed)(`Type ${entity.type} is not supported yet`);
|
|
18
19
|
}
|
|
19
20
|
const maxSizeInBytes = maxSizeInMB * 1024 * 1024;
|
|
20
21
|
let totalSize = 0;
|
|
21
|
-
if (entity.timestamp > _1.
|
|
22
|
+
if (entity.timestamp > _1.ADR_45_TIMESTAMP) {
|
|
22
23
|
const result = await (0, _1.calculateDeploymentSize)(deployment, externalCalls);
|
|
23
24
|
if (typeof result === 'string')
|
|
24
25
|
return (0, types_1.validationFailed)(result);
|
|
@@ -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,+DAAuD;AACvD,wBAA6D;AAC7D,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,MAAM,WAAW,GAAG,uCAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAA;QAC7D,IAAI,MAAM,GAAa,EAAE,CAAA;QACzB,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,IAAA,wBAAgB,EAAC,QAAQ,MAAM,CAAC,IAAI,uBAAuB,CAAC,CAAA;SACpE;QACD,MAAM,cAAc,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAA;QAChD,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,MAAM,CAAC,SAAS,GAAG,mBAAgB,EAAE;YACvC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAuB,EAAC,UAAU,EAAE,aAAa,CAAC,CAAA;YACvE,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO,IAAA,wBAAgB,EAAC,MAAM,CAAC,CAAA;YAC/D,SAAS,GAAG,MAAM,CAAA;SACnB;aAAM;YACL,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;SAClG;QACD,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA;QACzD,IAAI,cAAc,GAAG,cAAc,EAAE;YACnC,MAAM,GAAG;gBACP,sEAAsE,WAAW,WAC/E,MAAM,CAAC,IACT,0BAA0B,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,cAAc,kCAAkC,SAAS,GAAG;aAChH,CAAA;SACF;QACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAE,CAAA;IAC7D,CAAC;CACF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wearable.d.ts","sourceRoot":"","sources":["../../src/validations/wearable.ts"],"names":[],"mappings":"AAIA,OAAO,EAAM,UAAU,EAAoB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"wearable.d.ts","sourceRoot":"","sources":["../../src/validations/wearable.ts"],"names":[],"mappings":"AAIA,OAAO,EAAM,UAAU,EAAoB,MAAM,UAAU,CAAA;AAG3D,+EAA+E;AAC/E,eAAO,MAAM,YAAY,EAAE,UAyB1B,CAAA;AAID,eAAO,MAAM,iBAAiB,EAAE,UAyB/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,UAKtB,CAAA"}
|
|
@@ -8,14 +8,15 @@ const dcl_catalyst_commons_1 = require("dcl-catalyst-commons");
|
|
|
8
8
|
const sharp_1 = __importDefault(require("sharp"));
|
|
9
9
|
const _1 = require(".");
|
|
10
10
|
const types_1 = require("../types");
|
|
11
|
+
const wearableSizeLimitInMB = 2;
|
|
11
12
|
/** Validate wearable files size, excluding thumbnail, is less than expected */
|
|
12
13
|
exports.wearableSize = {
|
|
13
14
|
validate: async ({ deployment, externalCalls }) => {
|
|
14
15
|
const entity = deployment.entity;
|
|
15
|
-
const maxSizeInMB =
|
|
16
|
+
const maxSizeInMB = dcl_catalyst_commons_1.entityParameters[dcl_catalyst_commons_1.EntityType.WEARABLE].maxSizeInMB;
|
|
16
17
|
if (!maxSizeInMB)
|
|
17
18
|
return (0, types_1.validationFailed)(`Type ${dcl_catalyst_commons_1.EntityType.WEARABLE} is not supported yet`);
|
|
18
|
-
const modelSizeInMB =
|
|
19
|
+
const modelSizeInMB = wearableSizeLimitInMB;
|
|
19
20
|
const metadata = entity.metadata;
|
|
20
21
|
const thumbnailHash = entity.content?.find(({ file }) => file === metadata.thumbnail)?.hash;
|
|
21
22
|
if (!thumbnailHash)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wearable.js","sourceRoot":"","sources":["../../src/validations/wearable.ts"],"names":[],"mappings":";;;;;;AACA,+
|
|
1
|
+
{"version":3,"file":"wearable.js","sourceRoot":"","sources":["../../src/validations/wearable.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dcl/content-validator",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-20220105215254.commit-95d161b",
|
|
4
4
|
"description": "Catalyst content validations",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"files": [
|
|
44
44
|
"dist"
|
|
45
45
|
],
|
|
46
|
-
"commit": "
|
|
46
|
+
"commit": "95d161b1aa9e06be2425d6297e14885bc7bf0b8a"
|
|
47
47
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"must-have-failed-before.d.ts","sourceRoot":"","sources":["../../src/validations/must-have-failed-before.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,+BAI/B,CAAA"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mustHaveFailedBefore = void 0;
|
|
4
|
-
const types_1 = require("../types");
|
|
5
|
-
/**
|
|
6
|
-
* Make sure that the deployment actually failed, and that it can be re-deployed
|
|
7
|
-
* @public
|
|
8
|
-
*/
|
|
9
|
-
exports.mustHaveFailedBefore = (0, types_1.conditionalValidation)({
|
|
10
|
-
predicate: async ({ deployment, externalCalls }) => await externalCalls.isFailedDeployment(deployment.entity.type, deployment.entity.id),
|
|
11
|
-
message: () => "This entity was already marked as failed. You can't fix it",
|
|
12
|
-
});
|
|
13
|
-
//# sourceMappingURL=must-have-failed-before.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"must-have-failed-before.js","sourceRoot":"","sources":["../../src/validations/must-have-failed-before.ts"],"names":[],"mappings":";;;AAAA,oCAAgD;AAEhD;;;GAGG;AACU,QAAA,oBAAoB,GAAG,IAAA,6BAAqB,EAAC;IACxD,SAAS,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE,CACjD,MAAM,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IACtF,OAAO,EAAE,GAAG,EAAE,CAAC,4DAA4D;CAC5E,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"no-newer.d.ts","sourceRoot":"","sources":["../../src/validations/no-newer.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,OAAO,+BAIlB,CAAA"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.noNewer = void 0;
|
|
4
|
-
const types_1 = require("../types");
|
|
5
|
-
/**
|
|
6
|
-
* Validate that there are no newer deployments on the entity's pointers
|
|
7
|
-
* @public
|
|
8
|
-
*/
|
|
9
|
-
exports.noNewer = (0, types_1.conditionalValidation)({
|
|
10
|
-
// Validate that pointers aren't referring to an entity with a higher timestamp
|
|
11
|
-
predicate: async ({ deployment, externalCalls }) => await externalCalls.areThereNewerEntities(deployment.entity),
|
|
12
|
-
message: () => 'There is a newer entity pointed by one or more of the pointers you provided.',
|
|
13
|
-
});
|
|
14
|
-
//# sourceMappingURL=no-newer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"no-newer.js","sourceRoot":"","sources":["../../src/validations/no-newer.ts"],"names":[],"mappings":";;;AAAA,oCAAgD;AAEhD;;;GAGG;AACU,QAAA,OAAO,GAAG,IAAA,6BAAqB,EAAC;IAC3C,+EAA+E;IAC/E,SAAS,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,MAAM,aAAa,CAAC,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC;IAChH,OAAO,EAAE,GAAG,EAAE,CAAC,8EAA8E;CAC9F,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"no-redeploy.d.ts","sourceRoot":"","sources":["../../src/validations/no-redeploy.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,UAAU,+BAGrB,CAAA"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.noRedeploy = void 0;
|
|
4
|
-
const types_1 = require("../types");
|
|
5
|
-
/**
|
|
6
|
-
* Validate if the entity can be re deployed or not
|
|
7
|
-
* @public
|
|
8
|
-
*/
|
|
9
|
-
exports.noRedeploy = (0, types_1.conditionalValidation)({
|
|
10
|
-
predicate: async ({ externalCalls }) => await externalCalls.isEntityDeployedAlready(),
|
|
11
|
-
message: () => "This entity was already deployed. You can't redeploy it",
|
|
12
|
-
});
|
|
13
|
-
//# sourceMappingURL=no-redeploy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"no-redeploy.js","sourceRoot":"","sources":["../../src/validations/no-redeploy.ts"],"names":[],"mappings":";;;AAAA,oCAAgD;AAEhD;;;GAGG;AACU,QAAA,UAAU,GAAG,IAAA,6BAAqB,EAAC;IAC9C,SAAS,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,MAAM,aAAa,CAAC,uBAAuB,EAAE;IACrF,OAAO,EAAE,GAAG,EAAE,CAAC,yDAAyD;CACzE,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/validations/rate-limit.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,SAAS,+BAIpB,CAAA"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.rateLimit = void 0;
|
|
4
|
-
const types_1 = require("../types");
|
|
5
|
-
/**
|
|
6
|
-
* Validate the deployment is not rate limited
|
|
7
|
-
* @public
|
|
8
|
-
*/
|
|
9
|
-
exports.rateLimit = (0, types_1.conditionalValidation)({
|
|
10
|
-
predicate: async ({ deployment, externalCalls }) => !(await externalCalls.isEntityRateLimited(deployment.entity)),
|
|
11
|
-
message: ({ deployment }) => `Entity rate limited (entityId=${deployment.entity.id} pointers=${deployment.entity.pointers.join(',')}).`,
|
|
12
|
-
});
|
|
13
|
-
//# sourceMappingURL=rate-limit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/validations/rate-limit.ts"],"names":[],"mappings":";;;AAAA,oCAAgD;AAEhD;;;GAGG;AACU,QAAA,SAAS,GAAG,IAAA,6BAAqB,EAAC;IAC7C,SAAS,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjH,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAC1B,iCAAiC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;CAC7G,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recent.d.ts","sourceRoot":"","sources":["../../src/validations/recent.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,UAAU,EAAoB,MAAM,UAAU,CAAA;AAI3D;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,UAWpB,CAAA"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.recent = void 0;
|
|
7
|
-
const ms_1 = __importDefault(require("ms"));
|
|
8
|
-
const types_1 = require("../types");
|
|
9
|
-
const REQUEST_TTL_FORWARDS = (0, ms_1.default)('15m');
|
|
10
|
-
/**
|
|
11
|
-
* Validate that the deployment is recent
|
|
12
|
-
* @public
|
|
13
|
-
*/
|
|
14
|
-
exports.recent = {
|
|
15
|
-
validate: ({ deployment, externalCalls }) => {
|
|
16
|
-
// Verify that the timestamp is recent enough. We need to make sure that the definition of recent works with the synchronization mechanism
|
|
17
|
-
const delta = Date.now() - deployment.entity.timestamp;
|
|
18
|
-
if (delta > externalCalls.requestTtlBackwards) {
|
|
19
|
-
return (0, types_1.validationFailed)('The request is not recent enough, please submit it again with a new timestamp.');
|
|
20
|
-
}
|
|
21
|
-
else if (delta < -REQUEST_TTL_FORWARDS) {
|
|
22
|
-
return (0, types_1.validationFailed)('The request is too far in the future, please submit it again with a new timestamp.');
|
|
23
|
-
}
|
|
24
|
-
return types_1.OK;
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=recent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recent.js","sourceRoot":"","sources":["../../src/validations/recent.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAmB;AACnB,oCAA2D;AAE3D,MAAM,oBAAoB,GAAW,IAAA,YAAE,EAAC,KAAK,CAAC,CAAA;AAE9C;;;GAGG;AACU,QAAA,MAAM,GAAe;IAChC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE;QAC1C,0IAA0I;QAC1I,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAA;QACtD,IAAI,KAAK,GAAG,aAAa,CAAC,mBAAmB,EAAE;YAC7C,OAAO,IAAA,wBAAgB,EAAC,gFAAgF,CAAC,CAAA;SAC1G;aAAM,IAAI,KAAK,GAAG,CAAC,oBAAoB,EAAE;YACxC,OAAO,IAAA,wBAAgB,EAAC,oFAAoF,CAAC,CAAA;SAC9G;QACD,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAA"}
|