@nucypher/taco 0.1.0-rc.6 → 0.1.0
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/README.md +63 -1
- package/dist/cjs/conditions/base/contract.d.ts +17 -12
- package/dist/cjs/conditions/base/contract.js +17 -3
- package/dist/cjs/conditions/base/contract.js.map +1 -1
- package/dist/cjs/conditions/base/index.d.ts +3 -21
- package/dist/cjs/conditions/base/index.js +27 -37
- package/dist/cjs/conditions/base/index.js.map +1 -1
- package/dist/cjs/conditions/base/rpc.d.ts +16 -11
- package/dist/cjs/conditions/base/rpc.js +16 -6
- package/dist/cjs/conditions/base/rpc.js.map +1 -1
- package/dist/cjs/conditions/base/time.d.ts +10 -5
- package/dist/cjs/conditions/base/time.js +11 -1
- package/dist/cjs/conditions/base/time.js.map +1 -1
- package/dist/cjs/conditions/compound-condition.d.ts +10 -0
- package/dist/cjs/conditions/compound-condition.js +52 -5
- package/dist/cjs/conditions/compound-condition.js.map +1 -1
- package/dist/cjs/conditions/condition-expr.js +2 -2
- package/dist/cjs/conditions/condition-expr.js.map +1 -1
- package/dist/cjs/conditions/condition-factory.d.ts +4 -0
- package/dist/cjs/conditions/condition-factory.js +26 -0
- package/dist/cjs/conditions/condition-factory.js.map +1 -0
- package/dist/cjs/conditions/condition.d.ts +0 -1
- package/dist/cjs/conditions/condition.js +0 -22
- package/dist/cjs/conditions/condition.js.map +1 -1
- package/dist/cjs/conditions/const.d.ts +3 -0
- package/dist/cjs/conditions/const.js +6 -2
- package/dist/cjs/conditions/const.js.map +1 -1
- package/dist/cjs/conditions/context/context.d.ts +0 -2
- package/dist/cjs/conditions/context/context.js +7 -10
- package/dist/cjs/conditions/context/context.js.map +1 -1
- package/dist/cjs/conditions/index.d.ts +5 -6
- package/dist/cjs/conditions/index.js +7 -14
- package/dist/cjs/conditions/index.js.map +1 -1
- package/dist/cjs/conditions/predefined/erc721.d.ts +2 -2
- package/dist/cjs/conditions/predefined/erc721.js +5 -11
- package/dist/cjs/conditions/predefined/erc721.js.map +1 -1
- package/dist/cjs/conditions/predefined/index.d.ts +1 -1
- package/dist/cjs/conditions/predefined/index.js +25 -4
- package/dist/cjs/conditions/predefined/index.js.map +1 -1
- package/dist/cjs/conditions/{base/shared.d.ts → shared.d.ts} +7 -3
- package/dist/cjs/conditions/shared.js +31 -0
- package/dist/cjs/conditions/shared.js.map +1 -0
- package/dist/cjs/dkg.d.ts +1 -1
- package/dist/cjs/dkg.js +6 -4
- package/dist/cjs/dkg.js.map +1 -1
- package/dist/cjs/taco.d.ts +70 -1
- package/dist/cjs/taco.js +72 -4
- package/dist/cjs/taco.js.map +1 -1
- package/dist/cjs/tdec.d.ts +2 -1
- package/dist/cjs/tdec.js +6 -4
- package/dist/cjs/tdec.js.map +1 -1
- package/dist/es/conditions/base/contract.d.ts +17 -12
- package/dist/es/conditions/base/contract.js +15 -2
- package/dist/es/conditions/base/contract.js.map +1 -1
- package/dist/es/conditions/base/index.d.ts +3 -21
- package/dist/es/conditions/base/index.js +3 -28
- package/dist/es/conditions/base/index.js.map +1 -1
- package/dist/es/conditions/base/rpc.d.ts +16 -11
- package/dist/es/conditions/base/rpc.js +14 -5
- package/dist/es/conditions/base/rpc.js.map +1 -1
- package/dist/es/conditions/base/time.d.ts +10 -5
- package/dist/es/conditions/base/time.js +9 -0
- package/dist/es/conditions/base/time.js.map +1 -1
- package/dist/es/conditions/compound-condition.d.ts +10 -0
- package/dist/es/conditions/compound-condition.js +50 -4
- package/dist/es/conditions/compound-condition.js.map +1 -1
- package/dist/es/conditions/condition-expr.js +2 -2
- package/dist/es/conditions/condition-expr.js.map +1 -1
- package/dist/es/conditions/condition-factory.d.ts +4 -0
- package/dist/es/conditions/condition-factory.js +22 -0
- package/dist/es/conditions/condition-factory.js.map +1 -0
- package/dist/es/conditions/condition.d.ts +0 -1
- package/dist/es/conditions/condition.js +0 -22
- package/dist/es/conditions/condition.js.map +1 -1
- package/dist/es/conditions/const.d.ts +3 -0
- package/dist/es/conditions/const.js +5 -1
- package/dist/es/conditions/const.js.map +1 -1
- package/dist/es/conditions/context/context.d.ts +0 -2
- package/dist/es/conditions/context/context.js +3 -6
- package/dist/es/conditions/context/context.js.map +1 -1
- package/dist/es/conditions/index.d.ts +5 -6
- package/dist/es/conditions/index.js +5 -6
- package/dist/es/conditions/index.js.map +1 -1
- package/dist/es/conditions/predefined/erc721.d.ts +2 -2
- package/dist/es/conditions/predefined/erc721.js +1 -7
- package/dist/es/conditions/predefined/erc721.js.map +1 -1
- package/dist/es/conditions/predefined/index.d.ts +1 -1
- package/dist/es/conditions/predefined/index.js +1 -1
- package/dist/es/conditions/predefined/index.js.map +1 -1
- package/dist/es/conditions/{base/shared.d.ts → shared.d.ts} +7 -3
- package/dist/es/conditions/shared.js +28 -0
- package/dist/es/conditions/shared.js.map +1 -0
- package/dist/es/dkg.d.ts +1 -1
- package/dist/es/dkg.js +6 -4
- package/dist/es/dkg.js.map +1 -1
- package/dist/es/taco.d.ts +70 -1
- package/dist/es/taco.js +71 -3
- package/dist/es/taco.js.map +1 -1
- package/dist/es/tdec.d.ts +2 -1
- package/dist/es/tdec.js +5 -3
- package/dist/es/tdec.js.map +1 -1
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.es.tsbuildinfo +1 -1
- package/package.json +8 -7
- package/dist/cjs/conditions/base/shared.js +0 -17
- package/dist/cjs/conditions/base/shared.js.map +0 -1
- package/dist/es/conditions/base/shared.js +0 -14
- package/dist/es/conditions/base/shared.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,3 +1,65 @@
|
|
|
1
1
|
# `@nucypher/taco`
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
### [`nucypher/taco-web`](../../README.md)
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
First, install the package:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
$ yarn add @nucypher/taco ethers@5.7.2
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Encrypt your data
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { conditions, domains, encrypt, initialize } from '@nucypher/taco';
|
|
17
|
+
import { ethers } from 'ethers';
|
|
18
|
+
|
|
19
|
+
// We have to initialize the TACo library first
|
|
20
|
+
await initialize();
|
|
21
|
+
|
|
22
|
+
const web3Provider = new ethers.providers.Web3Provider(window.ethereum);
|
|
23
|
+
|
|
24
|
+
const ownsNFT = new conditions.predefined.ERC721Ownership({
|
|
25
|
+
contractAddress: '0x1e988ba4692e52Bc50b375bcC8585b95c48AaD77',
|
|
26
|
+
parameters: [3591],
|
|
27
|
+
chain: 5,
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const message = 'my secret message';
|
|
31
|
+
|
|
32
|
+
const messageKit = await encrypt(
|
|
33
|
+
web3Provider,
|
|
34
|
+
domains.TESTNET,
|
|
35
|
+
message,
|
|
36
|
+
ownsNFT,
|
|
37
|
+
ritualId,
|
|
38
|
+
web3Provider.getSigner(),
|
|
39
|
+
);
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Decrypt your data
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
import { decrypt, domains, getPorterUri, initialize } from '@nucypher/taco';
|
|
46
|
+
import { ethers } from 'ethers';
|
|
47
|
+
|
|
48
|
+
// We have to initialize the TACo library first
|
|
49
|
+
await initialize();
|
|
50
|
+
|
|
51
|
+
const web3Provider = new ethers.providers.Web3Provider(window.ethereum);
|
|
52
|
+
|
|
53
|
+
const decryptedMessage = await decrypt(
|
|
54
|
+
web3Provider,
|
|
55
|
+
domains.TESTNET,
|
|
56
|
+
messageKit,
|
|
57
|
+
getPorterUri(domains.TESTNET),
|
|
58
|
+
web3Provider.getSigner(),
|
|
59
|
+
);
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Learn more
|
|
63
|
+
|
|
64
|
+
Please find developer documentation for
|
|
65
|
+
TACo [here](https://docs.threshold.network/app-development/threshold-access-control-tac).
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { Condition } from '../condition';
|
|
3
|
+
import { OmitConditionType } from '../shared';
|
|
2
4
|
declare const functionAbiSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
3
5
|
name: z.ZodString;
|
|
4
6
|
type: z.ZodLiteral<"function">;
|
|
@@ -145,15 +147,15 @@ export declare const contractConditionSchema: z.ZodEffects<z.ZodObject<{
|
|
|
145
147
|
returnValueTest: z.ZodObject<{
|
|
146
148
|
index: z.ZodOptional<z.ZodNumber>;
|
|
147
149
|
comparator: z.ZodEnum<["==", ">", "<", ">=", "<=", "!="]>;
|
|
148
|
-
value: z.
|
|
150
|
+
value: z.ZodType<any, z.ZodTypeDef, any>;
|
|
149
151
|
}, "strip", z.ZodTypeAny, {
|
|
150
152
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
151
153
|
index?: number | undefined;
|
|
152
|
-
value?:
|
|
154
|
+
value?: any;
|
|
153
155
|
}, {
|
|
154
156
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
155
157
|
index?: number | undefined;
|
|
156
|
-
value?:
|
|
158
|
+
value?: any;
|
|
157
159
|
}>;
|
|
158
160
|
conditionType: z.ZodDefault<z.ZodLiteral<"contract">>;
|
|
159
161
|
contractAddress: z.ZodString;
|
|
@@ -298,15 +300,15 @@ export declare const contractConditionSchema: z.ZodEffects<z.ZodObject<{
|
|
|
298
300
|
}[]];
|
|
299
301
|
stateMutability: "view" | "pure";
|
|
300
302
|
}>>;
|
|
301
|
-
parameters: z.ZodArray<z.
|
|
303
|
+
parameters: z.ZodArray<z.ZodType<any, z.ZodTypeDef, any>, "many">;
|
|
302
304
|
}, "strip", z.ZodTypeAny, {
|
|
303
305
|
conditionType: "contract";
|
|
304
306
|
method: string;
|
|
305
|
-
parameters:
|
|
307
|
+
parameters: any[];
|
|
306
308
|
returnValueTest: {
|
|
307
309
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
308
310
|
index?: number | undefined;
|
|
309
|
-
value?:
|
|
311
|
+
value?: any;
|
|
310
312
|
};
|
|
311
313
|
contractAddress: string;
|
|
312
314
|
chain?: z.Primitive;
|
|
@@ -332,11 +334,11 @@ export declare const contractConditionSchema: z.ZodEffects<z.ZodObject<{
|
|
|
332
334
|
} | undefined;
|
|
333
335
|
}, {
|
|
334
336
|
method: string;
|
|
335
|
-
parameters:
|
|
337
|
+
parameters: any[];
|
|
336
338
|
returnValueTest: {
|
|
337
339
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
338
340
|
index?: number | undefined;
|
|
339
|
-
value?:
|
|
341
|
+
value?: any;
|
|
340
342
|
};
|
|
341
343
|
contractAddress: string;
|
|
342
344
|
chain?: z.Primitive;
|
|
@@ -364,11 +366,11 @@ export declare const contractConditionSchema: z.ZodEffects<z.ZodObject<{
|
|
|
364
366
|
}>, {
|
|
365
367
|
conditionType: "contract";
|
|
366
368
|
method: string;
|
|
367
|
-
parameters:
|
|
369
|
+
parameters: any[];
|
|
368
370
|
returnValueTest: {
|
|
369
371
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
370
372
|
index?: number | undefined;
|
|
371
|
-
value?:
|
|
373
|
+
value?: any;
|
|
372
374
|
};
|
|
373
375
|
contractAddress: string;
|
|
374
376
|
chain?: z.Primitive;
|
|
@@ -394,11 +396,11 @@ export declare const contractConditionSchema: z.ZodEffects<z.ZodObject<{
|
|
|
394
396
|
} | undefined;
|
|
395
397
|
}, {
|
|
396
398
|
method: string;
|
|
397
|
-
parameters:
|
|
399
|
+
parameters: any[];
|
|
398
400
|
returnValueTest: {
|
|
399
401
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
400
402
|
index?: number | undefined;
|
|
401
|
-
value?:
|
|
403
|
+
value?: any;
|
|
402
404
|
};
|
|
403
405
|
contractAddress: string;
|
|
404
406
|
chain?: z.Primitive;
|
|
@@ -425,4 +427,7 @@ export declare const contractConditionSchema: z.ZodEffects<z.ZodObject<{
|
|
|
425
427
|
} | undefined;
|
|
426
428
|
}>;
|
|
427
429
|
export type ContractConditionProps = z.infer<typeof contractConditionSchema>;
|
|
430
|
+
export declare class ContractCondition extends Condition {
|
|
431
|
+
constructor(value: OmitConditionType<ContractConditionProps>);
|
|
432
|
+
}
|
|
428
433
|
export {};
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.contractConditionSchema = exports.ContractConditionType = void 0;
|
|
3
|
+
exports.ContractCondition = exports.contractConditionSchema = exports.ContractConditionType = void 0;
|
|
4
4
|
const ethers_1 = require("ethers");
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
|
+
const condition_1 = require("../condition");
|
|
6
7
|
const const_1 = require("../const");
|
|
8
|
+
const shared_1 = require("../shared");
|
|
7
9
|
const rpc_1 = require("./rpc");
|
|
8
10
|
// TODO: Consider replacing with `z.unknown`:
|
|
9
11
|
// Since Solidity types are tied to Solidity version, we may not be able to accurately represent them in Zod.
|
|
@@ -46,6 +48,7 @@ const functionAbiSchema = zod_1.z
|
|
|
46
48
|
return functionsInAbi.length === 1;
|
|
47
49
|
}, {
|
|
48
50
|
message: '"functionAbi" must contain a single function definition',
|
|
51
|
+
path: ['functionAbi'],
|
|
49
52
|
})
|
|
50
53
|
.refine((functionAbi) => {
|
|
51
54
|
const asInterface = new ethers_1.ethers.utils.Interface(JSON.stringify([functionAbi]));
|
|
@@ -53,6 +56,7 @@ const functionAbiSchema = zod_1.z
|
|
|
53
56
|
return functionAbi.inputs.length === nrOfInputs;
|
|
54
57
|
}, {
|
|
55
58
|
message: '"parameters" must have the same length as "functionAbi.inputs"',
|
|
59
|
+
path: ['parameters'],
|
|
56
60
|
});
|
|
57
61
|
exports.ContractConditionType = 'contract';
|
|
58
62
|
exports.contractConditionSchema = rpc_1.rpcConditionSchema
|
|
@@ -60,11 +64,11 @@ exports.contractConditionSchema = rpc_1.rpcConditionSchema
|
|
|
60
64
|
conditionType: zod_1.z
|
|
61
65
|
.literal(exports.ContractConditionType)
|
|
62
66
|
.default(exports.ContractConditionType),
|
|
63
|
-
contractAddress: zod_1.z.string().regex(const_1.ETH_ADDRESS_REGEXP),
|
|
67
|
+
contractAddress: zod_1.z.string().regex(const_1.ETH_ADDRESS_REGEXP).length(42),
|
|
64
68
|
standardContractType: zod_1.z.enum(['ERC20', 'ERC721']).optional(),
|
|
65
69
|
method: zod_1.z.string(),
|
|
66
70
|
functionAbi: functionAbiSchema.optional(),
|
|
67
|
-
parameters: zod_1.z.array(
|
|
71
|
+
parameters: zod_1.z.array(shared_1.paramOrContextParamSchema),
|
|
68
72
|
})
|
|
69
73
|
// Adding this custom logic causes the return type to be ZodEffects instead of ZodObject
|
|
70
74
|
// https://github.com/colinhacks/zod/issues/2474
|
|
@@ -72,5 +76,15 @@ exports.contractConditionSchema = rpc_1.rpcConditionSchema
|
|
|
72
76
|
// A check to see if either 'standardContractType' or 'functionAbi' is set
|
|
73
77
|
(data) => Boolean(data.standardContractType) !== Boolean(data.functionAbi), {
|
|
74
78
|
message: "At most one of the fields 'standardContractType' and 'functionAbi' must be defined",
|
|
79
|
+
path: ['standardContractType'],
|
|
75
80
|
});
|
|
81
|
+
class ContractCondition extends condition_1.Condition {
|
|
82
|
+
constructor(value) {
|
|
83
|
+
super(exports.contractConditionSchema, {
|
|
84
|
+
conditionType: exports.ContractConditionType,
|
|
85
|
+
...value,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.ContractCondition = ContractCondition;
|
|
76
90
|
//# sourceMappingURL=contract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../../src/conditions/base/contract.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAChC,6BAAwB;AAExB,oCAA8C;
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../../src/conditions/base/contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { RpcConditionProps } from './rpc';
|
|
5
|
-
import { TimeConditionProps } from './time';
|
|
6
|
-
export declare class CompoundCondition extends Condition {
|
|
7
|
-
constructor(value: CompoundConditionProps);
|
|
8
|
-
}
|
|
9
|
-
export declare class ContractCondition extends Condition {
|
|
10
|
-
constructor(value: ContractConditionProps);
|
|
11
|
-
}
|
|
12
|
-
export declare class RpcCondition extends Condition {
|
|
13
|
-
constructor(value: RpcConditionProps);
|
|
14
|
-
}
|
|
15
|
-
export declare class TimeCondition extends Condition {
|
|
16
|
-
constructor(value: TimeConditionProps);
|
|
17
|
-
}
|
|
18
|
-
export { ContractConditionType, FunctionAbiProps, type ContractConditionProps, } from './contract';
|
|
19
|
-
export { RpcConditionType, type RpcConditionProps } from './rpc';
|
|
20
|
-
export { ReturnValueTestProps } from './shared';
|
|
21
|
-
export { TimeConditionMethod, TimeConditionType, type TimeConditionProps, } from './time';
|
|
1
|
+
export * as contract from './contract';
|
|
2
|
+
export * as rpc from './rpc';
|
|
3
|
+
export * as time from './time';
|
|
@@ -1,42 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TimeConditionType = exports.TimeConditionMethod = exports.RpcConditionType = exports.ContractConditionType = exports.TimeCondition = exports.RpcCondition = exports.ContractCondition = exports.CompoundCondition = void 0;
|
|
4
|
-
const compound_condition_1 = require("../compound-condition");
|
|
5
|
-
const condition_1 = require("../condition");
|
|
6
|
-
const contract_1 = require("./contract");
|
|
7
|
-
const rpc_1 = require("./rpc");
|
|
8
|
-
const time_1 = require("./time");
|
|
9
2
|
// Exporting classes here instead of their respective schema files to
|
|
10
3
|
// avoid circular dependency on Condition class.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
exports.CompoundCondition = CompoundCondition;
|
|
17
|
-
class ContractCondition extends condition_1.Condition {
|
|
18
|
-
constructor(value) {
|
|
19
|
-
super(contract_1.contractConditionSchema, value);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.ContractCondition = ContractCondition;
|
|
23
|
-
class RpcCondition extends condition_1.Condition {
|
|
24
|
-
constructor(value) {
|
|
25
|
-
super(rpc_1.rpcConditionSchema, value);
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
26
9
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
var
|
|
38
|
-
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
21
|
+
if (mod && mod.__esModule) return mod;
|
|
22
|
+
var result = {};
|
|
23
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
24
|
+
__setModuleDefault(result, mod);
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.time = exports.rpc = exports.contract = void 0;
|
|
29
|
+
exports.contract = __importStar(require("./contract"));
|
|
30
|
+
exports.rpc = __importStar(require("./rpc"));
|
|
31
|
+
exports.time = __importStar(require("./time"));
|
|
42
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/conditions/base/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/conditions/base/index.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhD,uDAAuC;AACvC,6CAA6B;AAC7B,+CAA+B"}
|
|
@@ -1,42 +1,47 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { Condition } from '../condition';
|
|
3
|
+
import { OmitConditionType } from '../shared';
|
|
2
4
|
export declare const RpcConditionType = "rpc";
|
|
3
5
|
export declare const rpcConditionSchema: z.ZodObject<{
|
|
4
6
|
conditionType: z.ZodDefault<z.ZodLiteral<"rpc">>;
|
|
5
7
|
chain: z.ZodNever | z.ZodLiteral<z.Primitive> | z.ZodUnion<[z.ZodLiteral<z.Primitive>, z.ZodLiteral<z.Primitive>, ...z.ZodLiteral<z.Primitive>[]]>;
|
|
6
|
-
method: z.ZodEnum<["eth_getBalance"
|
|
7
|
-
parameters: z.ZodUnion<[z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodLiteral<":userAddress">]>, "
|
|
8
|
+
method: z.ZodEnum<["eth_getBalance"]>;
|
|
9
|
+
parameters: z.ZodUnion<[z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodLiteral<":userAddress">]>, "atleastone">, z.ZodTuple<[z.ZodUnion<[z.ZodString, z.ZodLiteral<":userAddress">]>, z.ZodType<any, z.ZodTypeDef, any>], null>]>;
|
|
8
10
|
returnValueTest: z.ZodObject<{
|
|
9
11
|
index: z.ZodOptional<z.ZodNumber>;
|
|
10
12
|
comparator: z.ZodEnum<["==", ">", "<", ">=", "<=", "!="]>;
|
|
11
|
-
value: z.
|
|
13
|
+
value: z.ZodType<any, z.ZodTypeDef, any>;
|
|
12
14
|
}, "strip", z.ZodTypeAny, {
|
|
13
15
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
14
16
|
index?: number | undefined;
|
|
15
|
-
value?:
|
|
17
|
+
value?: any;
|
|
16
18
|
}, {
|
|
17
19
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
18
20
|
index?: number | undefined;
|
|
19
|
-
value?:
|
|
21
|
+
value?: any;
|
|
20
22
|
}>;
|
|
21
23
|
}, "strip", z.ZodTypeAny, {
|
|
22
24
|
conditionType: "rpc";
|
|
23
|
-
method: "eth_getBalance"
|
|
24
|
-
parameters: (string[] | [string,
|
|
25
|
+
method: "eth_getBalance";
|
|
26
|
+
parameters: ([string, ...string[]] | [string, any]) & ([string, ...string[]] | [string, any] | undefined);
|
|
25
27
|
returnValueTest: {
|
|
26
28
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
27
29
|
index?: number | undefined;
|
|
28
|
-
value?:
|
|
30
|
+
value?: any;
|
|
29
31
|
};
|
|
30
32
|
chain?: z.Primitive;
|
|
31
33
|
}, {
|
|
32
|
-
method: "eth_getBalance"
|
|
33
|
-
parameters: (string[] | [string,
|
|
34
|
+
method: "eth_getBalance";
|
|
35
|
+
parameters: ([string, ...string[]] | [string, any]) & ([string, ...string[]] | [string, any] | undefined);
|
|
34
36
|
returnValueTest: {
|
|
35
37
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
36
38
|
index?: number | undefined;
|
|
37
|
-
value?:
|
|
39
|
+
value?: any;
|
|
38
40
|
};
|
|
39
41
|
conditionType?: "rpc" | undefined;
|
|
40
42
|
chain?: z.Primitive;
|
|
41
43
|
}>;
|
|
42
44
|
export type RpcConditionProps = z.infer<typeof rpcConditionSchema>;
|
|
45
|
+
export declare class RpcCondition extends Condition {
|
|
46
|
+
constructor(value: OmitConditionType<RpcConditionProps>);
|
|
47
|
+
}
|
|
@@ -3,21 +3,31 @@ 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.rpcConditionSchema = exports.RpcConditionType = void 0;
|
|
6
|
+
exports.RpcCondition = exports.rpcConditionSchema = exports.RpcConditionType = void 0;
|
|
7
7
|
const zod_1 = require("zod");
|
|
8
|
+
const condition_1 = require("../condition");
|
|
8
9
|
const const_1 = require("../const");
|
|
10
|
+
const shared_1 = require("../shared");
|
|
9
11
|
const zod_2 = __importDefault(require("../zod"));
|
|
10
|
-
const shared_1 = require("./shared");
|
|
11
12
|
exports.RpcConditionType = 'rpc';
|
|
12
13
|
exports.rpcConditionSchema = zod_1.z.object({
|
|
13
14
|
conditionType: zod_1.z.literal(exports.RpcConditionType).default(exports.RpcConditionType),
|
|
14
15
|
chain: (0, zod_2.default)(const_1.SUPPORTED_CHAIN_IDS),
|
|
15
|
-
method: zod_1.z.enum(['eth_getBalance'
|
|
16
|
+
method: zod_1.z.enum(['eth_getBalance']),
|
|
16
17
|
parameters: zod_1.z.union([
|
|
17
|
-
zod_1.z.array(shared_1.EthAddressOrUserAddressSchema).
|
|
18
|
+
zod_1.z.array(shared_1.EthAddressOrUserAddressSchema).nonempty(),
|
|
18
19
|
// Using tuple here because ordering matters
|
|
19
|
-
zod_1.z.tuple([shared_1.EthAddressOrUserAddressSchema,
|
|
20
|
+
zod_1.z.tuple([shared_1.EthAddressOrUserAddressSchema, shared_1.paramOrContextParamSchema]),
|
|
20
21
|
]),
|
|
21
|
-
returnValueTest: shared_1.returnValueTestSchema,
|
|
22
|
+
returnValueTest: shared_1.returnValueTestSchema, // Update to allow multiple return values after expanding supported methods
|
|
22
23
|
});
|
|
24
|
+
class RpcCondition extends condition_1.Condition {
|
|
25
|
+
constructor(value) {
|
|
26
|
+
super(exports.rpcConditionSchema, {
|
|
27
|
+
conditionType: exports.RpcConditionType,
|
|
28
|
+
...value,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.RpcCondition = RpcCondition;
|
|
23
33
|
//# sourceMappingURL=rpc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../../src/conditions/base/rpc.ts"],"names":[],"mappings":";;;;;;AAAA,6BAAwB;AAExB,oCAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../../src/conditions/base/rpc.ts"],"names":[],"mappings":";;;;;;AAAA,6BAAwB;AAExB,4CAAyC;AACzC,oCAA+C;AAC/C,sCAKmB;AACnB,iDAAuC;AAE1B,QAAA,gBAAgB,GAAG,KAAK,CAAC;AAEzB,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,aAAa,EAAE,OAAC,CAAC,OAAO,CAAC,wBAAgB,CAAC,CAAC,OAAO,CAAC,wBAAgB,CAAC;IACpE,KAAK,EAAE,IAAA,aAAiB,EAAC,2BAAmB,CAAC;IAC7C,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAClC,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC;QAClB,OAAC,CAAC,KAAK,CAAC,sCAA6B,CAAC,CAAC,QAAQ,EAAE;QACjD,4CAA4C;QAC5C,OAAC,CAAC,KAAK,CAAC,CAAC,sCAA6B,EAAE,kCAAyB,CAAC,CAAC;KACpE,CAAC;IACF,eAAe,EAAE,8BAAqB,EAAE,2EAA2E;CACpH,CAAC,CAAC;AAIH,MAAa,YAAa,SAAQ,qBAAS;IACzC,YAAY,KAA2C;QACrD,KAAK,CAAC,0BAAkB,EAAE;YACxB,aAAa,EAAE,wBAAgB;YAC/B,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;CACF;AAPD,oCAOC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { Condition } from '../condition';
|
|
3
|
+
import { OmitConditionType } from '../shared';
|
|
2
4
|
export declare const TimeConditionType = "time";
|
|
3
5
|
export declare const TimeConditionMethod = "blocktime";
|
|
4
6
|
export declare const timeConditionSchema: z.ZodObject<{
|
|
@@ -8,15 +10,15 @@ export declare const timeConditionSchema: z.ZodObject<{
|
|
|
8
10
|
returnValueTest: z.ZodObject<{
|
|
9
11
|
index: z.ZodOptional<z.ZodNumber>;
|
|
10
12
|
comparator: z.ZodEnum<["==", ">", "<", ">=", "<=", "!="]>;
|
|
11
|
-
value: z.
|
|
13
|
+
value: z.ZodType<any, z.ZodTypeDef, any>;
|
|
12
14
|
}, "strip", z.ZodTypeAny, {
|
|
13
15
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
14
16
|
index?: number | undefined;
|
|
15
|
-
value?:
|
|
17
|
+
value?: any;
|
|
16
18
|
}, {
|
|
17
19
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
18
20
|
index?: number | undefined;
|
|
19
|
-
value?:
|
|
21
|
+
value?: any;
|
|
20
22
|
}>;
|
|
21
23
|
}, "strip", z.ZodTypeAny, {
|
|
22
24
|
conditionType: "time";
|
|
@@ -24,17 +26,20 @@ export declare const timeConditionSchema: z.ZodObject<{
|
|
|
24
26
|
returnValueTest: {
|
|
25
27
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
26
28
|
index?: number | undefined;
|
|
27
|
-
value?:
|
|
29
|
+
value?: any;
|
|
28
30
|
};
|
|
29
31
|
chain?: z.Primitive;
|
|
30
32
|
}, {
|
|
31
33
|
returnValueTest: {
|
|
32
34
|
comparator: "==" | ">" | "<" | ">=" | "<=" | "!=";
|
|
33
35
|
index?: number | undefined;
|
|
34
|
-
value?:
|
|
36
|
+
value?: any;
|
|
35
37
|
};
|
|
36
38
|
conditionType?: "time" | undefined;
|
|
37
39
|
method?: "blocktime" | undefined;
|
|
38
40
|
chain?: z.Primitive;
|
|
39
41
|
}>;
|
|
40
42
|
export type TimeConditionProps = z.infer<typeof timeConditionSchema>;
|
|
43
|
+
export declare class TimeCondition extends Condition {
|
|
44
|
+
constructor(value: OmitConditionType<TimeConditionProps>);
|
|
45
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.timeConditionSchema = exports.TimeConditionMethod = exports.TimeConditionType = void 0;
|
|
3
|
+
exports.TimeCondition = exports.timeConditionSchema = exports.TimeConditionMethod = exports.TimeConditionType = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
|
+
const condition_1 = require("../condition");
|
|
5
6
|
const rpc_1 = require("./rpc");
|
|
6
7
|
// TimeCondition is an RpcCondition with the method set to 'blocktime' and no parameters
|
|
7
8
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -13,4 +14,13 @@ exports.timeConditionSchema = zod_1.z.object({
|
|
|
13
14
|
conditionType: zod_1.z.literal(exports.TimeConditionType).default(exports.TimeConditionType),
|
|
14
15
|
method: zod_1.z.literal(exports.TimeConditionMethod).default(exports.TimeConditionMethod),
|
|
15
16
|
});
|
|
17
|
+
class TimeCondition extends condition_1.Condition {
|
|
18
|
+
constructor(value) {
|
|
19
|
+
super(exports.timeConditionSchema, {
|
|
20
|
+
conditionType: exports.TimeConditionType,
|
|
21
|
+
...value,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.TimeCondition = TimeCondition;
|
|
16
26
|
//# sourceMappingURL=time.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../../src/conditions/base/time.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,+BAA2C;AAE3C,wFAAwF;AACxF,6DAA6D;AAC7D,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,wBAAkB,CAAC,KAAK,CAAC;AAEpD,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAC3B,QAAA,mBAAmB,GAAG,WAAW,CAAC;AAElC,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,GAAG,SAAS;IACZ,aAAa,EAAE,OAAC,CAAC,OAAO,CAAC,yBAAiB,CAAC,CAAC,OAAO,CAAC,yBAAiB,CAAC;IACtE,MAAM,EAAE,OAAC,CAAC,OAAO,CAAC,2BAAmB,CAAC,CAAC,OAAO,CAAC,2BAAmB,CAAC;CACpE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../../src/conditions/base/time.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,4CAAyC;AAGzC,+BAA2C;AAE3C,wFAAwF;AACxF,6DAA6D;AAC7D,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,wBAAkB,CAAC,KAAK,CAAC;AAEpD,QAAA,iBAAiB,GAAG,MAAM,CAAC;AAC3B,QAAA,mBAAmB,GAAG,WAAW,CAAC;AAElC,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,GAAG,SAAS;IACZ,aAAa,EAAE,OAAC,CAAC,OAAO,CAAC,yBAAiB,CAAC,CAAC,OAAO,CAAC,yBAAiB,CAAC;IACtE,MAAM,EAAE,OAAC,CAAC,OAAO,CAAC,2BAAmB,CAAC,CAAC,OAAO,CAAC,2BAAmB,CAAC;CACpE,CAAC,CAAC;AAIH,MAAa,aAAc,SAAQ,qBAAS;IAC1C,YAAY,KAA4C;QACtD,KAAK,CAAC,2BAAmB,EAAE;YACzB,aAAa,EAAE,yBAAiB;YAChC,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;CACF;AAPD,sCAOC"}
|
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { Condition, ConditionProps } from './condition';
|
|
3
|
+
import { OmitConditionType } from './shared';
|
|
2
4
|
export declare const CompoundConditionType = "compound";
|
|
3
5
|
export declare const compoundConditionSchema: z.ZodSchema;
|
|
4
6
|
export type CompoundConditionProps = z.infer<typeof compoundConditionSchema>;
|
|
7
|
+
export type ConditionOrProps = Condition | ConditionProps;
|
|
8
|
+
export declare class CompoundCondition extends Condition {
|
|
9
|
+
constructor(value: OmitConditionType<CompoundConditionProps>);
|
|
10
|
+
private static withOperator;
|
|
11
|
+
static or(conditions: ConditionOrProps[]): CompoundCondition;
|
|
12
|
+
static and(conditions: ConditionOrProps[]): CompoundCondition;
|
|
13
|
+
static not(condition: ConditionOrProps): CompoundCondition;
|
|
14
|
+
}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.compoundConditionSchema = exports.CompoundConditionType = void 0;
|
|
3
|
+
exports.CompoundCondition = exports.compoundConditionSchema = exports.CompoundConditionType = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const contract_1 = require("./base/contract");
|
|
6
6
|
const rpc_1 = require("./base/rpc");
|
|
7
7
|
const time_1 = require("./base/time");
|
|
8
|
+
const condition_1 = require("./condition");
|
|
8
9
|
exports.CompoundConditionType = 'compound';
|
|
9
|
-
exports.compoundConditionSchema = zod_1.z
|
|
10
|
+
exports.compoundConditionSchema = zod_1.z
|
|
11
|
+
.object({
|
|
10
12
|
conditionType: zod_1.z
|
|
11
13
|
.literal(exports.CompoundConditionType)
|
|
12
14
|
.default(exports.CompoundConditionType),
|
|
13
|
-
operator: zod_1.z.enum(['and', 'or']),
|
|
15
|
+
operator: zod_1.z.enum(['and', 'or', 'not']),
|
|
14
16
|
operands: zod_1.z
|
|
15
17
|
.array(zod_1.z.lazy(() => zod_1.z.union([
|
|
16
18
|
rpc_1.rpcConditionSchema,
|
|
@@ -18,6 +20,51 @@ exports.compoundConditionSchema = zod_1.z.object({
|
|
|
18
20
|
contract_1.contractConditionSchema,
|
|
19
21
|
exports.compoundConditionSchema,
|
|
20
22
|
])))
|
|
21
|
-
.min(
|
|
22
|
-
})
|
|
23
|
+
.min(1),
|
|
24
|
+
})
|
|
25
|
+
.refine((condition) => {
|
|
26
|
+
// 'and' and 'or' operators must have at least 2 operands
|
|
27
|
+
if (['and', 'or'].includes(condition.operator)) {
|
|
28
|
+
return condition.operands.length >= 2;
|
|
29
|
+
}
|
|
30
|
+
// 'not' operator must have exactly 1 operand
|
|
31
|
+
if (condition.operator === 'not') {
|
|
32
|
+
return condition.operands.length === 1;
|
|
33
|
+
}
|
|
34
|
+
// We test positive cases exhaustively, so we return false here:
|
|
35
|
+
return false;
|
|
36
|
+
}, ({ operands, operator }) => ({
|
|
37
|
+
message: `Invalid number of operands ${operands.length} for operator "${operator}"`,
|
|
38
|
+
path: ['operands'],
|
|
39
|
+
}));
|
|
40
|
+
class CompoundCondition extends condition_1.Condition {
|
|
41
|
+
constructor(value) {
|
|
42
|
+
super(exports.compoundConditionSchema, {
|
|
43
|
+
conditionType: exports.CompoundConditionType,
|
|
44
|
+
...value,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
static withOperator(operands, operator) {
|
|
48
|
+
const asObjects = operands.map((operand) => {
|
|
49
|
+
if (operand instanceof condition_1.Condition) {
|
|
50
|
+
return operand.toObj();
|
|
51
|
+
}
|
|
52
|
+
return operand;
|
|
53
|
+
});
|
|
54
|
+
return new CompoundCondition({
|
|
55
|
+
operator,
|
|
56
|
+
operands: asObjects,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
static or(conditions) {
|
|
60
|
+
return CompoundCondition.withOperator(conditions, 'or');
|
|
61
|
+
}
|
|
62
|
+
static and(conditions) {
|
|
63
|
+
return CompoundCondition.withOperator(conditions, 'and');
|
|
64
|
+
}
|
|
65
|
+
static not(condition) {
|
|
66
|
+
return CompoundCondition.withOperator([condition], 'not');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.CompoundCondition = CompoundCondition;
|
|
23
70
|
//# sourceMappingURL=compound-condition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compound-condition.js","sourceRoot":"","sources":["../../../src/conditions/compound-condition.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,8CAA0D;AAC1D,oCAAgD;AAChD,sCAAkD;
|
|
1
|
+
{"version":3,"file":"compound-condition.js","sourceRoot":"","sources":["../../../src/conditions/compound-condition.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,8CAA0D;AAC1D,oCAAgD;AAChD,sCAAkD;AAClD,2CAAwD;AAG3C,QAAA,qBAAqB,GAAG,UAAU,CAAC;AAEnC,QAAA,uBAAuB,GAAgB,OAAC;KAClD,MAAM,CAAC;IACN,aAAa,EAAE,OAAC;SACb,OAAO,CAAC,6BAAqB,CAAC;SAC9B,OAAO,CAAC,6BAAqB,CAAC;IACjC,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACtC,QAAQ,EAAE,OAAC;SACR,KAAK,CACJ,OAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACV,OAAC,CAAC,KAAK,CAAC;QACN,wBAAkB;QAClB,0BAAmB;QACnB,kCAAuB;QACvB,+BAAuB;KACxB,CAAC,CACH,CACF;SACA,GAAG,CAAC,CAAC,CAAC;CACV,CAAC;KACD,MAAM,CACL,CAAC,SAAS,EAAE,EAAE;IACZ,yDAAyD;IACzD,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;QAC9C,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;KACvC;IAED,6CAA6C;IAC7C,IAAI,SAAS,CAAC,QAAQ,KAAK,KAAK,EAAE;QAChC,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;KACxC;IAED,gEAAgE;IAChE,OAAO,KAAK,CAAC;AACf,CAAC,EACD,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,EAAE,8BAA8B,QAAQ,CAAC,MAAM,kBAAkB,QAAQ,GAAG;IACnF,IAAI,EAAE,CAAC,UAAU,CAAC;CACnB,CAAC,CACH,CAAC;AAMJ,MAAa,iBAAkB,SAAQ,qBAAS;IAC9C,YAAY,KAAgD;QAC1D,KAAK,CAAC,+BAAuB,EAAE;YAC7B,aAAa,EAAE,6BAAqB;YACpC,GAAG,KAAK;SACT,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,YAAY,CACzB,QAA4B,EAC5B,QAA8B;QAE9B,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACzC,IAAI,OAAO,YAAY,qBAAS,EAAE;gBAChC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;aACxB;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,iBAAiB,CAAC;YAC3B,QAAQ;YACR,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,EAAE,CAAC,UAA8B;QAC7C,OAAO,iBAAiB,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAEM,MAAM,CAAC,GAAG,CAAC,UAA8B;QAC9C,OAAO,iBAAiB,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAEM,MAAM,CAAC,GAAG,CAAC,SAA2B;QAC3C,OAAO,iBAAiB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;CACF;AAnCD,8CAmCC"}
|
|
@@ -4,7 +4,7 @@ exports.ConditionExpression = void 0;
|
|
|
4
4
|
const nucypher_core_1 = require("@nucypher/nucypher-core");
|
|
5
5
|
const shared_1 = require("@nucypher/shared");
|
|
6
6
|
const semver_1 = require("semver");
|
|
7
|
-
const
|
|
7
|
+
const condition_factory_1 = require("./condition-factory");
|
|
8
8
|
const context_1 = require("./context");
|
|
9
9
|
const ERR_VERSION = (provided, current) => `Version provided, ${provided}, is incompatible with current version, ${current}`;
|
|
10
10
|
const ERR_CONDITION = (condition) => `Invalid condition: unrecognized condition data ${JSON.stringify(condition)}`;
|
|
@@ -32,7 +32,7 @@ class ConditionExpression {
|
|
|
32
32
|
if (!obj.condition) {
|
|
33
33
|
throw new Error(ERR_CONDITION(obj.condition));
|
|
34
34
|
}
|
|
35
|
-
const condition =
|
|
35
|
+
const condition = condition_factory_1.ConditionFactory.conditionFromProps(obj.condition);
|
|
36
36
|
return new ConditionExpression(condition, obj.version);
|
|
37
37
|
}
|
|
38
38
|
toJson() {
|