@keetanetwork/anchor 0.0.33 → 0.0.35
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/lib/http-server/index.d.ts +7 -1
- package/lib/http-server/index.d.ts.map +1 -1
- package/lib/http-server/index.js +2 -0
- package/lib/http-server/index.js.map +1 -1
- package/lib/queue/common.d.ts +26 -0
- package/lib/queue/common.d.ts.map +1 -0
- package/lib/queue/common.js +47 -0
- package/lib/queue/common.js.map +1 -0
- package/lib/queue/drivers/queue_file.d.ts +17 -0
- package/lib/queue/drivers/queue_file.d.ts.map +1 -0
- package/lib/queue/drivers/queue_file.js +100 -0
- package/lib/queue/drivers/queue_file.js.map +1 -0
- package/lib/queue/drivers/queue_postgres.d.ts +28 -0
- package/lib/queue/drivers/queue_postgres.d.ts.map +1 -0
- package/lib/queue/drivers/queue_postgres.js +360 -0
- package/lib/queue/drivers/queue_postgres.js.map +1 -0
- package/lib/queue/drivers/queue_redis.d.ts +27 -0
- package/lib/queue/drivers/queue_redis.d.ts.map +1 -0
- package/lib/queue/drivers/queue_redis.js +359 -0
- package/lib/queue/drivers/queue_redis.js.map +1 -0
- package/lib/queue/drivers/queue_sqlite3.d.ts +28 -0
- package/lib/queue/drivers/queue_sqlite3.d.ts.map +1 -0
- package/lib/queue/drivers/queue_sqlite3.js +378 -0
- package/lib/queue/drivers/queue_sqlite3.js.map +1 -0
- package/lib/queue/index.d.ts +341 -0
- package/lib/queue/index.d.ts.map +1 -0
- package/lib/queue/index.js +946 -0
- package/lib/queue/index.js.map +1 -0
- package/lib/queue/internal.d.ts +20 -0
- package/lib/queue/internal.d.ts.map +1 -0
- package/lib/queue/internal.js +66 -0
- package/lib/queue/internal.js.map +1 -0
- package/lib/queue/pipeline.d.ts +152 -0
- package/lib/queue/pipeline.d.ts.map +1 -0
- package/lib/queue/pipeline.js +296 -0
- package/lib/queue/pipeline.js.map +1 -0
- package/lib/resolver.d.ts +1 -1
- package/lib/resolver.d.ts.map +1 -1
- package/lib/resolver.js.map +1 -1
- package/lib/utils/asleep.d.ts +2 -0
- package/lib/utils/asleep.d.ts.map +1 -0
- package/lib/utils/asleep.js +3 -0
- package/lib/utils/asleep.js.map +1 -0
- package/lib/utils/defer.d.ts +4 -0
- package/lib/utils/defer.d.ts.map +1 -0
- package/lib/utils/defer.js +3 -0
- package/lib/utils/defer.js.map +1 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/services/fx/client.d.ts +1 -1
- package/services/fx/client.d.ts.map +1 -1
- package/services/fx/client.js +2 -2
- package/services/fx/client.js.map +1 -1
- package/services/fx/common.d.ts +19 -4
- package/services/fx/common.d.ts.map +1 -1
- package/services/fx/common.js +8 -5
- package/services/fx/common.js.map +1 -1
- package/services/fx/server.d.ts +105 -8
- package/services/fx/server.d.ts.map +1 -1
- package/services/fx/server.js +609 -43
- package/services/fx/server.js.map +1 -1
package/services/fx/server.d.ts
CHANGED
|
@@ -1,25 +1,38 @@
|
|
|
1
1
|
import * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';
|
|
2
2
|
import { KeetaNet } from '../../client/index.js';
|
|
3
|
-
import type { ConversionInputCanonicalJSON, KeetaFXAnchorQuote, KeetaFXAnchorQuoteJSON, KeetaNetAccount
|
|
3
|
+
import type { ConversionInputCanonicalJSON, KeetaFXAnchorQuote, KeetaFXAnchorQuoteJSON, KeetaNetAccount } from './common.ts';
|
|
4
4
|
import * as Signing from '../../lib/utils/signing.js';
|
|
5
|
-
import type { ServiceMetadata } from '../../lib/resolver.
|
|
5
|
+
import type { ServiceMetadata } from '../../lib/resolver.ts';
|
|
6
|
+
import { KeetaAnchorQueueRunner } from '../../lib/queue/index.js';
|
|
7
|
+
import type { KeetaAnchorQueueStorageDriver, KeetaAnchorQueueRequestID } from '../../lib/queue/index.ts';
|
|
8
|
+
import { KeetaAnchorQueuePipelineAdvanced } from '../../lib/queue/pipeline.js';
|
|
9
|
+
import type { JSONSerializable } from '../../lib/utils/json.ts';
|
|
6
10
|
export interface KeetaAnchorFXServerConfig extends KeetaAnchorHTTPServer.KeetaAnchorHTTPServerConfig {
|
|
7
11
|
/**
|
|
8
12
|
* The data to use for the index page (optional)
|
|
9
13
|
*/
|
|
10
14
|
homepage?: string | (() => Promise<string> | string);
|
|
11
15
|
/**
|
|
12
|
-
*
|
|
16
|
+
* All accounts that may be used by the server to perform swaps
|
|
13
17
|
*
|
|
14
|
-
*
|
|
18
|
+
* Temporary compatibility: If this is not provided, the single
|
|
19
|
+
* `account` property will be used to create a set of one account.
|
|
20
|
+
*/
|
|
21
|
+
accounts?: InstanceType<typeof KeetaNet.lib.Account.Set>;
|
|
22
|
+
/**
|
|
23
|
+
* Account to use to perform transactions
|
|
24
|
+
*
|
|
25
|
+
* @deprecated Use `signer` and `accounts` instead
|
|
15
26
|
*/
|
|
16
|
-
account
|
|
27
|
+
account?: InstanceType<typeof KeetaNet.lib.Account> | undefined;
|
|
17
28
|
/**
|
|
18
29
|
* Account which can be used to sign transactions
|
|
19
|
-
* for the
|
|
20
|
-
* account will be used).
|
|
30
|
+
* for the accounts above
|
|
21
31
|
*
|
|
22
32
|
* This may be either a function or a KeetaNet Account instance.
|
|
33
|
+
*
|
|
34
|
+
* Temporary compatibility: If not provided, the `account` property
|
|
35
|
+
* will be used as the signer.
|
|
23
36
|
*/
|
|
24
37
|
signer?: InstanceType<typeof KeetaNet.lib.Account> | ((request: ConversionInputCanonicalJSON) => Promise<InstanceType<typeof KeetaNet.lib.Account>> | InstanceType<typeof KeetaNet.lib.Account>);
|
|
25
38
|
/**
|
|
@@ -51,6 +64,23 @@ export interface KeetaAnchorFXServerConfig extends KeetaAnchorHTTPServer.KeetaAn
|
|
|
51
64
|
*/
|
|
52
65
|
validateQuote?: (quote: KeetaFXAnchorQuoteJSON) => Promise<boolean> | boolean;
|
|
53
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* Storage driver to use for stateful operation and managing queues
|
|
69
|
+
*
|
|
70
|
+
* You are responsible for running and maintaining the queue processor unless
|
|
71
|
+
* you enable auto-run below.
|
|
72
|
+
*/
|
|
73
|
+
storage?: {
|
|
74
|
+
/**
|
|
75
|
+
* The storage driver or queue runner to use to serialize
|
|
76
|
+
* and batch requests
|
|
77
|
+
*/
|
|
78
|
+
queue: KeetaAnchorQueueStorageDriver<JSONSerializable, JSONSerializable>;
|
|
79
|
+
/**
|
|
80
|
+
* If enabled the server will automatically run the queue processor
|
|
81
|
+
*/
|
|
82
|
+
autoRun?: boolean;
|
|
83
|
+
};
|
|
54
84
|
/**
|
|
55
85
|
* The network client to use for submitting blocks
|
|
56
86
|
*/
|
|
@@ -60,18 +90,85 @@ export interface KeetaAnchorFXServerConfig extends KeetaAnchorHTTPServer.KeetaAn
|
|
|
60
90
|
networkAlias: typeof KeetaNet.Client.Config.networksArray[number];
|
|
61
91
|
} | KeetaNet.UserClient;
|
|
62
92
|
}
|
|
63
|
-
|
|
93
|
+
type KeetaFXAnchorQueueStage1Request = {
|
|
94
|
+
account: KeetaNetAccount;
|
|
95
|
+
block: Parameters<typeof KeetaNet.UserClient['acceptSwapRequest']>[0]['block'];
|
|
96
|
+
request: ConversionInputCanonicalJSON;
|
|
97
|
+
expected: Required<NonNullable<Parameters<typeof KeetaNet.UserClient['acceptSwapRequest']>[0]['expected']>>;
|
|
98
|
+
};
|
|
99
|
+
type KeetaFXAnchorQueueStage1Response = {
|
|
100
|
+
/**
|
|
101
|
+
* All the blocks for the given swap request
|
|
102
|
+
*/
|
|
103
|
+
blocks: string[];
|
|
104
|
+
/**
|
|
105
|
+
* The hash of one of the blocks submitted
|
|
106
|
+
*/
|
|
107
|
+
blockhash: string;
|
|
108
|
+
};
|
|
109
|
+
declare class KeetaFXAnchorQueuePipelineStage1 extends KeetaAnchorQueueRunner<KeetaFXAnchorQueueStage1Request, KeetaFXAnchorQueueStage1Response> {
|
|
110
|
+
protected readonly serverConfig: KeetaAnchorFXServerConfig;
|
|
111
|
+
protected sequential: boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Timeout for processing a single job -- if exceeded the job is marked as aborted
|
|
114
|
+
*/
|
|
115
|
+
protected processTimeout: number;
|
|
116
|
+
constructor(config: ConstructorParameters<typeof KeetaAnchorQueueRunner<KeetaFXAnchorQueueStage1Request, KeetaFXAnchorQueueStage1Response>>[0] & {
|
|
117
|
+
serverConfig: KeetaAnchorFXServerConfig;
|
|
118
|
+
});
|
|
119
|
+
/**
|
|
120
|
+
* Handles both stuck (no status update after a long period) and
|
|
121
|
+
* aborted (timeout while processing an entry) states.
|
|
122
|
+
*
|
|
123
|
+
* We just put the job back into pending because the processor
|
|
124
|
+
* will check the network state again.
|
|
125
|
+
*/
|
|
126
|
+
protected processorStuck(entry: Parameters<NonNullable<KeetaAnchorQueueRunner<KeetaFXAnchorQueueStage1Request, KeetaFXAnchorQueueStage1Response>['processorStuck']>>[0]): ReturnType<NonNullable<KeetaAnchorQueueRunner<KeetaFXAnchorQueueStage1Request, KeetaFXAnchorQueueStage1Response>['processorStuck']>>;
|
|
127
|
+
/**
|
|
128
|
+
* Process the entry, attempting to submit the swap block(s)
|
|
129
|
+
* to the network. Verifies the block can be submitted before
|
|
130
|
+
* attempting submission. Also verifies if the block is already
|
|
131
|
+
* on the network and marks the job as completed if so.
|
|
132
|
+
*/
|
|
133
|
+
protected processor(entry: Parameters<KeetaAnchorQueueRunner<KeetaFXAnchorQueueStage1Request, KeetaFXAnchorQueueStage1Response>['processor']>[0]): ReturnType<KeetaAnchorQueueRunner<KeetaFXAnchorQueueStage1Request, KeetaFXAnchorQueueStage1Response>['processor']>;
|
|
134
|
+
protected encodeRequest(request: KeetaFXAnchorQueueStage1Request): JSONSerializable;
|
|
135
|
+
protected encodeResponse(response: KeetaFXAnchorQueueStage1Response | null): JSONSerializable | null;
|
|
136
|
+
protected decodeRequest(request: JSONSerializable): KeetaFXAnchorQueueStage1Request;
|
|
137
|
+
protected decodeResponse(response: JSONSerializable | null): KeetaFXAnchorQueueStage1Response | null;
|
|
138
|
+
}
|
|
139
|
+
declare class KeetaFXAnchorQueuePipeline extends KeetaAnchorQueuePipelineAdvanced<KeetaFXAnchorQueueStage1Request, KeetaFXAnchorQueueStage1Response> {
|
|
140
|
+
private readonly serverConfig;
|
|
141
|
+
private readonly accounts;
|
|
142
|
+
private runners;
|
|
143
|
+
constructor(options: ConstructorParameters<typeof KeetaAnchorQueuePipelineAdvanced<KeetaFXAnchorQueueStage1Request, KeetaFXAnchorQueueStage1Response>>[0] & {
|
|
144
|
+
serverConfig: KeetaAnchorFXServerConfig;
|
|
145
|
+
accounts: InstanceType<typeof KeetaNet.lib.Account.Set>;
|
|
146
|
+
});
|
|
147
|
+
protected createPipeline(): Promise<void>;
|
|
148
|
+
protected getStage(stageID: typeof KeetaAnchorQueuePipelineAdvanced.StageID.first | typeof KeetaAnchorQueuePipelineAdvanced.StageID.last): KeetaFXAnchorQueuePipelineStage1;
|
|
149
|
+
add(request: KeetaFXAnchorQueueStage1Request): ReturnType<KeetaFXAnchorQueuePipelineStage1['add']>;
|
|
150
|
+
get(id: KeetaAnchorQueueRequestID): ReturnType<KeetaFXAnchorQueuePipelineStage1['get']>;
|
|
151
|
+
run(options?: Parameters<KeetaFXAnchorQueuePipelineStage1['run']>[0]): ReturnType<KeetaFXAnchorQueuePipelineStage1['run']>;
|
|
152
|
+
maintain(): Promise<void>;
|
|
153
|
+
destroy(): Promise<void>;
|
|
154
|
+
}
|
|
155
|
+
export declare class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer<KeetaAnchorFXServerConfig> implements Omit<Required<KeetaAnchorFXServerConfig>, 'storage'> {
|
|
64
156
|
readonly homepage: NonNullable<KeetaAnchorFXServerConfig['homepage']>;
|
|
65
157
|
readonly client: KeetaAnchorFXServerConfig['client'];
|
|
158
|
+
readonly accounts: NonNullable<KeetaAnchorFXServerConfig['accounts']>;
|
|
66
159
|
readonly account: KeetaAnchorFXServerConfig['account'];
|
|
67
160
|
readonly signer: NonNullable<KeetaAnchorFXServerConfig['signer']>;
|
|
68
161
|
readonly quoteSigner: KeetaAnchorFXServerConfig['quoteSigner'];
|
|
69
162
|
readonly fx: KeetaAnchorFXServerConfig['fx'];
|
|
163
|
+
readonly pipeline: KeetaFXAnchorQueuePipeline;
|
|
164
|
+
protected pipelineAutoRunInterval: ReturnType<typeof setInterval> | null;
|
|
70
165
|
constructor(config: KeetaAnchorFXServerConfig);
|
|
71
166
|
protected initRoutes(config: KeetaAnchorFXServerConfig): Promise<KeetaAnchorHTTPServer.Routes>;
|
|
72
167
|
/**
|
|
73
168
|
* Return the servers endpoints and possible currency conversions metadata
|
|
74
169
|
*/
|
|
75
170
|
serviceMetadata(): Promise<NonNullable<ServiceMetadata['services']['fx']>[string]>;
|
|
171
|
+
stop(): Promise<void>;
|
|
76
172
|
}
|
|
173
|
+
export {};
|
|
77
174
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/services/fx/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,qBAAqB,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AASjD,OAAO,KAAK,EACX,4BAA4B,EAG5B,kBAAkB,EAClB,sBAAsB,EAEtB,eAAe,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/services/fx/server.ts"],"names":[],"mappings":"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"}
|