@dcl/content-validator 4.7.1 → 4.7.2-5045749028.commit-c64f59b

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 (56) hide show
  1. package/README.md +3 -3
  2. package/dist/types.d.ts +8 -6
  3. package/dist/types.d.ts.map +1 -1
  4. package/dist/validations/ADR51.d.ts +2 -2
  5. package/dist/validations/ADR51.d.ts.map +1 -1
  6. package/dist/validations/ADR51.js +4 -0
  7. package/dist/validations/ADR51.js.map +1 -1
  8. package/dist/validations/access/common/outfits.d.ts +4 -0
  9. package/dist/validations/access/common/outfits.d.ts.map +1 -0
  10. package/dist/validations/access/common/outfits.js +39 -0
  11. package/dist/validations/access/common/outfits.js.map +1 -0
  12. package/dist/validations/access/common/profile.d.ts +4 -0
  13. package/dist/validations/access/common/profile.d.ts.map +1 -0
  14. package/dist/validations/access/common/profile.js +79 -0
  15. package/dist/validations/access/common/profile.js.map +1 -0
  16. package/dist/validations/access/on-chain/index.d.ts.map +1 -1
  17. package/dist/validations/access/on-chain/index.js +3 -1
  18. package/dist/validations/access/on-chain/index.js.map +1 -1
  19. package/dist/validations/access/on-chain/outfits.d.ts +3 -0
  20. package/dist/validations/access/on-chain/outfits.d.ts.map +1 -0
  21. package/dist/validations/access/on-chain/outfits.js +10 -0
  22. package/dist/validations/access/on-chain/outfits.js.map +1 -0
  23. package/dist/validations/access/on-chain/profiles.d.ts +2 -4
  24. package/dist/validations/access/on-chain/profiles.d.ts.map +1 -1
  25. package/dist/validations/access/on-chain/profiles.js +3 -77
  26. package/dist/validations/access/on-chain/profiles.js.map +1 -1
  27. package/dist/validations/access/subgraph/index.d.ts.map +1 -1
  28. package/dist/validations/access/subgraph/index.js +3 -1
  29. package/dist/validations/access/subgraph/index.js.map +1 -1
  30. package/dist/validations/access/subgraph/outfits.d.ts +3 -0
  31. package/dist/validations/access/subgraph/outfits.d.ts.map +1 -0
  32. package/dist/validations/access/subgraph/outfits.js +10 -0
  33. package/dist/validations/access/subgraph/outfits.js.map +1 -0
  34. package/dist/validations/access/subgraph/profiles.d.ts +2 -4
  35. package/dist/validations/access/subgraph/profiles.d.ts.map +1 -1
  36. package/dist/validations/access/subgraph/profiles.js +3 -77
  37. package/dist/validations/access/subgraph/profiles.js.map +1 -1
  38. package/dist/validations/access/subgraph/scenes.d.ts.map +1 -1
  39. package/dist/validations/access/subgraph/scenes.js +23 -10
  40. package/dist/validations/access/subgraph/scenes.js.map +1 -1
  41. package/dist/validations/metadata-schema.d.ts.map +1 -1
  42. package/dist/validations/metadata-schema.js +2 -1
  43. package/dist/validations/metadata-schema.js.map +1 -1
  44. package/dist/validations/outfits.d.ts +7 -0
  45. package/dist/validations/outfits.d.ts.map +1 -0
  46. package/dist/validations/outfits.js +69 -0
  47. package/dist/validations/outfits.js.map +1 -0
  48. package/dist/validations/profile.d.ts +1 -0
  49. package/dist/validations/profile.d.ts.map +1 -1
  50. package/dist/validations/profile.js +24 -2
  51. package/dist/validations/profile.js.map +1 -1
  52. package/package.json +4 -3
  53. package/dist/validations/access/common/profiles.d.ts +0 -3
  54. package/dist/validations/access/common/profiles.d.ts.map +0 -1
  55. package/dist/validations/access/common/profiles.js +0 -28
  56. package/dist/validations/access/common/profiles.js.map +0 -1
package/README.md CHANGED
@@ -10,8 +10,8 @@ Install dependencies and run tests:
10
10
 
11
11
  ```
12
12
  > yarn
13
- > make build
14
- > make test
13
+ > yarn build
14
+ > yarn test
15
15
  ```
16
16
 
17
17
  ### Debugging tests
@@ -28,5 +28,5 @@ To make Catalysts accept deployments of new entity types, they must have defined
28
28
 
