@v3finance/core-sdk 0.2.0 → 0.2.1
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 +44 -0
- package/README.md +5 -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 +17 -7
- 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/transfers.d.ts +18 -2
- package/dist/cjs/resources/transfers.d.ts.map +1 -1
- package/dist/cjs/resources/transfers.js +18 -2
- 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 +17 -7
- 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/transfers.d.ts +18 -2
- package/dist/esm/resources/transfers.d.ts.map +1 -1
- package/dist/esm/resources/transfers.js +18 -2
- 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 +6 -4
- package/docs/errors.md +25 -5
- 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 +18 -7
- package/src/resources/addresses.ts +4 -3
- package/src/resources/transfers.ts +18 -2
- package/src/resources/types.ts +0 -4
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,50 @@
|
|
|
3
3
|
All notable changes to this package are documented in this file. The format is based on
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com), and this project adheres to [Semantic Versioning](https://semver.org).
|
|
5
5
|
|
|
6
|
+
## 0.2.1 — 2026-11-12
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
Spec snapshot refreshed from the live API (commit `07ac55d`). No operation was added or removed.
|
|
11
|
+
|
|
12
|
+
- `addresses.create()` with a `groupId` answers 201 with `warnings` when the address was created
|
|
13
|
+
but could not be put into the folder — the folder was deleted, the right to it was lost after
|
|
14
|
+
the check, or the write failed. The codes are in the new `FolderSkipWarning`:
|
|
15
|
+
`FOLDER_NOT_FOUND`, `FOLDER_FORBIDDEN`, `FOLDER_WRITE_FAILED`.
|
|
16
|
+
- `approvals.vote()` — `applyWarnings` on `RequestVoteResult`, the same warning for a vote that
|
|
17
|
+
applied an approved `create_address`. The API now keeps the folder chosen when the request was
|
|
18
|
+
filed (it used to drop it, and the address was created outside the folder without a word) and
|
|
19
|
+
checks the right to it when the request is applied. The request's history gets a
|
|
20
|
+
`folder_skipped` event; `ApprovalRequestEvent.type` is a `string`, so that is not a type change.
|
|
21
|
+
- `docs/errors.md`: the codes above, which are warnings and not errors, and the codes of the
|
|
22
|
+
web-login refusals in front of the auth library — `ADMIN_CANNOT_APPROVE_WEB_LOGIN`,
|
|
23
|
+
`WEB_SESSION_CANNOT_APPROVE`, `WEB_SESSION_CANNOT_MANAGE_SESSIONS` — plus the library's
|
|
24
|
+
`FAILED_TO_GET_SESSION`, which the API refers to. The note that the API does no rate limiting of
|
|
25
|
+
its own is corrected: requesting a web-login code is limited, with a 429 `RATE_LIMITED`.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- **The client did not work in a browser at all.** Every request failed with a `network` error
|
|
30
|
+
before it was sent. The transport stored `fetch` in a private field and called it as a method,
|
|
31
|
+
which passes the client as the receiver; a browser's `fetch` rejects any receiver but the window
|
|
32
|
+
(`TypeError: Illegal invocation`). Node and React Native do not check, so nothing caught it until
|
|
33
|
+
the first web page used the package. `fetch` is now called with no receiver, and when no custom
|
|
34
|
+
one is given the global is looked up per call — so instrumentation or a mock server that
|
|
35
|
+
replaces `globalThis.fetch` after the client is built is honoured too. No workaround is needed
|
|
36
|
+
any more; if you passed `fetch: (input, init) => fetch(input, init)` to get around this, it can
|
|
37
|
+
go.
|
|
38
|
+
- `addresses.update()` answered without `owner`, `access` and `sharing`, although its type is the
|
|
39
|
+
listing row and declares the first two as required. That was the API's handler, and it is fixed
|
|
40
|
+
there: the answer is now the same row `addresses.list()` returns, so it can replace the address
|
|
41
|
+
in a list. `sharing` is accordingly required on `Address` (`AddressListItem`) and on
|
|
42
|
+
`AddressDetail`. Reading code is unaffected; a fixture or mock that builds one of these without
|
|
43
|
+
`sharing` stops compiling.
|
|
44
|
+
- `transfers.send()` — the documentation said `outcome: 'replayed'` means "already sent". It does
|
|
45
|
+
not: it means a transfer with this `idempotencyKey` already existed, and `data` is that transfer
|
|
46
|
+
as it stands now — confirmed, waiting for signatures, still executing or failed. Read
|
|
47
|
+
`data.transaction.status`. Corrected in the TSDoc of `transfers.send` and `Gated`, in the README,
|
|
48
|
+
`docs/concepts.md` and `docs/errors.md`. No code changed.
|
|
49
|
+
|
|
6
50
|
## 0.2.0 — 2026-11-11
|
|
7
51
|
|
|
8
52
|
The API corrected its own document between 0.1.0 and this release:
|
package/README.md
CHANGED
|
@@ -120,11 +120,14 @@ const result = await core.vault(code).transfers.send({
|
|
|
120
120
|
switch (result.outcome) {
|
|
121
121
|
case 'applied': return toast('Transfer sent')
|
|
122
122
|
case 'pending': return toast('Awaiting signatures — the funds are reserved')
|
|
123
|
-
case 'replayed': return toast(
|
|
123
|
+
case 'replayed': return toast(describeStatus(result.data.transaction.status))
|
|
124
124
|
}
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
-
Reporting "sent" on `pending` tells a person their money has gone when it is frozen.
|
|
127
|
+
Reporting "sent" on `pending` tells a person their money has gone when it is frozen. `replayed` is
|
|
128
|
+
not "sent" either: it means a transfer with this key already existed, and its `status` says whether
|
|
129
|
+
it went out (`confirmed` or `submitted`), is waiting for signatures (`awaiting_approval`), is still
|
|
130
|
+
executing (`pending`) or did not go out (`failed`, `rejected`, `cancelled`).
|
|
128
131
|
|
|
129
132
|
**Always pass `idempotencyKey`** on a transfer and keep it until you have an answer: after a
|
|
130
133
|
timeout it is the only way to retry without sending money twice. The key is read from the request
|
package/dist/cjs/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/cjs/core/gated.js
CHANGED
|
@@ -16,8 +16,10 @@
|
|
|
16
16
|
* frozen.
|
|
17
17
|
*
|
|
18
18
|
* `replayed` is kept separate from `applied` on purpose. A replay means the
|
|
19
|
-
* previous attempt DID reach the server and only the answer was lost
|
|
20
|
-
*
|
|
19
|
+
* previous attempt DID reach the server and only the answer was lost — not
|
|
20
|
+
* that it succeeded. The body is that operation as it stands now: a replayed
|
|
21
|
+
* transfer may have gone out, be waiting for signatures, be still executing
|
|
22
|
+
* or have failed, and only its own status says which.
|
|
21
23
|
*/
|
|
22
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
25
|
exports.toGated = toGated;
|
|
@@ -55,7 +57,11 @@ function toGated(status, data, options = {}) {
|
|
|
55
57
|
'Expected 200, 201 (applied) or 202 (awaiting approval).');
|
|
56
58
|
}
|
|
57
59
|
}
|
|
58
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Narrowing: `applied` or `replayed`. For `applied` the operation ran now.
|
|
62
|
+
* For `replayed` it only existed already — whether money moved is in the
|
|
63
|
+
* body's own status, not in this check.
|
|
64
|
+
*/
|
|
59
65
|
function isApplied(r) {
|
|
60
66
|
return r.outcome === 'applied' || r.outcome === 'replayed';
|
|
61
67
|
}
|
|
@@ -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,iBACE,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,mBACE,CAAc;IAEd,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,UAAU,CAAA;AAC5D,CAAC;AAED,yEAAyE;AACzE,mBACE,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/cjs/core/http.js
CHANGED
|
@@ -68,11 +68,25 @@ class HttpClient {
|
|
|
68
68
|
constructor(options) {
|
|
69
69
|
this.baseUrl = options.baseUrl.replace(/\/+$/, '');
|
|
70
70
|
this.#options = options;
|
|
71
|
-
const
|
|
72
|
-
if (typeof
|
|
71
|
+
const custom = options.fetch;
|
|
72
|
+
if (typeof (custom ?? globalThis.fetch) !== 'function') {
|
|
73
73
|
throw new Error('@v3finance/core-sdk: fetch is unavailable in this runtime — pass one to the client options.');
|
|
74
74
|
}
|
|
75
|
-
this.#fetch
|
|
75
|
+
// NEVER store the function and call it as `this.#fetch(…)`. A private
|
|
76
|
+
// field call passes the client as the receiver, and a browser's `fetch`
|
|
77
|
+
// checks its receiver: anything but the window is
|
|
78
|
+
// `TypeError: Illegal invocation`, thrown before a single byte leaves.
|
|
79
|
+
// Node and React Native do not check, which is how every request from a
|
|
80
|
+
// web page failed while the whole test suite passed — and since a
|
|
81
|
+
// `TypeError` out of `fetch` is what a dropped connection looks like, the
|
|
82
|
+
// failure surfaced as a "network error" on a perfectly good network.
|
|
83
|
+
//
|
|
84
|
+
// The wrapper calls with no receiver at all. Without a custom fetch the
|
|
85
|
+
// global one is looked up per call rather than captured here, so whatever
|
|
86
|
+
// patches it later (instrumentation, a mock server) is still honoured.
|
|
87
|
+
this.#fetch = custom
|
|
88
|
+
? (input, init) => custom(input, init)
|
|
89
|
+
: (input, init) => globalThis.fetch(input, init);
|
|
76
90
|
this.#timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
77
91
|
}
|
|
78
92
|
/** 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,2CAQoB;AACpB,8CAA2C;AAE3C;;;;;;;;;;;;;GAaG;AAEH,iDAAiD;AACjD,MAAM,oBAAoB,GAAG,gBAAgB,CAAA;AAE7C,2EAA2E;AAC3E,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAqFjC,sFAAsF;AAC/E,MAAM,GAAG,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;AAA1D,QAAA,GAAG,GAAH,GAAG,CAAuD;AAEvE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAA+B,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;IACW,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":";;;;AAAA,2CAQoB;AACpB,8CAA2C;AAE3C;;;;;;;;;;;;;GAaG;AAEH,iDAAiD;AACjD,MAAM,oBAAoB,GAAG,gBAAgB,CAAA;AAE7C,2EAA2E;AAC3E,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAqFjC,sFAAsF;AAC/E,MAAM,GAAG,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;AAA1D,QAAA,GAAG,GAAH,GAAG,CAAuD;AAEvE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAA+B,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;IACW,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,MAAM,GAAG,OAAO,CAAC,KAAK,CAAA;QAC5B,IAAI,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,UAAU,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAA;QACH,CAAC;QACD,sEAAsE;QACtE,wEAAwE;QACxE,kDAAkD;QAClD,uEAAuE;QACvE,wEAAwE;QACxE,kEAAkE;QAClE,0EAA0E;QAC1E,qEAAqE;QACrE,EAAE;QACF,wEAAwE;QACxE,0EAA0E;QAC1E,uEAAuE;QACvE,IAAI,CAAC,MAAM,GAAG,MAAM;YAClB,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;YACtC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAClD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAA;IAC3D,CAAC;IAED,yFAAyF;IACzF,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,OAAO,GAAmB,EAAE;QACzE,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAI,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,IAAY,EAAE,OAAO,GAAmB,EAAE;QACvE,uEAAuE;QACvE,yEAAyE;QACzE,yEAAyE;QACzE,uEAAuE;QACvE,kBAAkB;QAClB,EAAE;QACF,sEAAsE;QACtE,0EAA0E;QAC1E,uCAAuC;QACvC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CACxF,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC,CACxD,CAAA;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAA,0BAAc,EAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;YAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC5D,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,UAAU,CACd,MAAc,EACd,IAAY,EACZ,OAAO,GAAmB,EAAE;QAE5B,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAA;QAE7F,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAA,0BAAc,EAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;YAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAC5D,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAA;IACnF,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,KAAK,CACT,MAAc,EACd,IAAY,EACZ,OAAuB,EACvB,WAAuE;QAEvE,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAA;QAClD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAA;QACpE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAA;QAEtD,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,kBAAkB;YAC1B,YAAY,EAAE,uBAAuB,wBAAW,EAAE;YAClD,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO;YACxB,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3C,GAAG,OAAO,CAAC,OAAO;SACnB,CAAA;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAA;QAC5E,qEAAqE;QACrE,kEAAkE;QAClE,0EAA0E;QAC1E,2EAA2E;QAC3E,2EAA2E;QAC3E,2EAA2E;QAC3E,qEAAqE;QACrE,wDAAwD;QAExD,0EAA0E;QAC1E,2EAA2E;QAC3E,0EAA0E;QAC1E,2BAA2B;QAC3B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAA;YACf,UAAU,CAAC,KAAK,EAAE,CAAA;QACpB,CAAC,EAAE,SAAS,CAAC,CAAA;QACb,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QAChD,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAE1E,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAa,EAAE,CAC7C,cAAc,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QAElF,yEAAyE;QACzE,wEAAwE;QACxE,oDAAoD;QACpD,IAAI,CAAC;YACH,IAAI,QAAkB,CAAA;YACtB,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;oBAChC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;oBAC5B,OAAO;oBACP,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7E,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS;wBACzC,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;oBAC/C,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAA;YACvB,CAAC;YAED,wEAAwE;YACxE,oEAAoE;YACpE,yDAAyD;YACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;YAC1D,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc;gBAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YAExF,IAAI,OAAgB,CAAA;YACpB,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAA;YACvB,CAAC;YAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;QACxC,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;CACF;;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,cAAc,CACrB,KAAc,EACd,GAKC;IAED,IAAI,GAAG,CAAC,QAAQ;QAAE,OAAO,IAAA,wBAAY,EAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;IAClE,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO;QAAE,OAAO,IAAA,wBAAY,EAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC1D,IAAI,IAAA,uBAAW,EAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACpC,OAAO,IAAA,wBAAY,EAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;AAC1C,CAAC;AAED,mFAAmF;AACnF,MAAM,qBAAqB,GAAG,GAAG,CAAA;AAEjC;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,YAAY,CAAC,QAAkB,EAAE,QAAgB;IAC9D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAClC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAA;IAC3B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAA;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAA,sBAAU,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAClD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,6EAA6E;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAClD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IAC7D,OAAO;QACL,KAAK,EACH,SAAS,CAAC,MAAM,GAAG,qBAAqB;YACtC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,GAAG;YACjD,CAAC,CAAC,SAAS;KAChB,CAAA;AACH,CAAC"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// the API does not slip in unclassified.
|
|
11
11
|
//
|
|
12
12
|
// Operations: 171 · admin: 40 · both: 1 · member: 127 · service: 3
|
|
13
|
-
// Spec sha256:
|
|
13
|
+
// Spec sha256: 017bae30075b232ab4efdcfb7785335020be3060b46e3569b1cd887fcf037597
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.OPERATIONS = void 0;
|
|
16
16
|
exports.isAdminOperation = isAdminOperation;
|
|
@@ -229,8 +229,8 @@ export interface AddressDetail {
|
|
|
229
229
|
tokenId: string | null;
|
|
230
230
|
/** format: date-time */
|
|
231
231
|
createdAt: string;
|
|
232
|
-
/** Сводка совместного доступа. Приходит в
|
|
233
|
-
sharing
|
|
232
|
+
/** Сводка совместного доступа. Приходит всегда: в списке, ответе PATCH и детали адреса */
|
|
233
|
+
sharing: SharingSummary;
|
|
234
234
|
/** Код токена адреса (из segmentsJson + asset route) */
|
|
235
235
|
asset: string | null;
|
|
236
236
|
assetName: string | null;
|
|
@@ -461,8 +461,8 @@ export interface AddressListItem {
|
|
|
461
461
|
assetSymbol: string | null;
|
|
462
462
|
/** Баланс в decimal (по token.decimals). NULL — ledger-счёта ещё нет */
|
|
463
463
|
balanceDecimal: string | null;
|
|
464
|
-
/** Сводка совместного доступа. Приходит в
|
|
465
|
-
sharing
|
|
464
|
+
/** Сводка совместного доступа. Приходит всегда: в списке, ответе PATCH и детали адреса */
|
|
465
|
+
sharing: SharingSummary;
|
|
466
466
|
/** Владелец адреса (создатель) с UI-метаданными */
|
|
467
467
|
owner: MemberCard | null;
|
|
468
468
|
access: AddressAccess;
|
|
@@ -745,11 +745,11 @@ export interface ApprovalRequestDetail {
|
|
|
745
745
|
}
|
|
746
746
|
export interface ApprovalRequestEvent {
|
|
747
747
|
id: string;
|
|
748
|
-
/** created|voted|approved|rejected|cancelled|applied|apply_failed|stale */
|
|
748
|
+
/** created|voted|approved|rejected|cancelled|applied|apply_failed|stale|folder_skipped. folder_skipped идёт ПОСЛЕ applied: адрес по заявке create_address создан, но в папку, выбранную при подаче, не положен (папку удалили или у инициатора отозвали право) — причина в comment */
|
|
749
749
|
type: string;
|
|
750
750
|
actorId: string | null;
|
|
751
751
|
decision: string | null;
|
|
752
|
-
/**
|
|
752
|
+
/** У voted — пояснение ПОДПИСАНТА; у stale, apply_failed и folder_skipped — системное пояснение для человека. У события applied всегда null — id созданного объекта лежит в resultId, чтобы клиент не напечатал его как комментарий */
|
|
753
753
|
comment: string | null;
|
|
754
754
|
/** Только у applied: id созданного/изменённого объекта */
|
|
755
755
|
resultId: string | null;
|
|
@@ -1250,7 +1250,7 @@ export interface CreateAddressBody {
|
|
|
1250
1250
|
* length: 1..16
|
|
1251
1251
|
*/
|
|
1252
1252
|
emoji?: string;
|
|
1253
|
-
/** Создать адрес В группу адресов (нужно право create_address на группе). Новый адрес — member группы, доступен её
|
|
1253
|
+
/** Создать адрес В группу адресов (нужно право create_address на группе). Новый адрес — member группы, доступен её участникам. Если создание ушло на подпись (202), папка сохраняется в заявке, а право на неё перепроверяется при применении: отозвали — адрес создаётся без папки, с оговоркой applyWarnings в ответе голосования. При прямом создании (201) то же — оговорка `warnings` в теле ответа */
|
|
1254
1254
|
groupId?: string;
|
|
1255
1255
|
}
|
|
1256
1256
|
export interface CreateAddressGroupBody {
|
|
@@ -1274,6 +1274,14 @@ export interface CreateAddressResult {
|
|
|
1274
1274
|
label: string | null;
|
|
1275
1275
|
description: string | null;
|
|
1276
1276
|
};
|
|
1277
|
+
/** Создано, но не всё: адрес есть, а в папку из `groupId` не положен. Право на папку роут проверяет до создания (иначе 403), а запись членства — уже после Wallet Service и мониторинга; право могли отозвать в этом окне или запись могла не пройти. Есть только когда непусто; не показывать адрес в папке, если оговорка пришла */
|
|
1278
|
+
warnings?: FolderSkipWarning[];
|
|
1279
|
+
}
|
|
1280
|
+
export interface FolderSkipWarning {
|
|
1281
|
+
/** FOLDER_NOT_FOUND — папку удалили; FOLDER_FORBIDDEN — у создателя адреса больше нет права заводить в неё адреса; FOLDER_WRITE_FAILED — сбой записи */
|
|
1282
|
+
code: "FOLDER_NOT_FOUND" | "FOLDER_FORBIDDEN" | "FOLDER_WRITE_FAILED";
|
|
1283
|
+
/** Готовая фраза для человека */
|
|
1284
|
+
message: string;
|
|
1277
1285
|
}
|
|
1278
1286
|
export interface CreateCompositeBody {
|
|
1279
1287
|
/**
|
|
@@ -3019,6 +3027,8 @@ export interface RequestVoteResult {
|
|
|
3019
3027
|
resolvedResultId: string | null;
|
|
3020
3028
|
/** Только для композитных заявок: прогресс по шагам */
|
|
3021
3029
|
stepsProgress?: StepProgress[];
|
|
3030
|
+
/** Применено, но не всё: адрес по заявке create_address создан (resolvedResultId), а в папку, выбранную при подаче, не положен. Право на папку проверяется при ПРИМЕНЕНИИ, а не при подаче. Есть только когда непусто; в истории заявки — событие folder_skipped */
|
|
3031
|
+
applyWarnings?: FolderSkipWarning[];
|
|
3022
3032
|
}
|
|
3023
3033
|
export interface StepProgress {
|
|
3024
3034
|
/** range: -9007199254740991..9007199254740991 */
|