@dcl/content-validator 2.1.0 → 2.1.1-20220622185224.commit-163289a

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 (99) hide show
  1. package/dist/content-validator.api.json +38 -180
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/the-graph-client/the-graph-client.d.ts.map +1 -1
  5. package/dist/the-graph-client/the-graph-client.js +4 -13
  6. package/dist/the-graph-client/the-graph-client.js.map +1 -1
  7. package/dist/types.d.ts +0 -4
  8. package/dist/types.d.ts.map +1 -1
  9. package/dist/types.js +1 -16
  10. package/dist/types.js.map +1 -1
  11. package/dist/validations/ADR51.d.ts +3 -5
  12. package/dist/validations/ADR51.d.ts.map +1 -1
  13. package/dist/validations/ADR51.js +4 -0
  14. package/dist/validations/ADR51.js.map +1 -1
  15. package/dist/validations/access-checker/access.d.ts.map +1 -1
  16. package/dist/validations/access-checker/access.js +7 -7
  17. package/dist/validations/access-checker/access.js.map +1 -1
  18. package/dist/validations/access-checker/emotes.d.ts +3 -0
  19. package/dist/validations/access-checker/emotes.d.ts.map +1 -0
  20. package/dist/validations/access-checker/emotes.js +13 -0
  21. package/dist/validations/access-checker/emotes.js.map +1 -0
  22. package/dist/validations/access-checker/items/collection-asset.d.ts +15 -0
  23. package/dist/validations/access-checker/items/collection-asset.d.ts.map +1 -0
  24. package/dist/validations/access-checker/items/collection-asset.js +133 -0
  25. package/dist/validations/access-checker/items/collection-asset.js.map +1 -0
  26. package/dist/validations/access-checker/items/items.d.ts +13 -0
  27. package/dist/validations/access-checker/items/items.d.ts.map +1 -0
  28. package/dist/validations/access-checker/items/items.js +68 -0
  29. package/dist/validations/access-checker/items/items.js.map +1 -0
  30. package/dist/validations/access-checker/items/off-chain-asset.d.ts +3 -0
  31. package/dist/validations/access-checker/items/off-chain-asset.d.ts.map +1 -0
  32. package/dist/validations/access-checker/items/off-chain-asset.js +17 -0
  33. package/dist/validations/access-checker/items/off-chain-asset.js.map +1 -0
  34. package/dist/validations/access-checker/items/third-party-asset.d.ts +3 -0
  35. package/dist/validations/access-checker/items/third-party-asset.d.ts.map +1 -0
  36. package/dist/validations/access-checker/items/third-party-asset.js +107 -0
  37. package/dist/validations/access-checker/items/third-party-asset.js.map +1 -0
  38. package/dist/validations/access-checker/profiles.d.ts.map +1 -1
  39. package/dist/validations/access-checker/profiles.js +3 -3
  40. package/dist/validations/access-checker/profiles.js.map +1 -1
  41. package/dist/validations/access-checker/scenes.d.ts.map +1 -1
  42. package/dist/validations/access-checker/scenes.js +3 -10
  43. package/dist/validations/access-checker/scenes.js.map +1 -1
  44. package/dist/validations/access-checker/stores.d.ts.map +1 -1
  45. package/dist/validations/access-checker/stores.js.map +1 -1
  46. package/dist/validations/access-checker/wearables.d.ts +0 -18
  47. package/dist/validations/access-checker/wearables.d.ts.map +1 -1
  48. package/dist/validations/access-checker/wearables.js +9 -322
  49. package/dist/validations/access-checker/wearables.js.map +1 -1
  50. package/dist/validations/content.d.ts +3 -0
  51. package/dist/validations/content.d.ts.map +1 -1
  52. package/dist/validations/content.js +30 -17
  53. package/dist/validations/content.js.map +1 -1
  54. package/dist/validations/entity-structure.d.ts.map +1 -1
  55. package/dist/validations/entity-structure.js.map +1 -1
  56. package/dist/validations/index.d.ts +4 -23
  57. package/dist/validations/index.d.ts.map +1 -1
  58. package/dist/validations/index.js +6 -51
  59. package/dist/validations/index.js.map +1 -1
  60. package/dist/validations/ipfs-hashing.d.ts.map +1 -1
  61. package/dist/validations/ipfs-hashing.js +3 -6
  62. package/dist/validations/ipfs-hashing.js.map +1 -1
  63. package/dist/validations/items/emotes.d.ts +5 -0
  64. package/dist/validations/items/emotes.d.ts.map +1 -0
  65. package/dist/validations/items/emotes.js +35 -0
  66. package/dist/validations/items/emotes.js.map +1 -0
  67. package/dist/validations/items/items.d.ts +10 -0
  68. package/dist/validations/items/items.d.ts.map +1 -0
  69. package/dist/validations/items/items.js +79 -0
  70. package/dist/validations/items/items.js.map +1 -0
  71. package/dist/validations/{wearable.d.ts → items/wearables.d.ts} +2 -5
  72. package/dist/validations/items/wearables.d.ts.map +1 -0
  73. package/dist/validations/items/wearables.js +32 -0
  74. package/dist/validations/items/wearables.js.map +1 -0
  75. package/dist/validations/metadata-schema.d.ts +2 -5
  76. package/dist/validations/metadata-schema.d.ts.map +1 -1
  77. package/dist/validations/metadata-schema.js +37 -7
  78. package/dist/validations/metadata-schema.js.map +1 -1
  79. package/dist/validations/profile.d.ts.map +1 -1
  80. package/dist/validations/profile.js +9 -20
  81. package/dist/validations/profile.js.map +1 -1
  82. package/dist/validations/signature.d.ts.map +1 -1
  83. package/dist/validations/signature.js +1 -3
  84. package/dist/validations/signature.js.map +1 -1
  85. package/dist/validations/size.d.ts.map +1 -1
  86. package/dist/validations/size.js +4 -3
  87. package/dist/validations/size.js.map +1 -1
  88. package/dist/validations/timestamps.d.ts +21 -0
  89. package/dist/validations/timestamps.d.ts.map +1 -0
  90. package/dist/validations/timestamps.js +24 -0
  91. package/dist/validations/timestamps.js.map +1 -0
  92. package/dist/validations/validations.d.ts +9 -0
  93. package/dist/validations/validations.d.ts.map +1 -0
  94. package/dist/validations/validations.js +47 -0
  95. package/dist/validations/validations.js.map +1 -0
  96. package/package.json +4 -4
  97. package/dist/validations/wearable.d.ts.map +0 -1
  98. package/dist/validations/wearable.js +0 -110
  99. package/dist/validations/wearable.js.map +0 -1
