Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EPIC] v0.6.x #592

Open
wants to merge 90 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
e2cb183
Add basic types, props, and classes for JsonApiCondition
theref Jul 17, 2024
28d5a34
Update `JsonApiConditionSchema` to match lingo
theref Jul 19, 2024
d697794
Add basic tests for json api condition type
theref Jul 19, 2024
d9e40d2
Use common condition schema for conditions that use multi-conditions.…
derekpierre Sep 19, 2024
579acac
Added JSONPath syntactic validation
andresceballosm Jul 30, 2024
9f9be45
Fix schema for json api condition
theref Jul 19, 2024
229a04e
Add initial code for sequential conditions based on reuse of existing…
derekpierre Sep 19, 2024
5179675
Updated pnpm-lock.yamls and fix linter errors
andresceballosm Jul 31, 2024
2ad6f6f
query and parameters in JSONConditionScheme should be optional
cygnusv Jul 19, 2024
2395b2e
Remove multi-condition modules since circular dependency caused issue…
derekpierre Sep 19, 2024
a1c98cf
Removed jsonpath library
andresceballosm Jul 31, 2024
0cd6e6c
Fix import ordering
theref Jul 19, 2024
aa05e72
Update compound condition tests to check max operands and include nes…
derekpierre Sep 19, 2024
b5a18bf
Added Library @astronautlabs/jsonpath
andresceballosm Aug 1, 2024
a05595b
Update test json url and add serialization test
theref Jul 19, 2024
046e351
Use baseConditionSchema that all sub-types of conditions extend their…
derekpierre Sep 19, 2024
0da3f2d
Updated unit test
andresceballosm Aug 1, 2024
130ecb3
Fix linting error
theref Jul 29, 2024
deea3f8
Implement validation of nested depth limit for multi-condition types.
derekpierre Sep 20, 2024
2dc5a19
Update in unit tests
andresceballosm Aug 1, 2024
a0a8059
Add JsonApiCondition (#550)
KPrasch Jul 31, 2024
cfcb53b
Add test for checking nested depth limit for compound condition.
derekpierre Sep 20, 2024
6576c03
Added JSONPath syntactic validation (#561)
derekpierre Aug 2, 2024
9339828
Initial tests for sequential conditions.
derekpierre Sep 20, 2024
9157f0a
Update package.json post-rebase.
derekpierre Oct 4, 2024
556c787
Add sequential condition validation to ensure duplicate varNames are …
derekpierre Sep 20, 2024
f198489
Appease linter since safe parse returns a discriminated union i.e. "e…
derekpierre Oct 4, 2024
6b67489
Include taco-auth in API documentation.
derekpierre Oct 7, 2024
76ad983
Initial Implementation of `SequentialCondition` (#581)
derekpierre Sep 30, 2024
b9cbb2c
Merge `epic-offchain` (#589)
derekpierre Oct 4, 2024
02ab6c0
Add schemas folder to house all zod schemas for conditions, context, …
derekpierre Sep 27, 2024
99f9907
Remove packages/pre from taco-web docs.
derekpierre Oct 8, 2024
6186287
Merge `epic-sequential-condition` (#590)
derekpierre Oct 4, 2024
8c4999e
Use schemas from schemas folder, and re-export relevant types etc.
derekpierre Sep 27, 2024
d3ef278
docs: include `taco-auth` in api docs (#594)
derekpierre Oct 8, 2024
971199f
Make schemas for compound condition and sequential condition be lazy …
derekpierre Oct 3, 2024
66a8340
Ensure that json-api module is exported in base folder.
derekpierre Oct 4, 2024
3209ae3
Split JsonAPICondition into its schema and its condition.
derekpierre Oct 4, 2024
7f30464
chore: separate schemas from conditions to allow better combinations/…
derekpierre Oct 15, 2024
e06ab28
Add support for if-then-else condition.
derekpierre Oct 3, 2024
8eaa5a7
Update refinement of if-then-else condition to report on specific con…
derekpierre Oct 8, 2024
e7da9ec
Add tests for if-then-else condition.
derekpierre Oct 8, 2024
84ab89e
Ensure that all condition types are accounted for in ConditionFactory.
derekpierre Oct 15, 2024
bf85a9c
Add lingo test to ensure that dictionaries used in `nucypher/nucypher…
derekpierre Oct 15, 2024
fcdb1da
feat: implementation of `IfThenElseCondition` (#593)
derekpierre Oct 16, 2024
3ecfeed
refactor: improvements to eth_getBalance schema
cygnusv Oct 18, 2024
978f56b
refactor: Don't use eth address regex, use existing schema instead
cygnusv Oct 18, 2024
f6084df
test: improve eth address schema unit tests
cygnusv Oct 18, 2024
942258b
feat: new BlockIdentifierSchema
cygnusv Oct 18, 2024
677e7e7
feat: Add block identifier schema validation to eth_getBalance
cygnusv Oct 18, 2024
fa81b97
fix: contextParamSchema is already exported by context.ts
cygnusv Oct 24, 2024
f971fea
feat: Add error message to BlockHash schema validation
cygnusv Oct 24, 2024
3b67142
Improved schema validation for eth_getBalance (#598)
cygnusv Oct 29, 2024
b3ed1c4
Allow authorization token to be optionally specified for JsonApiCondi…
derekpierre Oct 28, 2024
9527c42
Allow query for JsonApiCondition to contain context variables.
derekpierre Oct 28, 2024
521d56e
Add tests for authorization token property for JsonApiCondition.
derekpierre Oct 28, 2024
6d4babe
Add test for context variables within various properties of a JsonApi…
derekpierre Oct 28, 2024
0e25a11
Fix linting.
derekpierre Oct 28, 2024
8a7e72d
feat: allow authorization token for `JsonApiCondition` to support end…
cygnusv Oct 30, 2024
3e6f4ce
chore(release): release @nucypher/shared:0.5.0-alpha.0
derekpierre Nov 4, 2024
b8d64e4
chore(release): release @nucypher/taco-auth:0.3.0-alpha.0
derekpierre Nov 4, 2024
6b8184f
chore(release): release @nucypher/taco:0.6.0-alpha.0
derekpierre Nov 4, 2024
7868bc8
Parse context parameters in JSON API condition
theref Nov 7, 2024
9fac7b2
Use + instead of * in regex
theref Nov 7, 2024
63b0352
Fix JSON API conditions (#602)
KPrasch Nov 7, 2024
f27aebb
chore(release): release @nucypher/shared:0.5.0-alpha.1
theref Nov 7, 2024
afd4305
chore(release): release @nucypher/taco-auth:0.3.0-alpha.1
theref Nov 7, 2024
c1a7617
chore(release): release @nucypher/taco:0.6.0-alpha.1
theref Nov 7, 2024
5477f6f
Fix linting.
derekpierre Dec 18, 2024
36d30f5
Apply outstanding RFCs from #602.
derekpierre Dec 18, 2024
529eee7
Apply outstanding RFCs from #602 (#607)
theref Dec 19, 2024
e7910d1
Remove references to supported chainID
theref Dec 16, 2024
ef55822
Use all chains in test
theref Dec 18, 2024
6baef32
Remove references to supported chainID (#605)
derekpierre Dec 19, 2024
4f56bd4
Commonize jsonPathSchema so that it can be used by different modules.
derekpierre Dec 17, 2024
73092d0
Create separate httpsUrlSchema to validate url provided for json endp…
derekpierre Dec 18, 2024
fcbac07
Add initial code for JsonRpcCondition.
derekpierre Dec 18, 2024
4b17443
Add tests for JsonRpcCondition.
derekpierre Dec 18, 2024
b49a7c1
Simplify the code to check for context variables within condition pro…
derekpierre Dec 18, 2024
2280e93
Add specific tests for checking whether context variables are extract…
derekpierre Dec 19, 2024
cfd8c73
Fix linting.
derekpierre Dec 19, 2024
75e1a50
Perform our own https URL schema refinement check due to bug in zod.
derekpierre Jan 6, 2025
c85d30d
JsonRpcCondition (#606)
theref Jan 6, 2025
b795b3c
Update test URL string
derekpierre Jan 7, 2025
fb05579
Update links to docs.taco.build
cygnusv Jan 10, 2025
6b63fec
Update links to docs.taco.build (#615)
derekpierre Jan 10, 2025
8dbe7ca
Fix linting error.
derekpierre Jan 17, 2025
3132952
chore(release): release @nucypher/shared:0.5.0-alpha.2
derekpierre Jan 17, 2025
3e35d96
chore(release): release @nucypher/taco-auth:0.3.0-alpha.2
derekpierre Jan 17, 2025
c95e69d
chore(release): release @nucypher/taco:0.6.0-alpha.2
derekpierre Jan 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ pnpm fix
Build and publish documentation with:

```bash
pnpm doc
pnpm doc:publish
pnpm typedoc
pnpm typedoc:publish
```

## Publishing
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

A TypeScript library for interacting with access control functionality in the browser.

Full documentation can be found [here](https://docs.threshold.network/app-development/threshold-access-control-tac).
Full documentation can be found [here](https://docs.taco.build/).

> **Warning**
>
Expand All @@ -19,7 +19,7 @@ pnpm add @nucypher/taco
## Tutorial

To learn more, follow the tutorial at Threshold
Network's [docs](https://docs.threshold.network/app-development/threshold-access-control-tac/get-started-with-tac).
Network's [docs](https://docs.taco.build/taco-integration/).

## Examples

Expand Down
2 changes: 1 addition & 1 deletion demos/taco-demo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ pnpm start
## References

Please find developer documentation
[here](https://docs.threshold.network/app-development/threshold-access-control-tac).
[here](https://docs.taco.build/).

This dApp is based on
[`useDapp` example](https://github.com/EthWorks/useDapp/tree/master/packages/example).
2 changes: 1 addition & 1 deletion demos/taco-demo/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ export default function App() {
<p>
In production (mainnet domain), your wallet address (encryptor) will also have
to be allow-listed for this specific ritual. However, we have
<a href={'https://docs.threshold.network/app-development/threshold-access-control-tac/integration-guide/get-started-with-tac#testnet-configuration'}>publicly available testnet rituals</a>
<a href={'https://docs.taco.build/taco-integration/get-started-with-tac#testnet-configuration'}>publicly available testnet rituals</a>
for use when developing your apps.
</p>
<p>
Expand Down
2 changes: 1 addition & 1 deletion demos/taco-nft-demo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ pnpm start
## References

Please find developer documentation
[here](https://docs.threshold.network/app-development/threshold-access-control-tac).
[here](https://docs.taco.build/).

This dApp is based on
[`useDapp` example](https://github.com/EthWorks/useDapp/tree/master/packages/example).
2 changes: 1 addition & 1 deletion demos/taco-nft-demo/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ export default function App() {
<p>
In production (mainnet domain), your wallet address (encryptor) will also have
to be allow-listed for this specific ritual. However, we have
<a href={'https://docs.threshold.network/app-development/threshold-access-control-tac/integration-guide/get-started-with-tac#testnet-configuration'}>publicly available testnet rituals</a>
<a href={'https://docs.taco.build/taco-integration/get-started-with-tac#testnet-configuration'}>publicly available testnet rituals</a>
for use when developing your apps.
</p>
<p>
Expand Down
2 changes: 1 addition & 1 deletion examples/pre/nextjs/next-env.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
/// <reference types="next/image-types/global" />

// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.
// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.
2 changes: 1 addition & 1 deletion examples/taco/nextjs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ automatically optimize and load Inter, a custom Google Font.
## Learn More

Please find developer documentation for
TACo [here](https://docs.threshold.network/app-development/threshold-access-control-tac).
TACo [here](https://docs.taco.build/).

To learn more about Next.js, take a look at the following resources:

Expand Down
2 changes: 1 addition & 1 deletion examples/taco/nextjs/next-env.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
/// <reference types="next/image-types/global" />

// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.
// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.
2 changes: 1 addition & 1 deletion examples/taco/nodejs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@ pnpm start
## Learn more

Please find developer documentation for
TACo [here](https://docs.threshold.network/app-development/threshold-access-control-tac).
TACo [here](https://docs.taco.build/).
2 changes: 1 addition & 1 deletion examples/taco/react/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ inspect the UI and the JS console.
## Learn more

Please find developer documentation for
TACo [here](https://docs.threshold.network/app-development/threshold-access-control-tac).
TACo [here](https://docs.taco.build/).
2 changes: 1 addition & 1 deletion examples/taco/webpack-5/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ Go to [localhost:8080](http://localhost:8080/) in your browser and look in the J
## Learn more

Please find developer documentation for
TACo [here](https://docs.threshold.network/app-development/threshold-access-control-tac).
TACo [here](https://docs.taco.build/).
2 changes: 1 addition & 1 deletion packages/shared/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@nucypher/shared",
"version": "0.4.0",
"version": "0.5.0-alpha.2",
"keywords": [
"pre",
"taco",
Expand Down
14 changes: 11 additions & 3 deletions packages/shared/src/schemas.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import { ethers } from 'ethers';
import { z } from 'zod';

export const ETH_ADDRESS_REGEXP = new RegExp('^0x[a-fA-F0-9]{40}$');

const isAddress = (address: string) => {
try {
return ethers.utils.getAddress(address);
Expand All @@ -13,5 +11,15 @@ const isAddress = (address: string) => {

export const EthAddressSchema = z
.string()
.regex(ETH_ADDRESS_REGEXP)
.refine(isAddress, { message: 'Invalid Ethereum address' });

const BLOCK_HASH_REGEXP = new RegExp('^0x[a-fA-F0-9]{64}$');
const BlockNumber = z.number().int().nonnegative();
const BlockHash = z.string().regex(BLOCK_HASH_REGEXP, 'Invalid block hash');
const BlockTag = z.enum(['earliest', 'finalized', 'safe', 'latest', 'pending']);

export const BlockIdentifierSchema = z.union([
BlockNumber,
BlockHash,
BlockTag,
]);
59 changes: 57 additions & 2 deletions packages/shared/test/schemas.test.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,70 @@
import { describe, expect, it } from 'vitest';

import { EthAddressSchema } from '../src';
import { BlockIdentifierSchema, EthAddressSchema } from '../src';

describe('ethereum address schema', () => {
it('should accept valid ethereum address', () => {
const validAddress = '0x1234567890123456789012345678901234567890';
EthAddressSchema.parse(validAddress);
});

it('should reject invalid ethereum address', () => {
it('should accept unchecksummed ethereum address', () => {
const validAddress = '0x0123456789abcdefedcb0123456789abcdefedcb';
EthAddressSchema.parse(validAddress);
});

it('should accept checksummed ethereum address', () => {
const validAddress = '0x0123456789aBcDeFEdCb0123456789abcdEfeDcb';
EthAddressSchema.parse(validAddress);
});

it('should reject invalid ethereum address (shorter)', () => {
const invalidAddress = '0x123456789012345678901234567890123456789';
expect(() => EthAddressSchema.parse(invalidAddress)).toThrow();
});

it('should reject invalid ethereum address (longer)', () => {
const invalidAddress = '0x12345678901234567890123456789012345678901';
expect(() => EthAddressSchema.parse(invalidAddress)).toThrow();
});
});

describe('block identifier address schema', () => {
it('should accept valid block numbers (ints >= 0)', () => {
BlockIdentifierSchema.parse(0);
BlockIdentifierSchema.parse(1);
BlockIdentifierSchema.parse(1234);
BlockIdentifierSchema.parse(9007199254740991); // Max safe integer
});

it('should accept valid block tags', () => {
BlockIdentifierSchema.parse('earliest');
BlockIdentifierSchema.parse('finalized');
BlockIdentifierSchema.parse('safe');
BlockIdentifierSchema.parse('latest');
BlockIdentifierSchema.parse('pending');
});

it('should accept valid block hashes', () => {
const validBlockHash =
'0x1234567890123456789012345678901234567890123456789012345678901234';
BlockIdentifierSchema.parse(validBlockHash);
});

it('should reject invalid block numbers (e.g., negative ints)', () => {
expect(() => BlockIdentifierSchema.parse(-42)).toThrow();
});

it('should reject invalid block numbers (e.g., float)', () => {
expect(() => BlockIdentifierSchema.parse(34.56)).toThrow();
});

it('should reject invalid block identifiers', () => {
expect(() => BlockIdentifierSchema.parse('foo')).toThrow();
});

it('should reject invalid block hashes', () => {
const invalidBlockHash = '0x1234';
expect(() => BlockIdentifierSchema.parse(invalidBlockHash)).toThrow();
});
});
2 changes: 1 addition & 1 deletion packages/taco-auth/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@nucypher/taco-auth",
"version": "0.2.0",
"version": "0.3.0-alpha.2",
"keywords": [
"pre",
"threshold",
Expand Down
1 change: 1 addition & 0 deletions packages/taco-auth/test/auth-provider.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ describe('auth provider caching', () => {
it('caches auth signature, but regenerates when expired', async () => {
const createAuthSignatureSpy = vi.spyOn(
eip4361Provider,
// @ts-expect-error -- spying on private function
'createSIWEAuthMessage',
);

Expand Down
4 changes: 2 additions & 2 deletions packages/taco/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

To use `taco`, you need to connect with a proper network: `mainnet`, `testnet`, or `devnet`. You can find a proper version for each network in the [npmjs.com package tags](https://www.npmjs.com/package/@nucypher/taco?activeTab=versions).

Visit [our documentation](https://docs.threshold.network/app-development/threshold-access-control-tac/integration-guide#id-0.-pick-an-appropriate-taco-version) to learn more.
Visit [our documentation](https://docs.taco.build/taco-integration/) to learn more.

## Usage

Expand Down Expand Up @@ -67,4 +67,4 @@ const decryptedMessage = await decrypt(
## Learn more

Please find developer documentation for
TACo [here](https://docs.threshold.network/app-development/threshold-access-control-tac).
TACo [here](https://docs.taco.build/).
3 changes: 2 additions & 1 deletion packages/taco/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@nucypher/taco",
"version": "0.5.0",
"version": "0.6.0-alpha.2",
"keywords": [
"taco",
"threshold",
Expand Down Expand Up @@ -39,6 +39,7 @@
"typedoc": "typedoc"
},
"dependencies": {
"@astronautlabs/jsonpath": "^1.1.2",
"@nucypher/nucypher-core": "*",
"@nucypher/shared": "workspace:*",
"@nucypher/taco-auth": "workspace:*",
Expand Down
112 changes: 13 additions & 99 deletions packages/taco/src/conditions/base/contract.ts
Original file line number Diff line number Diff line change
@@ -1,103 +1,17 @@
import { ETH_ADDRESS_REGEXP } from '@nucypher/shared';
import { ethers } from 'ethers';
import { z } from 'zod';

import { Condition } from '../condition';
import { OmitConditionType, paramOrContextParamSchema } from '../shared';

import { rpcConditionSchema } from './rpc';

// TODO: Consider replacing with `z.unknown`:
// Since Solidity types are tied to Solidity version, we may not be able to accurately represent them in Zod.
// Alternatively, find a TS Solidity type lib.
const EthBaseTypes: [string, ...string[]] = [
'bool',
'string',
'address',
'address payable',
...Array.from({ length: 32 }, (_v, i) => `bytes${i + 1}`), // bytes1 through bytes32
'bytes',
...Array.from({ length: 32 }, (_v, i) => `uint${8 * (i + 1)}`), // uint8 through uint256
...Array.from({ length: 32 }, (_v, i) => `int${8 * (i + 1)}`), // int8 through int256
];

const functionAbiVariableSchema = z
.object({
name: z.string(),
type: z.enum(EthBaseTypes),
internalType: z.enum(EthBaseTypes), // TODO: Do we need to validate this?
})
.strict();

const functionAbiSchema = z
.object({
name: z.string(),
type: z.literal('function'),
inputs: z.array(functionAbiVariableSchema).min(0),
outputs: z.array(functionAbiVariableSchema).nonempty(),
stateMutability: z.union([z.literal('view'), z.literal('pure')]),
})
.strict()
.refine(
(functionAbi) => {
let asInterface;
try {
// `stringify` here because ethers.utils.Interface doesn't accept a Zod schema
asInterface = new ethers.utils.Interface(JSON.stringify([functionAbi]));
} catch (e) {
return false;
}

const functionsInAbi = Object.values(asInterface.functions || {});
return functionsInAbi.length === 1;
},
{
message: '"functionAbi" must contain a single function definition',
path: ['functionAbi'],
},
)
.refine(
(functionAbi) => {
const asInterface = new ethers.utils.Interface(
JSON.stringify([functionAbi]),
);
const nrOfInputs = asInterface.fragments[0].inputs.length;
return functionAbi.inputs.length === nrOfInputs;
},
{
message: '"parameters" must have the same length as "functionAbi.inputs"',
path: ['parameters'],
},
);

export type FunctionAbiProps = z.infer<typeof functionAbiSchema>;

export const ContractConditionType = 'contract';

export const contractConditionSchema = rpcConditionSchema
.extend({
conditionType: z
.literal(ContractConditionType)
.default(ContractConditionType),
contractAddress: z.string().regex(ETH_ADDRESS_REGEXP).length(42),
standardContractType: z.enum(['ERC20', 'ERC721']).optional(),
method: z.string(),
functionAbi: functionAbiSchema.optional(),
parameters: z.array(paramOrContextParamSchema),
})
// Adding this custom logic causes the return type to be ZodEffects instead of ZodObject
// https://github.com/colinhacks/zod/issues/2474
.refine(
// A check to see if either 'standardContractType' or 'functionAbi' is set
(data) => Boolean(data.standardContractType) !== Boolean(data.functionAbi),
{
message:
"At most one of the fields 'standardContractType' and 'functionAbi' must be defined",
path: ['standardContractType'],
},
);

export type ContractConditionProps = z.infer<typeof contractConditionSchema>;
import {
ContractConditionProps,
contractConditionSchema,
ContractConditionType,
} from '../schemas/contract';
import { OmitConditionType } from '../shared';

export {
ContractConditionProps,
contractConditionSchema,
ContractConditionType,
FunctionAbiProps,
} from '../schemas/contract';

export class ContractCondition extends Condition {
constructor(value: OmitConditionType<ContractConditionProps>) {
Expand Down
2 changes: 2 additions & 0 deletions packages/taco/src/conditions/base/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@
// avoid circular dependency on Condition class.

export * as contract from './contract';
export * as jsonApi from './json-api';
export * as jsonRpc from './json-rpc';
export * as rpc from './rpc';
export * as time from './time';
Loading
Loading