@calimero-network/mero-js 29.1.0 → 29.3.0
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/README.md +1 -1
- package/dist/cloud-v2/client.d.ts +46 -3
- package/dist/cloud-v2/client.js +21 -3
- package/dist/cloud-v2/errors.d.ts +20 -0
- package/dist/cloud-v2/errors.js +36 -0
- package/dist/cloud-v2/index.d.ts +3 -3
- package/dist/cloud-v2/index.js +1 -1
- package/dist/index.browser.mjs +3 -3
- package/dist/index.browser.mjs.map +3 -3
- package/dist/index.cjs +38 -2
- package/dist/index.cjs.map +2 -2
- package/dist/index.mjs +38 -2
- package/dist/index.mjs.map +2 -2
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -64,6 +64,7 @@ __export(index_exports, {
|
|
|
64
64
|
SEALED_CONTENT_TYPE: () => SEALED_CONTENT_TYPE,
|
|
65
65
|
SEALED_PATH: () => SEALED_PATH,
|
|
66
66
|
SealedTransportError: () => SealedTransportError,
|
|
67
|
+
SignUpRefused: () => SignUpRefused,
|
|
67
68
|
StaleTransportKeyError: () => StaleTransportKeyError,
|
|
68
69
|
TrapError: () => TrapError,
|
|
69
70
|
UnavailableError: () => UnavailableError,
|
|
@@ -1536,6 +1537,21 @@ var OriginTaken = class extends CalimeroError {
|
|
|
1536
1537
|
this.name = "OriginTaken";
|
|
1537
1538
|
}
|
|
1538
1539
|
};
|
|
1540
|
+
var SignUpRefused = class extends CalimeroError {
|
|
1541
|
+
constructor(message, details = {}) {
|
|
1542
|
+
super(403, "SIGN_UP_REFUSED", message, details);
|
|
1543
|
+
this.name = "SignUpRefused";
|
|
1544
|
+
this.reason = signUpRefusal(message);
|
|
1545
|
+
}
|
|
1546
|
+
};
|
|
1547
|
+
function signUpRefusal(message) {
|
|
1548
|
+
if (/invite only/.test(message)) return "invite-only";
|
|
1549
|
+
if (/pre-authorized|sign-up invite/.test(message)) return "closed";
|
|
1550
|
+
if (/unknown invite/.test(message)) return "unknown-invite";
|
|
1551
|
+
if (/invite has expired/.test(message)) return "expired-invite";
|
|
1552
|
+
if (/organization is gone/.test(message)) return "org-gone";
|
|
1553
|
+
return "other";
|
|
1554
|
+
}
|
|
1539
1555
|
var QuotaExceeded = class extends CalimeroError {
|
|
1540
1556
|
constructor(message, details = {}) {
|
|
1541
1557
|
super(429, "QUOTA_EXCEEDED", message, details);
|
|
@@ -1610,6 +1626,8 @@ function errorFrom(status, body, retryAfterHeader) {
|
|
|
1610
1626
|
return new OriginTaken(message, details);
|
|
1611
1627
|
case "429 QUOTA_EXCEEDED":
|
|
1612
1628
|
return new QuotaExceeded(message, details);
|
|
1629
|
+
case "403 SIGN_UP_REFUSED":
|
|
1630
|
+
return new SignUpRefused(message, details);
|
|
1613
1631
|
case "412 CONFIRM_REQUIRED":
|
|
1614
1632
|
return new ConfirmRequired(message, details);
|
|
1615
1633
|
case "413 ARGS_TOO_LARGE":
|
|
@@ -2178,23 +2196,33 @@ var CalimeroClient = class _CalimeroClient {
|
|
|
2178
2196
|
* origin's relying party (the confirmation's `rpId` is that origin's too)
|
|
2179
2197
|
* and binds the session to the package the origin is registered for; an
|
|
2180
2198
|
* unregistered origin is refused with {@link OriginNotRegistered}.
|
|
2199
|
+
*
|
|
2200
|
+
* `invite` ({@link SignUpOptions}) goes on both halves and on the retry,
|
|
2201
|
+
* as the node judges it on each before it spends anything; a sign-up the
|
|
2202
|
+
* cluster's policy refuses, or an unknown, expired or used invite, is
|
|
2203
|
+
* {@link SignUpRefused} (from `begin`, before any passkey is made).
|
|
2181
2204
|
*/
|
|
2182
2205
|
async signUp(passkey, name, options = {}) {
|
|
2183
2206
|
const origin = this.pageOrigin(options);
|
|
2207
|
+
const invite = options.invite ? { invite: options.invite } : {};
|
|
2184
2208
|
const begin = await this.begin(
|
|
2185
2209
|
"auth/passkey/register/begin",
|
|
2186
|
-
origin === void 0 ? { name } : { name, origin },
|
|
2210
|
+
origin === void 0 ? { name, ...invite } : { name, origin, ...invite },
|
|
2187
2211
|
origin
|
|
2188
2212
|
);
|
|
2189
2213
|
const registration = await passkey.create(begin.options);
|
|
2190
2214
|
const session = await this.postConfirmed(
|
|
2191
2215
|
"auth/passkey/register/finish",
|
|
2192
|
-
{ challengeId: begin.challengeId, registration },
|
|
2216
|
+
{ challengeId: begin.challengeId, registration, ...invite },
|
|
2193
2217
|
passkey
|
|
2194
2218
|
);
|
|
2195
2219
|
this.useSession(session);
|
|
2196
2220
|
return session;
|
|
2197
2221
|
}
|
|
2222
|
+
/** Who may create an account on the cluster (`GET /sign-up`); needs no session. */
|
|
2223
|
+
signUpPolicy() {
|
|
2224
|
+
return this.get("sign-up");
|
|
2225
|
+
}
|
|
2198
2226
|
/**
|
|
2199
2227
|
* Sign in with an existing passkey. On a page whose origin is not the
|
|
2200
2228
|
* cluster's ({@link SignInOptions}), the assertion is made for that
|
|
@@ -2341,6 +2369,12 @@ var CalimeroClient = class _CalimeroClient {
|
|
|
2341
2369
|
* Create an API key for an agent or server, approved with the account's
|
|
2342
2370
|
* `passkey` (`412 CONFIRM_REQUIRED`); needs a passkey session (an API key
|
|
2343
2371
|
* is refused `403`). The key is returned once.
|
|
2372
|
+
*
|
|
2373
|
+
* `upgrades: { app, package? }` makes an upgrade key, for CI: it upgrades
|
|
2374
|
+
* that one app to signed releases of its package (default: the one the app
|
|
2375
|
+
* runs, by that package's pinned signer) with {@link upgradeApp} and no
|
|
2376
|
+
* passkey, and every other request with it is refused
|
|
2377
|
+
* `403 UPGRADE_KEY_ONLY`. It takes no other scope field.
|
|
2344
2378
|
*/
|
|
2345
2379
|
createApiKey(options, passkey) {
|
|
2346
2380
|
return this.postConfirmed("auth/apikeys", { ...options }, passkey);
|
|
@@ -2480,6 +2514,8 @@ var CalimeroClient = class _CalimeroClient {
|
|
|
2480
2514
|
* `passkey` gives. Refused (`403`) to a session opened on an app's
|
|
2481
2515
|
* frontend: an app asks its user with {@link requestConsent} instead. Past
|
|
2482
2516
|
* a release deadline its approver has not met: {@link ReleaseDeadlineError}.
|
|
2517
|
+
* With an upgrade key ({@link createApiKey} `upgrades`) pass no passkey and
|
|
2518
|
+
* a `version` of the key's package: the key's own proof stands in for it.
|
|
2483
2519
|
*/
|
|
2484
2520
|
upgradeApp(app, target, passkey) {
|
|
2485
2521
|
const path = `apps/${seg(app)}/upgrade`;
|