@v3finance/core-sdk 0.2.0 → 0.2.2
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/CHANGELOG.md +74 -0
- package/README.md +6 -2
- package/dist/cjs/core/gated.d.ts +9 -3
- package/dist/cjs/core/gated.d.ts.map +1 -1
- package/dist/cjs/core/gated.js +9 -3
- package/dist/cjs/core/gated.js.map +1 -1
- package/dist/cjs/core/http.d.ts.map +1 -1
- package/dist/cjs/core/http.js +17 -3
- package/dist/cjs/core/http.js.map +1 -1
- package/dist/cjs/generated/operations.js +1 -1
- package/dist/cjs/generated/types.d.ts +30 -14
- package/dist/cjs/generated/types.d.ts.map +1 -1
- package/dist/cjs/resources/addresses.d.ts +4 -3
- package/dist/cjs/resources/addresses.d.ts.map +1 -1
- package/dist/cjs/resources/addresses.js +4 -3
- package/dist/cjs/resources/addresses.js.map +1 -1
- package/dist/cjs/resources/approvals.d.ts +22 -0
- package/dist/cjs/resources/approvals.d.ts.map +1 -1
- package/dist/cjs/resources/approvals.js +22 -0
- package/dist/cjs/resources/approvals.js.map +1 -1
- package/dist/cjs/resources/transfers.d.ts +81 -17
- package/dist/cjs/resources/transfers.d.ts.map +1 -1
- package/dist/cjs/resources/transfers.js +81 -17
- package/dist/cjs/resources/transfers.js.map +1 -1
- package/dist/cjs/resources/types.d.ts +0 -4
- package/dist/cjs/resources/types.d.ts.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/core/gated.d.ts +9 -3
- package/dist/esm/core/gated.d.ts.map +1 -1
- package/dist/esm/core/gated.js +9 -3
- package/dist/esm/core/gated.js.map +1 -1
- package/dist/esm/core/http.d.ts.map +1 -1
- package/dist/esm/core/http.js +17 -3
- package/dist/esm/core/http.js.map +1 -1
- package/dist/esm/generated/operations.js +1 -1
- package/dist/esm/generated/types.d.ts +30 -14
- package/dist/esm/generated/types.d.ts.map +1 -1
- package/dist/esm/resources/addresses.d.ts +4 -3
- package/dist/esm/resources/addresses.d.ts.map +1 -1
- package/dist/esm/resources/addresses.js +4 -3
- package/dist/esm/resources/addresses.js.map +1 -1
- package/dist/esm/resources/approvals.d.ts +22 -0
- package/dist/esm/resources/approvals.d.ts.map +1 -1
- package/dist/esm/resources/approvals.js +22 -0
- package/dist/esm/resources/approvals.js.map +1 -1
- package/dist/esm/resources/transfers.d.ts +81 -17
- package/dist/esm/resources/transfers.d.ts.map +1 -1
- package/dist/esm/resources/transfers.js +81 -17
- package/dist/esm/resources/transfers.js.map +1 -1
- package/dist/esm/resources/types.d.ts +0 -4
- package/dist/esm/resources/types.d.ts.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/docs/concepts.md +7 -4
- package/docs/errors.md +54 -16
- package/package.json +1 -1
- package/src/core/gated.ts +9 -3
- package/src/core/http.ts +17 -3
- package/src/generated/operations.ts +1 -1
- package/src/generated/types.ts +31 -14
- package/src/resources/addresses.ts +4 -3
- package/src/resources/approvals.ts +22 -0
- package/src/resources/transfers.ts +81 -17
- package/src/resources/types.ts +0 -4
- package/src/version.ts +1 -1
|
@@ -11,17 +11,45 @@ export interface VoteInput {
|
|
|
11
11
|
* The result of sending is `Gated`, and that is the main thing to understand
|
|
12
12
|
* here. The same `{transaction}` body comes back in three situations:
|
|
13
13
|
*
|
|
14
|
-
* applied (201) — executed, the money left
|
|
14
|
+
* applied (201) — executed, the money left (rarely the status is still
|
|
15
|
+
* `pending` with a `txHash`: it went out, but its
|
|
16
|
+
* accounting was not recorded, and an administrator's
|
|
17
|
+
* reconciliation finishes it — do not send it again);
|
|
15
18
|
* pending (202) — awaiting signatures, funds RESERVED but not sent;
|
|
16
|
-
* replayed (200) — a
|
|
19
|
+
* replayed (200) — a transfer with this `idempotencyKey` already existed,
|
|
20
|
+
* and this is that transfer as it stands NOW.
|
|
17
21
|
*
|
|
18
22
|
* They cannot be told apart by the body. Showing "sent" on `pending` tells
|
|
19
23
|
* the person money has gone when it is frozen.
|
|
24
|
+
*
|
|
25
|
+
* `replayed` does not mean "sent" either. It says only that the request was
|
|
26
|
+
* seen before; what became of it is in `data.transaction.status`:
|
|
27
|
+
*
|
|
28
|
+
* confirmed, submitted — it left;
|
|
29
|
+
* awaiting_approval — waiting for signatures, funds reserved;
|
|
30
|
+
* pending — still executing, or its outcome is unknown
|
|
31
|
+
* (the first answer was 502
|
|
32
|
+
* `TRANSFER_OUTCOME_UNKNOWN`) until an
|
|
33
|
+
* administrator reconciles it;
|
|
34
|
+
* failed, rejected,
|
|
35
|
+
* cancelled — it did not leave.
|
|
20
36
|
*/
|
|
21
37
|
export declare class TransfersResource {
|
|
22
38
|
#private;
|
|
23
39
|
constructor(http: HttpClient, vaultCode: string);
|
|
24
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Sends a transfer. The timeout is long: the path calls the wallet service.
|
|
42
|
+
*
|
|
43
|
+
* On `outcome: 'replayed'` read `data.transaction.status` before telling
|
|
44
|
+
* anyone anything — a replay of an attempt that failed, or that is still
|
|
45
|
+
* waiting for signatures, comes back the same way as one that went out.
|
|
46
|
+
*
|
|
47
|
+
* A thrown 502 `TRANSFER_OUTCOME_UNKNOWN` is not a failure: the signing
|
|
48
|
+
* service gave no definite answer, the transaction may have left, and the
|
|
49
|
+
* transfer stays `pending` with its funds reserved (`details.transactionId`).
|
|
50
|
+
* Retry it only with the SAME key — that returns the transfer without
|
|
51
|
+
* executing it again; a new key can send the money twice.
|
|
52
|
+
*/
|
|
25
53
|
send(input: CreateTransferBody, options?: {
|
|
26
54
|
signal?: AbortSignal;
|
|
27
55
|
timeoutMs?: number;
|
|
@@ -29,7 +57,9 @@ export declare class TransfersResource {
|
|
|
29
57
|
/**
|
|
30
58
|
* One transfer in full. Note the shape: this is the transaction itself, not
|
|
31
59
|
* the `{ transaction }` wrapper that `send()` returns — and it carries more,
|
|
32
|
-
* including `amlLevel`, `approvers`, `usdRate` and `failureReason
|
|
60
|
+
* including `amlLevel`, `approvers`, `usdRate` and `failureReason` — the
|
|
61
|
+
* last only on `failed`, `rejected` and `cancelled`, `null` on any other
|
|
62
|
+
* status.
|
|
33
63
|
*/
|
|
34
64
|
get(transferId: string): Promise<TransactionDetail>;
|
|
35
65
|
/**
|
|
@@ -45,11 +75,30 @@ export declare class TransfersResource {
|
|
|
45
75
|
* awaiting_approval — counted, more signatures still needed;
|
|
46
76
|
* rejected — a `reject` is a veto, and the reserve is released;
|
|
47
77
|
* confirmed/failed — this vote completed the threshold, so execution ran
|
|
48
|
-
* INSIDE this request (gas, then broadcast, ~10s)
|
|
78
|
+
* INSIDE this request (gas, then broadcast, ~10s);
|
|
79
|
+
* pending — with no `executionError`: the outcome is NOT
|
|
80
|
+
* established by this answer. The signing service
|
|
81
|
+
* gave no definite answer (the transaction may have
|
|
82
|
+
* left; an administrator's reconciliation settles
|
|
83
|
+
* it), another call is executing the transfer, or
|
|
84
|
+
* the execution broke off. Re-read the transfer:
|
|
85
|
+
* `confirmed`/`failed` is the outcome, `pending` for
|
|
86
|
+
* over 10 minutes by `updatedAt` is waiting for
|
|
87
|
+
* reconciliation. Never send it again.
|
|
49
88
|
*
|
|
50
89
|
* `failed` means the money is back: execution broke after approval and the
|
|
51
90
|
* reserve was released, with the reason in `executionError`. Treating the
|
|
52
|
-
* call as "approved, done" hides both the success and that failure.
|
|
91
|
+
* call as "approved, done" hides both the success and that failure. The
|
|
92
|
+
* exception is a `failed` transfer that has a `txHash`: it went out after
|
|
93
|
+
* reconciliation had already returned the reserve, and an administrator has
|
|
94
|
+
* to correct the ledger. `executionError` beside `rejected` or `cancelled`
|
|
95
|
+
* means the transfer was no longer waiting for signatures when approved,
|
|
96
|
+
* and nothing was executed.
|
|
97
|
+
*
|
|
98
|
+
* Repeating the same decision while the transfer is still waiting finishes
|
|
99
|
+
* what an earlier call left undone (it recorded the vote and broke off) — a
|
|
100
|
+
* veto, or execution once the threshold is met — instead of 409
|
|
101
|
+
* `ALREADY_VOTED`.
|
|
53
102
|
*/
|
|
54
103
|
vote(transferId: string, input: VoteInput): Promise<VoteResult>;
|
|
55
104
|
/**
|
|
@@ -68,19 +117,34 @@ export declare class TransfersResource {
|
|
|
68
117
|
*/
|
|
69
118
|
cancel(transferId: string): Promise<CancelResult>;
|
|
70
119
|
/**
|
|
71
|
-
* Settles a transfer
|
|
72
|
-
*
|
|
120
|
+
* Settles a transfer nothing else can close. Administrators only.
|
|
121
|
+
*
|
|
122
|
+
* pending — execution died, or its outcome is unknown (the
|
|
123
|
+
* send answered 502 `TRANSFER_OUTCOME_UNKNOWN`);
|
|
124
|
+
* awaiting_approval — with no live approval request to vote on;
|
|
125
|
+
* failed, rejected,
|
|
126
|
+
* cancelled — closed, but the reserve is still held: it is
|
|
127
|
+
* returned, and the status stays.
|
|
128
|
+
*
|
|
129
|
+
* A pending transfer is decided by the HASH: send `txHash` and it is driven
|
|
130
|
+
* to `confirmed`; send none and the reserve is returned (`failed`). Sending
|
|
131
|
+
* none is YOUR statement that nothing was broadcast — the server does not
|
|
132
|
+
* check it, so look on the chain first: returning the reserve of a
|
|
133
|
+
* transaction that did go out creates money. If the transfer already holds
|
|
134
|
+
* a hash from the signing service, only that hash, sent explicitly, settles
|
|
135
|
+
* it — 409 `TRANSFER_BROADCAST` without one, `TXHASH_MISMATCH` with another,
|
|
136
|
+
* the saved hash in `details.txHash`. The other two cases never executed
|
|
137
|
+
* and take no hash.
|
|
73
138
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* broadcast. A FRESH pending transfer is refused on purpose — while
|
|
78
|
-
* execution may still be in flight, intervening risks a SECOND broadcast,
|
|
79
|
-
* which costs more than waiting.
|
|
139
|
+
* A FRESH transfer is refused on purpose — while execution may still be in
|
|
140
|
+
* flight, intervening risks a SECOND broadcast, which costs more than
|
|
141
|
+
* waiting.
|
|
80
142
|
*
|
|
81
|
-
* Pass `fee` along with the hash if you know it: this is the only moment
|
|
82
|
-
*
|
|
83
|
-
*
|
|
143
|
+
* Pass `fee` along with the hash if you know it: this is the only moment it
|
|
144
|
+
* can be recorded on a transfer settled this way; otherwise it stays as it
|
|
145
|
+
* is, null unless the signing service reported one. The answer says which
|
|
146
|
+
* way it went — `confirmed`, `failed`, or the unchanged `rejected` /
|
|
147
|
+
* `cancelled` of a closed transfer.
|
|
84
148
|
*/
|
|
85
149
|
reconcile(transferId: string, input?: ReconcileTransferBody): Promise<ReconcileTransferResult>;
|
|
86
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfers.d.ts","sourceRoot":"","sources":["../../../src/resources/transfers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAW,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EACV,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,UAAU,EACX,MAAM,uBAAuB,CAAA;AAE9B,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7B;AAED
|
|
1
|
+
{"version":3,"file":"transfers.d.ts","sourceRoot":"","sources":["../../../src/resources/transfers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAW,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EACV,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,UAAU,EACX,MAAM,uBAAuB,CAAA;AAE9B,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,iBAAiB;;IAI5B,YAAY,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAG9C;IAED;;;;;;;;;;;;OAYG;IACG,IAAI,CACR,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACzD,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAUzC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAElD;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAM9D;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAEhD;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,SAAS,CACP,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,qBAA0B,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAMlC;CACF"}
|
|
@@ -9,12 +9,28 @@ const gated_js_1 = require("../core/gated.js");
|
|
|
9
9
|
* The result of sending is `Gated`, and that is the main thing to understand
|
|
10
10
|
* here. The same `{transaction}` body comes back in three situations:
|
|
11
11
|
*
|
|
12
|
-
* applied (201) — executed, the money left
|
|
12
|
+
* applied (201) — executed, the money left (rarely the status is still
|
|
13
|
+
* `pending` with a `txHash`: it went out, but its
|
|
14
|
+
* accounting was not recorded, and an administrator's
|
|
15
|
+
* reconciliation finishes it — do not send it again);
|
|
13
16
|
* pending (202) — awaiting signatures, funds RESERVED but not sent;
|
|
14
|
-
* replayed (200) — a
|
|
17
|
+
* replayed (200) — a transfer with this `idempotencyKey` already existed,
|
|
18
|
+
* and this is that transfer as it stands NOW.
|
|
15
19
|
*
|
|
16
20
|
* They cannot be told apart by the body. Showing "sent" on `pending` tells
|
|
17
21
|
* the person money has gone when it is frozen.
|
|
22
|
+
*
|
|
23
|
+
* `replayed` does not mean "sent" either. It says only that the request was
|
|
24
|
+
* seen before; what became of it is in `data.transaction.status`:
|
|
25
|
+
*
|
|
26
|
+
* confirmed, submitted — it left;
|
|
27
|
+
* awaiting_approval — waiting for signatures, funds reserved;
|
|
28
|
+
* pending — still executing, or its outcome is unknown
|
|
29
|
+
* (the first answer was 502
|
|
30
|
+
* `TRANSFER_OUTCOME_UNKNOWN`) until an
|
|
31
|
+
* administrator reconciles it;
|
|
32
|
+
* failed, rejected,
|
|
33
|
+
* cancelled — it did not leave.
|
|
18
34
|
*/
|
|
19
35
|
class TransfersResource {
|
|
20
36
|
#http;
|
|
@@ -23,7 +39,19 @@ class TransfersResource {
|
|
|
23
39
|
this.#http = http;
|
|
24
40
|
this.#base = `/api/v1/vaults/${(0, http_js_1.seg)(vaultCode)}/transfers`;
|
|
25
41
|
}
|
|
26
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* Sends a transfer. The timeout is long: the path calls the wallet service.
|
|
44
|
+
*
|
|
45
|
+
* On `outcome: 'replayed'` read `data.transaction.status` before telling
|
|
46
|
+
* anyone anything — a replay of an attempt that failed, or that is still
|
|
47
|
+
* waiting for signatures, comes back the same way as one that went out.
|
|
48
|
+
*
|
|
49
|
+
* A thrown 502 `TRANSFER_OUTCOME_UNKNOWN` is not a failure: the signing
|
|
50
|
+
* service gave no definite answer, the transaction may have left, and the
|
|
51
|
+
* transfer stays `pending` with its funds reserved (`details.transactionId`).
|
|
52
|
+
* Retry it only with the SAME key — that returns the transfer without
|
|
53
|
+
* executing it again; a new key can send the money twice.
|
|
54
|
+
*/
|
|
27
55
|
async send(input, options = {}) {
|
|
28
56
|
const res = await this.#http.requestRaw('POST', this.#base, {
|
|
29
57
|
body: input,
|
|
@@ -38,7 +66,9 @@ class TransfersResource {
|
|
|
38
66
|
/**
|
|
39
67
|
* One transfer in full. Note the shape: this is the transaction itself, not
|
|
40
68
|
* the `{ transaction }` wrapper that `send()` returns — and it carries more,
|
|
41
|
-
* including `amlLevel`, `approvers`, `usdRate` and `failureReason
|
|
69
|
+
* including `amlLevel`, `approvers`, `usdRate` and `failureReason` — the
|
|
70
|
+
* last only on `failed`, `rejected` and `cancelled`, `null` on any other
|
|
71
|
+
* status.
|
|
42
72
|
*/
|
|
43
73
|
get(transferId) {
|
|
44
74
|
return this.#http.request('GET', `${this.#base}/${(0, http_js_1.seg)(transferId)}`);
|
|
@@ -56,11 +86,30 @@ class TransfersResource {
|
|
|
56
86
|
* awaiting_approval — counted, more signatures still needed;
|
|
57
87
|
* rejected — a `reject` is a veto, and the reserve is released;
|
|
58
88
|
* confirmed/failed — this vote completed the threshold, so execution ran
|
|
59
|
-
* INSIDE this request (gas, then broadcast, ~10s)
|
|
89
|
+
* INSIDE this request (gas, then broadcast, ~10s);
|
|
90
|
+
* pending — with no `executionError`: the outcome is NOT
|
|
91
|
+
* established by this answer. The signing service
|
|
92
|
+
* gave no definite answer (the transaction may have
|
|
93
|
+
* left; an administrator's reconciliation settles
|
|
94
|
+
* it), another call is executing the transfer, or
|
|
95
|
+
* the execution broke off. Re-read the transfer:
|
|
96
|
+
* `confirmed`/`failed` is the outcome, `pending` for
|
|
97
|
+
* over 10 minutes by `updatedAt` is waiting for
|
|
98
|
+
* reconciliation. Never send it again.
|
|
60
99
|
*
|
|
61
100
|
* `failed` means the money is back: execution broke after approval and the
|
|
62
101
|
* reserve was released, with the reason in `executionError`. Treating the
|
|
63
|
-
* call as "approved, done" hides both the success and that failure.
|
|
102
|
+
* call as "approved, done" hides both the success and that failure. The
|
|
103
|
+
* exception is a `failed` transfer that has a `txHash`: it went out after
|
|
104
|
+
* reconciliation had already returned the reserve, and an administrator has
|
|
105
|
+
* to correct the ledger. `executionError` beside `rejected` or `cancelled`
|
|
106
|
+
* means the transfer was no longer waiting for signatures when approved,
|
|
107
|
+
* and nothing was executed.
|
|
108
|
+
*
|
|
109
|
+
* Repeating the same decision while the transfer is still waiting finishes
|
|
110
|
+
* what an earlier call left undone (it recorded the vote and broke off) — a
|
|
111
|
+
* veto, or execution once the threshold is met — instead of 409
|
|
112
|
+
* `ALREADY_VOTED`.
|
|
64
113
|
*/
|
|
65
114
|
vote(transferId, input) {
|
|
66
115
|
return this.#http.request('POST', `${this.#base}/${(0, http_js_1.seg)(transferId)}/approvals`, { body: input });
|
|
@@ -83,19 +132,34 @@ class TransfersResource {
|
|
|
83
132
|
return this.#http.request('POST', `${this.#base}/${(0, http_js_1.seg)(transferId)}/cancel`);
|
|
84
133
|
}
|
|
85
134
|
/**
|
|
86
|
-
* Settles a transfer
|
|
87
|
-
*
|
|
135
|
+
* Settles a transfer nothing else can close. Administrators only.
|
|
136
|
+
*
|
|
137
|
+
* pending — execution died, or its outcome is unknown (the
|
|
138
|
+
* send answered 502 `TRANSFER_OUTCOME_UNKNOWN`);
|
|
139
|
+
* awaiting_approval — with no live approval request to vote on;
|
|
140
|
+
* failed, rejected,
|
|
141
|
+
* cancelled — closed, but the reserve is still held: it is
|
|
142
|
+
* returned, and the status stays.
|
|
143
|
+
*
|
|
144
|
+
* A pending transfer is decided by the HASH: send `txHash` and it is driven
|
|
145
|
+
* to `confirmed`; send none and the reserve is returned (`failed`). Sending
|
|
146
|
+
* none is YOUR statement that nothing was broadcast — the server does not
|
|
147
|
+
* check it, so look on the chain first: returning the reserve of a
|
|
148
|
+
* transaction that did go out creates money. If the transfer already holds
|
|
149
|
+
* a hash from the signing service, only that hash, sent explicitly, settles
|
|
150
|
+
* it — 409 `TRANSFER_BROADCAST` without one, `TXHASH_MISMATCH` with another,
|
|
151
|
+
* the saved hash in `details.txHash`. The other two cases never executed
|
|
152
|
+
* and take no hash.
|
|
88
153
|
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* broadcast. A FRESH pending transfer is refused on purpose — while
|
|
93
|
-
* execution may still be in flight, intervening risks a SECOND broadcast,
|
|
94
|
-
* which costs more than waiting.
|
|
154
|
+
* A FRESH transfer is refused on purpose — while execution may still be in
|
|
155
|
+
* flight, intervening risks a SECOND broadcast, which costs more than
|
|
156
|
+
* waiting.
|
|
95
157
|
*
|
|
96
|
-
* Pass `fee` along with the hash if you know it: this is the only moment
|
|
97
|
-
*
|
|
98
|
-
*
|
|
158
|
+
* Pass `fee` along with the hash if you know it: this is the only moment it
|
|
159
|
+
* can be recorded on a transfer settled this way; otherwise it stays as it
|
|
160
|
+
* is, null unless the signing service reported one. The answer says which
|
|
161
|
+
* way it went — `confirmed`, `failed`, or the unchanged `rejected` /
|
|
162
|
+
* `cancelled` of a closed transfer.
|
|
99
163
|
*/
|
|
100
164
|
reconcile(transferId, input = {}) {
|
|
101
165
|
return this.#http.request('POST', `${this.#base}/${(0, http_js_1.seg)(transferId)}/reconcile`, { body: input });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfers.js","sourceRoot":"","sources":["../../../src/resources/transfers.ts"],"names":[],"mappings":";;;AAAA,6CAAsD;AACtD,+CAAsD;AAgBtD
|
|
1
|
+
{"version":3,"file":"transfers.js","sourceRoot":"","sources":["../../../src/resources/transfers.ts"],"names":[],"mappings":";;;AAAA,6CAAsD;AACtD,+CAAsD;AAgBtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH;IACW,KAAK,CAAY;IACjB,KAAK,CAAQ;IAEtB,YAAY,IAAgB,EAAE,SAAiB;QAC7C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,KAAK,GAAG,kBAAkB,IAAA,aAAG,EAAC,SAAS,CAAC,YAAY,CAAA;IAC3D,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,IAAI,CACR,KAAyB,EACzB,OAAO,GAAiD,EAAE;QAE1D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAA0B,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;YACnF,IAAI,EAAE,KAAK;YACX,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvF,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACnE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;SAC7E,CAAC,CAAA;QACF,OAAO,IAAA,kBAAO,EAAmD,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;YACrF,WAAW,EAAE,IAAI;SAClB,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,UAAkB;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAA,aAAG,EAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACzF,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,IAAI,CAAC,UAAkB,EAAE,KAAgB;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CACvB,MAAM,EACN,GAAG,IAAI,CAAC,KAAK,IAAI,IAAA,aAAG,EAAC,UAAU,CAAC,YAAY,EAC5C,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAA;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,UAAkB;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,IAAA,aAAG,EAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IAC5F,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,SAAS,CACP,UAAkB,EAClB,KAAK,GAA0B,EAAE;QAEjC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CACvB,MAAM,EACN,GAAG,IAAI,CAAC,KAAK,IAAI,IAAA,aAAG,EAAC,UAAU,CAAC,YAAY,EAC5C,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAA;IACH,CAAC;CACF"}
|
|
@@ -34,10 +34,6 @@ import type { AddressDetail as GeneratedAddressDetail, AddressListItem, CreateTr
|
|
|
34
34
|
* the two must not be merged, because "no account" and "empty account"
|
|
35
35
|
* deserve different wording. Amounts are raw smallest units; put them through
|
|
36
36
|
* the helpers in `units.ts` rather than `Number`.
|
|
37
|
-
*
|
|
38
|
-
* One field is thinner than the type admits: `sharing` is optional because
|
|
39
|
-
* `PATCH /addresses/{id}` reuses this schema WITHOUT it (the document says so
|
|
40
|
-
* itself, on the property). Listings and the detail endpoint do send it.
|
|
41
37
|
*/
|
|
42
38
|
export type Address = AddressListItem;
|
|
43
39
|
/** A single address with its sharing and access details. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/resources/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,aAAa,IAAI,sBAAsB,EACvC,eAAe,EACf,uBAAuB,EACvB,WAAW,IAAI,oBAAoB,EACnC,UAAU,EACX,MAAM,uBAAuB,CAAA;AAE9B
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/resources/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,aAAa,IAAI,sBAAsB,EACvC,eAAe,EACf,uBAAuB,EACvB,WAAW,IAAI,oBAAoB,EACnC,UAAU,EACX,MAAM,uBAAuB,CAAA;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,OAAO,GAAG,eAAe,CAAA;AAErC,4DAA4D;AAC5D,MAAM,MAAM,aAAa,GAAG,sBAAsB,CAAA;AAElD,wEAAwE;AACxE,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAA;AAEhE,+CAA+C;AAC/C,MAAM,MAAM,WAAW,GAAG,oBAAoB,CAAA;AAE9C,4DAA4D;AAC5D,MAAM,MAAM,UAAU,GAAG,UAAU,CAAA;AAEnC;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GACzB,mBAAmB,GACnB,SAAS,GACT,WAAW,GACX,WAAW,GACX,QAAQ,GACR,WAAW,GACX,UAAU,CAAA"}
|
package/dist/cjs/version.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** SDK version, sent in the `user-agent` header. */
|
|
2
|
-
export declare const SDK_VERSION = "0.2.
|
|
2
|
+
export declare const SDK_VERSION = "0.2.2";
|
|
3
3
|
/** Default API base URL. */
|
|
4
4
|
export declare const DEFAULT_BASE_URL = "https://policy-engine-rest.ezig.workers.dev";
|
|
5
5
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cjs/version.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DEFAULT_BASE_URL = exports.SDK_VERSION = void 0;
|
|
4
4
|
/** SDK version, sent in the `user-agent` header. */
|
|
5
|
-
exports.SDK_VERSION = '0.2.
|
|
5
|
+
exports.SDK_VERSION = '0.2.2';
|
|
6
6
|
/** Default API base URL. */
|
|
7
7
|
exports.DEFAULT_BASE_URL = 'https://policy-engine-rest.ezig.workers.dev';
|
|
8
8
|
//# sourceMappingURL=version.js.map
|
package/dist/esm/core/gated.d.ts
CHANGED
|
@@ -15,8 +15,10 @@
|
|
|
15
15
|
* frozen.
|
|
16
16
|
*
|
|
17
17
|
* `replayed` is kept separate from `applied` on purpose. A replay means the
|
|
18
|
-
* previous attempt DID reach the server and only the answer was lost
|
|
19
|
-
*
|
|
18
|
+
* previous attempt DID reach the server and only the answer was lost — not
|
|
19
|
+
* that it succeeded. The body is that operation as it stands now: a replayed
|
|
20
|
+
* transfer may have gone out, be waiting for signatures, be still executing
|
|
21
|
+
* or have failed, and only its own status says which.
|
|
20
22
|
*/
|
|
21
23
|
export type GatedOutcome = 'applied' | 'pending' | 'replayed';
|
|
22
24
|
/**
|
|
@@ -61,7 +63,11 @@ export type Gated<TApplied, TPending = TApplied> = {
|
|
|
61
63
|
export declare function toGated<TApplied, TPending>(status: number, data: unknown, options?: {
|
|
62
64
|
replayOn200?: boolean;
|
|
63
65
|
}): Gated<TApplied, TPending>;
|
|
64
|
-
/**
|
|
66
|
+
/**
|
|
67
|
+
* Narrowing: `applied` or `replayed`. For `applied` the operation ran now.
|
|
68
|
+
* For `replayed` it only existed already — whether money moved is in the
|
|
69
|
+
* body's own status, not in this check.
|
|
70
|
+
*/
|
|
65
71
|
export declare function isApplied<A, P>(r: Gated<A, P>): r is Extract<Gated<A, P>, {
|
|
66
72
|
outcome: 'applied' | 'replayed';
|
|
67
73
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gated.d.ts","sourceRoot":"","sources":["../../../src/core/gated.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gated.d.ts","sourceRoot":"","sources":["../../../src/core/gated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;AAE7D;;;;;;;;GAQG;AACH,MAAM,MAAM,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,IAC3C;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GACpF;IAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC/E;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AAElF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,QAAQ,EACxC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAgB3B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAC5B,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GACb,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAAE,OAAO,EAAE,SAAS,GAAG,UAAU,CAAA;CAAE,CAAC,CAEhE;AAED,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAC5B,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GACb,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,CAAC,CAEnD"}
|
package/dist/esm/core/gated.js
CHANGED
|
@@ -15,8 +15,10 @@
|
|
|
15
15
|
* frozen.
|
|
16
16
|
*
|
|
17
17
|
* `replayed` is kept separate from `applied` on purpose. A replay means the
|
|
18
|
-
* previous attempt DID reach the server and only the answer was lost
|
|
19
|
-
*
|
|
18
|
+
* previous attempt DID reach the server and only the answer was lost — not
|
|
19
|
+
* that it succeeded. The body is that operation as it stands now: a replayed
|
|
20
|
+
* transfer may have gone out, be waiting for signatures, be still executing
|
|
21
|
+
* or have failed, and only its own status says which.
|
|
20
22
|
*/
|
|
21
23
|
/**
|
|
22
24
|
* Labels a response by status. An unexpected status throws rather than guessing.
|
|
@@ -50,7 +52,11 @@ export function toGated(status, data, options = {}) {
|
|
|
50
52
|
'Expected 200, 201 (applied) or 202 (awaiting approval).');
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* Narrowing: `applied` or `replayed`. For `applied` the operation ran now.
|
|
57
|
+
* For `replayed` it only existed already — whether money moved is in the
|
|
58
|
+
* body's own status, not in this check.
|
|
59
|
+
*/
|
|
54
60
|
export function isApplied(r) {
|
|
55
61
|
return r.outcome === 'applied' || r.outcome === 'replayed';
|
|
56
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gated.js","sourceRoot":"","sources":["../../../src/core/gated.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gated.js","sourceRoot":"","sources":["../../../src/core/gated.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAkBH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,OAAO,CACrB,MAAc,EACd,IAAa,EACb,OAAO,GAA8B,EAAE;IAEvC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG;YACN,OAAO,OAAO,CAAC,WAAW;gBACxB,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAgB,EAAE;gBAC9D,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAgB,EAAE,CAAA;QACjE,KAAK,GAAG;YACN,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAgB,EAAE,CAAA;QACpE,KAAK,GAAG;YACN,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAgB,EAAE,CAAA;QACpE;YACE,MAAM,IAAI,KAAK,CACb,kDAAkD,MAAM,IAAI;gBAC1D,yDAAyD,CAC5D,CAAA;IACL,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,CAAc;IAEd,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,UAAU,CAAA;AAC5D,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,SAAS,CACvB,CAAc;IAEd,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS,CAAA;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/core/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,aAAa,CAAA;AAwBpB,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAA;AAE1C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,SAAS,GACT,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAAA;IAE/C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAEhC;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAExD,8EAA8E;IAC9E,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3D,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IAE/B,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;IACzB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;CAC7C;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,CAAC,CAAA;IACP,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,sFAAsF;AACtF,eAAO,MAAM,GAAG,UAAW,MAAM,KAAG,MAAmC,CAAA;AAEvE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAa/D;AAED,qBAAa,UAAU;;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAKxB,YAAY,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/core/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,aAAa,CAAA;AAwBpB,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,GACT,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAA;AAE1C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,SAAS,GACT,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAAA;IAE/C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAEhC;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAExD,8EAA8E;IAC9E,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3D,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IAE/B,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;IACzB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;CAC7C;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,CAAC,CAAA;IACP,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,sFAAsF;AACtF,eAAO,MAAM,GAAG,UAAW,MAAM,KAAG,MAAmC,CAAA;AAEvE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAa/D;AAED,qBAAa,UAAU;;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAKxB,YAAY,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAyBvD;IAED,yFAAyF;IACnF,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,CAEvF;IAED;;;;;OAKG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAqB5F;IAED,qFAAqF;IAC/E,UAAU,CAAC,CAAC,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAYzB;CA8FF"}
|
package/dist/esm/core/http.js
CHANGED
|
@@ -63,11 +63,25 @@ export class HttpClient {
|
|
|
63
63
|
constructor(options) {
|
|
64
64
|
this.baseUrl = options.baseUrl.replace(/\/+$/, '');
|
|
65
65
|
this.#options = options;
|
|
66
|
-
const
|
|
67
|
-
if (typeof
|
|
66
|
+
const custom = options.fetch;
|
|
67
|
+
if (typeof (custom ?? globalThis.fetch) !== 'function') {
|
|
68
68
|
throw new Error('@v3finance/core-sdk: fetch is unavailable in this runtime — pass one to the client options.');
|
|
69
69
|
}
|
|
70
|
-
this.#fetch
|
|
70
|
+
// NEVER store the function and call it as `this.#fetch(…)`. A private
|
|
71
|
+
// field call passes the client as the receiver, and a browser's `fetch`
|
|
72
|
+
// checks its receiver: anything but the window is
|
|
73
|
+
// `TypeError: Illegal invocation`, thrown before a single byte leaves.
|
|
74
|
+
// Node and React Native do not check, which is how every request from a
|
|
75
|
+
// web page failed while the whole test suite passed — and since a
|
|
76
|
+
// `TypeError` out of `fetch` is what a dropped connection looks like, the
|
|
77
|
+
// failure surfaced as a "network error" on a perfectly good network.
|
|
78
|
+
//
|
|
79
|
+
// The wrapper calls with no receiver at all. Without a custom fetch the
|
|
80
|
+
// global one is looked up per call rather than captured here, so whatever
|
|
81
|
+
// patches it later (instrumentation, a mock server) is still honoured.
|
|
82
|
+
this.#fetch = custom
|
|
83
|
+
? (input, init) => custom(input, init)
|
|
84
|
+
: (input, init) => globalThis.fetch(input, init);
|
|
71
85
|
this.#timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
72
86
|
}
|
|
73
87
|
/** Performs a request and returns the parsed body. Statuses >= 400 throw `CoreError`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/core/http.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,GAEb,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;;;;;;;;;;;;GAaG;AAEH,iDAAiD;AACjD,MAAM,oBAAoB,GAAG,gBAAgB,CAAA;AAE7C,2EAA2E;AAC3E,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAqFjC,sFAAsF;AACtF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;AAEvE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc,CAAC,KAAwB;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;IACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,SAAQ;QACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACvE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC3B,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACzB,CAAC;AAED,MAAM,OAAO,UAAU;IACZ,OAAO,CAAQ;IACf,QAAQ,CAAe;IACvB,MAAM,CAAyB;IAC/B,UAAU,CAAQ;IAE3B,YAAY,OAA4C;QACtD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAClD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,MAAM,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/core/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// the API does not slip in unclassified.
|
|
10
10
|
//
|
|
11
11
|
// Operations: 171 · admin: 40 · both: 1 · member: 127 · service: 3
|
|
12
|
-
// Spec sha256:
|
|
12
|
+
// Spec sha256: 30be5f9b9733d1d1d67eebf21e0bfaa457651e951676211ec9fa464cca5d3795
|
|
13
13
|
export const OPERATIONS = {
|
|
14
14
|
"DELETE /api/v1/me/push-tokens/{token}": {
|
|
15
15
|
"method": "delete",
|