@dcl/content-validator 4.3.1-4304792003.commit-3da518e → 4.3.1-4346889190.commit-80a08d0
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/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -10
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +57 -27
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validations/ADR45.d.ts.map +1 -1
- package/dist/validations/ADR45.js.map +1 -1
- package/dist/validations/access/common/items.d.ts +10 -0
- package/dist/validations/access/common/items.d.ts.map +1 -0
- package/dist/validations/{subgraph-access-checker/items → access/common}/items.js +39 -14
- package/dist/validations/access/common/items.js.map +1 -0
- package/dist/validations/access/common/profiles.d.ts +3 -0
- package/dist/validations/access/common/profiles.d.ts.map +1 -0
- package/dist/validations/access/common/profiles.js +28 -0
- package/dist/validations/access/common/profiles.js.map +1 -0
- package/dist/validations/access/common/stores.d.ts +7 -0
- package/dist/validations/access/common/stores.d.ts.map +1 -0
- package/dist/validations/{subgraph-access-checker → access/common}/stores.js +3 -3
- package/dist/validations/access/common/stores.js.map +1 -0
- package/dist/validations/access/index.d.ts +8 -0
- package/dist/validations/access/index.d.ts.map +1 -0
- package/dist/validations/access/index.js +30 -0
- package/dist/validations/access/index.js.map +1 -0
- package/dist/validations/access/on-chain/client.d.ts +14 -0
- package/dist/validations/access/on-chain/client.d.ts.map +1 -0
- package/dist/validations/access/on-chain/client.js +177 -0
- package/dist/validations/access/on-chain/client.js.map +1 -0
- package/dist/validations/access/on-chain/collection-asset.d.ts +3 -0
- package/dist/validations/access/on-chain/collection-asset.d.ts.map +1 -0
- package/dist/validations/access/on-chain/collection-asset.js +66 -0
- package/dist/validations/access/on-chain/collection-asset.js.map +1 -0
- package/dist/validations/access/on-chain/index.d.ts +4 -0
- package/dist/validations/access/on-chain/index.d.ts.map +1 -0
- package/dist/validations/access/on-chain/index.js +23 -0
- package/dist/validations/access/on-chain/index.js.map +1 -0
- package/dist/validations/access/on-chain/profiles.d.ts +5 -0
- package/dist/validations/access/on-chain/profiles.d.ts.map +1 -0
- package/dist/validations/access/on-chain/profiles.js +84 -0
- package/dist/validations/access/on-chain/profiles.js.map +1 -0
- package/dist/validations/access/on-chain/scenes.d.ts +7 -0
- package/dist/validations/access/on-chain/scenes.d.ts.map +1 -0
- package/dist/validations/access/on-chain/scenes.js +53 -0
- package/dist/validations/access/on-chain/scenes.js.map +1 -0
- package/dist/validations/access/on-chain/third-party-asset.d.ts +3 -0
- package/dist/validations/access/on-chain/third-party-asset.d.ts.map +1 -0
- package/dist/validations/access/on-chain/third-party-asset.js +53 -0
- package/dist/validations/access/on-chain/third-party-asset.js.map +1 -0
- package/dist/validations/access/subgraph/collection-asset.d.ts +15 -0
- package/dist/validations/access/subgraph/collection-asset.d.ts.map +1 -0
- package/dist/validations/{subgraph-access-checker/items → access/subgraph}/collection-asset.js +10 -13
- package/dist/validations/access/subgraph/collection-asset.js.map +1 -0
- package/dist/validations/access/subgraph/index.d.ts +4 -0
- package/dist/validations/access/subgraph/index.d.ts.map +1 -0
- package/dist/validations/access/subgraph/index.js +23 -0
- package/dist/validations/access/subgraph/index.js.map +1 -0
- package/dist/validations/{subgraph-access-checker → access/subgraph}/profiles.d.ts +1 -2
- package/dist/validations/access/subgraph/profiles.d.ts.map +1 -0
- package/dist/validations/{subgraph-access-checker → access/subgraph}/profiles.js +7 -28
- package/dist/validations/access/subgraph/profiles.js.map +1 -0
- package/dist/validations/{subgraph-access-checker → access/subgraph}/scenes.d.ts +1 -1
- package/dist/validations/access/subgraph/scenes.d.ts.map +1 -0
- package/dist/validations/{subgraph-access-checker → access/subgraph}/scenes.js +1 -1
- package/dist/validations/access/subgraph/scenes.js.map +1 -0
- package/dist/validations/{subgraph-access-checker → access/subgraph}/the-graph-client.d.ts +1 -1
- package/dist/validations/access/subgraph/the-graph-client.d.ts.map +1 -0
- package/dist/validations/access/subgraph/the-graph-client.js.map +1 -0
- package/dist/validations/access/subgraph/third-party-asset.d.ts +3 -0
- package/dist/validations/access/subgraph/third-party-asset.d.ts.map +1 -0
- package/dist/validations/{subgraph-access-checker/items → access/subgraph}/third-party-asset.js +6 -8
- package/dist/validations/access/subgraph/third-party-asset.js.map +1 -0
- package/dist/validations/index.d.ts +3 -0
- package/dist/validations/index.d.ts.map +1 -1
- package/dist/validations/index.js +9 -6
- package/dist/validations/index.js.map +1 -1
- package/dist/validations/validations.d.ts.map +1 -1
- package/dist/validations/validations.js +2 -1
- package/dist/validations/validations.js.map +1 -1
- package/package.json +4 -3
- package/dist/validations/subgraph-access-checker/access.d.ts +0 -7
- package/dist/validations/subgraph-access-checker/access.d.ts.map +0 -1
- package/dist/validations/subgraph-access-checker/access.js +0 -48
- package/dist/validations/subgraph-access-checker/access.js.map +0 -1
- package/dist/validations/subgraph-access-checker/emotes.d.ts +0 -3
- package/dist/validations/subgraph-access-checker/emotes.d.ts.map +0 -1
- package/dist/validations/subgraph-access-checker/emotes.js +0 -9
- package/dist/validations/subgraph-access-checker/emotes.js.map +0 -1
- package/dist/validations/subgraph-access-checker/items/collection-asset.d.ts +0 -15
- package/dist/validations/subgraph-access-checker/items/collection-asset.d.ts.map +0 -1
- package/dist/validations/subgraph-access-checker/items/collection-asset.js.map +0 -1
- package/dist/validations/subgraph-access-checker/items/items.d.ts +0 -11
- package/dist/validations/subgraph-access-checker/items/items.d.ts.map +0 -1
- package/dist/validations/subgraph-access-checker/items/items.js.map +0 -1
- package/dist/validations/subgraph-access-checker/items/off-chain-asset.d.ts +0 -3
- package/dist/validations/subgraph-access-checker/items/off-chain-asset.d.ts.map +0 -1
- package/dist/validations/subgraph-access-checker/items/off-chain-asset.js +0 -17
- package/dist/validations/subgraph-access-checker/items/off-chain-asset.js.map +0 -1
- package/dist/validations/subgraph-access-checker/items/third-party-asset.d.ts +0 -3
- package/dist/validations/subgraph-access-checker/items/third-party-asset.d.ts.map +0 -1
- package/dist/validations/subgraph-access-checker/items/third-party-asset.js.map +0 -1
- package/dist/validations/subgraph-access-checker/profiles.d.ts.map +0 -1
- package/dist/validations/subgraph-access-checker/profiles.js.map +0 -1
- package/dist/validations/subgraph-access-checker/scenes.d.ts.map +0 -1
- package/dist/validations/subgraph-access-checker/scenes.js.map +0 -1
- package/dist/validations/subgraph-access-checker/stores.d.ts +0 -7
- package/dist/validations/subgraph-access-checker/stores.d.ts.map +0 -1
- package/dist/validations/subgraph-access-checker/stores.js.map +0 -1
- package/dist/validations/subgraph-access-checker/the-graph-client.d.ts.map +0 -1
- package/dist/validations/subgraph-access-checker/the-graph-client.js.map +0 -1
- package/dist/validations/subgraph-access-checker/wearables.d.ts +0 -3
- package/dist/validations/subgraph-access-checker/wearables.d.ts.map +0 -1
- package/dist/validations/subgraph-access-checker/wearables.js +0 -14
- package/dist/validations/subgraph-access-checker/wearables.js.map +0 -1
- /package/dist/validations/{subgraph-access-checker → access/subgraph}/the-graph-client.js +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ContentValidatorComponents,
|
|
1
|
+
import { ContentValidatorComponents, ValidateFn } from './types';
|
|
2
2
|
export * from './types';
|
|
3
3
|
export * from './validations';
|
|
4
4
|
/**
|
|
5
5
|
* Creates a validator instance with given external calls.
|
|
6
6
|
* @public
|
|
7
7
|
*/
|
|
8
|
-
export declare const createValidator: (components:
|
|
8
|
+
export declare const createValidator: (components: ContentValidatorComponents) => ValidateFn;
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAM,UAAU,EAAE,MAAM,SAAS,CAAA;AAGpE,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAE7B;;;GAGG;AACH,eAAO,MAAM,eAAe,eAAgB,0BAA0B,KAAG,UAaxE,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -25,18 +25,16 @@ __exportStar(require("./validations"), exports);
|
|
|
25
25
|
*/
|
|
26
26
|
const createValidator = (components) => {
|
|
27
27
|
const logs = components.logs.getLogger('ContentValidator');
|
|
28
|
-
const validateFns = [...(0, validations_1.createValidateFns)(components), components.
|
|
29
|
-
return {
|
|
30
|
-
validate
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return result;
|
|
36
|
-
}
|
|
28
|
+
const validateFns = [...(0, validations_1.createValidateFns)(components), components.accessValidateFn];
|
|
29
|
+
return async function validateFn(deployment) {
|
|
30
|
+
for (const validate of validateFns) {
|
|
31
|
+
const result = await validate(deployment);
|
|
32
|
+
if (!result.ok) {
|
|
33
|
+
logs.debug(`Validation failed:\n${result.errors?.join('\n')}`);
|
|
34
|
+
return result;
|
|
37
35
|
}
|
|
38
|
-
return types_1.OK;
|
|
39
36
|
}
|
|
37
|
+
return types_1.OK;
|
|
40
38
|
};
|
|
41
39
|
};
|
|
42
40
|
exports.createValidator = createValidator;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mCAAoE;AACpE,+CAAiD;AAEjD,0CAAuB;AACvB,gDAA6B;AAE7B;;;GAGG;AACI,MAAM,eAAe,GAAG,CAAC,UAAsC,EAAc,EAAE;IACpF,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IAC1D,MAAM,WAAW,GAAG,CAAC,GAAG,IAAA,+BAAiB,EAAC,UAAU,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAA;IACnF,OAAO,KAAK,UAAU,UAAU,CAAC,UAAU;QACzC,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE;YAClC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAA;YACzC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;gBACd,IAAI,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC9D,OAAO,MAAM,CAAA;aACd;SACF;QACD,OAAO,UAAE,CAAA;IACX,CAAC,CAAA;AACH,CAAC,CAAA;AAbY,QAAA,eAAe,mBAa3B"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { BlockSearch } from '@dcl/block-indexer';
|
|
1
3
|
import { AuthChain, Entity, EthAddress } from '@dcl/schemas';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
4
|
+
import { BlockchainCollectionThirdParty, BlockchainCollectionV1Asset, BlockchainCollectionV2Asset } from '@dcl/urn-resolver';
|
|
5
|
+
import { ILoggerComponent } from '@well-known-components/interfaces';
|
|
6
|
+
import { ISubgraphComponent } from '@well-known-components/thegraph-component';
|
|
7
|
+
import { PermissionResult } from './validations/access/subgraph/the-graph-client';
|
|
5
8
|
/**
|
|
6
9
|
* @public
|
|
7
10
|
*/
|
|
@@ -31,11 +34,6 @@ export declare type DeploymentToValidate = {
|
|
|
31
34
|
files: Map<string, Uint8Array>;
|
|
32
35
|
auditInfo: LocalDeploymentAuditInfo;
|
|
33
36
|
};
|
|
34
|
-
/**
|
|
35
|
-
* Function used to fetch TheGraph
|
|
36
|
-
* @public
|
|
37
|
-
*/
|
|
38
|
-
export declare type QueryGraph = <T = any>(query: string, variables?: Variables, remainingAttempts?: number) => Promise<T>;
|
|
39
37
|
/**
|
|
40
38
|
* External calls interface to be provided by the servers.
|
|
41
39
|
* @public
|
|
@@ -50,19 +48,6 @@ export declare type ExternalCalls = {
|
|
|
50
48
|
ownerAddress: (auditInfo: LocalDeploymentAuditInfo) => string;
|
|
51
49
|
isAddressOwnedByDecentraland: (address: string) => boolean;
|
|
52
50
|
};
|
|
53
|
-
/**
|
|
54
|
-
* Validator interface to be used by any server.
|
|
55
|
-
* @public
|
|
56
|
-
*/
|
|
57
|
-
export interface Validator {
|
|
58
|
-
validate(deployment: DeploymentToValidate): Promise<ValidationResponse>;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* @public
|
|
62
|
-
*/
|
|
63
|
-
export declare type ValidationArgs = {
|
|
64
|
-
deployment: DeploymentToValidate;
|
|
65
|
-
};
|
|
66
51
|
/**
|
|
67
52
|
* @public
|
|
68
53
|
*/
|
|
@@ -86,6 +71,20 @@ export declare const validationFailed: (...error: string[]) => ValidationRespons
|
|
|
86
71
|
* @public
|
|
87
72
|
*/
|
|
88
73
|
export declare const fromErrors: (...errors: Errors) => ValidationResponse;
|
|
74
|
+
/**
|
|
75
|
+
* @public
|
|
76
|
+
*/
|
|
77
|
+
export declare type L1Checker = {
|
|
78
|
+
checkLAND(ethAddress: string, parcels: [number, number][], block: number): Promise<boolean[]>;
|
|
79
|
+
checkNames(ethAddress: string, names: string[], block: number): Promise<boolean[]>;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* @public
|
|
83
|
+
*/
|
|
84
|
+
export declare type L2Checker = {
|
|
85
|
+
validateWearables(ethAddress: string, contractAddress: string, assetId: string, hashes: string[], block: number): Promise<boolean>;
|
|
86
|
+
validateThirdParty(tpId: string, root: Buffer, block: number): Promise<boolean>;
|
|
87
|
+
};
|
|
89
88
|
/**
|
|
90
89
|
* A list with all sub-graphs used for validations.
|
|
91
90
|
* @public
|
|
@@ -111,6 +110,14 @@ export declare type TheGraphClient = {
|
|
|
111
110
|
ownsItemsAtTimestamp: (ethAddress: EthAddress, urnsToCheck: string[], timestamp: number) => Promise<PermissionResult>;
|
|
112
111
|
findBlocksForTimestamp: (subgraph: ISubgraphComponent, timestamp: number) => Promise<BlockInformation>;
|
|
113
112
|
};
|
|
113
|
+
/**
|
|
114
|
+
* @public
|
|
115
|
+
*/
|
|
116
|
+
export declare type OnChainClient = {
|
|
117
|
+
ownsNamesAtTimestamp: (ethAddress: EthAddress, namesToCheck: string[], timestamp: number) => Promise<PermissionResult>;
|
|
118
|
+
ownsItemsAtTimestamp: (ethAddress: EthAddress, urnsToCheck: string[], timestamp: number) => Promise<PermissionResult>;
|
|
119
|
+
findBlocksForTimestamp: (timestamp: number, blockSearch: BlockSearch) => Promise<BlockInformation>;
|
|
120
|
+
};
|
|
114
121
|
/**
|
|
115
122
|
* @public
|
|
116
123
|
*/
|
|
@@ -118,21 +125,44 @@ export declare type BlockInformation = {
|
|
|
118
125
|
blockNumberAtDeployment: number | undefined;
|
|
119
126
|
blockNumberFiveMinBeforeDeployment: number | undefined;
|
|
120
127
|
};
|
|
121
|
-
export declare type AccessCheckerComponent = {
|
|
122
|
-
checkAccess(deployment: DeploymentToValidate): Promise<ValidationResponse>;
|
|
123
|
-
};
|
|
124
128
|
/**
|
|
125
129
|
* Components that can be used to validate deployments.
|
|
126
130
|
* @public
|
|
127
131
|
*/
|
|
128
132
|
export declare type ContentValidatorComponents = {
|
|
129
|
-
config: IConfigComponent;
|
|
130
133
|
logs: ILoggerComponent;
|
|
131
134
|
externalCalls: ExternalCalls;
|
|
132
|
-
|
|
135
|
+
accessValidateFn: ValidateFn;
|
|
133
136
|
};
|
|
134
|
-
|
|
137
|
+
/**
|
|
138
|
+
* @public
|
|
139
|
+
*/
|
|
140
|
+
export declare type SubgraphAccessCheckerComponents = Pick<ContentValidatorComponents, 'logs' | 'externalCalls'> & {
|
|
135
141
|
theGraphClient: TheGraphClient;
|
|
136
142
|
subGraphs: SubGraphs;
|
|
137
143
|
};
|
|
144
|
+
/**
|
|
145
|
+
* @public
|
|
146
|
+
*/
|
|
147
|
+
export declare type OnChainAccessCheckerComponents = Pick<ContentValidatorComponents, 'logs' | 'externalCalls'> & {
|
|
148
|
+
client: OnChainClient;
|
|
149
|
+
L1: {
|
|
150
|
+
checker: L1Checker;
|
|
151
|
+
collections: ISubgraphComponent;
|
|
152
|
+
blockSearch: BlockSearch;
|
|
153
|
+
};
|
|
154
|
+
L2: {
|
|
155
|
+
checker: L2Checker;
|
|
156
|
+
collections: ISubgraphComponent;
|
|
157
|
+
blockSearch: BlockSearch;
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* @internal
|
|
162
|
+
*/
|
|
163
|
+
export declare type V1andV2collectionAssetValidateFn = (asset: BlockchainCollectionV1Asset | BlockchainCollectionV2Asset, deployment: DeploymentToValidate) => Promise<ValidationResponse>;
|
|
164
|
+
/**
|
|
165
|
+
* @internal
|
|
166
|
+
*/
|
|
167
|
+
export declare type ThirdPartyAssetValidateFn = (asset: BlockchainCollectionThirdParty, deployment: DeploymentToValidate) => Promise<ValidationResponse>;
|
|
138
168
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAwEA;;GAEG;AACU,QAAA,EAAE,GAAuB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AAElD;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,GAAG,KAAe,EAAsB,EAAE,CAAC,CAAC;IAC3E,EAAE,EAAE,KAAK;IACT,MAAM,EAAE,KAAK;CACd,CAAC,CAAA;AAHW,QAAA,gBAAgB,oBAG3B;AAEF;;GAEG;AACI,MAAM,UAAU,GAAG,CAAC,GAAG,MAAc,EAAsB,EAAE,CAAC,CAAC;IACpE,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;CAC/C,CAAC,CAAA;AAHW,QAAA,UAAU,cAGrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ADR45.d.ts","sourceRoot":"","sources":["../../src/validations/ADR45.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"ADR45.d.ts","sourceRoot":"","sources":["../../src/validations/ADR45.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAwB,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAOzF;;;GAGG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,oBAAoB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOnG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ADR45.js","sourceRoot":"","sources":["../../src/validations/ADR45.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"ADR45.js","sourceRoot":"","sources":["../../src/validations/ADR45.ts"],"names":[],"mappings":";;;AACA,oCAAyF;AACzF,6CAA+C;AAE/C,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAA;AAEvE,MAAM,2BAA2B,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,GAAG,6BAAgB,CAAA;AAE3F;;;GAGG;AACI,KAAK,UAAU,eAAe,CAAC,UAAgC;IACpE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;IAE7B,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,2BAA2B,CAAC,MAAM,CAAC;QACpE,OAAO,IAAA,wBAAgB,EAAC,2CAA2C,CAAC,CAAA;IAEtE,OAAO,UAAE,CAAA;AACX,CAAC;AAPD,0CAOC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BlockchainCollectionThirdParty, BlockchainCollectionV1Asset, BlockchainCollectionV2Asset, OffChainAsset } from '@dcl/urn-resolver';
|
|
2
|
+
import { ThirdPartyAssetValidateFn, V1andV2collectionAssetValidateFn } from '../../..';
|
|
3
|
+
import { ContentValidatorComponents, ValidateFn } from '../../../types';
|
|
4
|
+
export declare type ItemValidateFnComponents = Pick<ContentValidatorComponents, 'externalCalls'>;
|
|
5
|
+
export declare type UrnType = 'off-chain' | 'blockchain-collection-v1-asset' | 'blockchain-collection-v2-asset' | 'blockchain-collection-third-party';
|
|
6
|
+
export declare type SupportedAsset = BlockchainCollectionV1Asset | BlockchainCollectionV2Asset | OffChainAsset | BlockchainCollectionThirdParty;
|
|
7
|
+
export declare function createWearableValidateFn(components: ItemValidateFnComponents, v1andV2collectionAssetValidateFn: V1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn: ThirdPartyAssetValidateFn): ValidateFn;
|
|
8
|
+
export declare function createEmoteValidateFn(components: ItemValidateFnComponents, v1andV2collectionAssetValidateFn: V1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn: ThirdPartyAssetValidateFn): ValidateFn;
|
|
9
|
+
export declare function createItemValidateFn({ externalCalls }: ItemValidateFnComponents, v1andV2collectionAssetValidateFn: V1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn: ThirdPartyAssetValidateFn, validUrnTypesForItem: UrnType[]): ValidateFn;
|
|
10
|
+
//# sourceMappingURL=items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/common/items.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EAEd,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAA;AACtF,OAAO,EACL,0BAA0B,EAG1B,UAAU,EAGX,MAAM,gBAAgB,CAAA;AAEvB,oBAAY,wBAAwB,GAAG,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,CAAA;AAExF,oBAAY,OAAO,GACf,WAAW,GACX,gCAAgC,GAChC,gCAAgC,GAChC,mCAAmC,CAAA;AAEvC,oBAAY,cAAc,GACtB,2BAA2B,GAC3B,2BAA2B,GAC3B,aAAa,GACb,8BAA8B,CAAA;AAoClC,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,wBAAwB,EACpC,gCAAgC,EAAE,gCAAgC,EAClE,yBAAyB,EAAE,yBAAyB,GACnD,UAAU,CAOZ;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,wBAAwB,EACpC,gCAAgC,EAAE,gCAAgC,EAClE,yBAAyB,EAAE,yBAAyB,GACnD,UAAU,CAKZ;AAED,wBAAgB,oBAAoB,CAClC,EAAE,aAAa,EAAE,EAAE,wBAAwB,EAC3C,gCAAgC,EAAE,gCAAgC,EAClE,yBAAyB,EAAE,yBAAyB,EACpD,oBAAoB,EAAE,OAAO,EAAE,GAC9B,UAAU,CAiDZ"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createItemValidateFn = void 0;
|
|
3
|
+
exports.createItemValidateFn = exports.createEmoteValidateFn = exports.createWearableValidateFn = void 0;
|
|
4
4
|
const urn_resolver_1 = require("@dcl/urn-resolver");
|
|
5
5
|
const types_1 = require("../../../types");
|
|
6
|
-
const collection_asset_1 = require("./collection-asset");
|
|
7
|
-
const off_chain_asset_1 = require("./off-chain-asset");
|
|
8
|
-
const third_party_asset_1 = require("./third-party-asset");
|
|
9
|
-
const assetValidations = [off_chain_asset_1.offChainAssetValidation, collection_asset_1.v1andV2collectionAssetValidation, third_party_asset_1.thirdPartyAssetValidation];
|
|
10
6
|
function alreadySeen(resolvedPointers, parsed) {
|
|
11
7
|
return resolvedPointers.some((alreadyResolved) => resolveSameUrn(alreadyResolved, parsed));
|
|
12
8
|
}
|
|
@@ -39,30 +35,59 @@ async function parseUrnNoFail(urn) {
|
|
|
39
35
|
catch { }
|
|
40
36
|
return null;
|
|
41
37
|
}
|
|
42
|
-
function
|
|
38
|
+
function createWearableValidateFn(components, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn) {
|
|
39
|
+
return createItemValidateFn(components, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn, [
|
|
40
|
+
'off-chain',
|
|
41
|
+
'blockchain-collection-v1-asset',
|
|
42
|
+
'blockchain-collection-v2-asset',
|
|
43
|
+
'blockchain-collection-third-party'
|
|
44
|
+
]);
|
|
45
|
+
}
|
|
46
|
+
exports.createWearableValidateFn = createWearableValidateFn;
|
|
47
|
+
function createEmoteValidateFn(components, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn) {
|
|
48
|
+
return createItemValidateFn(components, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn, [
|
|
49
|
+
'blockchain-collection-v2-asset',
|
|
50
|
+
'blockchain-collection-third-party'
|
|
51
|
+
]);
|
|
52
|
+
}
|
|
53
|
+
exports.createEmoteValidateFn = createEmoteValidateFn;
|
|
54
|
+
function createItemValidateFn({ externalCalls }, v1andV2collectionAssetValidateFn, thirdPartyAssetValidateFn, validUrnTypesForItem) {
|
|
43
55
|
return async function validateFn(deployment) {
|
|
44
56
|
const { pointers } = deployment.entity;
|
|
45
57
|
const resolvedPointers = [];
|
|
46
58
|
// deduplicate pointer resolution
|
|
47
59
|
for (const pointer of pointers) {
|
|
48
60
|
const parsed = await parseUrnNoFail(pointer);
|
|
49
|
-
if (!parsed)
|
|
61
|
+
if (!parsed) {
|
|
50
62
|
return (0, types_1.validationFailed)(`Item pointers should be a urn, for example (urn:decentraland:{protocol}:collections-v2:{contract(0x[a-fA-F0-9]+)}:{id}). Invalid pointer: (${pointer})`);
|
|
51
|
-
|
|
63
|
+
}
|
|
64
|
+
if (!alreadySeen(resolvedPointers, parsed)) {
|
|
52
65
|
resolvedPointers.push(parsed);
|
|
66
|
+
}
|
|
53
67
|
}
|
|
54
|
-
if (resolvedPointers.length > 1)
|
|
68
|
+
if (resolvedPointers.length > 1) {
|
|
55
69
|
return (0, types_1.validationFailed)(`Only one pointer is allowed when you create an item. Received: ${pointers}`);
|
|
70
|
+
}
|
|
56
71
|
const parsedAsset = resolvedPointers[0];
|
|
57
72
|
if (!validUrnTypesForItem.includes(parsedAsset.type)) {
|
|
58
73
|
return (0, types_1.validationFailed)(`For the entity type: ${deployment.entity.type}, the asset with urn type: ${parsedAsset.type} is invalid. Valid urn types for this entity: ${validUrnTypesForItem}`);
|
|
59
74
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
75
|
+
if (parsedAsset.type === 'off-chain') {
|
|
76
|
+
const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
|
|
77
|
+
if (!externalCalls.isAddressOwnedByDecentraland(ethAddress))
|
|
78
|
+
return (0, types_1.validationFailed)(`The provided Eth Address '${ethAddress}' does not have access to the following item: '${parsedAsset.uri}'`);
|
|
79
|
+
return types_1.OK;
|
|
80
|
+
}
|
|
81
|
+
else if (parsedAsset.type === 'blockchain-collection-v1-asset' ||
|
|
82
|
+
parsedAsset.type === 'blockchain-collection-v2-asset') {
|
|
83
|
+
return v1andV2collectionAssetValidateFn(parsedAsset, deployment);
|
|
84
|
+
}
|
|
85
|
+
else if (parsedAsset.type === 'blockchain-collection-third-party') {
|
|
86
|
+
return thirdPartyAssetValidateFn(parsedAsset, deployment);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
throw new Error('This should never happen. There is no validations for the asset.');
|
|
64
90
|
}
|
|
65
|
-
throw new Error('This should never happen. There is no validations for the asset.');
|
|
66
91
|
};
|
|
67
92
|
}
|
|
68
93
|
exports.createItemValidateFn = createItemValidateFn;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.js","sourceRoot":"","sources":["../../../../src/validations/access/common/items.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ContentValidatorComponents, ValidateFn } from '../../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Validate that the pointers are valid, and that the Ethereum address has write access to them
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export declare function createStoreValidateFn({ externalCalls }: Pick<ContentValidatorComponents, 'externalCalls'>): ValidateFn;
|
|
7
|
+
//# sourceMappingURL=stores.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/common/stores.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAG1B,UAAU,EAGX,MAAM,gBAAgB,CAAA;AAUvB;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,aAAa,EACd,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,GAAG,UAAU,CAuBhE"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createStoreValidateFn = void 0;
|
|
4
4
|
const urn_resolver_1 = require("@dcl/urn-resolver");
|
|
5
|
-
const types_1 = require("
|
|
5
|
+
const types_1 = require("../../../types");
|
|
6
6
|
async function parseUrnNoFail(pointer) {
|
|
7
7
|
try {
|
|
8
8
|
const parsed = await (0, urn_resolver_1.parseUrn)(pointer);
|
|
@@ -16,10 +16,10 @@ async function parseUrnNoFail(pointer) {
|
|
|
16
16
|
* Validate that the pointers are valid, and that the Ethereum address has write access to them
|
|
17
17
|
* @public
|
|
18
18
|
*/
|
|
19
|
-
function createStoreValidateFn(
|
|
19
|
+
function createStoreValidateFn({ externalCalls }) {
|
|
20
20
|
return async function validateFn(deployment) {
|
|
21
21
|
const pointers = deployment.entity.pointers;
|
|
22
|
-
const ethAddress =
|
|
22
|
+
const ethAddress = externalCalls.ownerAddress(deployment.auditInfo);
|
|
23
23
|
if (pointers.length !== 1)
|
|
24
24
|
return (0, types_1.validationFailed)(`Only one pointer is allowed when you create a Store. Received: ${pointers}`);
|
|
25
25
|
const pointer = pointers[0].toLowerCase();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stores.js","sourceRoot":"","sources":["../../../../src/validations/access/common/stores.ts"],"names":[],"mappings":";;;AAAA,oDAA2D;AAC3D,0CAOuB;AAEvB,KAAK,UAAU,cAAc,CAAC,OAAe;IAC3C,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAQ,EAAC,OAAO,CAAC,CAAA;QACtC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,IAAI,KAAK,WAAW;YAAE,OAAO,SAAS,CAAA;QAC7D,OAAO,MAAM,CAAA;KACd;IAAC,MAAM,GAAE;AACZ,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,EACpC,aAAa,EACqC;IAClD,OAAO,KAAK,UAAU,UAAU,CAAC,UAAgC;QAC/D,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAA;QAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAEnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YACvB,OAAO,IAAA,wBAAgB,EAAC,kEAAkE,QAAQ,EAAE,CAAC,CAAA;QAEvG,MAAM,OAAO,GAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;QACjD,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAA;QAEnD,IAAI,CAAC,aAAa;YAChB,OAAO,IAAA,wBAAgB,EACrB,2HAA2H,OAAO,EAAE,CACrI,CAAA;QAEH,IAAI,aAAa,CAAC,EAAE,KAAK,UAAU;YACjC,OAAO,IAAA,wBAAgB,EACrB,wGAAwG,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,UAAU,CAAC,WAAW,EAAE,IAAI,CAC/K,CAAA;QAEH,OAAO,UAAE,CAAA;IACX,CAAC,CAAA;AACH,CAAC;AAzBD,sDAyBC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { EntityType } from '@dcl/schemas';
|
|
2
|
+
import { ContentValidatorComponents, ValidateFn } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Validate that the pointers are valid, and that the Ethereum address has write access to them
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export declare function createAccessValidateFn(components: Pick<ContentValidatorComponents, 'externalCalls'>, accessValidateFns: Record<EntityType, ValidateFn>): ValidateFn;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/validations/access/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EACL,0BAA0B,EAG1B,UAAU,EAGX,MAAM,aAAa,CAAA;AAGpB;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,CAAC,EAC7D,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAChD,UAAU,CAwBZ"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAccessValidateFn = void 0;
|
|
4
|
+
const schemas_1 = require("@dcl/schemas");
|
|
5
|
+
const types_1 = require("../../types");
|
|
6
|
+
const timestamps_1 = require("../timestamps");
|
|
7
|
+
/**
|
|
8
|
+
* Validate that the pointers are valid, and that the Ethereum address has write access to them
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
function createAccessValidateFn(components, accessValidateFns) {
|
|
12
|
+
const { externalCalls } = components;
|
|
13
|
+
return async function validateFn(deployment) {
|
|
14
|
+
const deployedBeforeDCLLaunch = deployment.entity.timestamp <= timestamps_1.LEGACY_CONTENT_MIGRATION_TIMESTAMP;
|
|
15
|
+
const address = externalCalls.ownerAddress(deployment.auditInfo);
|
|
16
|
+
const isDefaultScene = deployment.entity.type === schemas_1.EntityType.SCENE &&
|
|
17
|
+
deployment.entity.pointers.some((p) => p.toLowerCase().startsWith('default'));
|
|
18
|
+
// Default scenes were removed from the Content Servers after https://github.com/decentraland/catalyst/issues/878
|
|
19
|
+
if (isDefaultScene) {
|
|
20
|
+
return (0, types_1.validationFailed)(`Scene pointers should only contain two integers separated by a comma, for example (10,10) or (120,-45).`);
|
|
21
|
+
}
|
|
22
|
+
// Legacy entities still need to be synchronized
|
|
23
|
+
if (deployedBeforeDCLLaunch && externalCalls.isAddressOwnedByDecentraland(address)) {
|
|
24
|
+
return types_1.OK;
|
|
25
|
+
}
|
|
26
|
+
return accessValidateFns[deployment.entity.type](deployment);
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
exports.createAccessValidateFn = createAccessValidateFn;
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validations/access/index.ts"],"names":[],"mappings":";;;AAAA,0CAAyC;AACzC,uCAOoB;AACpB,8CAAkE;AAElE;;;GAGG;AACH,SAAgB,sBAAsB,CACpC,UAA6D,EAC7D,iBAAiD;IAEjD,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAA;IAEpC,OAAO,KAAK,UAAU,UAAU,CAAC,UAAgC;QAC/D,MAAM,uBAAuB,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,+CAAkC,CAAA;QACjG,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAEhE,MAAM,cAAc,GAClB,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,oBAAU,CAAC,KAAK;YAC3C,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;QAE/E,iHAAiH;QACjH,IAAI,cAAc,EAAE;YAClB,OAAO,IAAA,wBAAgB,EACrB,yGAAyG,CAC1G,CAAA;SACF;QACD,gDAAgD;QAChD,IAAI,uBAAuB,IAAI,aAAa,CAAC,4BAA4B,CAAC,OAAO,CAAC,EAAE;YAClF,OAAO,UAAE,CAAA;SACV;QAED,OAAO,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAA;IAC9D,CAAC,CAAA;AACH,CAAC;AA3BD,wDA2BC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { OnChainAccessCheckerComponents, OnChainClient } from '../../../types';
|
|
2
|
+
export declare type PermissionResult = {
|
|
3
|
+
result: boolean;
|
|
4
|
+
failing?: string[];
|
|
5
|
+
};
|
|
6
|
+
export declare function timestampBounds(timestampMs: number): {
|
|
7
|
+
upper: number;
|
|
8
|
+
lower: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export declare const createOnChainClient: (components: Pick<OnChainAccessCheckerComponents, 'logs' | 'L1' | 'L2'>) => OnChainClient;
|
|
14
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/validations/access/on-chain/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,8BAA8B,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEhG,oBAAY,gBAAgB,GAAG;IAC7B,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM;;;EAYlD;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAClB,KAAK,8BAA8B,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,KACrE,aA2MF,CAAA"}
|