@dcl/content-validator 2.1.1-20220621133633.commit-24da31f → 2.1.1-20220623134639.commit-ca80e03

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.
Files changed (90) hide show
  1. package/dist/content-validator.api.json +104 -217
  2. package/dist/the-graph-client/the-graph-client.d.ts.map +1 -1
  3. package/dist/the-graph-client/the-graph-client.js +7 -13
  4. package/dist/the-graph-client/the-graph-client.js.map +1 -1
  5. package/dist/types.d.ts +11 -24
  6. package/dist/types.d.ts.map +1 -1
  7. package/dist/types.js +1 -16
  8. package/dist/types.js.map +1 -1
  9. package/dist/validations/ADR51.d.ts +3 -5
  10. package/dist/validations/ADR51.d.ts.map +1 -1
  11. package/dist/validations/ADR51.js +4 -0
  12. package/dist/validations/ADR51.js.map +1 -1
  13. package/dist/validations/access-checker/access.d.ts.map +1 -1
  14. package/dist/validations/access-checker/access.js +5 -3
  15. package/dist/validations/access-checker/access.js.map +1 -1
  16. package/dist/validations/access-checker/emotes.d.ts +3 -0
  17. package/dist/validations/access-checker/emotes.d.ts.map +1 -0
  18. package/dist/validations/access-checker/emotes.js +13 -0
  19. package/dist/validations/access-checker/emotes.js.map +1 -0
  20. package/dist/validations/access-checker/items/collection-asset.d.ts +15 -0
  21. package/dist/validations/access-checker/items/collection-asset.d.ts.map +1 -0
  22. package/dist/validations/access-checker/items/collection-asset.js +133 -0
  23. package/dist/validations/access-checker/items/collection-asset.js.map +1 -0
  24. package/dist/validations/access-checker/items/items.d.ts +13 -0
  25. package/dist/validations/access-checker/items/items.d.ts.map +1 -0
  26. package/dist/validations/access-checker/items/items.js +68 -0
  27. package/dist/validations/access-checker/items/items.js.map +1 -0
  28. package/dist/validations/access-checker/items/off-chain-asset.d.ts +3 -0
  29. package/dist/validations/access-checker/items/off-chain-asset.d.ts.map +1 -0
  30. package/dist/validations/access-checker/items/off-chain-asset.js +17 -0
  31. package/dist/validations/access-checker/items/off-chain-asset.js.map +1 -0
  32. package/dist/validations/access-checker/items/third-party-asset.d.ts +3 -0
  33. package/dist/validations/access-checker/items/third-party-asset.d.ts.map +1 -0
  34. package/dist/validations/access-checker/items/third-party-asset.js +107 -0
  35. package/dist/validations/access-checker/items/third-party-asset.js.map +1 -0
  36. package/dist/validations/access-checker/profiles.d.ts.map +1 -1
  37. package/dist/validations/access-checker/profiles.js +3 -3
  38. package/dist/validations/access-checker/profiles.js.map +1 -1
  39. package/dist/validations/access-checker/scenes.d.ts.map +1 -1
  40. package/dist/validations/access-checker/scenes.js +3 -3
  41. package/dist/validations/access-checker/scenes.js.map +1 -1
  42. package/dist/validations/access-checker/wearables.d.ts +0 -18
  43. package/dist/validations/access-checker/wearables.d.ts.map +1 -1
  44. package/dist/validations/access-checker/wearables.js +9 -308
  45. package/dist/validations/access-checker/wearables.js.map +1 -1
  46. package/dist/validations/content.d.ts +3 -0
  47. package/dist/validations/content.d.ts.map +1 -1
  48. package/dist/validations/content.js +30 -17
  49. package/dist/validations/content.js.map +1 -1
  50. package/dist/validations/index.d.ts +4 -23
  51. package/dist/validations/index.d.ts.map +1 -1
  52. package/dist/validations/index.js +4 -31
  53. package/dist/validations/index.js.map +1 -1
  54. package/dist/validations/ipfs-hashing.d.ts.map +1 -1
  55. package/dist/validations/ipfs-hashing.js +3 -6
  56. package/dist/validations/ipfs-hashing.js.map +1 -1
  57. package/dist/validations/items/emotes.d.ts +5 -0
  58. package/dist/validations/items/emotes.d.ts.map +1 -0
  59. package/dist/validations/items/emotes.js +35 -0
  60. package/dist/validations/items/emotes.js.map +1 -0
  61. package/dist/validations/items/items.d.ts +10 -0
  62. package/dist/validations/items/items.d.ts.map +1 -0
  63. package/dist/validations/items/items.js +79 -0
  64. package/dist/validations/items/items.js.map +1 -0
  65. package/dist/validations/{wearable.d.ts → items/wearables.d.ts} +2 -5
  66. package/dist/validations/items/wearables.d.ts.map +1 -0
  67. package/dist/validations/items/wearables.js +32 -0
  68. package/dist/validations/items/wearables.js.map +1 -0
  69. package/dist/validations/metadata-schema.d.ts +2 -5
  70. package/dist/validations/metadata-schema.d.ts.map +1 -1
  71. package/dist/validations/metadata-schema.js +37 -7
  72. package/dist/validations/metadata-schema.js.map +1 -1
  73. package/dist/validations/profile.d.ts.map +1 -1
  74. package/dist/validations/profile.js +8 -18
  75. package/dist/validations/profile.js.map +1 -1
  76. package/dist/validations/size.d.ts.map +1 -1
  77. package/dist/validations/size.js +4 -3
  78. package/dist/validations/size.js.map +1 -1
  79. package/dist/validations/timestamps.d.ts +21 -0
  80. package/dist/validations/timestamps.d.ts.map +1 -0
  81. package/dist/validations/timestamps.js +24 -0
  82. package/dist/validations/timestamps.js.map +1 -0
  83. package/dist/validations/validations.d.ts +9 -0
  84. package/dist/validations/validations.d.ts.map +1 -0
  85. package/dist/validations/validations.js +47 -0
  86. package/dist/validations/validations.js.map +1 -0
  87. package/package.json +4 -3
  88. package/dist/validations/wearable.d.ts.map +0 -1
  89. package/dist/validations/wearable.js +0 -110
  90. package/dist/validations/wearable.js.map +0 -1
