Skip to content

Commit 8abdd8a

Browse files
committed
refactor: remove node-localstorage dependency and update storage handling in LitProvider
- Removed node-localstorage from package.json and yarn.lock. - Updated LitProvider to use a new StorageProvider interface. - Refactored storage handling logic to improve compatibility with Node.js. - Enhanced the RequestNetwork class to include getter and setter for cipherProvider. - Modified GraphQL queries to improve transaction retrieval logic and pagination settings. This change streamlines storage management and enhances the overall architecture of the project.
1 parent cf4c125 commit 8abdd8a

File tree

6 files changed

+50
-66
lines changed

6 files changed

+50
-66
lines changed

packages/lit-protocol-cipher/package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,10 @@
5050
"@requestnetwork/request-client.js": "0.51.0",
5151
"@requestnetwork/types": "0.46.0",
5252
"@walletconnect/modal": "2.7.0",
53-
"ethers": "5.7.2",
54-
"node-localstorage": "3.0.5"
53+
"ethers": "5.7.2"
5554
},
5655
"devDependencies": {
5756
"@types/node": "18.11.9",
58-
"@types/node-localstorage": "1.3.3",
5957
"jest-junit": "16.0.0",
6058
"ts-node": "10.9.1",
6159
"typescript": "5.1.3"

packages/lit-protocol-cipher/src/lit-protocol-cipher-provider.ts

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
AuthSig,
99
LIT_NETWORKS_KEYS,
1010
AuthCallbackParams,
11+
StorageProvider,
1112
} from '@lit-protocol/types';
1213
import {
1314
LitAccessControlConditionResource,
@@ -16,7 +17,8 @@ import {
1617
} from '@lit-protocol/auth-helpers';
1718
import { Signer } from 'ethers';
1819
import { LIT_ABILITY } from '@lit-protocol/constants';
19-
import { disconnectWeb3, LitNodeClient, LitNodeClientNodeJs } from '@lit-protocol/lit-node-client';
20+
import { disconnectWeb3, LitNodeClient } from '@lit-protocol/lit-node-client';
21+
import type { LitNodeClientNodeJs } from '@lit-protocol/lit-node-client';
2022

2123
/**
2224
* @class LitProvider
@@ -53,7 +55,7 @@ export default class LitProvider implements CipherProviderTypes.ICipherProvider
5355
/**
5456
* @property {any} storageProvider - The storage provider for the Node.js Lit client.
5557
*/
56-
private storageProvider: any | null = null;
58+
private nodeJsStorageProvider: StorageProvider | undefined;
5759

5860
/**
5961
* @property {boolean} debug - A boolean indicating if debug mode is enabled.
@@ -75,11 +77,13 @@ export default class LitProvider implements CipherProviderTypes.ICipherProvider
7577
network: LIT_NETWORKS_KEYS,
7678
nodeConnectionConfig: NodeConnectionConfig,
7779
debug?: boolean,
80+
nodeJsStorageProvider?: StorageProvider,
7881
) {
7982
this.chain = chain;
8083
this.network = network;
8184
this.dataAccess = new HttpDataAccess({ nodeConnectionConfig });
8285
this.debug = debug || false;
86+
this.nodeJsStorageProvider = nodeJsStorageProvider;
8387
}
8488

8589
/**
@@ -98,27 +102,10 @@ export default class LitProvider implements CipherProviderTypes.ICipherProvider
98102
});
99103
await this.client.connect();
100104
} else {
101-
// Evaluate the code in a way that prevents static analysis
102-
const getNodeStorage = new Function(
103-
`
104-
return import('node-localstorage').then(m => m.LocalStorage);
105-
`,
106-
);
107-
108-
const LocalStorage = await getNodeStorage();
109-
const localStorage = new LocalStorage('./request-network-lit-protocol-cipher');
110-
111-
this.storageProvider = {
112-
getItem: (key: string) => localStorage.getItem(key),
113-
setItem: (key: string, value: string) => localStorage.setItem(key, value),
114-
removeItem: (key: string) => localStorage.removeItem(key),
115-
clear: () => localStorage.clear(),
116-
provider: localStorage,
117-
};
118-
105+
const { LitNodeClientNodeJs } = await import('@lit-protocol/lit-node-client');
119106
this.client = new LitNodeClientNodeJs({
120107
litNetwork: this.network,
121-
storageProvider: this.storageProvider,
108+
storageProvider: this.nodeJsStorageProvider,
122109
debug: this.debug,
123110
});
124111

@@ -139,8 +126,8 @@ export default class LitProvider implements CipherProviderTypes.ICipherProvider
139126
disconnectWeb3();
140127
}
141128
this.sessionSigs = null;
142-
if (this.storageProvider) {
143-
this.storageProvider.clear();
129+
if (this.nodeJsStorageProvider) {
130+
this.nodeJsStorageProvider.provider.clear();
144131
}
145132
}
146133

packages/request-client.js/src/api/request-network.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ export default class RequestNetwork {
4040
private contentData: ContentDataExtension;
4141
private currencyManager: CurrencyTypes.ICurrencyManager;
4242

43+
private cipherProvider?: CipherProviderTypes.ICipherProvider;
44+
4345
/**
4446
* @param dataAccess instance of data-access layer
4547
* @param signatureProvider module in charge of the signatures
@@ -72,6 +74,23 @@ export default class RequestNetwork {
7274
this.currencyManager,
7375
paymentOptions,
7476
);
77+
this.cipherProvider = cipherProvider;
78+
}
79+
80+
/**
81+
* Get the cipher provider
82+
* @returns the cipher provider
83+
*/
84+
public getCipherProvider(): CipherProviderTypes.ICipherProvider | undefined {
85+
return this.cipherProvider;
86+
}
87+
88+
/**
89+
* Set the cipher provider
90+
* @param cipherProvider the cipher provider
91+
*/
92+
public setCipherProvider(cipherProvider: CipherProviderTypes.ICipherProvider): void {
93+
this.cipherProvider = cipherProvider;
7594
}
7695

7796
/**

packages/thegraph-data-access/src/queries.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,17 +79,14 @@ ${TransactionsBodyFragment}
7979
8080
query GetTransactionsByTopics($topics: [String!]!, $first: Int!, $skip: Int!) {
8181
${metaQueryBody}
82-
channels(
83-
where: { topics_contains: $topics }
82+
transactions(
83+
where: { topics_contains_nocase: $topics }
8484
first: $first
8585
skip: $skip
86-
){
87-
transactions(
88-
orderBy: blockTimestamp,
89-
orderDirection: asc
90-
) {
91-
...TransactionsBody
92-
}
86+
orderBy: blockTimestamp
87+
orderDirection: asc
88+
) {
89+
...TransactionsBody
9390
}
9491
}`;
9592

packages/thegraph-data-access/src/subgraph-client.ts

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ export class SubgraphClient implements StorageTypes.IIndexer {
1919
private graphql: GraphQLClient;
2020
public readonly endpoint: string;
2121

22-
private readonly DEFAULT_PAGE_SIZE = 10;
23-
private readonly MAX_PAGE_SIZE = 100;
22+
private readonly DEFAULT_PAGE_SIZE = 100;
23+
private readonly MAX_PAGE_SIZE = 1000;
2424

2525
constructor(endpoint: string, options?: RequestConfig) {
2626
this.endpoint = endpoint;
@@ -71,28 +71,25 @@ export class SubgraphClient implements StorageTypes.IIndexer {
7171
const effectivePage = page ?? 1;
7272
const skip = (effectivePage - 1) * effectivePageSize;
7373

74-
const { _meta, channels } = await this.graphql.request<
75-
Meta & { channels: { transactions: Transaction[] }[] }
76-
>(GetTransactionsByTopics, {
77-
topics,
78-
first: effectivePageSize,
79-
skip,
80-
});
74+
const response = await this.graphql.request<Meta & { transactions: Transaction[] }>(
75+
GetTransactionsByTopics,
76+
{
77+
topics,
78+
first: effectivePageSize,
79+
skip,
80+
},
81+
);
8182

82-
const transactionsByChannel = channels
83-
.map(({ transactions }) => transactions)
84-
.flat()
85-
.sort((a, b) => a.blockTimestamp - b.blockTimestamp);
83+
const indexedTransactions = response.transactions.map(this.toIndexedTransaction);
8684

87-
const indexedTransactions = transactionsByChannel.map(this.toIndexedTransaction);
8885
return {
8986
transactions: indexedTransactions,
90-
blockNumber: _meta.block.number,
87+
blockNumber: response._meta.block.number,
9188
pagination: {
9289
page: effectivePage,
9390
pageSize: effectivePageSize,
9491
total: indexedTransactions.length,
95-
hasMore: skip + effectivePageSize < indexedTransactions.length,
92+
hasMore: indexedTransactions.length === effectivePageSize,
9693
},
9794
};
9895
}

yarn.lock

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5921,13 +5921,6 @@
59215921
"@types/node" "*"
59225922
form-data "^4.0.0"
59235923

5924-
"@types/node-localstorage@1.3.3":
5925-
version "1.3.3"
5926-
resolved "https://registry.yarnpkg.com/@types/node-localstorage/-/node-localstorage-1.3.3.tgz#b221f1bd6c61a2cc6b16c9934f2110779568f185"
5927-
integrity sha512-Wkn5g4eM5x10UNV9Xvl9K6y6m0zorocuJy4WjB5muUdyMZuPbZpSJG3hlhjGHe1HGxbOQO7RcB+jlHcNwkh+Jw==
5928-
dependencies:
5929-
"@types/node" "*"
5930-
59315924
"@types/node@*":
59325925
version "14.14.35"
59335926
resolved "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz"
@@ -18615,13 +18608,6 @@ node-int64@^0.4.0:
1861518608
resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz"
1861618609
integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
1861718610

18618-
node-localstorage@3.0.5:
18619-
version "3.0.5"
18620-
resolved "https://registry.yarnpkg.com/node-localstorage/-/node-localstorage-3.0.5.tgz#4acda05bb7d3fffaa477f13c028d105866bb43ad"
18621-
integrity sha512-GCwtK33iwVXboZWYcqQHu3aRvXEBwmPkAMRBLeaX86ufhqslyUkLGsi4aW3INEfdQYpUB5M9qtYf3eHvAk2VBg==
18622-
dependencies:
18623-
write-file-atomic "^5.0.1"
18624-
1862518611
node-releases@^2.0.18:
1862618612
version "2.0.18"
1862718613
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
@@ -25866,7 +25852,7 @@ write-file-atomic@^4.0.2:
2586625852
imurmurhash "^0.1.4"
2586725853
signal-exit "^3.0.7"
2586825854

25869-
write-file-atomic@^5.0.0, write-file-atomic@^5.0.1:
25855+
write-file-atomic@^5.0.0:
2587025856
version "5.0.1"
2587125857
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7"
2587225858
integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==

0 commit comments

Comments
 (0)