@codex-data/sdk 1.0.36 → 1.0.38
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/resources/graphql.d.ts +69 -14
- package/dist/resources/graphql.d.ts.map +1 -1
- package/dist/resources/graphql.js +5 -2
- package/dist/resources/graphql.js.map +1 -1
- package/dist/sdk/Subscribe.js +5 -5
- package/dist/sdk/generated/gql.d.ts +24 -24
- package/dist/sdk/generated/gql.d.ts.map +1 -1
- package/dist/sdk/generated/gql.js +12 -12
- package/dist/sdk/generated/gql.js.map +1 -1
- package/dist/sdk/generated/graphql.d.ts +95 -14
- package/dist/sdk/generated/graphql.d.ts.map +1 -1
- package/dist/sdk/generated/graphql.js +17 -14
- package/dist/sdk/generated/graphql.js.map +1 -1
- package/package.json +2 -3
- package/dist/scripts/buildSdk.d.ts +0 -2
- package/dist/scripts/buildSdk.d.ts.map +0 -1
- package/dist/scripts/buildSdk.js +0 -135
- package/dist/scripts/buildSdk.js.map +0 -1
- package/dist/scripts/generateGraphql.d.ts +0 -31
- package/dist/scripts/generateGraphql.d.ts.map +0 -1
- package/dist/scripts/generateGraphql.js +0 -224
- package/dist/scripts/generateGraphql.js.map +0 -1
- package/dist/scripts/generateNetworkConfigs.d.ts +0 -2
- package/dist/scripts/generateNetworkConfigs.d.ts.map +0 -1
- package/dist/scripts/generateNetworkConfigs.js +0 -243
- package/dist/scripts/generateNetworkConfigs.js.map +0 -1
- package/src/index.ts +0 -2
- package/src/resources/.keep +0 -0
- package/src/resources/generated_mutations/BackfillWalletAggregates.graphql +0 -6
- package/src/resources/generated_mutations/CreateApiTokens.graphql +0 -9
- package/src/resources/generated_mutations/CreateWebhooks.graphql +0 -472
- package/src/resources/generated_mutations/DeleteApiToken.graphql +0 -3
- package/src/resources/generated_mutations/DeleteWebhooks.graphql +0 -5
- package/src/resources/generated_queries/ApiToken.graphql +0 -9
- package/src/resources/generated_queries/ApiTokens.graphql +0 -9
- package/src/resources/generated_queries/Balances.graphql +0 -97
- package/src/resources/generated_queries/Blocks.graphql +0 -7
- package/src/resources/generated_queries/ChartUrls.graphql +0 -7
- package/src/resources/generated_queries/DetailedWalletStats.graphql +0 -197
- package/src/resources/generated_queries/FilterExchanges.graphql +0 -43
- package/src/resources/generated_queries/FilterNftCollections.graphql +0 -569
- package/src/resources/generated_queries/FilterNftParallelAssets.graphql +0 -60
- package/src/resources/generated_queries/FilterNftPoolCollections.graphql +0 -71
- package/src/resources/generated_queries/FilterNftPools.graphql +0 -124
- package/src/resources/generated_queries/FilterPairs.graphql +0 -447
- package/src/resources/generated_queries/FilterTokenWallets.graphql +0 -144
- package/src/resources/generated_queries/FilterTokens.graphql +0 -570
- package/src/resources/generated_queries/FilterWallets.graphql +0 -57
- package/src/resources/generated_queries/GetBars.graphql +0 -232
- package/src/resources/generated_queries/GetCommunityNotes.graphql +0 -140
- package/src/resources/generated_queries/GetDetailedNftStats.graphql +0 -831
- package/src/resources/generated_queries/GetDetailedPairStats.graphql +0 -990
- package/src/resources/generated_queries/GetDetailedPairsStats.graphql +0 -974
- package/src/resources/generated_queries/GetEventLabels.graphql +0 -35
- package/src/resources/generated_queries/GetExchanges.graphql +0 -12
- package/src/resources/generated_queries/GetNetworkConfigs.graphql +0 -129
- package/src/resources/generated_queries/GetNetworkStats.graphql +0 -20
- package/src/resources/generated_queries/GetNetworkStatus.graphql +0 -8
- package/src/resources/generated_queries/GetNetworks.graphql +0 -7
- package/src/resources/generated_queries/GetNftAssets.graphql +0 -59
- package/src/resources/generated_queries/GetNftCollectionMetadata.graphql +0 -75
- package/src/resources/generated_queries/GetNftContracts.graphql +0 -39
- package/src/resources/generated_queries/GetNftEvents.graphql +0 -100
- package/src/resources/generated_queries/GetNftPool.graphql +0 -74
- package/src/resources/generated_queries/GetNftPoolCollection.graphql +0 -33
- package/src/resources/generated_queries/GetNftPoolCollectionsByExchange.graphql +0 -38
- package/src/resources/generated_queries/GetNftPoolEvents.graphql +0 -416
- package/src/resources/generated_queries/GetNftPoolStats.graphql +0 -40
- package/src/resources/generated_queries/GetNftPoolsByCollectionAndExchange.graphql +0 -89
- package/src/resources/generated_queries/GetNftPoolsByOwner.graphql +0 -89
- package/src/resources/generated_queries/GetParallelCardChanges.graphql +0 -57
- package/src/resources/generated_queries/GetPrimePoolAssets.graphql +0 -32
- package/src/resources/generated_queries/GetPrimePoolEvents.graphql +0 -156
- package/src/resources/generated_queries/GetPrimePools.graphql +0 -62
- package/src/resources/generated_queries/GetSymbol.graphql +0 -11
- package/src/resources/generated_queries/GetTokenBars.graphql +0 -121
- package/src/resources/generated_queries/GetTokenEvents.graphql +0 -102
- package/src/resources/generated_queries/GetTokenEventsForMaker.graphql +0 -102
- package/src/resources/generated_queries/GetTokenPrices.graphql +0 -8
- package/src/resources/generated_queries/GetWebhooks.graphql +0 -134
- package/src/resources/generated_queries/Holders.graphql +0 -100
- package/src/resources/generated_queries/LiquidityLocks.graphql +0 -32
- package/src/resources/generated_queries/LiquidityMetadata.graphql +0 -17
- package/src/resources/generated_queries/LiquidityMetadataByToken.graphql +0 -19
- package/src/resources/generated_queries/ListPairsForToken.graphql +0 -193
- package/src/resources/generated_queries/ListPairsWithMetadataForToken.graphql +0 -374
- package/src/resources/generated_queries/NftHolders.graphql +0 -12
- package/src/resources/generated_queries/PairMetadata.graphql +0 -234
- package/src/resources/generated_queries/PrimeHolders.graphql +0 -98
- package/src/resources/generated_queries/SearchNfts.graphql +0 -35
- package/src/resources/generated_queries/Token.graphql +0 -82
- package/src/resources/generated_queries/TokenLifecycleEvents.graphql +0 -34
- package/src/resources/generated_queries/TokenSparklines.graphql +0 -11
- package/src/resources/generated_queries/TokenTopTraders.graphql +0 -26
- package/src/resources/generated_queries/Tokens.graphql +0 -82
- package/src/resources/generated_queries/Top10HoldersPercent.graphql +0 -3
- package/src/resources/generated_queries/WalletAggregateBackfillState.graphql +0 -6
- package/src/resources/generated_queries/WalletChart.graphql +0 -20
- package/src/resources/generated_queries/WalletNftCollectionAssets.graphql +0 -11
- package/src/resources/generated_queries/WalletNftCollections.graphql +0 -10
- package/src/resources/generated_subscriptions/OnBalanceUpdated.graphql +0 -94
- package/src/resources/generated_subscriptions/OnBarsUpdated.graphql +0 -547
- package/src/resources/generated_subscriptions/OnDetailedStatsUpdated.graphql +0 -325
- package/src/resources/generated_subscriptions/OnEventLabelCreated.graphql +0 -22
- package/src/resources/generated_subscriptions/OnEventsCreated.graphql +0 -105
- package/src/resources/generated_subscriptions/OnEventsCreatedByMaker.graphql +0 -92
- package/src/resources/generated_subscriptions/OnHoldersUpdated.graphql +0 -100
- package/src/resources/generated_subscriptions/OnLatestPairUpdated.graphql +0 -42
- package/src/resources/generated_subscriptions/OnLatestTokens.graphql +0 -37
- package/src/resources/generated_subscriptions/OnLaunchpadTokenEvent.graphql +0 -97
- package/src/resources/generated_subscriptions/OnLaunchpadTokenEventBatch.graphql +0 -96
- package/src/resources/generated_subscriptions/OnNftAssetsCreated.graphql +0 -42
- package/src/resources/generated_subscriptions/OnNftEventsCreated.graphql +0 -82
- package/src/resources/generated_subscriptions/OnNftPoolEventsCreated.graphql +0 -412
- package/src/resources/generated_subscriptions/OnPairMetadataUpdated.graphql +0 -226
- package/src/resources/generated_subscriptions/OnPriceUpdated.graphql +0 -16
- package/src/resources/generated_subscriptions/OnPricesUpdated.graphql +0 -8
- package/src/resources/generated_subscriptions/OnTokenBarsUpdated.graphql +0 -545
- package/src/resources/generated_subscriptions/OnTokenEventsCreated.graphql +0 -92
- package/src/resources/generated_subscriptions/OnTokenLifecycleEventsCreated.graphql +0 -30
- package/src/resources/generated_subscriptions/OnUnconfirmedBarsUpdated.graphql +0 -115
- package/src/resources/generated_subscriptions/OnUnconfirmedEventsCreated.graphql +0 -50
- package/src/resources/generated_subscriptions/OnUnconfirmedEventsCreatedByMaker.graphql +0 -41
- package/src/resources/graphql.schema.json +0 -63375
- package/src/resources/graphql.ts +0 -10422
- package/src/resources/mutations_override/CreateWebhooks.graphql +0 -472
- package/src/resources/networkConfigs.json +0 -3726
- package/src/resources/queries_override/FilterTokenWallets.graphql +0 -144
- package/src/resources/queries_override/GetEventLabels.graphql +0 -35
- package/src/resources/queries_override/GetNetworkConfigs.graphql +0 -129
- package/src/resources/queries_override/GetWebhooks.graphql +0 -134
- package/src/resources/schema.graphql +0 -9916
- package/src/resources/subscriptions_override/OnEventLabelCreated.graphql +0 -22
- package/src/resources/subscriptions_override/OnLaunchpadTokenEventBatch.graphql +0 -96
- package/src/scripts/buildSdk.ts +0 -173
- package/src/scripts/generateGraphql.ts +0 -305
- package/src/scripts/generateNetworkConfigs.ts +0 -241
- package/src/sdk/Mutation.ts +0 -29
- package/src/sdk/Query.ts +0 -285
- package/src/sdk/Subscribe.ts +0 -465
- package/src/sdk/generated/fragment-masking.ts +0 -87
- package/src/sdk/generated/gql.ts +0 -610
- package/src/sdk/generated/graphql.ts +0 -11361
- package/src/sdk/generated/index.ts +0 -2
- package/src/sdk/graphql/GetPairEvents.graphql +0 -71
- package/src/sdk/index.test.ts +0 -454
- package/src/sdk/index.ts +0 -239
- package/src/sdk/invariant.ts +0 -34
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
query PairEvents($cursor: String, $limit: Int, $direction: RankingDirection, $query: EventsQueryInput!) {
|
|
2
|
-
pairEvents: getTokenEvents(
|
|
3
|
-
query: $query,
|
|
4
|
-
cursor: $cursor,
|
|
5
|
-
limit: $limit,
|
|
6
|
-
direction: $direction
|
|
7
|
-
) {
|
|
8
|
-
cursor
|
|
9
|
-
items {
|
|
10
|
-
address
|
|
11
|
-
baseTokenPrice
|
|
12
|
-
blockHash
|
|
13
|
-
blockNumber
|
|
14
|
-
eventDisplayType
|
|
15
|
-
eventType
|
|
16
|
-
id
|
|
17
|
-
liquidityToken
|
|
18
|
-
maker
|
|
19
|
-
networkId
|
|
20
|
-
quoteToken
|
|
21
|
-
token0PoolValueUsd
|
|
22
|
-
token0SwapValueUsd
|
|
23
|
-
timestamp
|
|
24
|
-
token0ValueBase
|
|
25
|
-
token1PoolValueUsd
|
|
26
|
-
token1SwapValueUsd
|
|
27
|
-
token1ValueBase
|
|
28
|
-
transactionHash
|
|
29
|
-
transactionIndex
|
|
30
|
-
logIndex
|
|
31
|
-
data {
|
|
32
|
-
__typename
|
|
33
|
-
... on BurnEventData {
|
|
34
|
-
amount0
|
|
35
|
-
amount1
|
|
36
|
-
amount0Shifted
|
|
37
|
-
amount1Shifted
|
|
38
|
-
type
|
|
39
|
-
}
|
|
40
|
-
... on MintEventData {
|
|
41
|
-
amount0
|
|
42
|
-
amount1
|
|
43
|
-
amount0Shifted
|
|
44
|
-
amount1Shifted
|
|
45
|
-
type
|
|
46
|
-
}
|
|
47
|
-
... on PoolBalanceChangedEventData {
|
|
48
|
-
amount0
|
|
49
|
-
amount1
|
|
50
|
-
amount0Shifted
|
|
51
|
-
amount1Shifted
|
|
52
|
-
type
|
|
53
|
-
}
|
|
54
|
-
... on SwapEventData {
|
|
55
|
-
amount0In
|
|
56
|
-
amount0Out
|
|
57
|
-
amount1In
|
|
58
|
-
amount1Out
|
|
59
|
-
amount0
|
|
60
|
-
amount1
|
|
61
|
-
amountNonLiquidityToken
|
|
62
|
-
priceUsd
|
|
63
|
-
priceUsdTotal
|
|
64
|
-
priceBaseToken
|
|
65
|
-
priceBaseTokenTotal
|
|
66
|
-
type
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
package/src/sdk/index.test.ts
DELETED
|
@@ -1,454 +0,0 @@
|
|
|
1
|
-
import { DocumentNode } from "graphql";
|
|
2
|
-
|
|
3
|
-
import { ApiConfig, Codex } from "./index";
|
|
4
|
-
|
|
5
|
-
const getNetworksDocument = {
|
|
6
|
-
kind: "Document",
|
|
7
|
-
definitions: [
|
|
8
|
-
{
|
|
9
|
-
kind: "OperationDefinition",
|
|
10
|
-
operation: "query",
|
|
11
|
-
name: { kind: "Name", value: "Networks" },
|
|
12
|
-
selectionSet: {
|
|
13
|
-
kind: "SelectionSet",
|
|
14
|
-
selections: [
|
|
15
|
-
{
|
|
16
|
-
kind: "Field",
|
|
17
|
-
name: { kind: "Name", value: "getNetworks" },
|
|
18
|
-
selectionSet: {
|
|
19
|
-
kind: "SelectionSet",
|
|
20
|
-
selections: [
|
|
21
|
-
{ kind: "Field", name: { kind: "Name", value: "id" } },
|
|
22
|
-
{ kind: "Field", name: { kind: "Name", value: "name" } },
|
|
23
|
-
],
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
],
|
|
30
|
-
} as unknown as DocumentNode;
|
|
31
|
-
|
|
32
|
-
const getNetworksString = `query GetNetworks { getNetworks { id } }`;
|
|
33
|
-
const subscribePriceUpdatedString = `subscription onPriceUpdated($address: String!, $networkId: Int!) { onPriceUpdated(address: $address, networkId: $networkId) { address networkId priceUsd timestamp } }`;
|
|
34
|
-
|
|
35
|
-
describe("Codex", () => {
|
|
36
|
-
let sdk: Codex;
|
|
37
|
-
|
|
38
|
-
beforeEach(() => {
|
|
39
|
-
sdk = new Codex("dummy-key");
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
describe("constructor", () => {
|
|
43
|
-
it("should initialize with default config when no apiConfig provided", () => {
|
|
44
|
-
const sdkInstance = new Codex("test-key");
|
|
45
|
-
expect(sdkInstance).toBeInstanceOf(Codex);
|
|
46
|
-
expect(sdkInstance.queries).toBeDefined();
|
|
47
|
-
expect(sdkInstance.mutations).toBeDefined();
|
|
48
|
-
expect(sdkInstance.subscriptions).toBeDefined();
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it("should throw error when apiKey is not provided", () => {
|
|
52
|
-
expect(() => new Codex("")).toThrow("apiKey must be defined");
|
|
53
|
-
expect(() => new Codex(null as any)).toThrow("apiKey must be defined");
|
|
54
|
-
expect(() => new Codex(undefined as any)).toThrow(
|
|
55
|
-
"apiKey must be defined",
|
|
56
|
-
);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it("should initialize with custom apiConfig", () => {
|
|
60
|
-
const customConfig: Partial<ApiConfig> = {
|
|
61
|
-
apiUrl: "https://custom.api.com/graphql",
|
|
62
|
-
apiRealtimeUrl: "wss://custom.api.com/graphql",
|
|
63
|
-
headers: { "Custom-Header": "value" },
|
|
64
|
-
wsHeaders: { "WS-Header": "ws-value" },
|
|
65
|
-
ws: false,
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
const sdkInstance = new Codex("test-key", customConfig);
|
|
69
|
-
expect(sdkInstance).toBeInstanceOf(Codex);
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it("should merge custom config with default config", () => {
|
|
73
|
-
const customConfig: Partial<ApiConfig> = {
|
|
74
|
-
headers: { "Custom-Header": "value" },
|
|
75
|
-
ws: false,
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
// Mock the createGraphQLClient and createWebsocketClient to verify they're called with merged config
|
|
79
|
-
const createGraphQLClientSpy = jest.spyOn(
|
|
80
|
-
Codex.prototype as any,
|
|
81
|
-
"createGraphQLClient",
|
|
82
|
-
);
|
|
83
|
-
const createWebsocketClientSpy = jest.spyOn(
|
|
84
|
-
Codex.prototype as any,
|
|
85
|
-
"createWebsocketClient",
|
|
86
|
-
);
|
|
87
|
-
|
|
88
|
-
new Codex("test-key", customConfig);
|
|
89
|
-
|
|
90
|
-
// Verify the merged config was used
|
|
91
|
-
expect(createGraphQLClientSpy).toHaveBeenCalledWith(
|
|
92
|
-
expect.objectContaining({
|
|
93
|
-
apiUrl: "https://graph.codex.io/graphql", // default
|
|
94
|
-
apiRealtimeUrl: "wss://graph.codex.io/graphql", // default
|
|
95
|
-
headers: { "Custom-Header": "value" }, // custom
|
|
96
|
-
ws: false, // custom
|
|
97
|
-
}),
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
createGraphQLClientSpy.mockRestore();
|
|
101
|
-
createWebsocketClientSpy.mockRestore();
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
describe("updateConfig", () => {
|
|
106
|
-
it("should update configuration and recreate clients", () => {
|
|
107
|
-
const disposeSpy = jest.spyOn(sdk, "dispose");
|
|
108
|
-
const createGraphQLClientSpy = jest.spyOn(
|
|
109
|
-
sdk as any,
|
|
110
|
-
"createGraphQLClient",
|
|
111
|
-
);
|
|
112
|
-
const createWebsocketClientSpy = jest.spyOn(
|
|
113
|
-
sdk as any,
|
|
114
|
-
"createWebsocketClient",
|
|
115
|
-
);
|
|
116
|
-
|
|
117
|
-
const newConfig: Partial<ApiConfig> = {
|
|
118
|
-
apiUrl: "https://new-api.com/graphql",
|
|
119
|
-
headers: { "New-Header": "new-value" },
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
sdk.updateConfig(newConfig);
|
|
123
|
-
|
|
124
|
-
expect(disposeSpy).toHaveBeenCalled();
|
|
125
|
-
expect(createGraphQLClientSpy).toHaveBeenCalled();
|
|
126
|
-
expect(createWebsocketClientSpy).toHaveBeenCalled();
|
|
127
|
-
|
|
128
|
-
disposeSpy.mockRestore();
|
|
129
|
-
createGraphQLClientSpy.mockRestore();
|
|
130
|
-
createWebsocketClientSpy.mockRestore();
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
it("should merge new config with existing config", () => {
|
|
134
|
-
const initialConfig: Partial<ApiConfig> = {
|
|
135
|
-
headers: { "Initial-Header": "initial-value" },
|
|
136
|
-
ws: true,
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
const sdkWithConfig = new Codex("test-key", initialConfig);
|
|
140
|
-
const parseConfigSpy = jest.spyOn(sdkWithConfig as any, "parseConfig");
|
|
141
|
-
|
|
142
|
-
const updateConfig: Partial<ApiConfig> = {
|
|
143
|
-
headers: { "Updated-Header": "updated-value" },
|
|
144
|
-
apiUrl: "https://updated-api.com/graphql",
|
|
145
|
-
};
|
|
146
|
-
|
|
147
|
-
sdkWithConfig.updateConfig(updateConfig);
|
|
148
|
-
|
|
149
|
-
// Verify parseConfig was called with merged configuration
|
|
150
|
-
expect(parseConfigSpy).toHaveBeenCalledWith(
|
|
151
|
-
expect.objectContaining({
|
|
152
|
-
headers: { "Updated-Header": "updated-value" },
|
|
153
|
-
apiUrl: "https://updated-api.com/graphql",
|
|
154
|
-
ws: true, // from initial config
|
|
155
|
-
}),
|
|
156
|
-
);
|
|
157
|
-
|
|
158
|
-
parseConfigSpy.mockRestore();
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
it("should dispose existing websocket connection before creating new one", () => {
|
|
162
|
-
// Mock wsClient
|
|
163
|
-
const mockDispose = jest.fn();
|
|
164
|
-
(sdk as any).wsClient = { dispose: mockDispose };
|
|
165
|
-
|
|
166
|
-
const disposeSpy = jest.spyOn(sdk, "dispose");
|
|
167
|
-
|
|
168
|
-
sdk.updateConfig({ headers: { "New-Header": "value" } });
|
|
169
|
-
|
|
170
|
-
expect(disposeSpy).toHaveBeenCalled();
|
|
171
|
-
disposeSpy.mockRestore();
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
|
|
175
|
-
describe("getRequestHeaders", () => {
|
|
176
|
-
it("should return static headers when no dynamic headers are configured", async () => {
|
|
177
|
-
const staticHeaders = { "Static-Header": "static-value" };
|
|
178
|
-
const sdkWithHeaders = new Codex("test-key", { headers: staticHeaders });
|
|
179
|
-
|
|
180
|
-
const headers = await (sdkWithHeaders as any).getRequestHeaders();
|
|
181
|
-
|
|
182
|
-
expect(headers).toEqual(staticHeaders);
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
it("should return dynamic headers when applyHeaders is configured", async () => {
|
|
186
|
-
const dynamicHeaders = { "Dynamic-Header": "dynamic-value" };
|
|
187
|
-
const applyHeaders = jest.fn().mockResolvedValue(dynamicHeaders);
|
|
188
|
-
|
|
189
|
-
const sdkWithDynamicHeaders = new Codex("test-key", { applyHeaders });
|
|
190
|
-
|
|
191
|
-
const headers = await (sdkWithDynamicHeaders as any).getRequestHeaders();
|
|
192
|
-
|
|
193
|
-
expect(applyHeaders).toHaveBeenCalled();
|
|
194
|
-
expect(headers).toEqual(dynamicHeaders);
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
it("should merge static and dynamic headers with dynamic taking precedence", async () => {
|
|
198
|
-
const staticHeaders = { "Header-1": "static", "Header-2": "static" };
|
|
199
|
-
const dynamicHeaders = { "Header-2": "dynamic", "Header-3": "dynamic" };
|
|
200
|
-
const applyHeaders = jest.fn().mockResolvedValue(dynamicHeaders);
|
|
201
|
-
|
|
202
|
-
const sdkWithBothHeaders = new Codex("test-key", {
|
|
203
|
-
headers: staticHeaders,
|
|
204
|
-
applyHeaders,
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
const headers = await (sdkWithBothHeaders as any).getRequestHeaders();
|
|
208
|
-
|
|
209
|
-
expect(headers).toEqual({
|
|
210
|
-
"Header-1": "static",
|
|
211
|
-
"Header-2": "dynamic", // dynamic overrides static
|
|
212
|
-
"Header-3": "dynamic",
|
|
213
|
-
});
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
it("should handle applyHeaders returning undefined", async () => {
|
|
217
|
-
const staticHeaders = { "Static-Header": "static-value" };
|
|
218
|
-
const applyHeaders = jest.fn().mockResolvedValue(undefined);
|
|
219
|
-
|
|
220
|
-
const sdkWithUndefinedDynamic = new Codex("test-key", {
|
|
221
|
-
headers: staticHeaders,
|
|
222
|
-
applyHeaders,
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
const headers = await (
|
|
226
|
-
sdkWithUndefinedDynamic as any
|
|
227
|
-
).getRequestHeaders();
|
|
228
|
-
|
|
229
|
-
expect(headers).toEqual(staticHeaders);
|
|
230
|
-
});
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
describe("fetch override", () => {
|
|
234
|
-
it("should use the fetch override", async () => {
|
|
235
|
-
const fetchMock = jest.fn((input, init) => {
|
|
236
|
-
console.log("fetchMock", input, init);
|
|
237
|
-
return Promise.resolve(
|
|
238
|
-
new Response(
|
|
239
|
-
JSON.stringify({
|
|
240
|
-
data: { getNetworks: [] },
|
|
241
|
-
}),
|
|
242
|
-
{
|
|
243
|
-
status: 200,
|
|
244
|
-
headers: new Headers({
|
|
245
|
-
"Content-Type": "application/json",
|
|
246
|
-
}),
|
|
247
|
-
},
|
|
248
|
-
),
|
|
249
|
-
);
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
const sdkWithFetch = new Codex("test-key", { fetch: fetchMock });
|
|
253
|
-
await sdkWithFetch.query(getNetworksDocument, {});
|
|
254
|
-
expect(fetchMock).toHaveBeenCalled();
|
|
255
|
-
});
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
describe("dispose", () => {
|
|
259
|
-
it("should dispose websocket client when it exists", async () => {
|
|
260
|
-
const mockDispose = jest.fn();
|
|
261
|
-
(sdk as any).wsClient = { dispose: mockDispose };
|
|
262
|
-
|
|
263
|
-
await sdk.dispose();
|
|
264
|
-
|
|
265
|
-
expect(mockDispose).toHaveBeenCalled();
|
|
266
|
-
});
|
|
267
|
-
|
|
268
|
-
it("should not throw error when websocket client is undefined", async () => {
|
|
269
|
-
(sdk as any).wsClient = undefined;
|
|
270
|
-
|
|
271
|
-
await expect(sdk.dispose()).resolves.not.toThrow();
|
|
272
|
-
});
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
describe("websocket configuration", () => {
|
|
276
|
-
it("should create websocket client when ws is true (default)", () => {
|
|
277
|
-
const createWebsocketClientSpy = jest.spyOn(
|
|
278
|
-
Codex.prototype as any,
|
|
279
|
-
"createWebsocketClient",
|
|
280
|
-
);
|
|
281
|
-
|
|
282
|
-
new Codex("test-key");
|
|
283
|
-
|
|
284
|
-
expect(createWebsocketClientSpy).toHaveBeenCalledWith(
|
|
285
|
-
expect.objectContaining({ ws: true }),
|
|
286
|
-
);
|
|
287
|
-
|
|
288
|
-
createWebsocketClientSpy.mockRestore();
|
|
289
|
-
});
|
|
290
|
-
|
|
291
|
-
it("should not create websocket client when ws is false", () => {
|
|
292
|
-
const createWebsocketClientSpy = jest.spyOn(
|
|
293
|
-
Codex.prototype as any,
|
|
294
|
-
"createWebsocketClient",
|
|
295
|
-
);
|
|
296
|
-
|
|
297
|
-
new Codex("test-key", { ws: false });
|
|
298
|
-
|
|
299
|
-
expect(createWebsocketClientSpy).toHaveBeenCalledWith(
|
|
300
|
-
expect.objectContaining({ ws: false }),
|
|
301
|
-
);
|
|
302
|
-
|
|
303
|
-
createWebsocketClientSpy.mockRestore();
|
|
304
|
-
});
|
|
305
|
-
|
|
306
|
-
it("should throw error when trying to subscribe without websocket enabled", () => {
|
|
307
|
-
const sdkWithoutWs = new Codex("test-key", { ws: false });
|
|
308
|
-
|
|
309
|
-
expect(() => {
|
|
310
|
-
sdkWithoutWs.subscribe(
|
|
311
|
-
subscribePriceUpdatedString,
|
|
312
|
-
{ address: "0xtoken", networkId: 1 },
|
|
313
|
-
{ next: jest.fn(), error: jest.fn(), complete: jest.fn() },
|
|
314
|
-
);
|
|
315
|
-
}).toThrow("Websocket is not enabled in the config");
|
|
316
|
-
});
|
|
317
|
-
});
|
|
318
|
-
|
|
319
|
-
describe("query", () => {
|
|
320
|
-
it("should send a fetch request with the correct params", async () => {
|
|
321
|
-
const fetchSpy = jest
|
|
322
|
-
.spyOn(sdk["client"], "request")
|
|
323
|
-
.mockResolvedValue({} as unknown);
|
|
324
|
-
|
|
325
|
-
await sdk.query(getNetworksDocument, {});
|
|
326
|
-
|
|
327
|
-
expect(fetchSpy).toHaveBeenCalledWith(getNetworksDocument, {}, {});
|
|
328
|
-
});
|
|
329
|
-
|
|
330
|
-
it("should include request headers in the request", async () => {
|
|
331
|
-
const mockHeaders = { "Test-Header": "test-value" };
|
|
332
|
-
const getRequestHeadersSpy = jest
|
|
333
|
-
.spyOn(sdk as any, "getRequestHeaders")
|
|
334
|
-
.mockResolvedValue(mockHeaders);
|
|
335
|
-
const fetchSpy = jest
|
|
336
|
-
.spyOn(sdk["client"], "request")
|
|
337
|
-
.mockResolvedValue({} as unknown);
|
|
338
|
-
|
|
339
|
-
await sdk.query(getNetworksDocument, {});
|
|
340
|
-
|
|
341
|
-
expect(getRequestHeadersSpy).toHaveBeenCalled();
|
|
342
|
-
expect(fetchSpy).toHaveBeenCalledWith(
|
|
343
|
-
getNetworksDocument,
|
|
344
|
-
{},
|
|
345
|
-
mockHeaders,
|
|
346
|
-
);
|
|
347
|
-
|
|
348
|
-
getRequestHeadersSpy.mockRestore();
|
|
349
|
-
});
|
|
350
|
-
});
|
|
351
|
-
|
|
352
|
-
describe("mutation", () => {
|
|
353
|
-
it("should send a request with the correct params", async () => {
|
|
354
|
-
const fetchSpy = jest
|
|
355
|
-
.spyOn(sdk["client"], "request")
|
|
356
|
-
.mockResolvedValue({} as unknown);
|
|
357
|
-
|
|
358
|
-
await sdk.mutation(getNetworksDocument, {});
|
|
359
|
-
|
|
360
|
-
expect(fetchSpy).toHaveBeenCalledWith(getNetworksDocument, {}, {});
|
|
361
|
-
});
|
|
362
|
-
|
|
363
|
-
it("should include request headers in the request", async () => {
|
|
364
|
-
const mockHeaders = { "Test-Header": "test-value" };
|
|
365
|
-
const getRequestHeadersSpy = jest
|
|
366
|
-
.spyOn(sdk as any, "getRequestHeaders")
|
|
367
|
-
.mockResolvedValue(mockHeaders);
|
|
368
|
-
const fetchSpy = jest
|
|
369
|
-
.spyOn(sdk["client"], "request")
|
|
370
|
-
.mockResolvedValue({} as unknown);
|
|
371
|
-
|
|
372
|
-
await sdk.mutation(getNetworksDocument, {});
|
|
373
|
-
|
|
374
|
-
expect(getRequestHeadersSpy).toHaveBeenCalled();
|
|
375
|
-
expect(fetchSpy).toHaveBeenCalledWith(
|
|
376
|
-
getNetworksDocument,
|
|
377
|
-
{},
|
|
378
|
-
mockHeaders,
|
|
379
|
-
);
|
|
380
|
-
|
|
381
|
-
getRequestHeadersSpy.mockRestore();
|
|
382
|
-
});
|
|
383
|
-
});
|
|
384
|
-
|
|
385
|
-
describe("send", () => {
|
|
386
|
-
it("should return the results of the query", async () => {
|
|
387
|
-
const fetchSpy = jest
|
|
388
|
-
.spyOn(sdk["client"], "request")
|
|
389
|
-
.mockResolvedValue({} as unknown);
|
|
390
|
-
|
|
391
|
-
await sdk.send(getNetworksString, {});
|
|
392
|
-
|
|
393
|
-
expect(fetchSpy).toHaveBeenCalledWith(getNetworksString, {}, {});
|
|
394
|
-
});
|
|
395
|
-
|
|
396
|
-
it("should include request headers in the request", async () => {
|
|
397
|
-
const mockHeaders = { "Test-Header": "test-value" };
|
|
398
|
-
const getRequestHeadersSpy = jest
|
|
399
|
-
.spyOn(sdk as any, "getRequestHeaders")
|
|
400
|
-
.mockResolvedValue(mockHeaders);
|
|
401
|
-
const fetchSpy = jest
|
|
402
|
-
.spyOn(sdk["client"], "request")
|
|
403
|
-
.mockResolvedValue({} as unknown);
|
|
404
|
-
|
|
405
|
-
await sdk.send(getNetworksString, {});
|
|
406
|
-
|
|
407
|
-
expect(getRequestHeadersSpy).toHaveBeenCalled();
|
|
408
|
-
expect(fetchSpy).toHaveBeenCalledWith(getNetworksString, {}, mockHeaders);
|
|
409
|
-
|
|
410
|
-
getRequestHeadersSpy.mockRestore();
|
|
411
|
-
});
|
|
412
|
-
});
|
|
413
|
-
|
|
414
|
-
describe("subscribe", () => {
|
|
415
|
-
it("should return a cleanup function", () => {
|
|
416
|
-
const next = jest.fn();
|
|
417
|
-
const error = jest.fn();
|
|
418
|
-
const complete = jest.fn();
|
|
419
|
-
const sink = { next, error, complete };
|
|
420
|
-
|
|
421
|
-
jest.spyOn(sdk["wsClient"] as any, "subscribe").mockReturnValue(() => {});
|
|
422
|
-
|
|
423
|
-
const cleanup = sdk.subscribe(
|
|
424
|
-
subscribePriceUpdatedString,
|
|
425
|
-
{ address: "0xtoken", networkId: 1 },
|
|
426
|
-
sink,
|
|
427
|
-
);
|
|
428
|
-
|
|
429
|
-
expect(typeof cleanup).toBe("function");
|
|
430
|
-
});
|
|
431
|
-
|
|
432
|
-
it("should call wsClient.subscribe with correct parameters", () => {
|
|
433
|
-
const next = jest.fn();
|
|
434
|
-
const error = jest.fn();
|
|
435
|
-
const complete = jest.fn();
|
|
436
|
-
const sink = { next, error, complete };
|
|
437
|
-
const variables = { address: "0xtoken", networkId: 1 };
|
|
438
|
-
|
|
439
|
-
const subscribeSpy = jest
|
|
440
|
-
.spyOn(sdk["wsClient"] as any, "subscribe")
|
|
441
|
-
.mockReturnValue(() => {});
|
|
442
|
-
|
|
443
|
-
sdk.subscribe(subscribePriceUpdatedString, variables, sink);
|
|
444
|
-
|
|
445
|
-
expect(subscribeSpy).toHaveBeenCalledWith(
|
|
446
|
-
{
|
|
447
|
-
query: subscribePriceUpdatedString,
|
|
448
|
-
variables,
|
|
449
|
-
},
|
|
450
|
-
sink,
|
|
451
|
-
);
|
|
452
|
-
});
|
|
453
|
-
});
|
|
454
|
-
});
|