29
29
  1. Create entity schema on [@dcl/schemas](https://github.com/decentraland/common-schemas).
30
30
  2. Add entity type and schema on [catalyst-commons](https://github.com/decentraland/catalyst-commons/).
31
- 3. Add entity type and access checker in [access.ts](./src/validations/access-checker/access.ts).
31
+ 3. Add entity type and access checker in [access.ts](./src/validations/access-checker/access.ts).
32
32
  a. Verify entity pointers can be resolved. If required add a new resolver in [@dcl/urn-resolver](https://github.com/decentraland/urn-resolver).
package/dist/types.d.ts CHANGED
@@ -102,20 +102,22 @@ export type SubGraphs = {
102
102
  thirdPartyRegistry: ISubgraphComponent;
103
103
  };
104
104
  };
105
+ export type NamesOwnership = {
106
+ ownsNamesAtTimestamp: (ethAddress: EthAddress, namesToCheck: string[], timestamp: number) => Promise<PermissionResult>;
107
+ };
108
+ export type ItemsOwnership = {
109
+ ownsItemsAtTimestamp: (ethAddress: EthAddress, urnsToCheck: string[], timestamp: number) => Promise<PermissionResult>;
110
+ };
105
111
  /**
106
112
  * @public
107
113
  */
108
- export type TheGraphClient = {
109
- ownsNamesAtTimestamp: (ethAddress: EthAddress, namesToCheck: string[], timestamp: number) => Promise<PermissionResult>;
110
- ownsItemsAtTimestamp: (ethAddress: EthAddress, urnsToCheck: string[], timestamp: number) => Promise<PermissionResult>;
114
+ export type TheGraphClient = NamesOwnership & ItemsOwnership & {
111
115
  findBlocksForTimestamp: (subgraph: ISubgraphComponent, timestamp: number) => Promise<BlockInformation>;
112
116
  };
113
117
  /**
114
118
  * @public
115
119
  */
116
- export type OnChainClient = {
117
- ownsNamesAtTimestamp: (ethAddress: EthAddress, namesToCheck: string[], timestamp: number) => Promise<PermissionResult>;
118
- ownsItemsAtTimestamp: (ethAddress: EthAddress, urnsToCheck: string[], timestamp: number) => Promise<PermissionResult>;
120
+ export type OnChainClient = NamesOwnership & ItemsOwnership & {
119
121
  findBlocksForTimestamp: (timestamp: number, blockSearch: BlockSearch) => Promise<BlockInformation>;
120
122
  };
121
123
  /**
@@ -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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"}
@@ -1,6 +1,6 @@
1
- import { Emote, EntityType, Profile, Scene, Store, ValidateFunction, Wearable } from '@dcl/schemas';
1
+ import { Emote, EntityType, Outfits, Profile, Scene, Store, ValidateFunction, Wearable } from '@dcl/schemas';
2
2
  type Params = {
3
- validate: ValidateFunction<Scene | Profile | Wearable | Store | Emote>;
3
+ validate: ValidateFunction<Scene | Profile | Wearable | Store | Emote | Outfits>;
4
4
  maxSizeInMB: number;
5
5
  };
6
6
  export declare const entityParameters: Record<EntityType, Params>;
@@ -1 +1 @@
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,KAAK,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"}
1
+ {"version":3,"file":"ADR51.d.ts","sourceRoot":"","sources":["../../src/validations/ADR51.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5G,KAAK,MAAM,GAAG;IACZ,QAAQ,EAAE,gBAAgB,CAAC,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC,CAAA;IAChF,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAyBvD,CAAA"}
@@ -22,6 +22,10 @@ exports.entityParameters = {
22
22
  emote: {
23
23
  validate: schemas_1.Emote.validate,
24
24
  maxSizeInMB: 3
25
+ },
26
+ outfits: {
27
+ validate: schemas_1.Outfits.validate,
28
+ maxSizeInMB: 1
25
29
  }
26
30
  };
27
31
  //# sourceMappingURL=ADR51.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"ADR51.js","sourceRoot":"","sources":["../../src/validations/ADR51.ts"],"names":[],"mappings":";;;AAAA,0CAA4G;AAO/F,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;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,iBAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,CAAC;KACf;CACF,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { ContentValidatorComponents, ItemsOwnership, NamesOwnership, ValidateFn } from '../../../types';
2
+ export declare function createOutfitsWearablesOwnershipValidateFn({ externalCalls }: Pick<ContentValidatorComponents, 'externalCalls'>, itemsOwnership: ItemsOwnership): ValidateFn;
3
+ export declare function createOutfitsNamesOwnershipValidateFn({ externalCalls }: Pick<ContentValidatorComponents, 'externalCalls'>, namesOwnership: NamesOwnership): ValidateFn;
4
+ //# sourceMappingURL=outfits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outfits.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/common/outfits.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,0BAA0B,EAE1B,cAAc,EACd,cAAc,EAEd,UAAU,EAGX,MAAM,gBAAgB,CAAA;AAEvB,wBAAgB,yCAAyC,CACvD,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,EACpE,cAAc,EAAE,cAAc,GAC7B,UAAU,CA+BZ;AAED,wBAAgB,qCAAqC,CACnD,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,EACpE,cAAc,EAAE,cAAc,GAC7B,UAAU,CAcZ"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createOutfitsNamesOwnershipValidateFn = exports.createOutfitsWearablesOwnershipValidateFn = void 0;
4
+ const urn_resolver_1 = require("@dcl/urn-resolver");
5
+ const types_1 = require("../../../types");
6
+ function createOutfitsWearablesOwnershipValidateFn({ externalCalls }, itemsOwnership) {
7
+ async function sanitizeUrn(urn) {
8
+ if (!urn.startsWith('dcl://')) {
9
+ return urn;
10
+ }
11
+ const parsed = await (0, urn_resolver_1.parseUrn)(urn);
12
+ return parsed?.uri?.toString();
13
+ }
14
+ return async function validateFn(deployment) {
15
+ const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
16
+ const outfits = deployment.entity.metadata;
17
+ const allWearableUrns = outfits.outfits.map(({ outfit }) => outfit.wearables).flat();
18
+ const sanitizedUrns = (await Promise.all(allWearableUrns.map((urn) => sanitizeUrn(urn)))).filter((urn) => !!urn);
19
+ const wearablesOwnershipResult = await itemsOwnership.ownsItemsAtTimestamp(ethAddress, sanitizedUrns, deployment.entity.timestamp);
20
+ if (!wearablesOwnershipResult.result) {
21
+ return (0, types_1.validationFailed)(`The following wearables (${wearablesOwnershipResult.failing?.join(', ')}) are not owned by the address ${ethAddress.toLowerCase()}).`);
22
+ }
23
+ return types_1.OK;
24
+ };
25
+ }
26
+ exports.createOutfitsWearablesOwnershipValidateFn = createOutfitsWearablesOwnershipValidateFn;
27
+ function createOutfitsNamesOwnershipValidateFn({ externalCalls }, namesOwnership) {
28
+ return async function validateFn(deployment) {
29
+ const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
30
+ const namesForExtraSlots = deployment.entity.metadata.namesForExtraSlots;
31
+ const names = namesForExtraSlots.filter((name) => name && name.trim().length > 0);
32
+ const namesCheckResult = await namesOwnership.ownsNamesAtTimestamp(ethAddress, names, deployment.entity.timestamp);
33
+ if (!namesCheckResult.result)
34
+ return (0, types_1.validationFailed)(`The following names (${namesCheckResult.failing?.join(', ')}) are not owned by the address ${ethAddress.toLowerCase()}).`);
35
+ return types_1.OK;
36
+ };
37
+ }
38
+ exports.createOutfitsNamesOwnershipValidateFn = createOutfitsNamesOwnershipValidateFn;
39
+ //# sourceMappingURL=outfits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outfits.js","sourceRoot":"","sources":["../../../../src/validations/access/common/outfits.ts"],"names":[],"mappings":";;;AACA,oDAA4C;AAC5C,0CASuB;AAEvB,SAAgB,yCAAyC,CACvD,EAAE,aAAa,EAAqD,EACpE,cAA8B;IAE9B,KAAK,UAAU,WAAW,CAAC,GAAW;QACpC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC7B,OAAO,GAAG,CAAA;SACX;QACD,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAQ,EAAC,GAAG,CAAC,CAAA;QAClC,OAAO,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAA;IAChC,CAAC;IAED,OAAO,KAAK,UAAU,UAAU,CAAC,UAAgC;QAC/D,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QACnE,MAAM,OAAO,GAAY,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAA;QACnD,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;QACpF,MAAM,aAAa,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAC9F,CAAC,GAAG,EAAiB,EAAE,CAAC,CAAC,CAAC,GAAG,CAC9B,CAAA;QACD,MAAM,wBAAwB,GAAG,MAAM,cAAc,CAAC,oBAAoB,CACxE,UAAU,EACV,aAAa,EACb,UAAU,CAAC,MAAM,CAAC,SAAS,CAC5B,CAAA;QACD,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE;YACpC,OAAO,IAAA,wBAAgB,EACrB,4BAA4B,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAChE,IAAI,CACL,kCAAkC,UAAU,CAAC,WAAW,EAAE,IAAI,CAChE,CAAA;SACF;QAED,OAAO,UAAE,CAAA;IACX,CAAC,CAAA;AACH,CAAC;AAlCD,8FAkCC;AAED,SAAgB,qCAAqC,CACnD,EAAE,aAAa,EAAqD,EACpE,cAA8B;IAE9B,OAAO,KAAK,UAAU,UAAU,CAAC,UAAgC;QAC/D,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QACnE,MAAM,kBAAkB,GAAa,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAA;QAClF,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACzF,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAAC,oBAAoB,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAClH,IAAI,CAAC,gBAAgB,CAAC,MAAM;YAC1B,OAAO,IAAA,wBAAgB,EACrB,wBAAwB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CACpD,IAAI,CACL,kCAAkC,UAAU,CAAC,WAAW,EAAE,IAAI,CAChE,CAAA;QACH,OAAO,UAAE,CAAA;IACX,CAAC,CAAA;AACH,CAAC;AAjBD,sFAiBC"}
@@ -0,0 +1,4 @@
1
+ import { ContentValidatorComponents, ItemsOwnership, NamesOwnership, ValidateFn } from '../../../types';
2
+ export declare function createNamesOwnershipValidateFn({ externalCalls }: Pick<ContentValidatorComponents, 'externalCalls'>, namesOwnership: NamesOwnership): ValidateFn;
3
+ export declare function createItemOwnershipValidateFn({ externalCalls }: Pick<ContentValidatorComponents, 'externalCalls'>, itemsOwnership: ItemsOwnership): ValidateFn;
4
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/common/profile.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,0BAA0B,EAE1B,cAAc,EACd,cAAc,EAEd,UAAU,EAGX,MAAM,gBAAgB,CAAA;AAKvB,wBAAgB,8BAA8B,CAC5C,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,EACpE,cAAc,EAAE,cAAc,GAC7B,UAAU,CAkBZ;AAED,wBAAgB,6BAA6B,CAC3C,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,EACpE,cAAc,EAAE,cAAc,GAC7B,UAAU,CAmEZ"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createItemOwnershipValidateFn = exports.createNamesOwnershipValidateFn = void 0;
4
+ const urn_resolver_1 = require("@dcl/urn-resolver");
5
+ const types_1 = require("../../../types");
6
+ const profile_1 = require("../../profile");
7
+ const timestamps_1 = require("../../timestamps");
8
+ const validations_1 = require("../../validations");
9
+ function createNamesOwnershipValidateFn({ externalCalls }, namesOwnership) {
10
+ async function validateFn(deployment) {
11
+ const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
12
+ const names = deployment.entity.metadata.avatars
13
+ .filter((avatar) => avatar.hasClaimedName)
14
+ .map((avatar) => avatar.name)
15
+ .filter((name) => name && name.trim().length > 0);
16
+ const namesCheckResult = await namesOwnership.ownsNamesAtTimestamp(ethAddress, names, deployment.entity.timestamp);
17
+ if (!namesCheckResult.result)
18
+ return (0, types_1.validationFailed)(`The following names (${namesCheckResult.failing?.join(', ')}) are not owned by the address ${ethAddress.toLowerCase()}).`);
19
+ return types_1.OK;
20
+ }
21
+ return (0, validations_1.validateAfterADR75)(validateFn);
22
+ }
23
+ exports.createNamesOwnershipValidateFn = createNamesOwnershipValidateFn;
24
+ function createItemOwnershipValidateFn({ externalCalls }, itemsOwnership) {
25
+ async function sanitizeUrn(urn) {
26
+ if (!urn.startsWith('dcl://')) {
27
+ return urn;
28
+ }
29
+ const parsed = await (0, urn_resolver_1.parseUrn)(urn);
30
+ return parsed?.uri?.toString();
31
+ }
32
+ async function allOnChainWearableUrns(entity) {
33
+ const allWearablesInProfilePromises = [];
34
+ for (const avatar of entity.metadata.avatars) {
35
+ for (const wearableId of avatar.avatar.wearables) {
36
+ const isBaseAvatar = wearableId.includes('base-avatars');
37
+ if (!isBaseAvatar && !(0, profile_1.isOldEmote)(wearableId)) {
38
+ allWearablesInProfilePromises.push(sanitizeUrn(wearableId));
39
+ }
40
+ }
41
+ }
42
+ return (await Promise.all(allWearablesInProfilePromises)).filter((wearableId) => !!wearableId);
43
+ }
44
+ async function allEmoteUrns(entity) {
45
+ const allEmotesInProfilePromises = [];
46
+ const allAvatars = entity.metadata?.avatars ?? [];
47
+ for (const avatar of allAvatars) {
48
+ const allEmotes = avatar.avatar.emotes ?? [];
49
+ for (const { urn } of allEmotes) {
50
+ if (!(0, profile_1.isOldEmote)(urn)) {
51
+ allEmotesInProfilePromises.push(sanitizeUrn(urn));
52
+ }
53
+ }
54
+ }
55
+ return (await Promise.all(allEmotesInProfilePromises)).filter((wearableId) => !!wearableId);
56
+ }
57
+ return async function validateFn(deployment) {
58
+ const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
59
+ const depoymentTimestamp = deployment.entity.timestamp;
60
+ const itemUrns = [];
61
+ if (depoymentTimestamp >= timestamps_1.ADR_75_TIMESTAMP) {
62
+ for (const urn of await allOnChainWearableUrns(deployment.entity)) {
63
+ itemUrns.push(urn);
64
+ }
65
+ }
66
+ if (depoymentTimestamp >= timestamps_1.ADR_74_TIMESTAMP) {
67
+ for (const urn of await allEmoteUrns(deployment.entity)) {
68
+ itemUrns.push(urn);
69
+ }
70
+ }
71
+ const itemsOwnershipResult = await itemsOwnership.ownsItemsAtTimestamp(ethAddress, itemUrns, deployment.entity.timestamp);
72
+ if (!itemsOwnershipResult.result) {
73
+ return (0, types_1.validationFailed)(`The following items (${itemsOwnershipResult.failing?.join(', ')}) are not owned by the address ${ethAddress.toLowerCase()}).`);
74
+ }
75
+ return types_1.OK;
76
+ };
77
+ }
78
+ exports.createItemOwnershipValidateFn = createItemOwnershipValidateFn;
79
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../../src/validations/access/common/profile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/on-chain/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,8BAA8B,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAQ3E,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,8BAA8B,GACzC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAchC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/on-chain/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,8BAA8B,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAS3E,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,8BAA8B,GACzC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAehC"}
@@ -5,6 +5,7 @@ const schemas_1 = require("@dcl/schemas");
5
5
  const items_1 = require("../common/items");
6
6
  const stores_1 = require("../common/stores");
7
7
  const collection_asset_1 = require("./collection-asset");
8
+ const outfits_1 = require("./outfits");
8
9
  const profiles_1 = require("./profiles");
9
10
  const scenes_1 = require("./scenes");
10
11
  const third_party_asset_1 = require("./third-party-asset");
@@ -16,7 +17,8 @@ function createOnChainAccessCheckValidateFns(components) {
16
17
  [schemas_1.EntityType.SCENE]: (0, scenes_1.createSceneValidateFn)(components),
17
18
  [schemas_1.EntityType.WEARABLE]: (0, items_1.createWearableValidateFn)(components, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn),
18
19
  [schemas_1.EntityType.STORE]: (0, stores_1.createStoreValidateFn)(components),
19
- [schemas_1.EntityType.EMOTE]: (0, items_1.createEmoteValidateFn)(components, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn)
20
+ [schemas_1.EntityType.EMOTE]: (0, items_1.createEmoteValidateFn)(components, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn),
21
+ [schemas_1.EntityType.OUTFITS]: (0, outfits_1.createOutfitsValidateFn)(components)
20
22
  };
21
23
  }
22
24
  exports.createOnChainAccessCheckValidateFns = createOnChainAccessCheckValidateFns;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/validations/access/on-chain/index.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AAEzC,2CAAiF;AACjF,6CAAwD;AACxD,yDAA2E;AAC3E,yCAAoD;AACpD,qCAAgD;AAChD,2DAAqE;AAErE,SAAgB,mCAAmC,CACjD,UAA0C;IAE1C,MAAM,gCAAgC,GAAG,IAAA,yDAAsC,EAAC,UAAU,CAAC,CAAA;IAC3F,MAAM,yBAAyB,GAAG,IAAA,mDAA+B,EAAC,UAAU,CAAC,CAAA;IAC7E,OAAO;QACL,CAAC,oBAAU,CAAC,OAAO,CAAC,EAAE,IAAA,kCAAuB,EAAC,UAAU,CAAC;QACzD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,8BAAqB,EAAC,UAAU,CAAC;QACrD,CAAC,oBAAU,CAAC,QAAQ,CAAC,EAAE,IAAA,gCAAwB,EAC7C,UAAU,EACV,gCAAgC,EAChC,yBAAyB,CAC1B;QACD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,8BAAqB,EAAC,UAAU,CAAC;QACrD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,6BAAqB,EAAC,UAAU,EAAE,gCAAgC,EAAE,yBAAyB,CAAC;KACnH,CAAA;AACH,CAAC;AAhBD,kFAgBC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/validations/access/on-chain/index.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AAEzC,2CAAiF;AACjF,6CAAwD;AACxD,yDAA2E;AAC3E,uCAAmD;AACnD,yCAAoD;AACpD,qCAAgD;AAChD,2DAAqE;AAErE,SAAgB,mCAAmC,CACjD,UAA0C;IAE1C,MAAM,gCAAgC,GAAG,IAAA,yDAAsC,EAAC,UAAU,CAAC,CAAA;IAC3F,MAAM,yBAAyB,GAAG,IAAA,mDAA+B,EAAC,UAAU,CAAC,CAAA;IAC7E,OAAO;QACL,CAAC,oBAAU,CAAC,OAAO,CAAC,EAAE,IAAA,kCAAuB,EAAC,UAAU,CAAC;QACzD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,8BAAqB,EAAC,UAAU,CAAC;QACrD,CAAC,oBAAU,CAAC,QAAQ,CAAC,EAAE,IAAA,gCAAwB,EAC7C,UAAU,EACV,gCAAgC,EAChC,yBAAyB,CAC1B;QACD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,8BAAqB,EAAC,UAAU,CAAC;QACrD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,6BAAqB,EAAC,UAAU,EAAE,gCAAgC,EAAE,yBAAyB,CAAC;QAClH,CAAC,oBAAU,CAAC,OAAO,CAAC,EAAE,IAAA,iCAAuB,EAAC,UAAU,CAAC;KAC1D,CAAA;AACH,CAAC;AAjBD,kFAiBC"}
@@ -0,0 +1,3 @@
1
+ import { OnChainAccessCheckerComponents } from '../../../types';
2
+ export declare function createOutfitsValidateFn(components: Pick<OnChainAccessCheckerComponents, 'client' | 'externalCalls'>): import("../../../types").ValidateFn;
3
+ //# sourceMappingURL=outfits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outfits.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/on-chain/outfits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAA;AAI/D,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,IAAI,CAAC,8BAA8B,EAAE,QAAQ,GAAG,eAAe,CAAC,uCAKnH"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createOutfitsValidateFn = void 0;
4
+ const validations_1 = require("../../validations");
5
+ const outfits_1 = require("../common/outfits");
6
+ function createOutfitsValidateFn(components) {
7
+ return (0, validations_1.validateAll)((0, outfits_1.createOutfitsWearablesOwnershipValidateFn)(components, components.client), (0, outfits_1.createOutfitsNamesOwnershipValidateFn)(components, components.client));
8
+ }
9
+ exports.createOutfitsValidateFn = createOutfitsValidateFn;
10
+ //# sourceMappingURL=outfits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outfits.js","sourceRoot":"","sources":["../../../../src/validations/access/on-chain/outfits.ts"],"names":[],"mappings":";;;AACA,mDAA+C;AAC/C,+CAAoH;AAEpH,SAAgB,uBAAuB,CAAC,UAA4E;IAClH,OAAO,IAAA,yBAAW,EAChB,IAAA,mDAAyC,EAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,EACxE,IAAA,+CAAqC,EAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CACrE,CAAA;AACH,CAAC;AALD,0DAKC"}
@@ -1,5 +1,3 @@
1
- import { OnChainAccessCheckerComponents, ValidateFn } from '../../../types';
2
- export declare function createNamesOwnershipValidateFn({ externalCalls, client }: Pick<OnChainAccessCheckerComponents, 'externalCalls' | 'client'>): ValidateFn;
3
- export declare function createItemOwnershipValidateFn({ externalCalls, client }: Pick<OnChainAccessCheckerComponents, 'externalCalls' | 'client'>): ValidateFn;
4
- export declare function createProfileValidateFn(components: Pick<OnChainAccessCheckerComponents, 'client' | 'externalCalls'>): ValidateFn;
1
+ import { OnChainAccessCheckerComponents } from '../../../types';
2
+ export declare function createProfileValidateFn(components: Pick<OnChainAccessCheckerComponents, 'client' | 'externalCalls'>): import("../../../types").ValidateFn;
5
3
  //# sourceMappingURL=profiles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/on-chain/profiles.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,8BAA8B,EAC9B,UAAU,EAGX,MAAM,gBAAgB,CAAA;AAMvB,wBAAgB,8BAA8B,CAAC,EAC7C,aAAa,EACb,MAAM,EACP,EAAE,IAAI,CAAC,8BAA8B,EAAE,eAAe,GAAG,QAAQ,CAAC,GAAG,UAAU,CAkB/E;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,aAAa,EACb,MAAM,EACP,EAAE,IAAI,CAAC,8BAA8B,EAAE,eAAe,GAAG,QAAQ,CAAC,GAAG,UAAU,CA+D/E;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,IAAI,CAAC,8BAA8B,EAAE,QAAQ,GAAG,eAAe,CAAC,cAMnH"}
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/on-chain/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAA;AAI/D,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,IAAI,CAAC,8BAA8B,EAAE,QAAQ,GAAG,eAAe,CAAC,uCAKnH"}
@@ -1,84 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createProfileValidateFn = exports.createItemOwnershipValidateFn = exports.createNamesOwnershipValidateFn = void 0;
4
- const urn_resolver_1 = require("@dcl/urn-resolver");
5
- const types_1 = require("../../../types");
6
- const profile_1 = require("../../profile");
7
- const timestamps_1 = require("../../timestamps");
3
+ exports.createProfileValidateFn = void 0;
8
4
  const validations_1 = require("../../validations");
9
- const profiles_1 = require("../common/profiles");
10
- function createNamesOwnershipValidateFn({ externalCalls, client }) {
11
- async function validateFn(deployment) {
12
- const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
13
- const names = deployment.entity.metadata.avatars
14
- .filter((avatar) => avatar.hasClaimedName)
15
- .map((avatar) => avatar.name)
16
- .filter((name) => name && name.trim().length > 0);
17
- const namesCheckResult = await client.ownsNamesAtTimestamp(ethAddress, names, deployment.entity.timestamp);
18
- if (!namesCheckResult.result)
19
- return (0, types_1.validationFailed)(`The following names (${namesCheckResult.failing?.join(', ')}) are not owned by the address ${ethAddress.toLowerCase()}).`);
20
- return types_1.OK;
21
- }
22
- return (0, validations_1.validateAfterADR75)(validateFn);
23
- }
24
- exports.createNamesOwnershipValidateFn = createNamesOwnershipValidateFn;
25
- function createItemOwnershipValidateFn({ externalCalls, client }) {
26
- async function sanitizeUrn(urn) {
27
- if (!urn.startsWith('dcl://')) {
28
- return urn;
29
- }
30
- const parsed = await (0, urn_resolver_1.parseUrn)(urn);
31
- return parsed?.uri?.toString();
32
- }
33
- async function allOnChainWearableUrns(entity) {
34
- const allWearablesInProfilePromises = [];
35
- for (const avatar of entity.metadata.avatars) {
36
- for (const wearableId of avatar.avatar.wearables) {
37
- const isBaseAvatar = wearableId.includes('base-avatars');
38
- if (!isBaseAvatar && !(0, profile_1.isOldEmote)(wearableId)) {
39
- allWearablesInProfilePromises.push(sanitizeUrn(wearableId));
40
- }
41
- }
42
- }
43
- return (await Promise.all(allWearablesInProfilePromises)).filter((wearableId) => !!wearableId);
44
- }
45
- async function allEmoteUrns(entity) {
46
- const allEmotesInProfilePromises = [];
47
- const allAvatars = entity.metadata?.avatars ?? [];
48
- for (const avatar of allAvatars) {
49
- const allEmotes = avatar.avatar.emotes ?? [];
50
- for (const { urn } of allEmotes) {
51
- if (!(0, profile_1.isOldEmote)(urn)) {
52
- allEmotesInProfilePromises.push(sanitizeUrn(urn));
53
- }
54
- }
55
- }
56
- return (await Promise.all(allEmotesInProfilePromises)).filter((wearableId) => !!wearableId);
57
- }
58
- return async function validateFn(deployment) {
59
- const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
60
- const depoymentTimestamp = deployment.entity.timestamp;
61
- const itemUrns = [];
62
- if (depoymentTimestamp >= timestamps_1.ADR_75_TIMESTAMP) {
63
- for (const urn of await allOnChainWearableUrns(deployment.entity)) {
64
- itemUrns.push(urn);
65
- }
66
- }
67
- if (depoymentTimestamp >= timestamps_1.ADR_74_TIMESTAMP) {
68
- for (const urn of await allEmoteUrns(deployment.entity)) {
69
- itemUrns.push(urn);
70
- }
71
- }
72
- const itemsOwnershipResult = await client.ownsItemsAtTimestamp(ethAddress, itemUrns, deployment.entity.timestamp);
73
- if (!itemsOwnershipResult.result) {
74
- return (0, types_1.validationFailed)(`The following items (${itemsOwnershipResult.failing?.join(', ')}) are not owned by the address ${ethAddress.toLowerCase()}).`);
75
- }
76
- return types_1.OK;
77
- };
78
- }
79
- exports.createItemOwnershipValidateFn = createItemOwnershipValidateFn;
5
+ const profile_1 = require("../common/profile");
80
6
  function createProfileValidateFn(components) {
81
- return (0, validations_1.validateAll)(createNamesOwnershipValidateFn(components), createItemOwnershipValidateFn(components), (0, profiles_1.createPointerValidateFn)(components));
7
+ return (0, validations_1.validateAll)((0, profile_1.createNamesOwnershipValidateFn)(components, components.client), (0, profile_1.createItemOwnershipValidateFn)(components, components.client));
82
8
  }
83
9
  exports.createProfileValidateFn = createProfileValidateFn;
84
10
  //# sourceMappingURL=profiles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../../src/validations/access/on-chain/profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../../src/validations/access/on-chain/profiles.ts"],"names":[],"mappings":";;;AACA,mDAA+C;AAC/C,+CAAiG;AAEjG,SAAgB,uBAAuB,CAAC,UAA4E;IAClH,OAAO,IAAA,yBAAW,EAChB,IAAA,wCAA8B,EAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,EAC7D,IAAA,uCAA6B,EAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAC7D,CAAA;AACH,CAAC;AALD,0DAKC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,+BAA+B,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAQ5E,wBAAgB,oCAAoC,CAClD,UAAU,EAAE,+BAA+B,GAC1C,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAchC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,+BAA+B,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAS5E,wBAAgB,oCAAoC,CAClD,UAAU,EAAE,+BAA+B,GAC1C,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAehC"}
@@ -5,6 +5,7 @@ const schemas_1 = require("@dcl/schemas");
5
5
  const items_1 = require("../common/items");
6
6
  const stores_1 = require("../common/stores");
7
7
  const collection_asset_1 = require("./collection-asset");
8
+ const outfits_1 = require("./outfits");
8
9
  const profiles_1 = require("./profiles");
9
10
  const scenes_1 = require("./scenes");
10
11
  const third_party_asset_1 = require("./third-party-asset");
@@ -16,7 +17,8 @@ function createSubgraphAccessCheckValidateFns(components) {
16
17
  [schemas_1.EntityType.SCENE]: (0, scenes_1.createSceneValidateFn)(components),
17
18
  [schemas_1.EntityType.WEARABLE]: (0, items_1.createWearableValidateFn)(components, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn),
18
19
  [schemas_1.EntityType.STORE]: (0, stores_1.createStoreValidateFn)(components),
19
- [schemas_1.EntityType.EMOTE]: (0, items_1.createEmoteValidateFn)(components, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn)
20
+ [schemas_1.EntityType.EMOTE]: (0, items_1.createEmoteValidateFn)(components, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn),
21
+ [schemas_1.EntityType.OUTFITS]: (0, outfits_1.createOutfitsValidateFn)(components)
20
22
  };
21
23
  }
22
24
  exports.createSubgraphAccessCheckValidateFns = createSubgraphAccessCheckValidateFns;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/index.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AAEzC,2CAAiF;AACjF,6CAAwD;AACxD,yDAA2E;AAC3E,yCAAoD;AACpD,qCAAgD;AAChD,2DAAqE;AAErE,SAAgB,oCAAoC,CAClD,UAA2C;IAE3C,MAAM,gCAAgC,GAAG,IAAA,yDAAsC,EAAC,UAAU,CAAC,CAAA;IAC3F,MAAM,yBAAyB,GAAG,IAAA,mDAA+B,EAAC,UAAU,CAAC,CAAA;IAC7E,OAAO;QACL,CAAC,oBAAU,CAAC,OAAO,CAAC,EAAE,IAAA,kCAAuB,EAAC,UAAU,CAAC;QACzD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,8BAAqB,EAAC,UAAU,CAAC;QACrD,CAAC,oBAAU,CAAC,QAAQ,CAAC,EAAE,IAAA,gCAAwB,EAC7C,UAAU,EACV,gCAAgC,EAChC,yBAAyB,CAC1B;QACD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,8BAAqB,EAAC,UAAU,CAAC;QACrD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,6BAAqB,EAAC,UAAU,EAAE,gCAAgC,EAAE,yBAAyB,CAAC;KACnH,CAAA;AACH,CAAC;AAhBD,oFAgBC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/index.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AAEzC,2CAAiF;AACjF,6CAAwD;AACxD,yDAA2E;AAC3E,uCAAmD;AACnD,yCAAoD;AACpD,qCAAgD;AAChD,2DAAqE;AAErE,SAAgB,oCAAoC,CAClD,UAA2C;IAE3C,MAAM,gCAAgC,GAAG,IAAA,yDAAsC,EAAC,UAAU,CAAC,CAAA;IAC3F,MAAM,yBAAyB,GAAG,IAAA,mDAA+B,EAAC,UAAU,CAAC,CAAA;IAC7E,OAAO;QACL,CAAC,oBAAU,CAAC,OAAO,CAAC,EAAE,IAAA,kCAAuB,EAAC,UAAU,CAAC;QACzD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,8BAAqB,EAAC,UAAU,CAAC;QACrD,CAAC,oBAAU,CAAC,QAAQ,CAAC,EAAE,IAAA,gCAAwB,EAC7C,UAAU,EACV,gCAAgC,EAChC,yBAAyB,CAC1B;QACD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,8BAAqB,EAAC,UAAU,CAAC;QACrD,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,IAAA,6BAAqB,EAAC,UAAU,EAAE,gCAAgC,EAAE,yBAAyB,CAAC;QAClH,CAAC,oBAAU,CAAC,OAAO,CAAC,EAAE,IAAA,iCAAuB,EAAC,UAAU,CAAC;KAC1D,CAAA;AACH,CAAC;AAjBD,oFAiBC"}
@@ -0,0 +1,3 @@
1
+ import { SubgraphAccessCheckerComponents } from '../../../types';
2
+ export declare function createOutfitsValidateFn(components: Pick<SubgraphAccessCheckerComponents, 'theGraphClient' | 'externalCalls'>): import("../../../types").ValidateFn;
3
+ //# sourceMappingURL=outfits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outfits.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/outfits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAA;AAIhE,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,IAAI,CAAC,+BAA+B,EAAE,gBAAgB,GAAG,eAAe,CAAC,uCAMtF"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createOutfitsValidateFn = void 0;
4
+ const validations_1 = require("../../validations");
5
+ const outfits_1 = require("../common/outfits");
6
+ function createOutfitsValidateFn(components) {
7
+ return (0, validations_1.validateAll)((0, outfits_1.createOutfitsWearablesOwnershipValidateFn)(components, components.theGraphClient), (0, outfits_1.createOutfitsNamesOwnershipValidateFn)(components, components.theGraphClient));
8
+ }
9
+ exports.createOutfitsValidateFn = createOutfitsValidateFn;
10
+ //# sourceMappingURL=outfits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outfits.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/outfits.ts"],"names":[],"mappings":";;;AACA,mDAA+C;AAC/C,+CAAoH;AAEpH,SAAgB,uBAAuB,CACrC,UAAqF;IAErF,OAAO,IAAA,yBAAW,EAChB,IAAA,mDAAyC,EAAC,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC,EAChF,IAAA,+CAAqC,EAAC,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC,CAC7E,CAAA;AACH,CAAC;AAPD,0DAOC"}
@@ -1,5 +1,3 @@
1
- import { SubgraphAccessCheckerComponents, ValidateFn } from '../../../types';
2
- export declare function createNamesOwnershipValidateFn({ externalCalls, theGraphClient }: Pick<SubgraphAccessCheckerComponents, 'externalCalls' | 'theGraphClient'>): ValidateFn;
3
- export declare function createItemOwnershipValidateFn({ externalCalls, theGraphClient }: Pick<SubgraphAccessCheckerComponents, 'externalCalls' | 'theGraphClient'>): ValidateFn;
4
- export declare function createProfileValidateFn(components: Pick<SubgraphAccessCheckerComponents, 'theGraphClient' | 'externalCalls'>): ValidateFn;
1
+ import { SubgraphAccessCheckerComponents } from '../../../types';
2
+ export declare function createProfileValidateFn(components: Pick<SubgraphAccessCheckerComponents, 'theGraphClient' | 'externalCalls'>): import("../../../types").ValidateFn;
5
3
  //# sourceMappingURL=profiles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/profiles.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,+BAA+B,EAC/B,UAAU,EAGX,MAAM,gBAAgB,CAAA;AAMvB,wBAAgB,8BAA8B,CAAC,EAC7C,aAAa,EACb,cAAc,EACf,EAAE,IAAI,CAAC,+BAA+B,EAAE,eAAe,GAAG,gBAAgB,CAAC,GAAG,UAAU,CAkBxF;AAED,wBAAgB,6BAA6B,CAAC,EAC5C,aAAa,EACb,cAAc,EACf,EAAE,IAAI,CAAC,+BAA+B,EAAE,eAAe,GAAG,gBAAgB,CAAC,GAAG,UAAU,CAmExF;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,IAAI,CAAC,+BAA+B,EAAE,gBAAgB,GAAG,eAAe,CAAC,cAOtF"}
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAA;AAIhE,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,IAAI,CAAC,+BAA+B,EAAE,gBAAgB,GAAG,eAAe,CAAC,uCAMtF"}
@@ -1,84 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createProfileValidateFn = exports.createItemOwnershipValidateFn = exports.createNamesOwnershipValidateFn = void 0;
4
- const urn_resolver_1 = require("@dcl/urn-resolver");
5
- const types_1 = require("../../../types");
6
- const profile_1 = require("../../profile");
7
- const timestamps_1 = require("../../timestamps");
3
+ exports.createProfileValidateFn = void 0;
8
4
  const validations_1 = require("../../validations");
9
- const profiles_1 = require("../common/profiles");
10
- function createNamesOwnershipValidateFn({ externalCalls, theGraphClient }) {
11
- async function validateFn(deployment) {
12
- const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
13
- const names = deployment.entity.metadata.avatars
14
- .filter((avatar) => avatar.hasClaimedName)
15
- .map((avatar) => avatar.name)
16
- .filter((name) => name && name.trim().length > 0);
17
- const namesCheckResult = await theGraphClient.ownsNamesAtTimestamp(ethAddress, names, deployment.entity.timestamp);
18
- if (!namesCheckResult.result)
19
- return (0, types_1.validationFailed)(`The following names (${namesCheckResult.failing?.join(', ')}) are not owned by the address ${ethAddress.toLowerCase()}).`);
20
- return types_1.OK;
21
- }
22
- return (0, validations_1.validateAfterADR75)(validateFn);
23
- }
24
- exports.createNamesOwnershipValidateFn = createNamesOwnershipValidateFn;
25
- function createItemOwnershipValidateFn({ externalCalls, theGraphClient }) {
26
- async function sanitizeUrn(urn) {
27
- if (!urn.startsWith('dcl://')) {
28
- return urn;
29
- }
30
- const parsed = await (0, urn_resolver_1.parseUrn)(urn);
31
- return parsed?.uri?.toString();
32
- }
33
- async function allOnChainWearableUrns(entity) {
34
- const allWearablesInProfilePromises = [];
35
- for (const avatar of entity.metadata.avatars) {
36
- for (const wearableId of avatar.avatar.wearables) {
37
- const isBaseAvatar = wearableId.includes('base-avatars');
38
- if (!isBaseAvatar && !(0, profile_1.isOldEmote)(wearableId)) {
39
- allWearablesInProfilePromises.push(sanitizeUrn(wearableId));
40
- }
41
- }
42
- }
43
- return (await Promise.all(allWearablesInProfilePromises)).filter((wearableId) => !!wearableId);
44
- }
45
- async function allEmoteUrns(entity) {
46
- const allEmotesInProfilePromises = [];
47
- const allAvatars = entity.metadata?.avatars ?? [];
48
- for (const avatar of allAvatars) {
49
- const allEmotes = avatar.avatar.emotes ?? [];
50
- for (const { urn } of allEmotes) {
51
- if (!(0, profile_1.isOldEmote)(urn)) {
52
- allEmotesInProfilePromises.push(sanitizeUrn(urn));
53
- }
54
- }
55
- }
56
- return (await Promise.all(allEmotesInProfilePromises)).filter((wearableId) => !!wearableId);
57
- }
58
- return async function validateFn(deployment) {
59
- const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
60
- const depoymentTimestamp = deployment.entity.timestamp;
61
- const itemUrns = [];
62
- if (depoymentTimestamp >= timestamps_1.ADR_75_TIMESTAMP) {
63
- for (const urn of await allOnChainWearableUrns(deployment.entity)) {
64
- itemUrns.push(urn);
65
- }
66
- }
67
- if (depoymentTimestamp >= timestamps_1.ADR_74_TIMESTAMP) {
68
- for (const urn of await allEmoteUrns(deployment.entity)) {
69
- itemUrns.push(urn);
70
- }
71
- }
72
- const itemsOwnershipResult = await theGraphClient.ownsItemsAtTimestamp(ethAddress, itemUrns, deployment.entity.timestamp);
73
- if (!itemsOwnershipResult.result) {
74
- return (0, types_1.validationFailed)(`The following items (${itemsOwnershipResult.failing?.join(', ')}) are not owned by the address ${ethAddress.toLowerCase()}).`);
75
- }
76
- return types_1.OK;
77
- };
78
- }
79
- exports.createItemOwnershipValidateFn = createItemOwnershipValidateFn;
5
+ const profile_1 = require("../common/profile");
80
6
  function createProfileValidateFn(components) {
81
- return (0, validations_1.validateAll)((0, profiles_1.createPointerValidateFn)(components), createNamesOwnershipValidateFn(components), createItemOwnershipValidateFn(components));
7
+ return (0, validations_1.validateAll)((0, profile_1.createNamesOwnershipValidateFn)(components, components.theGraphClient), (0, profile_1.createItemOwnershipValidateFn)(components, components.theGraphClient));
82
8
  }
83
9
  exports.createProfileValidateFn = createProfileValidateFn;
84
10
  //# sourceMappingURL=profiles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/profiles.ts"],"names":[],"mappings":";;;AACA,mDAA+C;AAC/C,+CAAiG;AAEjG,SAAgB,uBAAuB,CACrC,UAAqF;IAErF,OAAO,IAAA,yBAAW,EAChB,IAAA,wCAA8B,EAAC,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC,EACrE,IAAA,uCAA6B,EAAC,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC,CACrE,CAAA;AACH,CAAC;AAPD,0DAOC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scenes.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/scenes.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EAGpB,+BAA+B,EAC/B,kBAAkB,EACnB,MAAM,gBAAgB,CAAA;AAgCvB;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,aAAa,EACb,SAAS,EACT,IAAI,EACJ,cAAc,EACf,EAAE,IAAI,CAAC,+BAA+B,EAAE,eAAe,GAAG,MAAM,GAAG,WAAW,GAAG,gBAAgB,CAAC,gBAKpD,oBAAoB,KAAG,QAAQ,kBAAkB,CAAC,CAgThG"}
1
+ {"version":3,"file":"scenes.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/scenes.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EAGpB,+BAA+B,EAC/B,kBAAkB,EACnB,MAAM,gBAAgB,CAAA;AAgCvB;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,aAAa,EACb,SAAS,EACT,IAAI,EACJ,cAAc,EACf,EAAE,IAAI,CAAC,+BAA+B,EAAE,eAAe,GAAG,MAAM,GAAG,WAAW,GAAG,gBAAgB,CAAC,gBAQpD,oBAAoB,KAAG,QAAQ,kBAAkB,CAAC,CA8ThG"}
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createSceneValidateFn = void 0;
7
7
  const ms_1 = __importDefault(require("ms"));
8
+ const p_queue_1 = __importDefault(require("p-queue"));
8
9
  const types_1 = require("../../../types");
9
10
  /**
10
11
  * Checks if the given address has access to the given parcel at the given timestamp.
@@ -13,6 +14,9 @@ const types_1 = require("../../../types");
13
14
  function createSceneValidateFn({ externalCalls, subGraphs, logs, tokenAddresses }) {
14
15
  const logger = logs.getLogger('scenes access validator');
15
16
  const SCENE_LOOKBACK_TIME = (0, ms_1.default)('5m');
17
+ const SCENE_VALIDATIONS_CONCURRENCY = process.env.SCENE_VALIDATIONS_CONCURRENCY
18
+ ? parseInt(process.env.SCENE_VALIDATIONS_CONCURRENCY)
19
+ : 10;
16
20
  return async function validateFn(deployment) {
17
21
  const getAuthorizations = async (owner, operator, timestamp, tokenAddress) => {
18
22
  const query = `
@@ -213,27 +217,36 @@ function createSceneValidateFn({ externalCalls, subGraphs, logs, tokenAddresses
213
217
  const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
214
218
  const errors = [];
215
219
  const lowerCasePointers = pointers.map((pointer) => pointer.toLowerCase());
220
+ const queue = new p_queue_1.default({ concurrency: SCENE_VALIDATIONS_CONCURRENCY });
221
+ const controller = new AbortController();
216
222
  for (const pointer of lowerCasePointers) {
217
223
  const pointerParts = pointer.split(',');
218
224
  if (pointerParts.length === 2) {
219
225
  const x = parseInt(pointerParts[0], 10);
220
226
  const y = parseInt(pointerParts[1], 10);
221
- try {
222
- // Check that the address has access (we check both the present and the 5 min into the past to avoid synchronization issues in the blockchain)
223
- const hasAccess = (await checkParcelAccess(x, y, timestamp, ethAddress, externalCalls)) ||
224
- (await checkParcelAccess(x, y, timestamp - SCENE_LOOKBACK_TIME, ethAddress, externalCalls));
225
- if (!hasAccess) {
226
- errors.push(`The provided Eth Address does not have access to the following parcel: (${x},${y})`);
227
+ // Check that the address has access (we check both the present and the 5 min into the past to avoid synchronization issues in the blockchain)
228
+ queue
229
+ .add(async () => {
230
+ if (!controller.signal.aborted) {
231
+ const hasAccess = (await checkParcelAccess(x, y, timestamp, ethAddress, externalCalls)) ||
232
+ (await checkParcelAccess(x, y, timestamp - SCENE_LOOKBACK_TIME, ethAddress, externalCalls));
233
+ if (!hasAccess) {
234
+ errors.push(`The provided Eth Address does not have access to the following parcel: (${x},${y})`);
235
+ controller.abort();
236
+ }
227
237
  }
228
- }
229
- catch (e) {
230
- errors.push(`The provided Eth Address does not have access to the following parcel: (${x},${y}). ${e}`);
231
- }
238
+ })
239
+ .catch((error) => {
240
+ errors.push(`The provided Eth Address does not have access to the following parcel: (${x},${y}). ${error}`);
241
+ controller.abort();
242
+ });
232
243
  }
233
244
  else {
234
245
  errors.push(`Scene pointers should only contain two integers separated by a comma, for example (10,10) or (120,-45). Invalid pointer: ${pointer}`);
246
+ controller.abort();
235
247
  }
236
248
  }
249
+ await queue.onIdle();
237
250
  return (0, types_1.fromErrors)(...errors);
238
251
  };
239
252
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scenes.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/scenes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scenes.js","sourceRoot":"","sources":["../../../../src/validations/access/subgraph/scenes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-schema.d.ts","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,UAAU,EAAwC,MAAM,UAAU,CAAA;AAKrG;;;GAGG;AAEH,eAAO,MAAM,wBAAwB,YAUnC,CAAA;AA2BF;;GAEG;AACH,eAAO,MAAM,8CAA8C,YAW1D,CAAA;AAED,eAAO,MAAM,kBAAkB,YAAwF,CAAA"}
1
+ {"version":3,"file":"metadata-schema.d.ts","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,UAAU,EAAwC,MAAM,UAAU,CAAA;AAKrG;;;GAGG;AAEH,eAAO,MAAM,wBAAwB,YAUnC,CAAA;AA4BF;;GAEG;AACH,eAAO,MAAM,8CAA8C,YAW1D,CAAA;AAED,eAAO,MAAM,kBAAkB,YAAwF,CAAA"}
@@ -33,7 +33,8 @@ const ADRMetadataVersionTimelines = {
33
33
  scene: [],
34
34
  profile: [],
35
35
  wearable: [],
36
- store: []
36
+ store: [],
37
+ outfits: []
37
38
  };
38
39
  function validateIfEmote(validateFn) {
39
40
  return (0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.EMOTE, validateFn);
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-schema.js","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AACzC,oCAAqG;AACrG,mCAA0C;AAC1C,6CAA+C;AAC/C,+CAA0G;AAE1G;;;GAGG;AAEU,QAAA,wBAAwB,GAAG,IAAA,gCAAkB,EAAC,KAAK,UAAU,UAAU,CAClF,UAAgC;IAEhC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,MAAM,CAAA;IAC5C,MAAM,SAAS,GAAG,wBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAA;IACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;QACvB,OAAO,UAAE,CAAA;KACV;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IACjE,OAAO,IAAA,wBAAgB,EAAC,sCAAsC,UAAU,CAAC,MAAM,CAAC,IAAI,iBAAiB,EAAE,GAAG,MAAM,CAAC,CAAA;AACnH,CAAC,CAAC,CAAA;AAOF;;;;;;;;GAQG;AACH,MAAM,2BAA2B,GAA8B;IAC7D,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,6BAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;IAClG,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,EAAE;CACV,CAAA;AAED,SAAS,eAAe,CAAC,UAAsB;IAC7C,OAAO,IAAA,mCAAqB,EAAC,oBAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;AAC5D,CAAC;AACD;;GAEG;AACU,QAAA,8CAA8C,GAAG,eAAe,CAC3E,IAAA,gCAAkB,EAAC,KAAK,UAAU,UAAU,CAAC,UAAgC;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAChC,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC9G,MAAM,iBAAiB,GAAG,GAAG,MAAM,CAAC,IAAI,UAAU,SAAS,EAAE,CAAA;IAC7D,OAAO,GAAG,iBAAiB,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,QAAQ;QACzD,CAAC,CAAC,UAAE;QACJ,CAAC,CAAC,IAAA,wBAAgB,EACd,wDAAwD,iBAAiB,eAAe,UAAU,CAAC,MAAM,CAAC,QAAQ,GAAG,CACtH,CAAA;AACP,CAAC,CAAC,CACH,CAAA;AAEY,QAAA,kBAAkB,GAAG,IAAA,yBAAW,EAAC,gCAAwB,EAAE,sDAA8C,CAAC,CAAA"}
1
+ {"version":3,"file":"metadata-schema.js","sourceRoot":"","sources":["../../src/validations/metadata-schema.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AACzC,oCAAqG;AACrG,mCAA0C;AAC1C,6CAA+C;AAC/C,+CAA0G;AAE1G;;;GAGG;AAEU,QAAA,wBAAwB,GAAG,IAAA,gCAAkB,EAAC,KAAK,UAAU,UAAU,CAClF,UAAgC;IAEhC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,MAAM,CAAA;IAC5C,MAAM,SAAS,GAAG,wBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAA;IACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;QACvB,OAAO,UAAE,CAAA;KACV;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IACjE,OAAO,IAAA,wBAAgB,EAAC,sCAAsC,UAAU,CAAC,MAAM,CAAC,IAAI,iBAAiB,EAAE,GAAG,MAAM,CAAC,CAAA;AACnH,CAAC,CAAC,CAAA;AAOF;;;;;;;;GAQG;AACH,MAAM,2BAA2B,GAA8B;IAC7D,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,6BAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;IAClG,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;CACZ,CAAA;AAED,SAAS,eAAe,CAAC,UAAsB;IAC7C,OAAO,IAAA,mCAAqB,EAAC,oBAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;AAC5D,CAAC;AACD;;GAEG;AACU,QAAA,8CAA8C,GAAG,eAAe,CAC3E,IAAA,gCAAkB,EAAC,KAAK,UAAU,UAAU,CAAC,UAAgC;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAChC,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC9G,MAAM,iBAAiB,GAAG,GAAG,MAAM,CAAC,IAAI,UAAU,SAAS,EAAE,CAAA;IAC7D,OAAO,GAAG,iBAAiB,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,QAAQ;QACzD,CAAC,CAAC,UAAE;QACJ,CAAC,CAAC,IAAA,wBAAgB,EACd,wDAAwD,iBAAiB,eAAe,UAAU,CAAC,MAAM,CAAC,QAAQ,GAAG,CACtH,CAAA;AACP,CAAC,CAAC,CACH,CAAA;AAEY,QAAA,kBAAkB,GAAG,IAAA,yBAAW,EAAC,gCAAwB,EAAE,sDAA8C,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { ContentValidatorComponents, DeploymentToValidate, ValidateFn, ValidationResponse } from '../types';
2
+ export declare function createOutfitsPointerValidateFn(components: Pick<ContentValidatorComponents, 'externalCalls'>): ValidateFn;
3
+ export declare function outfitSlotsAreNotRepeatedValidateFn(deployment: DeploymentToValidate): Promise<ValidationResponse>;
4
+ export declare function outfitSlotsAreBetween0and9inclusiveValidateFn(deployment: DeploymentToValidate): Promise<ValidationResponse>;
5
+ export declare function outfitsNumberOfNamesForExtraSlotsIsCorrectValidateFn(deployment: DeploymentToValidate): Promise<ValidationResponse>;
6
+ export declare function createOutfitsValidateFn(components: ContentValidatorComponents): ValidateFn;
7
+ //# sourceMappingURL=outfits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outfits.d.ts","sourceRoot":"","sources":["../../src/validations/outfits.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EAEpB,UAAU,EACV,kBAAkB,EAEnB,MAAM,UAAU,CAAA;AAGjB,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,GAC5D,UAAU,CA4BZ;AAED,wBAAsB,mCAAmC,CACvD,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAQ7B;AAED,wBAAsB,6CAA6C,CACjE,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAO7B;AAED,wBAAsB,oDAAoD,CACxE,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAW7B;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,0BAA0B,GAAG,UAAU,CAS1F"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createOutfitsValidateFn = exports.outfitsNumberOfNamesForExtraSlotsIsCorrectValidateFn = exports.outfitSlotsAreBetween0and9inclusiveValidateFn = exports.outfitSlotsAreNotRepeatedValidateFn = exports.createOutfitsPointerValidateFn = void 0;
4
+ const schemas_1 = require("@dcl/schemas");
5
+ const types_1 = require("../types");
6
+ const validations_1 = require("./validations");
7
+ function createOutfitsPointerValidateFn(components) {
8
+ return async function validateFn(deployment) {
9
+ const pointers = deployment.entity.pointers;
10
+ const ethAddress = components.externalCalls.ownerAddress(deployment.auditInfo);
11
+ if (pointers.length !== 1) {
12
+ return (0, types_1.validationFailed)(`Only one pointer is allowed when you create an Outfits. Received: ${pointers}`);
13
+ }
14
+ const pointer = pointers[0].toLowerCase();
15
+ const pointerParts = pointer.split(':');
16
+ if (pointerParts.length !== 2) {
17
+ return (0, types_1.validationFailed)('The pointer is not valid. It should be in the format: <address>:outfits');
18
+ }
19
+ else {
20
+ const pointerAddress = pointerParts[0];
21
+ if (pointerParts[1] !== 'outfits') {
22
+ return (0, types_1.validationFailed)('The pointer is not valid. It should be in the format: <address>:outfits');
23
+ }
24
+ else if (!schemas_1.EthAddress.validate(pointerAddress)) {
25
+ return (0, types_1.validationFailed)('The address of the given pointer is not a valid ethereum address.');
26
+ }
27
+ else if (pointerAddress !== ethAddress.toLowerCase()) {
28
+ return (0, types_1.validationFailed)(`You can only alter your own outfits. The address of the pointer and the signer address are different (pointer:${pointer} signer: ${ethAddress.toLowerCase()}).`);
29
+ }
30
+ }
31
+ return types_1.OK;
32
+ };
33
+ }
34
+ exports.createOutfitsPointerValidateFn = createOutfitsPointerValidateFn;
35
+ async function outfitSlotsAreNotRepeatedValidateFn(deployment) {
36
+ const outfits = deployment.entity.metadata;
37
+ const usedSlots = outfits.outfits.map((outfit) => outfit.slot);
38
+ const uniqueSlots = new Set(usedSlots);
39
+ if (usedSlots.length !== uniqueSlots.size) {
40
+ return (0, types_1.validationFailed)('Outfits slots are repeated');
41
+ }
42
+ return types_1.OK;
43
+ }
44
+ exports.outfitSlotsAreNotRepeatedValidateFn = outfitSlotsAreNotRepeatedValidateFn;
45
+ async function outfitSlotsAreBetween0and9inclusiveValidateFn(deployment) {
46
+ const outfits = deployment.entity.metadata;
47
+ const nonValidSlots = outfits.outfits.map((outfit) => outfit.slot).filter((slot) => slot < 0 || slot > 9);
48
+ if (nonValidSlots.length > 0) {
49
+ return (0, types_1.validationFailed)('Outfits slots are invalid, they must be between 0 and 9 inclusive');
50
+ }
51
+ return types_1.OK;
52
+ }
53
+ exports.outfitSlotsAreBetween0and9inclusiveValidateFn = outfitSlotsAreBetween0and9inclusiveValidateFn;
54
+ async function outfitsNumberOfNamesForExtraSlotsIsCorrectValidateFn(deployment) {
55
+ const outfits = deployment.entity.metadata;
56
+ const extraOutfits = outfits.outfits.filter((outfit) => outfit.slot > 4);
57
+ const expectedNumberOfNames = extraOutfits.length;
58
+ const numberOfUniqueNames = new Set(outfits.namesForExtraSlots).size;
59
+ if (numberOfUniqueNames !== expectedNumberOfNames) {
60
+ return (0, types_1.validationFailed)(`There must be exactly one name for each extra slot. Provided ${numberOfUniqueNames} unique names but expected ${expectedNumberOfNames}`);
61
+ }
62
+ return types_1.OK;
63
+ }
64
+ exports.outfitsNumberOfNamesForExtraSlotsIsCorrectValidateFn = outfitsNumberOfNamesForExtraSlotsIsCorrectValidateFn;
65
+ function createOutfitsValidateFn(components) {
66
+ return (0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.OUTFITS, (0, validations_1.validateAll)(createOutfitsPointerValidateFn(components), outfitSlotsAreNotRepeatedValidateFn, outfitsNumberOfNamesForExtraSlotsIsCorrectValidateFn));
67
+ }
68
+ exports.createOutfitsValidateFn = createOutfitsValidateFn;
69
+ //# sourceMappingURL=outfits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outfits.js","sourceRoot":"","sources":["../../src/validations/outfits.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export declare const wearableUrnsValidateFn: ValidateFn;
5
5
  export declare const emoteUrnsValidateFn: ValidateFn;
6
6
  export declare const profileMustHaveEmotesValidateFn: ValidateFn;
7
7
  export declare function profileSlotsAreNotRepeatedValidateFn(deployment: DeploymentToValidate): Promise<ValidationResponse>;
8
+ export declare function createPointerValidateFn(components: Pick<ContentValidatorComponents, 'externalCalls'>): ValidateFn;
8
9
  export declare const profileWearablesNotRepeatedValidateFn: ValidateFn;
9
10
  export declare function createProfileValidateFn(components: ContentValidatorComponents): ValidateFn;
10
11
  //# sourceMappingURL=profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EAEpB,UAAU,EAEV,kBAAkB,EACnB,MAAM,UAAU,CAAA;AAajB,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,OAAqC,CAAA;AAEnF,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,0BAA0B,cAgCnF;AAED,eAAO,MAAM,sBAAsB,YAgBjC,CAAA;AAEF,eAAO,MAAM,mBAAmB,YAmB9B,CAAA;AAYF,eAAO,MAAM,+BAA+B,YAO1C,CAAA;AAEF,wBAAsB,oCAAoC,CACxD,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAW7B;AAED,eAAO,MAAM,qCAAqC,YAWhD,CAAA;AAEF,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,0BAA0B,GAAG,UAAU,CAgB1F"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EAEpB,UAAU,EACV,kBAAkB,EAEnB,MAAM,UAAU,CAAA;AAajB,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,OAAqC,CAAA;AAEnF,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,0BAA0B,cAgCnF;AAED,eAAO,MAAM,sBAAsB,YAgBjC,CAAA;AAEF,eAAO,MAAM,mBAAmB,YAmB9B,CAAA;AAYF,eAAO,MAAM,+BAA+B,YAO1C,CAAA;AAEF,wBAAsB,oCAAoC,CACxD,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAW7B;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,GAAG,UAAU,CAuBjH;AAED,eAAO,MAAM,qCAAqC,YAWhD,CAAA;AAEF,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,0BAA0B,GAAG,UAAU,CAiB1F"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createProfileValidateFn = exports.profileWearablesNotRepeatedValidateFn = exports.profileSlotsAreNotRepeatedValidateFn = exports.profileMustHaveEmotesValidateFn = exports.emoteUrnsValidateFn = exports.wearableUrnsValidateFn = exports.createFaceThumbnailValidateFn = exports.isOldEmote = void 0;
6
+ exports.createProfileValidateFn = exports.profileWearablesNotRepeatedValidateFn = exports.createPointerValidateFn = exports.profileSlotsAreNotRepeatedValidateFn = exports.profileMustHaveEmotesValidateFn = exports.emoteUrnsValidateFn = exports.wearableUrnsValidateFn = exports.createFaceThumbnailValidateFn = exports.isOldEmote = void 0;
7
7
  const schemas_1 = require("@dcl/schemas");
8
8
  const urn_resolver_1 = require("@dcl/urn-resolver");
9
9
  const sharp_1 = __importDefault(require("sharp"));
@@ -107,6 +107,28 @@ async function profileSlotsAreNotRepeatedValidateFn(deployment) {
107
107
  return types_1.OK;
108
108
  }
109
109
  exports.profileSlotsAreNotRepeatedValidateFn = profileSlotsAreNotRepeatedValidateFn;
110
+ function createPointerValidateFn(components) {
111
+ return async function validateFn(deployment) {
112
+ const pointers = deployment.entity.pointers;
113
+ const ethAddress = components.externalCalls.ownerAddress(deployment.auditInfo);
114
+ if (pointers.length !== 1) {
115
+ return (0, types_1.validationFailed)(`Only one pointer is allowed when you create a Profile. Received: ${pointers}`);
116
+ }
117
+ const pointer = pointers[0].toLowerCase();
118
+ if (pointer.startsWith('default')) {
119
+ if (!components.externalCalls.isAddressOwnedByDecentraland(ethAddress))
120
+ return (0, types_1.validationFailed)(`Only Decentraland can add or modify default profiles`);
121
+ }
122
+ else if (!schemas_1.EthAddress.validate(pointer)) {
123
+ return (0, types_1.validationFailed)(`The given pointer is not a valid ethereum address.`);
124
+ }
125
+ else if (pointer !== ethAddress.toLowerCase()) {
126
+ return (0, types_1.validationFailed)(`You can only alter your own profile. The pointer address and the signer address are different (pointer:${pointer} signer: ${ethAddress.toLowerCase()}).`);
127
+ }
128
+ return types_1.OK;
129
+ };
130
+ }
131
+ exports.createPointerValidateFn = createPointerValidateFn;
110
132
  exports.profileWearablesNotRepeatedValidateFn = (0, validations_1.validateAfterADR232)(async function (deployment) {
111
133
  const allAvatars = deployment.entity.metadata?.avatars ?? [];
112
134
  for (const avatar of allAvatars) {
@@ -122,7 +144,7 @@ function createProfileValidateFn(components) {
122
144
  * Validate that given profile deployment includes the face256 file with the correct size
123
145
  * * @public
124
146
  */
125
- return (0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.PROFILE, (0, validations_1.validateAll)(createFaceThumbnailValidateFn(components), exports.wearableUrnsValidateFn, exports.emoteUrnsValidateFn, exports.profileMustHaveEmotesValidateFn, profileSlotsAreNotRepeatedValidateFn, exports.profileWearablesNotRepeatedValidateFn));
147
+ return (0, validations_1.validateIfTypeMatches)(schemas_1.EntityType.PROFILE, (0, validations_1.validateAll)(createFaceThumbnailValidateFn(components), exports.wearableUrnsValidateFn, exports.emoteUrnsValidateFn, exports.profileMustHaveEmotesValidateFn, profileSlotsAreNotRepeatedValidateFn, createPointerValidateFn(components), exports.profileWearablesNotRepeatedValidateFn));
126
148
  }
127
149
  exports.createProfileValidateFn = createProfileValidateFn;
128
150
  //# sourceMappingURL=profile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/validations/profile.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": "4.7.1",
3
+ "version": "4.7.2-5045749028.commit-c64f59b",
4
4
  "description": "Catalyst content validations",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -54,16 +54,17 @@
54
54
  "dependencies": {
55
55
  "@dcl/block-indexer": "^1.1.1",
56
56
  "@dcl/content-hash-tree": "^1.1.4",
57
+ "@dcl/schemas": "^7.0.0",
57
58
  "@dcl/hashing": "^2.0.0",
58
- "@dcl/schemas": "6.19.0",
59
59
  "@dcl/urn-resolver": "^2.0.3",
60
60
  "@well-known-components/interfaces": "^1.3.0",
61
61
  "@well-known-components/thegraph-component": "^1.4.3",
62
62
  "ms": "^2.1.3",
63
+ "p-queue": "^6.6.2",
63
64
  "sharp": "^0.32.0"
64
65
  },
65
66
  "files": [
66
67
  "dist"
67
68
  ],
68
- "commit": "8a26eb666fd69314365ee8ee4ab6cc2491bc2020"
69
+ "commit": "c64f59b649448366b571298b1a105a228d1e1538"
69
70
  }
@@ -1,3 +0,0 @@
1
- import { ContentValidatorComponents, ValidateFn } from '../../../types';
2
- export declare function createPointerValidateFn(components: Pick<ContentValidatorComponents, 'externalCalls'>): ValidateFn;
3
- //# sourceMappingURL=profiles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/common/profiles.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAG1B,UAAU,EAGX,MAAM,gBAAgB,CAAA;AAEvB,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,GAAG,UAAU,CAuBjH"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPointerValidateFn = void 0;
4
- const schemas_1 = require("@dcl/schemas");
5
- const types_1 = require("../../../types");
6
- function createPointerValidateFn(components) {
7
- return async function validateFn(deployment) {
8
- const pointers = deployment.entity.pointers;
9
- const ethAddress = components.externalCalls.ownerAddress(deployment.auditInfo);
10
- if (pointers.length !== 1) {
11
- return (0, types_1.validationFailed)(`Only one pointer is allowed when you create a Profile. Received: ${pointers}`);
12
- }
13
- const pointer = pointers[0].toLowerCase();
14
- if (pointer.startsWith('default')) {
15
- if (!components.externalCalls.isAddressOwnedByDecentraland(ethAddress))
16
- return (0, types_1.validationFailed)(`Only Decentraland can add or modify default profiles`);
17
- }
18
- else if (!schemas_1.EthAddress.validate(pointer)) {
19
- return (0, types_1.validationFailed)(`The given pointer is not a valid ethereum address.`);
20
- }
21
- else if (pointer !== ethAddress.toLowerCase()) {
22
- return (0, types_1.validationFailed)(`You can only alter your own profile. The pointer address and the signer address are different (pointer:${pointer} signer: ${ethAddress.toLowerCase()}).`);
23
- }
24
- return types_1.OK;
25
- };
26
- }
27
- exports.createPointerValidateFn = createPointerValidateFn;
28
- //# sourceMappingURL=profiles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../../src/validations/access/common/profiles.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AACzC,0CAOuB;AAEvB,SAAgB,uBAAuB,CAAC,UAA6D;IACnG,OAAO,KAAK,UAAU,UAAU,CAAC,UAAgC;QAC/D,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAA;QAC3C,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAE9E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,OAAO,IAAA,wBAAgB,EAAC,oEAAoE,QAAQ,EAAE,CAAC,CAAA;SACxG;QAED,MAAM,OAAO,GAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;QAEjD,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YACjC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,4BAA4B,CAAC,UAAU,CAAC;gBACpE,OAAO,IAAA,wBAAgB,EAAC,sDAAsD,CAAC,CAAA;SAClF;aAAM,IAAI,CAAC,oBAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACxC,OAAO,IAAA,wBAAgB,EAAC,oDAAoD,CAAC,CAAA;SAC9E;aAAM,IAAI,OAAO,KAAK,UAAU,CAAC,WAAW,EAAE,EAAE;YAC/C,OAAO,IAAA,wBAAgB,EACrB,0GAA0G,OAAO,YAAY,UAAU,CAAC,WAAW,EAAE,IAAI,CAC1J,CAAA;SACF;QACD,OAAO,UAAE,CAAA;IACX,CAAC,CAAA;AACH,CAAC;AAvBD,0DAuBC"}