package/dist/types.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { AuthChain, Entity, EthAddress, WearableId } from '@dcl/schemas';
2
2
  import { ILoggerComponent } from '@well-known-components/interfaces';
3
3
  import { PermissionResult } from './the-graph-client/the-graph-client';
4
+ import { ISubgraphComponent } from '@well-known-components/thegraph-component';
5
+ import { Variables } from '@well-known-components/thegraph-component';
4
6
  /**
5
7
  * @public
6
8
  */
@@ -34,7 +36,7 @@ export declare type DeploymentToValidate = {
34
36
  * Function used to fetch TheGraph
35
37
  * @public
36
38
  */
37
- export declare type QueryGraph = <T = any>(url: string, query: string, variables: Record<string, any>) => Promise<T>;
39
+ export declare type QueryGraph = <T = any>(query: string, variables?: Variables, remainingAttempts?: number) => Promise<T>;
38
40
  /**
39
41
  * External calls interface to be provided by the servers.
40
42
  * @public
@@ -48,18 +50,17 @@ export declare type ExternalCalls = {
48
50
  }>;
49
51
  ownerAddress: (auditInfo: LocalDeploymentAuditInfo) => string;
50
52
  isAddressOwnedByDecentraland: (address: string) => boolean;
51
- queryGraph: QueryGraph;
52
53
  subgraphs: {
53
54
  L1: {
54
- landManager: string;
55
- blocks: string;
56
- collections: string;
57
- ensOwner: string;
55
+ landManager: ISubgraphComponent;
56
+ blocks: ISubgraphComponent;
57
+ collections: ISubgraphComponent;
58
+ ensOwner: ISubgraphComponent;
58
59
  };
59
60
  L2: {
60
- blocks: string;
61
- collections: string;
62
- thirdPartyRegistry: string;
61
+ blocks: ISubgraphComponent;
62
+ collections: ISubgraphComponent;
63
+ thirdPartyRegistry: ISubgraphComponent;
63
64
  };
64
65
  };
65
66
  };
@@ -103,31 +104,17 @@ export declare const OK: ValidationResponse;
103
104
  * @public
104
105
  */
105
106
  export declare const validationFailed: (...error: string[]) => ValidationResponse;
106
- /**
107
- * @public
108
- */
109
- export declare const conditionalValidation: (condition: ConditionalValidation) => Validation;
110
107
  /**
111
108
  * @public
112
109
  */
113
110
  export declare const fromErrors: (...errors: Errors) => ValidationResponse;
114
- /**
115
- * @public
116
- */
117
- export declare type URLs = {
118
- ensSubgraph: string;
119
- blocksSubgraph: string;
120
- maticBlocksSubgraph: string;
121
- collectionsSubgraph: string;
122
- maticCollectionsSubgraph: string;
123
- };
124
111
  /**
125
112
  * @public
126
113
  */
127
114
  export declare type TheGraphClient = {
128
115
  checkForNamesOwnershipWithTimestamp: (ethAddress: EthAddress, namesToCheck: string[], timestamp: number) => Promise<PermissionResult>;
129
116
  checkForWearablesOwnershipWithTimestamp: (ethAddress: EthAddress, wearableIdsToCheck: WearableId[], timestamp: number) => Promise<PermissionResult>;
130
- findBlocksForTimestamp: (subgraph: keyof URLs, timestamp: number) => Promise<BlockInformation>;
117
+ findBlocksForTimestamp: (subgraph: ISubgraphComponent, timestamp: number) => Promise<BlockInformation>;
131
118
  };
132
119
  /**
133
120
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fromErrors = exports.conditionalValidation = exports.validationFailed = exports.OK = void 0;
3
+ exports.fromErrors = exports.validationFailed = exports.OK = void 0;
4
4
  /**
5
5
  * @public
6
6
  */
@@ -13,21 +13,6 @@ const validationFailed = (...error) => ({
13
13
  errors: error
14
14
  });
15
15
  exports.validationFailed = validationFailed;
16
- /**
17
- * @public
18
- */
19
- const conditionalValidation = (condition) => ({
20
- validate: async (components, deployment) => {
21
- try {
22
- return await condition.predicate(components, deployment);
23
- // ^^^^^ never remove this await, it exists to ensure try {} catch
24
- }
25
- catch (err) {
26
- return (0, exports.validationFailed)(`Validation failed: ${err}`);
27
- }
28
- }
29
- });
30
- exports.conditionalValidation = conditionalValidation;
31
16
  /**
32
17
  * @public
33
18
  */
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAmHA;;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,UAAsC,EAAE,UAAgC,EAAE,EAAE;QAC3F,IAAI;YACF,OAAO,MAAM,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;YACxD,sEAAsE;SACvE;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,IAAA,wBAAgB,EAAC,sBAAsB,GAAG,EAAE,CAAC,CAAA;SACrD;IACH,CAAC;CACF,CAAC,CAAA;AATW,QAAA,qBAAqB,yBAShC;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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAoHA;;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,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"}
@@ -1,10 +1,8 @@
1
- import { EntityType, Profile, Scene, Store, ValidateFunction, Wearable } from '@dcl/schemas';
2
- export declare type AcceptedEntityType = Scene | Profile | Wearable | Store;
1
+ import { Emote, EntityType, Profile, Scene, Store, ValidateFunction, Wearable } from '@dcl/schemas';
3
2
  declare type Params = {
4
- validate: ValidateFunction<AcceptedEntityType>;
3
+ validate: ValidateFunction<Scene | Profile | Wearable | Store | Emote>;
5
4
  maxSizeInMB: number;
6
5
  };
7
- declare type EntityParams = Record<EntityType, Params>;
8
- export declare const entityParameters: EntityParams;
6
+ export declare const entityParameters: Record<EntityType, Params>;
9
7
  export {};
10
8
  //# sourceMappingURL=ADR51.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ADR51.d.ts","sourceRoot":"","sources":["../../src/validations/ADR51.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5F,oBAAY,kBAAkB,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;AAEnE,aAAK,MAAM,GAAG;IACZ,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAA;IAC9C,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,aAAK,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AAE9C,eAAO,MAAM,gBAAgB,EAAE,YAiB9B,CAAA"}
1
+ {"version":3,"file":"ADR51.d.ts","sourceRoot":"","sources":["../../src/validations/ADR51.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEnG,aAAK,MAAM,GAAG;IACZ,QAAQ,EAAE,gBAAgB,CAAC,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,CAAA;IACtE,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAqBvD,CAAA"}
@@ -18,6 +18,10 @@ exports.entityParameters = {
18
18
  store: {
19
19
  validate: schemas_1.Store.validate,
20
20
  maxSizeInMB: 1
21
+ },
22
+ emote: {
23
+ validate: schemas_1.Emote.validate,
24
+ maxSizeInMB: 3
21
25
  }
22
26
  };
23
27
  //# sourceMappingURL=ADR51.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ADR51.js","sourceRoot":"","sources":["../../src/validations/ADR51.ts"],"names":[],"mappings":";;;AAAA,0CAA4F;AAW/E,QAAA,gBAAgB,GAAiB;IAC5C,KAAK,EAAE;QACL,QAAQ,EAAE,eAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,EAAE;KAChB;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,CAAC;KACf;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,kBAAQ,CAAC,QAAQ;QAC3B,WAAW,EAAE,CAAC;KACf;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,eAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,CAAC;KACf;CACF,CAAA"}
1
+ {"version":3,"file":"ADR51.js","sourceRoot":"","sources":["../../src/validations/ADR51.ts"],"names":[],"mappings":";;;AAAA,0CAAmG;AAOtF,QAAA,gBAAgB,GAA+B;IAC1D,KAAK,EAAE;QACL,QAAQ,EAAE,eAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,EAAE;KAChB;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,CAAC;KACf;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,kBAAQ,CAAC,QAAQ;QAC3B,WAAW,EAAE,CAAC;KACf;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,eAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,CAAC;KACf;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,eAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,CAAC;KACf;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/access.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,UAAU,EAAoB,MAAM,aAAa,CAAA;AAapF;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,UAiBpB,CAAA"}
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/access.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,UAAU,EAAoB,MAAM,aAAa,CAAA;AAgBpF;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,UAiBpB,CAAA"}
@@ -2,8 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.access = void 0;
4
4
  const schemas_1 = require("@dcl/schemas");
5
- const __1 = require("..");
6
5
  const types_1 = require("../../types");
6
+ const timestamps_1 = require("../timestamps");
7
+ const emotes_1 = require("./emotes");
7
8
  const profiles_1 = require("./profiles");
8
9
  const scenes_1 = require("./scenes");
9
10
  const stores_1 = require("./stores");
@@ -12,7 +13,8 @@ const accessCheckers = {
12
13
  [schemas_1.EntityType.PROFILE]: profiles_1.profiles,
13
14
  [schemas_1.EntityType.SCENE]: scenes_1.scenes,
14
15
  [schemas_1.EntityType.WEARABLE]: wearables_1.wearables,
15
- [schemas_1.EntityType.STORE]: stores_1.stores
16
+ [schemas_1.EntityType.STORE]: stores_1.stores,
17
+ [schemas_1.EntityType.EMOTE]: emotes_1.emotes
16
18
  };
17
19
  /**
18
20
  * Validate that the pointers are valid, and that the Ethereum address has write access to them
@@ -21,7 +23,7 @@ const accessCheckers = {
21
23
  exports.access = {
22
24
  validate: async (components, deployment) => {
23
25
  const { externalCalls } = components;
24
- const deployedBeforeDCLLaunch = deployment.entity.timestamp <= __1.LEGACY_CONTENT_MIGRATION_TIMESTAMP;
26
+ const deployedBeforeDCLLaunch = deployment.entity.timestamp <= timestamps_1.LEGACY_CONTENT_MIGRATION_TIMESTAMP;
25
27
  const address = externalCalls.ownerAddress(deployment.auditInfo);
26
28
  // Default scenes were removed from the Content Servers after https://github.com/decentraland/catalyst/issues/878
27
29
  if (isDefaultScene(deployment.entity)) {
@@ -1 +1 @@
1
- {"version":3,"file":"access.js","sourceRoot":"","sources":["../../../src/validations/access-checker/access.ts"],"names":[],"mappings":";;;AAAA,0CAAiD;AACjD,0BAAuD;AACvD,uCAAoF;AACpF,yCAAqC;AACrC,qCAAiC;AACjC,qCAAiC;AACjC,2CAAuC;AAEvC,MAAM,cAAc,GAAmC;IACrD,CAAC,oBAAU,CAAC,OAAO,CAAC,EAAE,mBAAQ;IAC9B,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,eAAM;IAC1B,CAAC,oBAAU,CAAC,QAAQ,CAAC,EAAE,qBAAS;IAChC,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,eAAM;CAC3B,CAAA;AAED;;;GAGG;AACU,QAAA,MAAM,GAAe;IAChC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,UAAgC,EAAE,EAAE;QAC/D,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAA;QACpC,MAAM,uBAAuB,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,sCAAkC,CAAA;QACjG,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAEhE,iHAAiH;QACjH,IAAI,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACrC,OAAO,IAAA,wBAAgB,EACrB,yGAAyG,CAC1G,CAAA;SACF;QACD,gDAAgD;QAChD,IAAI,uBAAuB,IAAI,aAAa,CAAC,4BAA4B,CAAC,OAAO,CAAC;YAAE,OAAO,UAAE,CAAA;QAE7F,OAAO,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAChF,CAAC;CACF,CAAA;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO,MAAM,CAAC,IAAI,KAAK,oBAAU,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;AAC/G,CAAC"}
1
+ {"version":3,"file":"access.js","sourceRoot":"","sources":["../../../src/validations/access-checker/access.ts"],"names":[],"mappings":";;;AAAA,0CAAiD;AACjD,uCAAoF;AACpF,8CAAkE;AAClE,qCAAiC;AACjC,yCAAqC;AACrC,qCAAiC;AACjC,qCAAiC;AACjC,2CAAuC;AAEvC,MAAM,cAAc,GAAmC;IACrD,CAAC,oBAAU,CAAC,OAAO,CAAC,EAAE,mBAAQ;IAC9B,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,eAAM;IAC1B,CAAC,oBAAU,CAAC,QAAQ,CAAC,EAAE,qBAAS;IAChC,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,eAAM;IAC1B,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,eAAM;CAC3B,CAAA;AAED;;;GAGG;AACU,QAAA,MAAM,GAAe;IAChC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,UAAgC,EAAE,EAAE;QAC/D,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAA;QACpC,MAAM,uBAAuB,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,+CAAkC,CAAA;QACjG,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAEhE,iHAAiH;QACjH,IAAI,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACrC,OAAO,IAAA,wBAAgB,EACrB,yGAAyG,CAC1G,CAAA;SACF;QACD,gDAAgD;QAChD,IAAI,uBAAuB,IAAI,aAAa,CAAC,4BAA4B,CAAC,OAAO,CAAC;YAAE,OAAO,UAAE,CAAA;QAE7F,OAAO,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAChF,CAAC;CACF,CAAA;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO,MAAM,CAAC,IAAI,KAAK,oBAAU,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;AAC/G,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Validation } from '../../types';
2
+ export declare const emotes: Validation;
3
+ //# sourceMappingURL=emotes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emotes.d.ts","sourceRoot":"","sources":["../../../src/validations/access-checker/emotes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,eAAO,MAAM,MAAM,EAAE,UAUpB,CAAA"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emotes = void 0;
4
+ const items_1 = require("./items/items");
5
+ exports.emotes = {
6
+ validate: async (components, deployment) => {
7
+ return items_1.itemsValidation.validate(components, deployment, [
8
+ 'blockchain-collection-v2-asset',
9
+ 'blockchain-collection-third-party'
10
+ ]);
11
+ }
12
+ };
13
+ //# sourceMappingURL=emotes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emotes.js","sourceRoot":"","sources":["../../../src/validations/access-checker/emotes.ts"],"names":[],"mappings":";;;AAEA,yCAA+C;AAElC,QAAA,MAAM,GAAe;IAChC,QAAQ,EAAE,KAAK,EACb,UAAyF,EACzF,UAAU,EACV,EAAE;QACF,OAAO,uBAAe,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE;YACtD,gCAAgC;YAChC,mCAAmC;SACpC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { AssetValidation } from './items';
2
+ declare type CollectionItem = {
3
+ managers: string[];
4
+ contentHash: string;
5
+ };
6
+ export declare type ItemCollection = {
7
+ creator: string;
8
+ managers: string[];
9
+ isApproved: boolean;
10
+ isCompleted: boolean;
11
+ items: CollectionItem[];
12
+ };
13
+ export declare const v1andV2collectionAssetValidation: AssetValidation;
14
+ export {};
15
+ //# sourceMappingURL=collection-asset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-asset.d.ts","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/collection-asset.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAqBzC,aAAK,cAAc,GAAG;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,oBAAY,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,cAAc,EAAE,CAAA;CACxB,CAAA;AAkID,eAAO,MAAM,gCAAgC,EAAE,eAuD9C,CAAA"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.v1andV2collectionAssetValidation = void 0;
4
+ const hashing_1 = require("@dcl/hashing");
5
+ const types_1 = require("../../../types");
6
+ const L1_NETWORKS = ['mainnet', 'ropsten', 'kovan', 'rinkeby', 'goerli'];
7
+ const L2_NETWORKS = ['matic', 'mumbai'];
8
+ async function getCollectionItems(components, subgraphUrl, collection, itemId, block) {
9
+ const query = `
10
+ query getCollectionRoles($collection: String!, $itemId: String!, $block: Int!) {
11
+ collections(where:{ id: $collection }, block: { number: $block }) {
12
+ creator
13
+ managers
14
+ isApproved
15
+ isCompleted
16
+ items(where:{ id: $itemId }) {
17
+ managers
18
+ contentHash
19
+ }
20
+ }
21
+
22
+ accounts(where:{ isCommitteeMember: true }, block: { number: $block }) {
23
+ id
24
+ }
25
+ }`;
26
+ const result = await subgraphUrl.query(query, {
27
+ collection,
28
+ itemId: `${collection}-${itemId}`,
29
+ block
30
+ });
31
+ const collectionResult = result.collections[0];
32
+ const itemResult = collectionResult?.items[0];
33
+ return {
34
+ collectionCreator: collectionResult?.creator,
35
+ collectionManagers: collectionResult?.managers,
36
+ isApproved: collectionResult?.isApproved,
37
+ isCompleted: collectionResult?.isCompleted,
38
+ itemManagers: itemResult?.managers,
39
+ contentHash: itemResult?.contentHash,
40
+ committee: result.accounts.map(({ id }) => id.toLowerCase())
41
+ };
42
+ }
43
+ async function hasPermission(components, subgraphUrl, collection, itemId, block, entity, logger) {
44
+ try {
45
+ const { content, metadata } = entity;
46
+ const permissions = await getCollectionItems(components, subgraphUrl, collection, itemId, block);
47
+ const ethAddressLowercase = entity.ethAddress.toLowerCase();
48
+ if (!!permissions.contentHash) {
49
+ const deployedByCommittee = permissions.committee.includes(ethAddressLowercase);
50
+ const calculateHashes = () => {
51
+ // Compare both by key and hash
52
+ const compare = (a, b) => {
53
+ if (a.hash > b.hash)
54
+ return 1;
55
+ else if (a.hash < b.hash)
56
+ return -1;
57
+ else
58
+ return a.key > b.key ? 1 : -1;
59
+ };
60
+ const contentAsJson = (content ?? []).map(({ file, hash }) => ({ key: file, hash })).sort(compare);
61
+ const buffer = Buffer.from(JSON.stringify({ content: contentAsJson, metadata }));
62
+ return Promise.all([(0, hashing_1.hashV0)(buffer), (0, hashing_1.hashV1)(buffer)]);
63
+ };
64
+ return deployedByCommittee && (await calculateHashes()).includes(permissions.contentHash);
65
+ }
66
+ else {
67
+ const addressHasAccess = (permissions.collectionCreator && permissions.collectionCreator === ethAddressLowercase) ||
68
+ (permissions.collectionManagers && permissions.collectionManagers.includes(ethAddressLowercase)) ||
69
+ (permissions.itemManagers && permissions.itemManagers.includes(ethAddressLowercase));
70
+ // Deployments to the content server are made after the collection is completed, so that the committee can then approve it.
71
+ // That's why isCompleted must be true, but isApproved must be false. After the committee approves the wearable, there can't be any more changes
72
+ const isCollectionValid = !permissions.isApproved && permissions.isCompleted;
73
+ return addressHasAccess && isCollectionValid;
74
+ }
75
+ }
76
+ catch (error) {
77
+ logger.error(`Error checking permission for (${collection}-${itemId}) at block ${block}`);
78
+ return false;
79
+ }
80
+ }
81
+ async function checkCollectionAccess(components, blocksSubgraphUrl, collectionsSubgraphUrl, collection, itemId, entity, logger) {
82
+ const { timestamp } = entity;
83
+ try {
84
+ const { blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment } = await components.theGraphClient.findBlocksForTimestamp(blocksSubgraphUrl, timestamp);
85
+ // It could happen that the subgraph hasn't synced yet, so someone who just lost access still managed to make a deployment. The problem would be that when other catalysts perform
86
+ // the same check, the subgraph might have synced and the deployment is no longer valid. So, in order to prevent inconsistencies between catalysts, we will allow all deployments that
87
+ // have access now, or had access 5 minutes ago.
88
+ const hasPermissionOnBlock = async (blockNumber) => !!blockNumber &&
89
+ (await hasPermission(components, collectionsSubgraphUrl, collection, itemId, blockNumber, entity, logger));
90
+ return ((await hasPermissionOnBlock(blockNumberAtDeployment)) ||
91
+ (await hasPermissionOnBlock(blockNumberFiveMinBeforeDeployment)));
92
+ }
93
+ catch (error) {
94
+ logger.error(`Error checking wearable access (${collection}, ${itemId}, ${entity.ethAddress}, ${timestamp}, ${blocksSubgraphUrl}).`);
95
+ return false;
96
+ }
97
+ }
98
+ exports.v1andV2collectionAssetValidation = {
99
+ async validateAsset(components, asset, deployment) {
100
+ const { externalCalls } = components;
101
+ const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
102
+ const logger = components.logs.getLogger('collection asset access validation');
103
+ // L1 or L2 so contractAddress is present
104
+ const collection = asset.contractAddress;
105
+ const network = asset.network;
106
+ const isL1 = L1_NETWORKS.includes(network);
107
+ const isL2 = L2_NETWORKS.includes(network);
108
+ if (!isL1 && !isL2)
109
+ return (0, types_1.validationFailed)(`Found an unknown network on the urn '${network}'`);
110
+ const blocksSubgraphUrl = isL1 ? externalCalls.subgraphs.L1.blocks : externalCalls.subgraphs.L2.blocks;
111
+ const collectionsSubgraphUrl = isL1
112
+ ? externalCalls.subgraphs.L1.collections
113
+ : externalCalls.subgraphs.L2.collections;
114
+ const hasAccess = await checkCollectionAccess(components, blocksSubgraphUrl, collectionsSubgraphUrl, collection, asset.id, {
115
+ ...deployment.entity,
116
+ ethAddress
117
+ }, logger);
118
+ if (!hasAccess) {
119
+ if (isL2)
120
+ return (0, types_1.validationFailed)(`The provided Eth Address does not have access to the following item: (${asset.contractAddress}, ${asset.id})`);
121
+ // L1 collections are deployed by Decentraland Address
122
+ const isAllowlistedCollection = asset.uri.toString().startsWith('urn:decentraland:ethereum:collections-v1');
123
+ if (!externalCalls.isAddressOwnedByDecentraland(ethAddress) || !isAllowlistedCollection) {
124
+ return (0, types_1.validationFailed)(`The provided Eth Address '${ethAddress}' does not have access to the following item: '${asset.uri}'`);
125
+ }
126
+ }
127
+ return types_1.OK;
128
+ },
129
+ canValidate(asset) {
130
+ return asset.type === 'blockchain-collection-v1-asset' || asset.type === 'blockchain-collection-v2-asset';
131
+ }
132
+ };
133
+ //# sourceMappingURL=collection-asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-asset.js","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/collection-asset.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { BlockchainCollectionThirdParty, BlockchainCollectionV1Asset, BlockchainCollectionV2Asset, OffChainAsset } from '@dcl/urn-resolver';
2
+ import { DeploymentToValidate } from '../../..';
3
+ import { ContentValidatorComponents, ValidationResponse } from '../../../types';
4
+ export declare type UrnType = 'off-chain' | 'blockchain-collection-v1-asset' | 'blockchain-collection-v2-asset' | 'blockchain-collection-third-party';
5
+ export declare type SupportedAsset = BlockchainCollectionV1Asset | BlockchainCollectionV2Asset | OffChainAsset | BlockchainCollectionThirdParty;
6
+ export declare type AssetValidation = {
7
+ validateAsset(components: Pick<ContentValidatorComponents, 'externalCalls'>, asset: SupportedAsset, deployment: DeploymentToValidate): ValidationResponse | Promise<ValidationResponse>;
8
+ canValidate(asset: SupportedAsset): boolean;
9
+ };
10
+ export declare const itemsValidation: {
11
+ validate: (components: Pick<ContentValidatorComponents, 'externalCalls' | 'logs' | 'theGraphClient'>, deployment: DeploymentToValidate, validUrnTypesForItem: UrnType[]) => Promise<ValidationResponse>;
12
+ };
13
+ //# sourceMappingURL=items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/items.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EAEd,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAoB,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAKjG,oBAAY,OAAO,GACf,WAAW,GACX,gCAAgC,GAChC,gCAAgC,GAChC,mCAAmC,CAAA;AAEvC,oBAAY,cAAc,GACtB,2BAA2B,GAC3B,2BAA2B,GAC3B,aAAa,GACb,8BAA8B,CAAA;AAElC,oBAAY,eAAe,GAAG;IAC5B,aAAa,CACX,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,EAC7D,KAAK,EAAE,cAAc,EACrB,UAAU,EAAE,oBAAoB,GAC/B,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACnD,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAA;CAC5C,CAAA;AAsCD,eAAO,MAAM,eAAe;2BAEZ,KAAK,0BAA0B,EAAE,eAAe,GAAG,MAAM,GAAG,gBAAgB,CAAC,cAC7E,oBAAoB,wBACV,OAAO,EAAE;CAkClC,CAAA"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.itemsValidation = void 0;
4
+ const urn_resolver_1 = require("@dcl/urn-resolver");
5
+ const types_1 = require("../../../types");
6
+ const collection_asset_1 = require("./collection-asset");
7
+ const off_chain_asset_1 = require("./off-chain-asset");
8
+ const third_party_asset_1 = require("./third-party-asset");
9
+ const assetValidations = [off_chain_asset_1.offChainAssetValidation, collection_asset_1.v1andV2collectionAssetValidation, third_party_asset_1.thirdPartyAssetValidation];
10
+ function alreadySeen(resolvedPointers, parsed) {
11
+ return resolvedPointers.some((alreadyResolved) => resolveSameUrn(alreadyResolved, parsed));
12
+ }
13
+ /**
14
+ * This method returns true if the two assets are the same except for its uri.
15
+ * For example, urns for collection v1 wearables can have a 'contractAddress' OR 'collectionName'
16
+ * in the uri but reference the same asset.
17
+ */
18
+ function resolveSameUrn(alreadyParsed, parsed) {
19
+ const { ['uri']: uri1, ...alreadyParsedWithoutUri } = alreadyParsed;
20
+ const { ['uri']: uri2, ...parsedWithoutUri } = parsed;
21
+ return JSON.stringify(parsedWithoutUri) == JSON.stringify(alreadyParsedWithoutUri);
22
+ }
23
+ async function parseUrnNoFail(urn) {
24
+ try {
25
+ const parsed = await (0, urn_resolver_1.parseUrn)(urn);
26
+ if (parsed?.type === 'blockchain-collection-v1-asset') {
27
+ return parsed;
28
+ }
29
+ if (parsed?.type === 'blockchain-collection-v2-asset') {
30
+ return parsed;
31
+ }
32
+ if (parsed?.type === 'off-chain') {
33
+ return parsed;
34
+ }
35
+ if (parsed?.type === 'blockchain-collection-third-party') {
36
+ return parsed;
37
+ }
38
+ }
39
+ catch { }
40
+ return null;
41
+ }
42
+ exports.itemsValidation = {
43
+ validate: async (components, deployment, validUrnTypesForItem) => {
44
+ const { pointers } = deployment.entity;
45
+ const resolvedPointers = [];
46
+ // deduplicate pointer resolution
47
+ for (const pointer of pointers) {
48
+ const parsed = await parseUrnNoFail(pointer);
49
+ if (!parsed)
50
+ return (0, types_1.validationFailed)(`Item pointers should be a urn, for example (urn:decentraland:{protocol}:collections-v2:{contract(0x[a-fA-F0-9]+)}:{id}). Invalid pointer: (${pointer})`);
51
+ if (!alreadySeen(resolvedPointers, parsed))
52
+ resolvedPointers.push(parsed);
53
+ }
54
+ if (resolvedPointers.length > 1)
55
+ return (0, types_1.validationFailed)(`Only one pointer is allowed when you create an item. Received: ${pointers}`);
56
+ const parsedAsset = resolvedPointers[0];
57
+ if (!validUrnTypesForItem.includes(parsedAsset.type)) {
58
+ return (0, types_1.validationFailed)(`For the entity type: ${deployment.entity.type}, the asset with urn type: ${parsedAsset.type} is invalid. Valid urn types for this entity: ${validUrnTypesForItem}`);
59
+ }
60
+ for (const validation of assetValidations) {
61
+ if (validation.canValidate(parsedAsset)) {
62
+ return validation.validateAsset(components, parsedAsset, deployment);
63
+ }
64
+ }
65
+ throw new Error('This should never happen. There is no validations for the asset.');
66
+ }
67
+ };
68
+ //# sourceMappingURL=items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.js","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/items.ts"],"names":[],"mappings":";;;AAAA,oDAM0B;AAE1B,0CAAiG;AACjG,yDAAqE;AACrE,uDAA2D;AAC3D,2DAA+D;AAuB/D,MAAM,gBAAgB,GAAG,CAAC,yCAAuB,EAAE,mDAAgC,EAAE,6CAAyB,CAAC,CAAA;AAE/G,SAAS,WAAW,CAAC,gBAAkC,EAAE,MAAsB;IAC7E,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,cAAc,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAA;AAC5F,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,aAA6B,EAAE,MAAsB;IAC3E,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,uBAAuB,EAAE,GAAG,aAAa,CAAA;IACnE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAE,GAAG,MAAM,CAAA;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAA;AACpF,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAW;IACvC,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAQ,EAAC,GAAG,CAAC,CAAA;QAClC,IAAI,MAAM,EAAE,IAAI,KAAK,gCAAgC,EAAE;YACrD,OAAO,MAAM,CAAA;SACd;QACD,IAAI,MAAM,EAAE,IAAI,KAAK,gCAAgC,EAAE;YACrD,OAAO,MAAM,CAAA;SACd;QACD,IAAI,MAAM,EAAE,IAAI,KAAK,WAAW,EAAE;YAChC,OAAO,MAAM,CAAA;SACd;QACD,IAAI,MAAM,EAAE,IAAI,KAAK,mCAAmC,EAAE;YACxD,OAAO,MAAM,CAAA;SACd;KACF;IAAC,MAAM,GAAE;IACV,OAAO,IAAI,CAAA;AACb,CAAC;AAEY,QAAA,eAAe,GAAG;IAC7B,QAAQ,EAAE,KAAK,EACb,UAAyF,EACzF,UAAgC,EAChC,oBAA+B,EAC/B,EAAE;QACF,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,MAAM,CAAA;QAEtC,MAAM,gBAAgB,GAAqB,EAAE,CAAA;QAC7C,iCAAiC;QACjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAA;YAC5C,IAAI,CAAC,MAAM;gBACT,OAAO,IAAA,wBAAgB,EACrB,8IAA8I,OAAO,GAAG,CACzJ,CAAA;YAEH,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAC1E;QAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAC7B,OAAO,IAAA,wBAAgB,EAAC,kEAAkE,QAAQ,EAAE,CAAC,CAAA;QAEvG,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAEvC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACpD,OAAO,IAAA,wBAAgB,EACrB,wBAAwB,UAAU,CAAC,MAAM,CAAC,IAAI,8BAA8B,WAAW,CAAC,IAAI,iDAAiD,oBAAoB,EAAE,CACpK,CAAA;SACF;QAED,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE;YACzC,IAAI,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;gBACvC,OAAO,UAAU,CAAC,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;aACrE;SACF;QACD,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;IACrF,CAAC;CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { AssetValidation } from './items';
2
+ export declare const offChainAssetValidation: AssetValidation;
3
+ //# sourceMappingURL=off-chain-asset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"off-chain-asset.d.ts","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/off-chain-asset.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,uBAAuB,EAAE,eAgBrC,CAAA"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.offChainAssetValidation = void 0;
4
+ const __1 = require("../../..");
5
+ const types_1 = require("../../../types");
6
+ exports.offChainAssetValidation = {
7
+ validateAsset(components, asset, deployment) {
8
+ const ethAddress = components.externalCalls.ownerAddress(deployment.auditInfo);
9
+ if (!components.externalCalls.isAddressOwnedByDecentraland(ethAddress))
10
+ return (0, types_1.validationFailed)(`The provided Eth Address '${ethAddress}' does not have access to the following item: '${asset.uri}'`);
11
+ return __1.OK;
12
+ },
13
+ canValidate(asset) {
14
+ return asset.type === 'off-chain';
15
+ }
16
+ };
17
+ //# sourceMappingURL=off-chain-asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"off-chain-asset.js","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/off-chain-asset.ts"],"names":[],"mappings":";;;AACA,gCAAmD;AACnD,0CAA6E;AAGhE,QAAA,uBAAuB,GAAoB;IACtD,aAAa,CACX,UAA6D,EAC7D,KAAoB,EACpB,UAAgC;QAEhC,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAC9E,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,4BAA4B,CAAC,UAAU,CAAC;YACpE,OAAO,IAAA,wBAAgB,EACrB,6BAA6B,UAAU,kDAAkD,KAAK,CAAC,GAAG,GAAG,CACtG,CAAA;QACH,OAAO,MAAE,CAAA;IACX,CAAC;IACD,WAAW,CAAC,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,CAAA;IACnC,CAAC;CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { AssetValidation } from './items';
2
+ export declare const thirdPartyAssetValidation: AssetValidation;
3
+ //# sourceMappingURL=third-party-asset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"third-party-asset.d.ts","sourceRoot":"","sources":["../../../../src/validations/access-checker/items/third-party-asset.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAoHzC,eAAO,MAAM,yBAAyB,EAAE,eAiBvC,CAAA"}