Skip to content

Commit 1b24ac8

Browse files
authored
Merge pull request #13 from windingtree/develop
New types system
2 parents 82315e6 + 456ddd0 commit 1b24ac8

26 files changed

+531
-987
lines changed

examples/client/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@
1818
"react-dom": "^18.2.0",
1919
"typescript": "^5.0.3",
2020
"vite": "^4.2.1",
21-
"zod": "^3.21.4",
22-
"@windingtree/sdk": "0.1.0-beta.10"
21+
"@windingtree/sdk": "0.1.0-beta.11"
2322
},
2423
"eslintConfig": {
2524
"extends": [

examples/client/src/App.tsx

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import { useState, useEffect, useRef } from 'react';
22
import {
3-
RequestQuerySchema,
43
RequestQuery,
5-
OfferOptionsSchema,
64
OfferOptions,
75
contractConfig,
86
serverAddress,
9-
} from '../../shared/types.js';
7+
} from '../../shared/index.js';
108
import { Client, ClientOptions, createClient, RequestRecord, storage, utils } from '../../../src/index.js';
119
// import { Client, ClientOptions, RequestRecord, createClient, storage, utils } from '@windingtree/sdk';
1210

@@ -160,9 +158,7 @@ export const App = () => {
160158
try {
161159
setError(undefined);
162160

163-
const options: ClientOptions<RequestQuery, OfferOptions> = {
164-
querySchema: RequestQuerySchema,
165-
offerOptionsSchema: OfferOptionsSchema,
161+
const options: ClientOptions = {
166162
contractConfig,
167163
serverAddress,
168164
storageInitializer: storage.localStorage.createInitializer({

examples/client/yarn.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -2177,10 +2177,10 @@
21772177
magic-string "^0.27.0"
21782178
react-refresh "^0.14.0"
21792179

2180-
"@windingtree/[email protected].10":
2181-
version "0.1.0-beta.10"
2182-
resolved "https://registry.yarnpkg.com/@windingtree/sdk/-/sdk-0.1.0-beta.10.tgz#f2092903077a597ffb3c46a6af1fda25b8586bea"
2183-
integrity sha512-9CsUr+njuL71L0eHX9GmNuaTgauGHqJzsky/annmW7WDa/GJ5cFI6mowGSMRHeCIAhtOZEtMQUAlWrHRgk1TBQ==
2180+
"@windingtree/[email protected].11":
2181+
version "0.1.0-beta.11"
2182+
resolved "https://registry.yarnpkg.com/@windingtree/sdk/-/sdk-0.1.0-beta.11.tgz#571129b5265649a780fd976a19fa98205dbee692"
2183+
integrity sha512-/5mwrss7eaXcJx6OtVQl3ZiO8o3F7VtMGmNN8i0P2yJMox85bJWj1ROXvSUjwJyD/rjlH1EVgnvDCCtm63RRKw==
21842184
dependencies:
21852185
"@chainsafe/libp2p-gossipsub" "^6.2.0"
21862186
"@chainsafe/libp2p-noise" "^11.0.4"

examples/node/index.ts

+3-12
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
11
import { EventHandler } from '@libp2p/interfaces/events';
22
import { ZeroAddress } from 'ethers';
33
import { DateTime } from 'luxon';
4-
import {
5-
RequestQuerySchema,
6-
RequestQuery,
7-
OfferOptionsSchema,
8-
OfferOptions,
9-
contractConfig,
10-
serverAddress,
11-
} from '../shared/types.js';
4+
import { RequestQuery, OfferOptions, contractConfig, serverAddress } from '../shared/index.js';
125
import {
136
createNode,
147
Node,
@@ -148,17 +141,15 @@ const main = async (): Promise<void> => {
148141
concurrentJobsNumber: 3,
149142
});
150143

151-
const options: NodeOptions<RequestQuery, OfferOptions> = {
152-
querySchema: RequestQuerySchema,
153-
offerOptionsSchema: OfferOptionsSchema,
144+
const options: NodeOptions = {
154145
topics: ['hello'],
155146
contractConfig,
156147
serverAddress,
157148
noncePeriod: parseSeconds(noncePeriod),
158149
supplierId,
159150
signerSeedPhrase: signerMnemonic,
160151
};
161-
const node = createNode(options);
152+
const node = createNode<RequestQuery, OfferOptions>(options);
162153

163154
queue.addJobHandler('deal', dealHandler({ node }));
164155

examples/shared/index.ts

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { GenericQuery, GenericOfferOptions } from '../../src/index.js';
2+
import { ContractConfig } from '../../src/utils/contract.js';
3+
4+
export interface RequestQuery extends GenericQuery {
5+
greeting: string;
6+
}
7+
8+
export interface OfferOptions extends GenericOfferOptions {
9+
date: string;
10+
buongiorno: boolean;
11+
buonasera: boolean;
12+
}
13+
14+
export const contractConfig: ContractConfig = {
15+
name: 'WtMarket',
16+
version: '1',
17+
chainId: '1',
18+
address: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
19+
};
20+
21+
export const serverAddress =
22+
'/ip4/127.0.0.1/tcp/33333/ws/p2p/QmcXbDrzUU5ERqRaronWmAJXwe6c7AEkS7qdcsjgEuWPCf';

examples/shared/types.ts

-30
This file was deleted.

package.json

-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@
101101
"@libp2p/mplex": "^7.1.3",
102102
"@libp2p/websockets": "^5.0.8",
103103
"ethers": "^6.2.3",
104-
"zod": "^3.21.4",
105104
"luxon": "^3.3.0",
106105
"h3-js": "^4.1.0",
107106
"debug": "^4.3.4"

src/client/index.ts

+18-24
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,16 @@ import { peerIdFromString } from '@libp2p/peer-id';
99
import { PeerId } from '@libp2p/interface-peer-id';
1010
import { OPEN } from '@libp2p/interface-connection/status';
1111
import { AbstractProvider } from 'ethers';
12-
import { z } from 'zod';
1312
import { centerSub, CenterSub } from '../shared/pubsub.js';
1413
import {
1514
buildRequest,
1615
BuildRequestOptions,
17-
createOfferDataSchema,
16+
OfferData,
1817
GenericOfferOptions,
1918
GenericQuery,
2019
RequestData,
2120
} from '../shared/messages.js';
22-
import { ClientOptions, createClientOptionsSchema } from '../shared/options.js';
21+
import { ClientOptions } from '../shared/options.js';
2322
import { RequestRecord, RequestsRegistry } from './requestsRegistry.js';
2423
import { decodeText } from '../utils/text.js';
2524
import { ContractConfig } from '../utils/contract.js';
@@ -210,35 +209,30 @@ export class Client<
210209
serverMultiaddr: Multiaddr;
211210
/** Server peer Id */
212211
serverPeerId: PeerId;
213-
/** Request query validation schema */
214-
querySchema: z.ZodType<CustomRequestQuery>;
215-
/** Offer options validation schema */
216-
offerOptionsSchema: z.ZodType<CustomOfferOptions>;
217212
/** Smart contract configuration */
218213
contractConfig: ContractConfig;
219214
/** Ethers.js provider instance */
220215
provider?: AbstractProvider;
216+
221217
/**
222218
*Creates an instance of Client.
223-
* @param {ClientOptions<CustomRequestQuery, CustomOfferOptions>} options
219+
* @param {ClientOptions} options
224220
* @memberof Client
225221
*/
226-
constructor(options: ClientOptions<CustomRequestQuery, CustomOfferOptions>) {
222+
constructor(options: ClientOptions) {
227223
super();
228224

229225
const {
230-
querySchema,
231-
offerOptionsSchema,
232226
contractConfig,
233227
libp2p,
234228
provider,
235229
serverAddress,
236230
storageInitializer,
237231
requestRegistryPrefix,
238-
} = createClientOptionsSchema<CustomRequestQuery, CustomOfferOptions>().parse(options);
232+
} = options;
233+
234+
// @todo Validate ClientOptions
239235

240-
this.querySchema = querySchema;
241-
this.offerOptionsSchema = offerOptionsSchema;
242236
this.contractConfig = contractConfig;
243237
this.libp2pInit = (libp2p ?? {}) as Libp2pOptions;
244238
this.provider = provider;
@@ -329,10 +323,13 @@ export class Client<
329323
}
330324

331325
/** Check is the message is an offer */
332-
const offer = createOfferDataSchema<CustomRequestQuery, CustomOfferOptions>(
333-
this.querySchema,
334-
this.offerOptionsSchema,
335-
).parse(JSON.parse(decodeText(detail.data)));
326+
const offer = JSON.parse(decodeText(detail.data)) as OfferData<
327+
CustomRequestQuery,
328+
CustomOfferOptions
329+
>;
330+
331+
// @todo Validate offer
332+
336333
logger.trace('Offer received:', offer);
337334

338335
// Verify the offer
@@ -459,10 +456,7 @@ export class Client<
459456
throw new Error('Client not initialized yet');
460457
}
461458

462-
return await buildRequest<CustomRequestQuery>({
463-
...requestOptions,
464-
querySchema: this.querySchema,
465-
} as BuildRequestOptions<CustomRequestQuery>);
459+
return await buildRequest<CustomRequestQuery>(requestOptions);
466460
}
467461

468462
/**
@@ -606,14 +600,14 @@ export class Client<
606600
/**
607601
* Creates client instance
608602
*
609-
* @param {ClientOptions<CustomRequestQuery, CustomOfferOptions>} options Client initialization options
603+
* @param {ClientOptions} options Client initialization options
610604
* @returns {Client}
611605
*/
612606
export const createClient = <
613607
CustomRequestQuery extends GenericQuery,
614608
CustomOfferOptions extends GenericOfferOptions,
615609
>(
616-
options: ClientOptions<CustomRequestQuery, CustomOfferOptions>,
610+
options: ClientOptions,
617611
): Client<CustomRequestQuery, CustomOfferOptions> => {
618612
return new Client(options);
619613
};

0 commit comments

Comments
 (0)