@dcl/content-validator 4.7.1 → 4.7.2-4996656097.commit-94c5f99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/types.d.ts +8 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/validations/ADR51.d.ts +2 -2
- package/dist/validations/ADR51.d.ts.map +1 -1
- package/dist/validations/ADR51.js +4 -0
- package/dist/validations/ADR51.js.map +1 -1
- package/dist/validations/access/common/outfits.d.ts +4 -0
- package/dist/validations/access/common/outfits.d.ts.map +1 -0
- package/dist/validations/access/common/outfits.js +39 -0
- package/dist/validations/access/common/outfits.js.map +1 -0
- package/dist/validations/access/common/profile.d.ts +4 -0
- package/dist/validations/access/common/profile.d.ts.map +1 -0
- package/dist/validations/access/common/profile.js +79 -0
- package/dist/validations/access/common/profile.js.map +1 -0
- package/dist/validations/access/on-chain/index.d.ts.map +1 -1
- package/dist/validations/access/on-chain/index.js +3 -1
- package/dist/validations/access/on-chain/index.js.map +1 -1
- package/dist/validations/access/on-chain/outfits.d.ts +3 -0
- package/dist/validations/access/on-chain/outfits.d.ts.map +1 -0
- package/dist/validations/access/on-chain/outfits.js +10 -0
- package/dist/validations/access/on-chain/outfits.js.map +1 -0
- package/dist/validations/access/on-chain/profiles.d.ts +2 -4
- package/dist/validations/access/on-chain/profiles.d.ts.map +1 -1
- package/dist/validations/access/on-chain/profiles.js +3 -77
- package/dist/validations/access/on-chain/profiles.js.map +1 -1
- package/dist/validations/access/subgraph/index.d.ts.map +1 -1
- package/dist/validations/access/subgraph/index.js +3 -1
- package/dist/validations/access/subgraph/index.js.map +1 -1
- package/dist/validations/access/subgraph/outfits.d.ts +3 -0
- package/dist/validations/access/subgraph/outfits.d.ts.map +1 -0
- package/dist/validations/access/subgraph/outfits.js +10 -0
- package/dist/validations/access/subgraph/outfits.js.map +1 -0
- package/dist/validations/access/subgraph/profiles.d.ts +2 -4
- package/dist/validations/access/subgraph/profiles.d.ts.map +1 -1
- package/dist/validations/access/subgraph/profiles.js +3 -77
- package/dist/validations/access/subgraph/profiles.js.map +1 -1
- package/dist/validations/metadata-schema.d.ts.map +1 -1
- package/dist/validations/metadata-schema.js +2 -1
- package/dist/validations/metadata-schema.js.map +1 -1
- package/dist/validations/outfits.d.ts +7 -0
- package/dist/validations/outfits.d.ts.map +1 -0
- package/dist/validations/outfits.js +69 -0
- package/dist/validations/outfits.js.map +1 -0
- package/dist/validations/profile.d.ts +1 -0
- package/dist/validations/profile.d.ts.map +1 -1
- package/dist/validations/profile.js +24 -2
- package/dist/validations/profile.js.map +1 -1
- package/package.json +3 -3
- package/dist/validations/access/common/profiles.d.ts +0 -3
- package/dist/validations/access/common/profiles.d.ts.map +0 -1
- package/dist/validations/access/common/profiles.js +0 -28
- package/dist/validations/access/common/profiles.js.map +0 -1
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
|
/**
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ADR51.js","sourceRoot":"","sources":["../../src/validations/ADR51.ts"],"names":[],"mappings":";;;AAAA,
|
|
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;
|
|
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;
|
|
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 @@
|
|
|
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
|
|
2
|
-
export declare function
|
|
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":"
|
|
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 =
|
|
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
|
|
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
|
|
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":";;;AACA,
|
|
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;
|
|
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;
|
|
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
|
|
2
|
-
export declare function
|
|
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":"
|
|
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 =
|
|
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
|
|
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,
|
|
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":";;;AACA,
|
|
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":"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;
|
|
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;
|
|
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,
|
|
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":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/validations/profile.ts"],"names":[],"mappings":";;;;;;AAAA,0CAA6D;AAC7D,oDAA4C;AAC5C,kDAAyB;AACzB,oCAOiB;AACjB,+CAOsB;AAEtB,0FAA0F;AAC1F,MAAM,oBAAoB,GAAG,GAAG,CAAA;AAEzB,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAW,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAAtE,QAAA,UAAU,cAA4D;AAEnF,SAAgB,6BAA6B,CAAC,UAAsC;IAClF,KAAK,UAAU,UAAU,CAAC,UAAgC;QACxD,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,UAAU,GAAU,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAA;QAEnE,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;YAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAA;YAC5C,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAA,wBAAgB,EAAC,oEAAoE,CAAC,CAAA;YAExG,MAAM,eAAe,GAAG,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAA;YAC1G,IAAI,eAAe,EAAE;gBACnB,OAAO,UAAE,CAAA;aACV;YACD,aAAa;YACb,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAClD,IAAI,CAAC,eAAe;gBAAE,OAAO,IAAA,wBAAgB,EAAC,2CAA2C,IAAI,EAAE,CAAC,CAAA;YAChG,IAAI;gBACF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,eAAK,EAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAA;gBACzE,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,KAAK;oBAAE,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;gBAC/G,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;oBACrB,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAA;iBACnE;qBAAM,IAAI,KAAK,KAAK,oBAAoB,IAAI,MAAM,KAAK,oBAAoB,EAAE;oBAC5E,MAAM,CAAC,IAAI,CAAC,iDAAiD,KAAK,eAAe,MAAM,GAAG,CAAC,CAAA;iBAC5F;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAA;aAC5E;SACF;QACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,wBAAgB,EAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAE,CAAA;IAC7D,CAAC;IAED,OAAO,IAAA,gCAAkB,EAAC,UAAU,CAAC,CAAA;AACvC,CAAC;AAhCD,sEAgCC;AAEY,QAAA,sBAAsB,GAAG,IAAA,gCAAkB,EAAC,KAAK,UAAU,UAAU,CAChF,UAAgC;IAEhC,MAAM,UAAU,GAAU,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAA;IACnE,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;QAC/B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;YAC7C,IAAI,IAAA,kBAAU,EAAC,OAAO,CAAC;gBAAE,SAAQ;YAEjC,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAQ,EAAC,OAAO,CAAC,CAAA;YACtC,IAAI,CAAC,MAAM;gBACT,OAAO,IAAA,wBAAgB,EACrB,gKAAgK,OAAO,GAAG,CAC3K,CAAA;SACJ;KACF;IACD,OAAO,UAAE,CAAA;AACX,CAAC,CAAC,CAAA;AAEW,QAAA,mBAAmB,GAAG,IAAA,gCAAkB,EAAC,KAAK,UAAU,UAAU,CAC7E,UAAgC;IAEhC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAA;IAC5D,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;QAC5C,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,SAAS,EAAE;YACrC,IAAI,IAAA,kBAAU,EAAC,GAAG,CAAC;gBAAE,SAAQ;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAQ,EAAC,GAAG,CAAC,CAAA;YAClC,IAAI,CAAC,MAAM;gBACT,OAAO,IAAA,wBAAgB,EACrB,6JAA6J,GAAG,GAAG,CACpK,CAAA;YACH,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE;gBACxB,OAAO,IAAA,wBAAgB,EAAC,YAAY,IAAI,iBAAiB,GAAG,gDAAgD,CAAC,CAAA;aAC9G;SACF;KACF;IACD,OAAO,UAAE,CAAA;AACX,CAAC,CAAC,CAAA;AAEF,SAAS,gBAAgB,CAAC,UAAgC;IACxD,MAAM,UAAU,GAAa,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAA;IACtE,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;QAC/B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;YACzB,OAAO,IAAI,CAAA;SACZ;KACF;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAEY,QAAA,+BAA+B,GAAG,IAAA,gCAAkB,EAAC,KAAK,UAAU,UAAU,CACzF,UAAgC;IAEhC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;QACjC,OAAO,IAAA,wBAAgB,EAAC,wCAAwC,CAAC,CAAA;KAClE;IACD,OAAO,UAAE,CAAA;AACX,CAAC,CAAC,CAAA;AAEK,KAAK,UAAU,oCAAoC,CACxD,UAAgC;IAEhC,MAAM,UAAU,GAAa,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAA;IACtE,MAAM,SAAS,GAAuB,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IAChG,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAA;IAC3B,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,EAAE;QAChC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACvB,OAAO,IAAA,wBAAgB,EAAC,qCAAqC,CAAC,CAAA;SAC/D;QACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;KACpB;IACD,OAAO,UAAE,CAAA;AACX,CAAC;AAbD,oFAaC;AAED,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;AAEY,QAAA,qCAAqC,GAAG,IAAA,iCAAmB,EAAC,KAAK,WAC5E,UAAgC;IAEhC,MAAM,UAAU,GAAa,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAA;IACtE,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAA;QACzC,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE;YAChD,OAAO,IAAA,wBAAgB,EAAC,mCAAmC,CAAC,CAAA;SAC7D;KACF;IACD,OAAO,UAAE,CAAA;AACX,CAAC,CAAC,CAAA;AAEF,SAAgB,uBAAuB,CAAC,UAAsC;IAC5E;;;OAGG;IACH,OAAO,IAAA,mCAAqB,EAC1B,oBAAU,CAAC,OAAO,EAClB,IAAA,yBAAW,EACT,6BAA6B,CAAC,UAAU,CAAC,EACzC,8BAAsB,EACtB,2BAAmB,EACnB,uCAA+B,EAC/B,oCAAoC,EACpC,uBAAuB,CAAC,UAAU,CAAC,EACnC,6CAAqC,CACtC,CACF,CAAA;AACH,CAAC;AAjBD,0DAiBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dcl/content-validator",
|
|
3
|
-
"version": "4.7.
|
|
3
|
+
"version": "4.7.2-4996656097.commit-94c5f99",
|
|
4
4
|
"description": "Catalyst content validations",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -54,8 +54,8 @@
|
|
|
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",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"files": [
|
|
66
66
|
"dist"
|
|
67
67
|
],
|
|
68
|
-
"commit": "
|
|
68
|
+
"commit": "94c5f99826375bce8aa671c923a7a68b766bf4a2"
|
|
69
69
|
}
|
|
@@ -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"}
|