@@ -1,328 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wearables = exports.MERKLE_PROOF_REQUIRED_KEYS = void 0;
4
- const content_hash_tree_1 = require("@dcl/content-hash-tree");
5
- const hashing_1 = require("@dcl/hashing");
6
- const schemas_1 = require("@dcl/schemas");
7
- const urn_resolver_1 = require("@dcl/urn-resolver");
8
- const types_1 = require("../../types");
9
- const L1_NETWORKS = ['mainnet', 'ropsten', 'kovan', 'rinkeby', 'goerli'];
10
- const L2_NETWORKS = ['matic', 'mumbai'];
11
- // These keys are required by the protocol to be a subset and present in the merkle proof hashing keys.
12
- // Note: deletions would not be a problem, but in case of adding a key here,
13
- // you MUST review the validation in order to not break the sync between catalysts (aka failed deployments)
14
- exports.MERKLE_PROOF_REQUIRED_KEYS = [
15
- 'id',
16
- 'name',
17
- 'description',
18
- 'i18n',
19
- 'image',
20
- 'thumbnail',
21
- 'data',
22
- 'content'
23
- ];
24
- const validUrnTypes = [
25
- 'off-chain',
26
- 'blockchain-collection-v1-asset',
27
- 'blockchain-collection-v2-asset',
28
- 'blockchain-collection-third-party'
29
- ];
30
- const alreadySeen = (resolvedPointers, parsed) => {
31
- return resolvedPointers.some((alreadyResolved) => resolveSameUrn(alreadyResolved, parsed));
32
- };
33
- const resolveSameUrn = (alreadyParsed, parsed) => {
34
- const alreadyParsedCopy = Object.assign({}, alreadyParsed);
35
- const parsedCopy = Object.assign({}, parsed);
36
- alreadyParsedCopy.uri = new URL('urn:same');
37
- parsedCopy.uri = new URL('urn:same');
38
- return JSON.stringify(alreadyParsedCopy) == JSON.stringify(parsedCopy);
39
- };
40
- const parseUrnNoFail = async (urn) => {
41
- try {
42
- const parsed = await (0, urn_resolver_1.parseUrn)(urn);
43
- if (parsed?.type === 'blockchain-collection-v1-asset') {
44
- return parsed;
45
- }
46
- if (parsed?.type === 'blockchain-collection-v2-asset') {
47
- return parsed;
48
- }
49
- if (parsed?.type === 'off-chain') {
50
- return parsed;
51
- }
52
- if (parsed?.type === 'blockchain-collection-third-party') {
53
- return parsed;
54
- }
55
- }
56
- catch { }
57
- return null;
58
- };
59
- const toHexBuffer = (value) => {
60
- if (value.startsWith('0x')) {
61
- return Buffer.from(value.substring(2), 'hex'); // removing first 2 characters (0x)
62
- }
63
- return Buffer.from(value, 'hex');
64
- };
65
- const getThirdPartyId = (urn) => `urn:decentraland:${urn.network}:collections-thirdparty:${urn.thirdPartyName}`;
66
- /**
67
- * Given the pointers (URNs), determine which layer should be used to check the access.
68
- * Checks if the ethereum address has access to the collection.
69
- * @public
70
- */
3
+ exports.wearables = void 0;
4
+ const items_1 = require("./items/items");
71
5
  exports.wearables = {
72
- validate: async ({ externalCalls, theGraphClient, logs }, deployment) => {
73
- const logger = logs.getLogger('wearables access validator');
74
- const hasPermission = async (subgraphUrl, collection, itemId, block, entity) => {
75
- try {
76
- const { content, metadata } = entity;
77
- const permissions = await getCollectionItems(subgraphUrl, collection, itemId, block);
78
- const ethAddressLowercase = entity.ethAddress.toLowerCase();
79
- if (!!permissions.contentHash) {
80
- const deployedByCommittee = permissions.committee.includes(ethAddressLowercase);
81
- const calculateHashes = () => {
82
- // Compare both by key and hash
83
- const compare = (a, b) => {
84
- if (a.hash > b.hash)
85
- return 1;
86
- else if (a.hash < b.hash)
87
- return -1;
88
- else
89
- return a.key > b.key ? 1 : -1;
90
- };
91
- const contentAsJson = (content ?? [])
92
- .map(({ file, hash }) => ({ key: file, hash }))
93
- .sort(compare);
94
- const buffer = Buffer.from(JSON.stringify({ content: contentAsJson, metadata }));
95
- return Promise.all([(0, hashing_1.hashV0)(buffer), (0, hashing_1.hashV1)(buffer)]);
96
- };
97
- return (deployedByCommittee &&
98
- (await calculateHashes()).includes(permissions.contentHash));
99
- }
100
- else {
101
- const addressHasAccess = (permissions.collectionCreator &&
102
- permissions.collectionCreator === ethAddressLowercase) ||
103
- (permissions.collectionManagers &&
104
- permissions.collectionManagers.includes(ethAddressLowercase)) ||
105
- (permissions.itemManagers &&
106
- permissions.itemManagers.includes(ethAddressLowercase));
107
- // Deployments to the content server are made after the collection is completed, so that the committee can then approve it.
108
- // That's why isCompleted must be true, but isApproved must be false. After the committee approves the wearable, there can't be any more changes
109
- const isCollectionValid = !permissions.isApproved && permissions.isCompleted;
110
- return addressHasAccess && isCollectionValid;
111
- }
112
- }
113
- catch (error) {
114
- logger.error(`Error checking permission for (${collection}-${itemId}) at block ${block}`);
115
- return false;
116
- }
117
- };
118
- const getCollectionItems = async (subgraphUrl, collection, itemId, block) => {
119
- const query = `
120
- query getCollectionRoles($collection: String!, $itemId: String!, $block: Int!) {
121
- collections(where:{ id: $collection }, block: { number: $block }) {
122
- creator
123
- managers
124
- isApproved
125
- isCompleted
126
- items(where:{ id: $itemId }) {
127
- managers
128
- contentHash
129
- }
130
- }
131
-
132
- accounts(where:{ isCommitteeMember: true }, block: { number: $block }) {
133
- id
134
- }
135
- }`;
136
- const result = await externalCalls.queryGraph(subgraphUrl, query, {
137
- collection,
138
- itemId: `${collection}-${itemId}`,
139
- block
140
- });
141
- const collectionResult = result.collections[0];
142
- const itemResult = collectionResult?.items[0];
143
- return {
144
- collectionCreator: collectionResult?.creator,
145
- collectionManagers: collectionResult?.managers,
146
- isApproved: collectionResult?.isApproved,
147
- isCompleted: collectionResult?.isCompleted,
148
- itemManagers: itemResult?.managers,
149
- contentHash: itemResult?.contentHash,
150
- committee: result.accounts.map(({ id }) => id.toLowerCase())
151
- };
152
- };
153
- const checkCollectionAccess = async (blocksSubgraphUrl, collectionsSubgraphUrl, collection, itemId, entity) => {
154
- const { timestamp } = entity;
155
- try {
156
- const { blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment } = await theGraphClient.findBlocksForTimestamp(blocksSubgraphUrl, timestamp);
157
- // It could happen that the subgraph hasn't synced yet, so someone who just lost access still managed to make a deployment. The problem would be that when other catalysts perform
158
- // the same check, the subgraph might have synced and the deployment is no longer valid. So, in order to prevent inconsistencies between catalysts, we will allow all deployments that
159
- // have access now, or had access 5 minutes ago.
160
- const hasPermissionOnBlock = async (blockNumber) => !!blockNumber &&
161
- (await hasPermission(collectionsSubgraphUrl, collection, itemId, blockNumber, entity));
162
- return ((await hasPermissionOnBlock(blockNumberAtDeployment)) ||
163
- (await hasPermissionOnBlock(blockNumberFiveMinBeforeDeployment)));
164
- }
165
- catch (error) {
166
- logger.error(`Error checking wearable access (${collection}, ${itemId}, ${entity.ethAddress}, ${timestamp}, ${blocksSubgraphUrl}).`);
167
- return false;
168
- }
169
- };
170
- const getMerkleRoot = async ({ block, thirdPartyId }) => {
171
- const query = `
172
- query MerkleRoot($id: String!, $block: Int!) {
173
- thirdParties(where: { id: $id, isApproved: true }, block: { number: $block }, first: 1) {
174
- root
175
- }
176
- }`;
177
- const result = await externalCalls.queryGraph(externalCalls.subgraphs.L2.thirdPartyRegistry, query, {
178
- id: thirdPartyId,
179
- block
180
- });
181
- if (!result.thirdParties || result.thirdParties.length < 1)
182
- return;
183
- return result.thirdParties[0]?.root;
184
- };
185
- const verifyHash = async (metadata, merkleRoot) => {
186
- // Validate merkle proof data is valid
187
- if (!schemas_1.MerkleProof.validate(metadata.merkleProof)) {
188
- logger.debug('Merkle proof is not valid', {
189
- merkleProof: metadata.merkleProof
190
- });
191
- return false;
192
- }
193
- const merkleProof = metadata.merkleProof;
194
- // The keys used to create the hash MUST be present if they're required.
195
- if (!exports.MERKLE_PROOF_REQUIRED_KEYS.every((key) => merkleProof.hashingKeys.includes(key))) {
196
- logger.debug(`Merkle proof hashing keys don't satisfy the required keys`, {
197
- requiredKeys: JSON.stringify(exports.MERKLE_PROOF_REQUIRED_KEYS),
198
- hashingKeys: JSON.stringify(merkleProof.hashingKeys)
199
- });
200
- return false;
201
- }
202
- const generatedCrcHash = (0, hashing_1.keccak256Hash)(metadata, metadata.merkleProof.hashingKeys);
203
- // The hash provided in the merkleProof for the entity MUST match the hash generated by the validator.
204
- if (metadata.merkleProof.entityHash !== generatedCrcHash) {
205
- logger.debug(`The hash provided in the merkleProof doesn't match with the generated by the validator`, {
206
- generatedCrcHash,
207
- entityHash: metadata.merkleProof.entityHash
208
- });
209
- return false;
210
- }
211
- // Verify if the entity belongs to the Merkle Tree.
212
- const bufferedProofs = merkleProof.proof.map((value) => toHexBuffer(value));
213
- const bufferedMerkleRoot = toHexBuffer(merkleRoot);
214
- return (0, content_hash_tree_1.verifyProof)(merkleProof.index, merkleProof.entityHash, bufferedProofs, bufferedMerkleRoot);
215
- };
216
- /**
217
- * Verifies Third Party Wearable access by doing a Merkle Tree based verification, where the merkle root is stored in the blockchain
218
- * and the proofs come in the wearable metadata.
219
- * It also does a CRC using the metadata and some hashing keys:
220
- * - Hashing keys must contain all required keys defined in MERKLE_PROOF_REQUIRED_KEYS
221
- *
222
- * This checks are verified using blocks in a 5 minutes window from the deployment timestamp
223
- */
224
- const verifyMerkleProofedEntity = async (urn) => {
225
- // do merkle proofed entity validation, required keys are defined by the Catalyst and must be a subset of the hashingKeys from the MerkleProof to succeed
226
- const metadata = deployment.entity.metadata;
227
- const thirdPartyId = getThirdPartyId(urn);
228
- const { blockNumberAtDeployment, blockNumberFiveMinBeforeDeployment } = await theGraphClient.findBlocksForTimestamp('maticBlocksSubgraph', deployment.entity.timestamp);
229
- const merkleRoots = [];
230
- const hasPermissionOnBlock = async (blockNumber) => {
231
- try {
232
- if (!blockNumber)
233
- return false;
234
- const merkleRoot = await getMerkleRoot({
235
- block: blockNumber,
236
- thirdPartyId
237
- });
238
- if (!merkleRoot) {
239
- logger.debug(`Merkle proof not found for given block and third party ID`, { blockNumber, thirdPartyId });
240
- return false;
241
- }
242
- merkleRoots.push(merkleRoot);
243
- return await verifyHash(metadata, merkleRoot);
244
- }
245
- catch (e) {
246
- const error = e?.message;
247
- logger.debug(error);
248
- return false;
249
- }
250
- };
251
- const validMerkleProofedEntity = (await hasPermissionOnBlock(blockNumberAtDeployment)) ||
252
- (await hasPermissionOnBlock(blockNumberFiveMinBeforeDeployment));
253
- if (!validMerkleProofedEntity) {
254
- logger.debug(`Merkle Tree based verifications failed:`, {
255
- merkleProof: JSON.stringify(metadata.merkleProof),
256
- merkleRoots: JSON.stringify(merkleRoots),
257
- blocks: JSON.stringify([
258
- blockNumberAtDeployment,
259
- blockNumberFiveMinBeforeDeployment
260
- ])
261
- });
262
- }
263
- return validMerkleProofedEntity;
264
- };
265
- const { pointers } = deployment.entity;
266
- const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
267
- const resolvedPointers = [];
268
- // deduplicate pointer resolution
269
- for (const pointer of pointers) {
270
- const parsed = await parseUrnNoFail(pointer);
271
- if (!parsed)
272
- return (0, types_1.validationFailed)(`Wearable pointers should be a urn, for example (urn:decentraland:{protocol}:collections-v2:{contract(0x[a-fA-F0-9]+)}:{name}). Invalid pointer: (${pointer})`);
273
- if (!alreadySeen(resolvedPointers, parsed))
274
- resolvedPointers.push(parsed);
275
- }
276
- if (resolvedPointers.length > 1)
277
- return (0, types_1.validationFailed)(`Only one pointer is allowed when you create a Wearable. Received: ${pointers}`);
278
- const parsed = resolvedPointers[0];
279
- if (!validUrnTypes.includes(parsed.type)) {
280
- return (0, types_1.validationFailed)(`Could not resolve the contractAddress of the urn ${parsed}`);
281
- }
282
- if (parsed.type === 'off-chain') {
283
- // Validate Off Chain Asset
284
- if (!externalCalls.isAddressOwnedByDecentraland(ethAddress))
285
- return (0, types_1.validationFailed)(`The provided Eth Address '${ethAddress}' does not have access to the following wearable: '${parsed.uri}'`);
286
- }
287
- else if (parsed?.type === 'blockchain-collection-v1-asset' ||
288
- parsed?.type === 'blockchain-collection-v2-asset') {
289
- // L1 or L2 so contractAddress is present
290
- const collection = parsed.contractAddress;
291
- const network = parsed.network;
292
- const isL1 = L1_NETWORKS.includes(network);
293
- const isL2 = L2_NETWORKS.includes(network);
294
- if (!isL1 && !isL2)
295
- return (0, types_1.validationFailed)(`Found an unknown network on the urn '${network}'`);
296
- const blocksSubgraphUrl = isL1 ? 'blocksSubgraph' : 'maticBlocksSubgraph';
297
- const collectionsSubgraphUrl = isL1
298
- ? externalCalls.subgraphs.L1.collections
299
- : externalCalls.subgraphs.L2.collections;
300
- const hasAccess = await checkCollectionAccess(blocksSubgraphUrl, collectionsSubgraphUrl, collection, parsed.id, {
301
- ...deployment.entity,
302
- ethAddress
303
- });
304
- if (!hasAccess) {
305
- if (isL2)
306
- return (0, types_1.validationFailed)(`The provided Eth Address does not have access to the following wearable: (${parsed.contractAddress}, ${parsed.id})`);
307
- // Some L1 collections are deployed by Decentraland Address
308
- // Maybe this is not necessary as we already know that it's a 'blockchain-collection-v1-asset'
309
- const isAllowlistedCollection = parsed.uri
310
- .toString()
311
- .startsWith('urn:decentraland:ethereum:collections-v1');
312
- if (!externalCalls.isAddressOwnedByDecentraland(ethAddress) ||
313
- !isAllowlistedCollection) {
314
- return (0, types_1.validationFailed)(`The provided Eth Address '${ethAddress}' does not have access to the following wearable: '${parsed.uri}'`);
315
- }
316
- }
317
- }
318
- else if (parsed?.type === 'blockchain-collection-third-party') {
319
- // Third Party wearables are validated doing merkle tree based verification proof
320
- const verified = await verifyMerkleProofedEntity(parsed);
321
- if (!verified) {
322
- return (0, types_1.validationFailed)(`Couldn't verify merkle proofed entity`);
323
- }
324
- }
325
- return types_1.OK;
6
+ validate: async (components, deployment) => {
7
+ return items_1.itemsValidation.validate(components, deployment, [
8
+ 'off-chain',
9
+ 'blockchain-collection-v1-asset',
10
+ 'blockchain-collection-v2-asset',
11
+ 'blockchain-collection-third-party'
12
+ ]);
326
13
  }
327
14
  };
328
15
  //# sourceMappingURL=wearables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wearables.js","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wearables.js","sourceRoot":"","sources":["../../../src/validations/access-checker/wearables.ts"],"names":[],"mappings":";;;AACA,yCAA+C;AAElC,QAAA,SAAS,GAAe;IACnC,QAAQ,EAAE,KAAK,EACb,UAAyF,EACzF,UAAU,EACV,EAAE;QACF,OAAO,uBAAe,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE;YACtD,WAAW;YACX,gCAAgC;YAChC,gCAAgC;YAChC,mCAAmC;SACpC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
@@ -1,4 +1,7 @@
1
1
  import { Validation } from '../types';
2
+ export declare const allHashesWereUploadedOrStored: Validation;
3
+ export declare const allHashesInUploadedFilesAreReportedInTheEntity: Validation;
4
+ export declare const allContentFilesCorrespondToAtLeastOneAvatarSnapshotAfterADR45: Validation;
2
5
  /**
3
6
  * Validate that uploaded and reported hashes are corrects and files corresponds to snapshots
4
7
  * @public
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,UAAU,EAAE,MAAM,UAAU,CAAA;AAiBjD;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,UA2CrB,CAAA"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,UAAU,EAAE,MAAM,UAAU,CAAA;AAYjD,eAAO,MAAM,6BAA6B,EAAE,UAkB3C,CAAA;AAED,eAAO,MAAM,8CAA8C,EAAE,UAa5D,CAAA;AAED,eAAO,MAAM,6DAA6D,EAAE,UAgB1E,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,UAIrB,CAAA"}
@@ -1,25 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.content = void 0;
3
+ exports.content = exports.allContentFilesCorrespondToAtLeastOneAvatarSnapshotAfterADR45 = exports.allHashesInUploadedFilesAreReportedInTheEntity = exports.allHashesWereUploadedOrStored = void 0;
4
4
  const schemas_1 = require("@dcl/schemas");
5
- const _1 = require(".");
6
5
  const types_1 = require("../types");
6
+ const validations_1 = require("./validations");
7
7
  const correspondsToASnapshot = (fileName, hash, metadata) => {
8
8
  const fileNameWithoutExtension = fileName.replace(/.[^/.]+$/, '');
9
9
  if (!metadata || !metadata.avatars)
10
10
  return false;
11
11
  return metadata.avatars.some((avatar) => Object.entries(avatar.avatar.snapshots).some((key) => key[0] === fileNameWithoutExtension && key[1] === hash));
12
12
  };
13
- /**
14
- * Validate that uploaded and reported hashes are corrects and files corresponds to snapshots
15
- * @public
16
- */
17
- exports.content = {
18
- validate: async ({ externalCalls }, deployment) => {
13
+ exports.allHashesWereUploadedOrStored = {
14
+ async validate(components, deployment) {
19
15
  const { entity, files } = deployment;
20
16
  const errors = [];
21
17
  if (entity.content) {
22
- const alreadyStoredHashes = await externalCalls.isContentStoredAlready(entity.content?.map((file) => file.hash) ?? []);
18
+ const alreadyStoredHashes = await components.externalCalls.isContentStoredAlready(entity.content?.map((file) => file.hash) ?? []);
23
19
  for (const { hash } of entity.content) {
24
20
  // Validate that all hashes in entity were uploaded, or were already stored on the service
25
21
  if (!(files.has(hash) || alreadyStoredHashes.get(hash))) {
@@ -27,6 +23,13 @@ exports.content = {
27
23
  }
28
24
  }
29
25
  }
26
+ return (0, types_1.fromErrors)(...errors);
27
+ }
28
+ };
29
+ exports.allHashesInUploadedFilesAreReportedInTheEntity = {
30
+ async validate(components, deployment) {
31
+ const { entity, files } = deployment;
32
+ const errors = [];
30
33
  // Validate that all hashes that belong to uploaded files are actually reported on the entity
31
34
  const entityHashes = new Set(entity.content?.map(({ hash }) => hash) ?? []);
32
35
  for (const [hash] of files) {
@@ -34,17 +37,27 @@ exports.content = {
34
37
  errors.push(`This hash was uploaded but is not referenced in the entity: ${hash}`);
35
38
  }
36
39
  }
37
- if (entity.timestamp > _1.ADR_45_TIMESTAMP) {
38
- for (const { file, hash } of entity.content ?? []) {
39
- // Validate all content files correspond to at least one avatar snapshot
40
- if (entity.type === schemas_1.EntityType.PROFILE) {
41
- if (!correspondsToASnapshot(file, hash, entity.metadata)) {
42
- errors.push(`This file is not expected: '${file}' or its hash is invalid: '${hash}'. Please, include only valid snapshot files.`);
43
- }
40
+ return (0, types_1.fromErrors)(...errors);
41
+ }
42
+ };
43
+ exports.allContentFilesCorrespondToAtLeastOneAvatarSnapshotAfterADR45 = (0, validations_1.validationAfterADR45)({
44
+ async validate(components, deployment) {
45
+ const { entity } = deployment;
46
+ const errors = [];
47
+ for (const { file, hash } of entity.content ?? []) {
48
+ // Validate all content files correspond to at least one avatar snapshot
49
+ if (entity.type === schemas_1.EntityType.PROFILE) {
50
+ if (!correspondsToASnapshot(file, hash, entity.metadata)) {
51
+ errors.push(`This file is not expected: '${file}' or its hash is invalid: '${hash}'. Please, include only valid snapshot files.`);
44
52
  }
45
53
  }
46
54
  }
47
55
  return (0, types_1.fromErrors)(...errors);
48
56
  }
49
- };
57
+ });
58
+ /**
59
+ * Validate that uploaded and reported hashes are corrects and files corresponds to snapshots
60
+ * @public
61
+ */
62
+ exports.content = (0, validations_1.validationGroup)(exports.allHashesWereUploadedOrStored, exports.allHashesInUploadedFilesAreReportedInTheEntity, exports.allContentFilesCorrespondToAtLeastOneAvatarSnapshotAfterADR45);
50
63
  //# sourceMappingURL=content.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":";;;AAAA,0CAA0D;AAC1D,wBAAoC;AACpC,oCAAiD;AAEjD,MAAM,sBAAsB,GAAG,CAC7B,QAAgB,EAChB,IAAY,EACZ,QAAiB,EACjB,EAAE;IACF,MAAM,wBAAwB,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAEjE,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAChD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAc,EAAE,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAC1C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,wBAAwB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAChE,CACF,CAAA;AACH,CAAC,CAAA;AAED;;;GAGG;AACU,QAAA,OAAO,GAAe;IACjC,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,EAAE;QAChD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAA;QACpC,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC,sBAAsB,CACpE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAC/C,CAAA;YAED,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;gBACrC,0FAA0F;gBAC1F,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;oBACvD,MAAM,CAAC,IAAI,CACT,uFAAuF,IAAI,EAAE,CAC9F,CAAA;iBACF;aACF;SACF;QAED,6FAA6F;QAC7F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3E,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE;YAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,MAAM,CAAC,EAAE,EAAE;gBACjD,MAAM,CAAC,IAAI,CACT,+DAA+D,IAAI,EAAE,CACtE,CAAA;aACF;SACF;QAED,IAAI,MAAM,CAAC,SAAS,GAAG,mBAAgB,EAAE;YACvC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE;gBACjD,wEAAwE;gBACxE,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAU,CAAC,OAAO,EAAE;oBACtC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;wBACxD,MAAM,CAAC,IAAI,CACT,+BAA+B,IAAI,8BAA8B,IAAI,+CAA+C,CACrH,CAAA;qBACF;iBACF;aACF;SACF;QACD,OAAO,IAAA,kBAAU,EAAC,GAAG,MAAM,CAAC,CAAA;IAC9B,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/validations/content.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entity-structure.d.ts","sourceRoot":"","sources":["../../src/validations/entity-structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAEX,MAAM,UAAU,CAAA;AAEjB;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,UAY7B,CAAA"}
1
+ {"version":3,"file":"entity-structure.d.ts","sourceRoot":"","sources":["../../src/validations/entity-structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,UAAU,EAAoB,MAAM,UAAU,CAAA;AAEvF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,UAU7B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"entity-structure.js","sourceRoot":"","sources":["../../src/validations/entity-structure.ts"],"names":[],"mappings":";;;AAAA,oCAKiB;AAEjB;;;GAGG;AACU,QAAA,eAAe,GAAe;IACzC,QAAQ,EAAE,KAAK,EAAE,UAAsC,EAAE,UAAU,EAAE,EAAE;QACrE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAC7B,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC3D,OAAO,IAAA,wBAAgB,EAAC,8CAA8C,CAAC,CAAA;SACxE;aAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YAC1D,OAAO,IAAA,wBAAgB,EACrB,yDAAyD,CAC1D,CAAA;SACF;QACD,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"entity-structure.js","sourceRoot":"","sources":["../../src/validations/entity-structure.ts"],"names":[],"mappings":";;;AAAA,oCAAuF;AAEvF;;;GAGG;AACU,QAAA,eAAe,GAAe;IACzC,QAAQ,EAAE,KAAK,EAAE,UAAsC,EAAE,UAAU,EAAE,EAAE;QACrE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;QAC7B,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC3D,OAAO,IAAA,wBAAgB,EAAC,8CAA8C,CAAC,CAAA;SACxE;aAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YAC1D,OAAO,IAAA,wBAAgB,EAAC,yDAAyD,CAAC,CAAA;SACnF;QACD,OAAO,UAAE,CAAA;IACX,CAAC;CACF,CAAA"}
@@ -1,23 +1,4 @@
1
- import { ContentValidatorComponents, DeploymentToValidate, ExternalCalls, Validation, ValidationResponse } from '../types';
2
- /**
3
- * @public
4
- */
5
- export declare const validateInRow: (components: ContentValidatorComponents, deployment: DeploymentToValidate, ...validations: Validation[]) => Promise<ValidationResponse>;
6
- /**
7
- * 1652191200000 = 2022-05-10T14:00:00Z
8
- * @public
9
- */
10
- export declare const ADR_45_TIMESTAMP: number;
11
- /**
12
- * 1658275200000 = 2022-07-20T00:00:00Z
13
- * @public
14
- */
15
- export declare const ADR_75_TIMESTAMP: number;
16
- /**
17
- * DCL Launch Day
18
- * @public
19
- */
20
- export declare const LEGACY_CONTENT_MIGRATION_TIMESTAMP = 1582167600000;
1
+ import { DeploymentToValidate, ExternalCalls } from '../types';
21
2
  /**
22
3
  * @public
23
4
  */
@@ -26,15 +7,15 @@ export declare const calculateDeploymentSize: (deployment: DeploymentToValidate,
26
7
  * Stateful validations that are run on a deployment.
27
8
  * @public
28
9
  */
29
- export declare const statefulValidations: readonly [Validation, Validation, Validation, Validation, Validation, Validation];
10
+ export declare const statefulValidations: readonly [import("../types").Validation, import("../types").Validation, import("../types").Validation, import("../types").Validation, import("../types").Validation, import("../types").Validation, import("../types").Validation];
30
11
  /**
31
12
  * Stateless validations that are run on a deployment.
32
13
  * @public
33
14
  */
34
- export declare const statelessValidations: readonly [Validation, Validation, Validation];
15
+ export declare const statelessValidations: readonly [import("../types").Validation, import("../types").Validation, import("../types").Validation];
35
16
  /**
36
17
  * All validations that are run on a deployment.
37
18
  * @public
38
19
  */
39
- export declare const validations: readonly [Validation, Validation, Validation, Validation, Validation, Validation, Validation, Validation, Validation];
20
+ export declare const validations: readonly [import("../types").Validation, import("../types").Validation, import("../types").Validation, import("../types").Validation, import("../types").Validation, import("../types").Validation, import("../types").Validation, import("../types").Validation, import("../types").Validation, import("../types").Validation];
40
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,aAAa,EAEb,UAAU,EACV,kBAAkB,EACnB,MAAM,UAAU,CAAA;AAWjB;;GAEG;AACH,eAAO,MAAM,aAAa,eACZ,0BAA0B,cAC1B,oBAAoB,kBAChB,UAAU,EAAE,KAC3B,QAAQ,kBAAkB,CAM5B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAEZ,CAAA;AAEjB;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAEZ,CAAA;AAEjB;;;GAGG;AACH,eAAO,MAAM,kCAAkC,gBAAgB,CAAA;AAE/D;;GAEG;AACH,eAAO,MAAM,uBAAuB,eACtB,oBAAoB,iBACjB,aAAa,KAC3B,QAAQ,MAAM,GAAG,MAAM,CAgBzB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,mFAOtB,CAAA;AAEV;;;GAGG;AACH,eAAO,MAAM,oBAAoB,+CAIvB,CAAA;AAEV;;;GAGG;AACH,eAAO,MAAM,WAAW,uHAGd,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAY9D;;GAEG;AACH,eAAO,MAAM,uBAAuB,eACtB,oBAAoB,iBACjB,aAAa,KAC3B,QAAQ,MAAM,GAAG,MAAM,CAazB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,oOAAwE,CAAA;AAExG;;;GAGG;AACH,eAAO,MAAM,oBAAoB,wGAAoD,CAAA;AAErF;;;GAGG;AACH,eAAO,MAAM,WAAW,iUAA6D,CAAA"}
@@ -1,47 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validations = exports.statelessValidations = exports.statefulValidations = exports.calculateDeploymentSize = exports.LEGACY_CONTENT_MIGRATION_TIMESTAMP = exports.ADR_75_TIMESTAMP = exports.ADR_45_TIMESTAMP = exports.validateInRow = void 0;
4
- const types_1 = require("../types");
3
+ exports.validations = exports.statelessValidations = exports.statefulValidations = exports.calculateDeploymentSize = void 0;
5
4
  const access_1 = require("./access-checker/access");
6
5
  const content_1 = require("./content");
7
6
  const entity_structure_1 = require("./entity-structure");
8
7
  const ipfs_hashing_1 = require("./ipfs-hashing");
8
+ const emotes_1 = require("./items/emotes");
9
+ const wearables_1 = require("./items/wearables");
9
10
  const metadata_schema_1 = require("./metadata-schema");
10
11
  const profile_1 = require("./profile");
11
12
  const signature_1 = require("./signature");
12
13
  const size_1 = require("./size");
13
- const wearable_1 = require("./wearable");
14
- /**
15
- * @public
16
- */
17
- const validateInRow = async (components, deployment, ...validations) => {
18
- for (const validation of validations) {
19
- const response = await validation.validate(components, deployment);
20
- if (!response.ok)
21
- return response;
22
- }
23
- return types_1.OK;
24
- };
25
- exports.validateInRow = validateInRow;
26
- /**
27
- * 1652191200000 = 2022-05-10T14:00:00Z
28
- * @public
29
- */
30
- exports.ADR_45_TIMESTAMP = process.env.ADR_45_TIMESTAMP
31
- ? parseInt(process.env.ADR_45_TIMESTAMP)
32
- : 1652191200000;
33
- /**
34
- * 1658275200000 = 2022-07-20T00:00:00Z
35
- * @public
36
- */
37
- exports.ADR_75_TIMESTAMP = process.env.ADR_75_TIMESTAMP
38
- ? parseInt(process.env.ADR_75_TIMESTAMP)
39
- : 1658275200000;
40
- /**
41
- * DCL Launch Day
42
- * @public
43
- */
44
- exports.LEGACY_CONTENT_MIGRATION_TIMESTAMP = 1582167600000;
45
14
  /**
46
15
  * @public
47
16
  */
@@ -66,29 +35,15 @@ exports.calculateDeploymentSize = calculateDeploymentSize;
66
35
  * Stateful validations that are run on a deployment.
67
36
  * @public
68
37
  */
69
- exports.statefulValidations = [
70
- signature_1.signature,
71
- access_1.access,
72
- size_1.size,
73
- wearable_1.wearable,
74
- profile_1.profile,
75
- content_1.content
76
- ];
38
+ exports.statefulValidations = [signature_1.signature, access_1.access, size_1.size, wearables_1.wearable, emotes_1.emote, profile_1.profile, content_1.content];
77
39
  /**
78
40
  * Stateless validations that are run on a deployment.
79
41
  * @public
80
42
  */
81
- exports.statelessValidations = [
82
- entity_structure_1.entityStructure,
83
- ipfs_hashing_1.ipfsHashing,
84
- metadata_schema_1.metadata
85
- ];
43
+ exports.statelessValidations = [entity_structure_1.entityStructure, ipfs_hashing_1.ipfsHashing, metadata_schema_1.metadata];
86
44
  /**
87
45
  * All validations that are run on a deployment.
88
46
  * @public
89
47
  */
90
- exports.validations = [
91
- ...exports.statelessValidations,
92
- ...exports.statefulValidations
93
- ];
48
+ exports.validations = [...exports.statelessValidations, ...exports.statefulValidations];
94
49
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":";;;AAAA,oCAOiB;AACjB,oDAAgD;AAChD,uCAAmC;AACnC,yDAAoD;AACpD,iDAA4C;AAC5C,uDAA4C;AAC5C,uCAAmC;AACnC,2CAAuC;AACvC,iCAA6B;AAC7B,yCAAqC;AAErC;;GAEG;AACI,MAAM,aAAa,GAAG,KAAK,EAChC,UAAsC,EACtC,UAAgC,EAChC,GAAG,WAAyB,EACC,EAAE;IAC/B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QACpC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAClE,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAA;KAClC;IACD,OAAO,UAAE,CAAA;AACX,CAAC,CAAA;AAVY,QAAA,aAAa,iBAUzB;AAED;;;GAGG;AACU,QAAA,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB;IAC1D,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACxC,CAAC,CAAC,aAAa,CAAA;AAEjB;;;GAGG;AACU,QAAA,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB;IAC1D,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACxC,CAAC,CAAC,aAAa,CAAA;AAEjB;;;GAGG;AACU,QAAA,kCAAkC,GAAG,aAAa,CAAA;AAE/D;;GAEG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAC1C,UAAgC,EAChC,aAA4B,EACF,EAAE;IAC5B,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CACxB,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAC1D,EAAE;QACD,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,YAAY,EAAE;YAChB,SAAS,IAAI,YAAY,CAAC,UAAU,CAAA;SACrC;aAAM;YACL,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAClE,IAAI,WAAW,KAAK,SAAS;gBAC3B,OAAO,0CAA0C,IAAI,EAAE,CAAA;YACzD,SAAS,IAAI,WAAW,CAAA;SACzB;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAnBY,QAAA,uBAAuB,2BAmBnC;AAED;;;GAGG;AACU,QAAA,mBAAmB,GAAG;IACjC,qBAAS;IACT,eAAM;IACN,WAAI;IACJ,mBAAQ;IACR,iBAAO;IACP,iBAAO;CACC,CAAA;AAEV;;;GAGG;AACU,QAAA,oBAAoB,GAAG;IAClC,kCAAe;IACf,0BAAW;IACX,0BAAQ;CACA,CAAA;AAEV;;;GAGG;AACU,QAAA,WAAW,GAAG;IACzB,GAAG,4BAAoB;IACvB,GAAG,2BAAmB;CACd,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validations/index.ts"],"names":[],"mappings":";;;AACA,oDAAgD;AAChD,uCAAmC;AACnC,yDAAoD;AACpD,iDAA4C;AAC5C,2CAAsC;AACtC,iDAA4C;AAC5C,uDAA4C;AAC5C,uCAAmC;AACnC,2CAAuC;AACvC,iCAA6B;AAE7B;;GAEG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAC1C,UAAgC,EAChC,aAA4B,EACF,EAAE;IAC5B,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;QACrF,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,YAAY,EAAE;YAChB,SAAS,IAAI,YAAY,CAAC,UAAU,CAAA;SACrC;aAAM;YACL,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAClE,IAAI,WAAW,KAAK,SAAS;gBAAE,OAAO,0CAA0C,IAAI,EAAE,CAAA;YACtF,SAAS,IAAI,WAAW,CAAA;SACzB;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAhBY,QAAA,uBAAuB,2BAgBnC;AAED;;;GAGG;AACU,QAAA,mBAAmB,GAAG,CAAC,qBAAS,EAAE,eAAM,EAAE,WAAI,EAAE,oBAAQ,EAAE,cAAK,EAAE,iBAAO,EAAE,iBAAO,CAAU,CAAA;AAExG;;;GAGG;AACU,QAAA,oBAAoB,GAAG,CAAC,kCAAe,EAAE,0BAAW,EAAE,0BAAQ,CAAU,CAAA;AAErF;;;GAGG;AACU,QAAA,WAAW,GAAG,CAAC,GAAG,4BAAoB,EAAE,GAAG,2BAAmB,CAAU,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ipfs-hashing.d.ts","sourceRoot":"","sources":["../../src/validations/ipfs-hashing.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,UAAU,EAAE,MAAM,UAAU,CAAA;AAEjD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,UAkBzB,CAAA"}
1
+ {"version":3,"file":"ipfs-hashing.d.ts","sourceRoot":"","sources":["../../src/validations/ipfs-hashing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,UAAU,EAAE,MAAM,UAAU,CAAA;AAGjD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,UAaxB,CAAA"}