@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.
Files changed (61) hide show
  1. package/lib/http-server/index.d.ts +7 -1
  2. package/lib/http-server/index.d.ts.map +1 -1
  3. package/lib/http-server/index.js +2 -0
  4. package/lib/http-server/index.js.map +1 -1
  5. package/lib/queue/common.d.ts +26 -0
  6. package/lib/queue/common.d.ts.map +1 -0
  7. package/lib/queue/common.js +47 -0
  8. package/lib/queue/common.js.map +1 -0
  9. package/lib/queue/drivers/queue_file.d.ts +17 -0
  10. package/lib/queue/drivers/queue_file.d.ts.map +1 -0
  11. package/lib/queue/drivers/queue_file.js +100 -0
  12. package/lib/queue/drivers/queue_file.js.map +1 -0
  13. package/lib/queue/drivers/queue_postgres.d.ts +28 -0
  14. package/lib/queue/drivers/queue_postgres.d.ts.map +1 -0
  15. package/lib/queue/drivers/queue_postgres.js +360 -0
  16. package/lib/queue/drivers/queue_postgres.js.map +1 -0
  17. package/lib/queue/drivers/queue_redis.d.ts +27 -0
  18. package/lib/queue/drivers/queue_redis.d.ts.map +1 -0
  19. package/lib/queue/drivers/queue_redis.js +359 -0
  20. package/lib/queue/drivers/queue_redis.js.map +1 -0
  21. package/lib/queue/drivers/queue_sqlite3.d.ts +28 -0
  22. package/lib/queue/drivers/queue_sqlite3.d.ts.map +1 -0
  23. package/lib/queue/drivers/queue_sqlite3.js +378 -0
  24. package/lib/queue/drivers/queue_sqlite3.js.map +1 -0
  25. package/lib/queue/index.d.ts +341 -0
  26. package/lib/queue/index.d.ts.map +1 -0
  27. package/lib/queue/index.js +946 -0
  28. package/lib/queue/index.js.map +1 -0
  29. package/lib/queue/internal.d.ts +20 -0
  30. package/lib/queue/internal.d.ts.map +1 -0
  31. package/lib/queue/internal.js +66 -0
  32. package/lib/queue/internal.js.map +1 -0
  33. package/lib/queue/pipeline.d.ts +152 -0
  34. package/lib/queue/pipeline.d.ts.map +1 -0
  35. package/lib/queue/pipeline.js +296 -0
  36. package/lib/queue/pipeline.js.map +1 -0
  37. package/lib/resolver.d.ts +1 -1
  38. package/lib/resolver.d.ts.map +1 -1
  39. package/lib/resolver.js.map +1 -1
  40. package/lib/utils/asleep.d.ts +2 -0
  41. package/lib/utils/asleep.d.ts.map +1 -0
  42. package/lib/utils/asleep.js +3 -0
  43. package/lib/utils/asleep.js.map +1 -0
  44. package/lib/utils/defer.d.ts +4 -0
  45. package/lib/utils/defer.d.ts.map +1 -0
  46. package/lib/utils/defer.js +3 -0
  47. package/lib/utils/defer.js.map +1 -0
  48. package/npm-shrinkwrap.json +2 -2
  49. package/package.json +1 -1
  50. package/services/fx/client.d.ts +1 -1
  51. package/services/fx/client.d.ts.map +1 -1
  52. package/services/fx/client.js +2 -2
  53. package/services/fx/client.js.map +1 -1
  54. package/services/fx/common.d.ts +19 -4
  55. package/services/fx/common.d.ts.map +1 -1
  56. package/services/fx/common.js +8 -5
  57. package/services/fx/common.js.map +1 -1
  58. package/services/fx/server.d.ts +105 -8
  59. package/services/fx/server.d.ts.map +1 -1
  60. package/services/fx/server.js +609 -43
  61. package/services/fx/server.js.map +1 -1
@@ -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, KeetaNetStorageAccount } from './common.ts';
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.js';
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
- * The account to use for performing swaps for a given pair
16
+ * All accounts that may be used by the server to perform swaps
13
17
  *
14
- * This may be either a function or a KeetaNet Account instance.
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: KeetaNetAccount | KeetaNetStorageAccount | ((request: ConversionInputCanonicalJSON) => Promise<KeetaNetAccount | KeetaNetStorageAccount> | KeetaNetAccount | KeetaNetStorageAccount);
27
+ account?: InstanceType<typeof KeetaNet.lib.Account> | undefined;
17
28
  /**
18
29
  * Account which can be used to sign transactions
19
- * for the account above (if not supplied 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
- export declare class KeetaNetFXAnchorHTTPServer extends KeetaAnchorHTTPServer.KeetaNetAnchorHTTPServer<KeetaAnchorFXServerConfig> implements Required<KeetaAnchorFXServerConfig> {
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":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/services/fx/server.ts"],"names":[],"mappings":"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"}