@stackframe/stack-shared 2.8.11 → 2.8.16
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 +26 -0
- package/dist/config/format.js +2 -2
- package/dist/config/{schema.d.cts → schema.d.mts} +3 -3
- package/dist/config/schema.js +4 -4
- package/dist/config/schema.js.map +1 -1
- package/dist/{crud.d.cts → crud.d.mts} +1 -1
- package/dist/crud.js +2 -2
- package/dist/esm/config/format.js +2 -2
- package/dist/esm/config/schema.js +4 -4
- package/dist/esm/config/schema.js.map +1 -1
- package/dist/esm/crud.js +2 -2
- package/dist/esm/helpers/password.js +1 -1
- package/dist/esm/helpers/production-mode.js +2 -2
- package/dist/esm/hooks/use-async-callback.js +1 -1
- package/dist/esm/hooks/use-async-external-store.js +1 -1
- package/dist/esm/hooks/use-hash.js +1 -1
- package/dist/esm/hooks/use-strict-memo.js +1 -1
- package/dist/esm/index.js +4 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interface/{adminInterface.js → admin-interface.js} +3 -3
- package/dist/esm/interface/admin-interface.js.map +1 -0
- package/dist/esm/interface/{clientInterface.js → client-interface.js} +58 -862
- package/dist/esm/interface/client-interface.js.map +1 -0
- package/dist/esm/interface/crud/contact-channels.js +2 -2
- package/dist/esm/interface/crud/current-user.js +4 -4
- package/dist/esm/interface/crud/email-templates.js +2 -2
- package/dist/esm/interface/crud/emails.js +3 -3
- package/dist/esm/interface/crud/internal-api-keys.js +2 -2
- package/dist/esm/interface/crud/oauth.js +2 -2
- package/dist/esm/interface/crud/project-api-keys.js +23 -18
- package/dist/esm/interface/crud/project-api-keys.js.map +1 -1
- package/dist/esm/interface/crud/project-permissions.js +3 -3
- package/dist/esm/interface/crud/projects.js +6 -5
- package/dist/esm/interface/crud/projects.js.map +1 -1
- package/dist/esm/interface/crud/sessions.js +3 -3
- package/dist/esm/interface/crud/svix-token.js +2 -2
- package/dist/esm/interface/crud/team-invitation-details.js +3 -3
- package/dist/esm/interface/crud/team-invitation.js +3 -3
- package/dist/esm/interface/crud/team-member-profiles.js +4 -4
- package/dist/esm/interface/crud/team-memberships.js +2 -2
- package/dist/esm/interface/crud/team-permissions.js +3 -3
- package/dist/esm/interface/crud/teams.js +3 -3
- package/dist/esm/interface/crud/users.js +3 -3
- package/dist/esm/interface/{serverInterface.js → server-interface.js} +36 -10
- package/dist/esm/interface/server-interface.js.map +1 -0
- package/dist/esm/interface/webhooks.js +4 -4
- package/dist/esm/known-errors.js +31 -4
- package/dist/esm/known-errors.js.map +1 -1
- package/dist/esm/schema-fields.js +13 -11
- package/dist/esm/schema-fields.js.map +1 -1
- package/dist/esm/sessions.js +2 -2
- package/dist/esm/utils/api-keys.js +3 -3
- package/dist/esm/utils/arrays.js +1 -1
- package/dist/esm/utils/bytes.js +4 -27
- package/dist/esm/utils/bytes.js.map +1 -1
- package/dist/esm/utils/caches.js +4 -4
- package/dist/esm/utils/crypto.js +3 -3
- package/dist/esm/utils/dates.js +1 -1
- package/dist/esm/utils/env.js +2 -2
- package/dist/esm/utils/errors.js +7 -3
- package/dist/esm/utils/errors.js.map +1 -1
- package/dist/esm/utils/geo.js +1 -1
- package/dist/esm/utils/hashes.js +2 -2
- package/dist/esm/utils/hashes.js.map +1 -1
- package/dist/esm/utils/html.js +1 -1
- package/dist/esm/utils/http.js +1 -1
- package/dist/esm/utils/json.js +1 -1
- package/dist/esm/utils/jwt.js +4 -4
- package/dist/esm/utils/maps.js +1 -1
- package/dist/esm/utils/node-http.js +1 -1
- package/dist/esm/utils/objects.js +3 -3
- package/dist/esm/utils/promises.js +6 -6
- package/dist/esm/utils/promises.js.map +1 -1
- package/dist/esm/utils/proxies.js +1 -1
- package/dist/esm/utils/react.js +3 -3
- package/dist/esm/utils/results.js +2 -2
- package/dist/esm/utils/stores.js +4 -4
- package/dist/esm/utils/strings.js +6 -3
- package/dist/esm/utils/strings.js.map +1 -1
- package/dist/esm/utils/strings.nicify.test.js +1 -1
- package/dist/esm/utils/unicode.js +1 -1
- package/dist/esm/utils/urls.js +2 -2
- package/dist/esm/utils/uuids.js +1 -1
- package/dist/helpers/password.d.mts +11 -0
- package/dist/helpers/password.js +1 -1
- package/dist/helpers/{production-mode.d.cts → production-mode.d.mts} +3 -3
- package/dist/helpers/production-mode.js +2 -2
- package/dist/hooks/use-async-callback.js +2 -2
- package/dist/hooks/{use-async-external-store.d.cts → use-async-external-store.d.mts} +1 -1
- package/dist/hooks/use-async-external-store.js +1 -1
- package/dist/hooks/use-hash.js +1 -1
- package/dist/hooks/use-strict-memo.js +1 -1
- package/dist/index.d.mts +30 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/interface/{adminInterface.d.cts → admin-interface.d.mts} +26 -26
- package/dist/interface/{adminInterface.d.ts → admin-interface.d.ts} +2 -2
- package/dist/interface/{adminInterface.js → admin-interface.js} +7 -7
- package/dist/interface/admin-interface.js.map +1 -0
- package/dist/interface/{clientInterface.d.cts → client-interface.d.mts} +23 -18
- package/dist/interface/{clientInterface.d.ts → client-interface.d.ts} +5 -0
- package/dist/interface/{clientInterface.js → client-interface.js} +71 -867
- package/dist/interface/client-interface.js.map +1 -0
- package/dist/interface/crud/{contact-channels.d.cts → contact-channels.d.mts} +2 -2
- package/dist/interface/crud/contact-channels.js +2 -2
- package/dist/interface/crud/{current-user.d.cts → current-user.d.mts} +2 -2
- package/dist/interface/crud/current-user.js +4 -4
- package/dist/interface/crud/{email-templates.d.cts → email-templates.d.mts} +2 -2
- package/dist/interface/crud/email-templates.js +2 -2
- package/dist/interface/crud/{emails.d.cts → emails.d.mts} +2 -2
- package/dist/interface/crud/emails.js +3 -3
- package/dist/interface/crud/{internal-api-keys.d.cts → internal-api-keys.d.mts} +2 -2
- package/dist/interface/crud/internal-api-keys.js +2 -2
- package/dist/interface/crud/{oauth.d.cts → oauth.d.mts} +2 -2
- package/dist/interface/crud/oauth.js +2 -2
- package/dist/interface/crud/{project-api-keys.d.cts → project-api-keys.d.mts} +14 -4
- package/dist/interface/crud/project-api-keys.d.ts +12 -2
- package/dist/interface/crud/project-api-keys.js +23 -18
- package/dist/interface/crud/project-api-keys.js.map +1 -1
- package/dist/interface/crud/{project-permissions.d.cts → project-permissions.d.mts} +2 -2
- package/dist/interface/crud/project-permissions.js +3 -3
- package/dist/interface/crud/{projects.d.cts → projects.d.mts} +9 -9
- package/dist/interface/crud/projects.d.ts +7 -7
- package/dist/interface/crud/projects.js +6 -5
- package/dist/interface/crud/projects.js.map +1 -1
- package/dist/interface/crud/{sessions.d.cts → sessions.d.mts} +2 -2
- package/dist/interface/crud/sessions.js +3 -3
- package/dist/interface/crud/{svix-token.d.cts → svix-token.d.mts} +2 -2
- package/dist/interface/crud/svix-token.js +2 -2
- package/dist/interface/crud/{team-invitation-details.d.cts → team-invitation-details.d.mts} +2 -2
- package/dist/interface/crud/team-invitation-details.js +3 -3
- package/dist/interface/crud/{team-invitation.d.cts → team-invitation.d.mts} +2 -2
- package/dist/interface/crud/team-invitation.js +3 -3
- package/dist/interface/crud/{team-member-profiles.d.cts → team-member-profiles.d.mts} +2 -2
- package/dist/interface/crud/team-member-profiles.js +4 -4
- package/dist/interface/crud/{team-memberships.d.cts → team-memberships.d.mts} +2 -2
- package/dist/interface/crud/team-memberships.js +2 -2
- package/dist/interface/crud/{team-permissions.d.cts → team-permissions.d.mts} +2 -2
- package/dist/interface/crud/team-permissions.js +3 -3
- package/dist/interface/crud/{teams.d.cts → teams.d.mts} +2 -2
- package/dist/interface/crud/teams.js +3 -3
- package/dist/interface/crud/{users.d.cts → users.d.mts} +2 -2
- package/dist/interface/crud/users.js +3 -3
- package/dist/interface/{serverInterface.d.cts → server-interface.d.mts} +23 -21
- package/dist/interface/{serverInterface.d.ts → server-interface.d.ts} +3 -1
- package/dist/interface/{serverInterface.js → server-interface.js} +40 -14
- package/dist/interface/server-interface.js.map +1 -0
- package/dist/interface/webhooks.js +4 -4
- package/dist/{known-errors.d.cts → known-errors.d.mts} +11 -3
- package/dist/known-errors.d.ts +8 -0
- package/dist/known-errors.js +31 -4
- package/dist/known-errors.js.map +1 -1
- package/dist/{schema-fields.d.cts → schema-fields.d.mts} +2 -1
- package/dist/schema-fields.d.ts +2 -1
- package/dist/schema-fields.js +15 -12
- package/dist/schema-fields.js.map +1 -1
- package/dist/sessions.js +3 -3
- package/dist/utils/api-keys.js +4 -4
- package/dist/utils/arrays.js +1 -1
- package/dist/utils/bytes.js +4 -27
- package/dist/utils/bytes.js.map +1 -1
- package/dist/utils/{caches.d.cts → caches.d.mts} +2 -2
- package/dist/utils/caches.js +4 -4
- package/dist/utils/crypto.js +3 -3
- package/dist/utils/dates.js +1 -1
- package/dist/utils/env.js +2 -2
- package/dist/utils/{errors.d.cts → errors.d.mts} +4 -2
- package/dist/utils/errors.d.ts +2 -0
- package/dist/utils/errors.js +7 -3
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/fs.js +2 -2
- package/dist/utils/geo.js +1 -1
- package/dist/utils/hashes.js +7 -7
- package/dist/utils/hashes.js.map +1 -1
- package/dist/utils/html.js +1 -1
- package/dist/utils/http.js +1 -1
- package/dist/utils/ips.js +1 -1
- package/dist/utils/{json.d.cts → json.d.mts} +1 -1
- package/dist/utils/json.js +1 -1
- package/dist/utils/jwt.js +7 -7
- package/dist/utils/maps.js +1 -1
- package/dist/utils/node-http.js +1 -1
- package/dist/utils/objects.js +3 -3
- package/dist/utils/{promises.d.cts → promises.d.mts} +1 -1
- package/dist/utils/promises.js +6 -6
- package/dist/utils/promises.js.map +1 -1
- package/dist/utils/proxies.js +1 -1
- package/dist/utils/react.js +4 -4
- package/dist/utils/results.js +2 -2
- package/dist/utils/{stores.d.cts → stores.d.mts} +3 -3
- package/dist/utils/stores.js +4 -4
- package/dist/utils/strings.js +6 -3
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/strings.nicify.test.js +1 -1
- package/dist/utils/unicode.js +1 -1
- package/dist/utils/urls.js +2 -2
- package/dist/utils/uuids.js +1 -1
- package/package.json +9 -6
- package/dist/esm/interface/adminInterface.js.map +0 -1
- package/dist/esm/interface/clientInterface.js.map +0 -1
- package/dist/esm/interface/serverInterface.js.map +0 -1
- package/dist/helpers/password.d.cts +0 -11
- package/dist/index.d.cts +0 -30
- package/dist/interface/adminInterface.js.map +0 -1
- package/dist/interface/clientInterface.js.map +0 -1
- package/dist/interface/serverInterface.js.map +0 -1
- /package/dist/config/{format.d.cts → format.d.mts} +0 -0
- /package/dist/{global.d.d.cts → global.d.d.mts} +0 -0
- /package/dist/hooks/{use-async-callback.d.cts → use-async-callback.d.mts} +0 -0
- /package/dist/hooks/{use-hash.d.cts → use-hash.d.mts} +0 -0
- /package/dist/hooks/{use-strict-memo.d.cts → use-strict-memo.d.mts} +0 -0
- /package/dist/interface/{webhooks.d.cts → webhooks.d.mts} +0 -0
- /package/dist/{sessions.d.cts → sessions.d.mts} +0 -0
- /package/dist/utils/{api-keys.d.cts → api-keys.d.mts} +0 -0
- /package/dist/utils/{arrays.d.cts → arrays.d.mts} +0 -0
- /package/dist/utils/{base64.d.cts → base64.d.mts} +0 -0
- /package/dist/utils/{booleans.d.cts → booleans.d.mts} +0 -0
- /package/dist/utils/{browser-compat.d.cts → browser-compat.d.mts} +0 -0
- /package/dist/utils/{bytes.d.cts → bytes.d.mts} +0 -0
- /package/dist/utils/{compile-time.d.cts → compile-time.d.mts} +0 -0
- /package/dist/utils/{crypto.d.cts → crypto.d.mts} +0 -0
- /package/dist/utils/{dates.d.cts → dates.d.mts} +0 -0
- /package/dist/utils/{dom.d.cts → dom.d.mts} +0 -0
- /package/dist/utils/{env.d.cts → env.d.mts} +0 -0
- /package/dist/utils/{fs.d.cts → fs.d.mts} +0 -0
- /package/dist/utils/{functions.d.cts → functions.d.mts} +0 -0
- /package/dist/utils/{geo.d.cts → geo.d.mts} +0 -0
- /package/dist/utils/{globals.d.cts → globals.d.mts} +0 -0
- /package/dist/utils/{hashes.d.cts → hashes.d.mts} +0 -0
- /package/dist/utils/{html.d.cts → html.d.mts} +0 -0
- /package/dist/utils/{http.d.cts → http.d.mts} +0 -0
- /package/dist/utils/{ips.d.cts → ips.d.mts} +0 -0
- /package/dist/utils/{jwt.d.cts → jwt.d.mts} +0 -0
- /package/dist/utils/{locks.d.cts → locks.d.mts} +0 -0
- /package/dist/utils/{maps.d.cts → maps.d.mts} +0 -0
- /package/dist/utils/{math.d.cts → math.d.mts} +0 -0
- /package/dist/utils/{node-http.d.cts → node-http.d.mts} +0 -0
- /package/dist/utils/{numbers.d.cts → numbers.d.mts} +0 -0
- /package/dist/utils/{oauth.d.cts → oauth.d.mts} +0 -0
- /package/dist/utils/{objects.d.cts → objects.d.mts} +0 -0
- /package/dist/utils/{passkey.d.cts → passkey.d.mts} +0 -0
- /package/dist/utils/{proxies.d.cts → proxies.d.mts} +0 -0
- /package/dist/utils/{react.d.cts → react.d.mts} +0 -0
- /package/dist/utils/{results.d.cts → results.d.mts} +0 -0
- /package/dist/utils/{sentry.d.cts → sentry.d.mts} +0 -0
- /package/dist/utils/{strings.d.cts → strings.d.mts} +0 -0
- /package/dist/utils/{strings.nicify.test.d.cts → strings.nicify.test.d.mts} +0 -0
- /package/dist/utils/{types.d.cts → types.d.mts} +0 -0
- /package/dist/utils/{unicode.d.cts → unicode.d.mts} +0 -0
- /package/dist/utils/{urls.d.cts → urls.d.mts} +0 -0
- /package/dist/utils/{uuids.d.cts → uuids.d.mts} +0 -0
|
@@ -17,19 +17,19 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
|
|
20
|
-
// src/interface/
|
|
21
|
-
var
|
|
22
|
-
__export(
|
|
20
|
+
// src/interface/server-interface.ts
|
|
21
|
+
var server_interface_exports = {};
|
|
22
|
+
__export(server_interface_exports, {
|
|
23
23
|
StackServerInterface: () => StackServerInterface
|
|
24
24
|
});
|
|
25
|
-
module.exports = __toCommonJS(
|
|
26
|
-
var import_known_errors = require("../known-errors");
|
|
27
|
-
var import_errors = require("../utils/errors");
|
|
28
|
-
var import_objects = require("../utils/objects");
|
|
29
|
-
var import_results = require("../utils/results");
|
|
30
|
-
var import_urls = require("../utils/urls");
|
|
31
|
-
var
|
|
32
|
-
var StackServerInterface = class extends
|
|
25
|
+
module.exports = __toCommonJS(server_interface_exports);
|
|
26
|
+
var import_known_errors = require("../known-errors.js");
|
|
27
|
+
var import_errors = require("../utils/errors.js");
|
|
28
|
+
var import_objects = require("../utils/objects.js");
|
|
29
|
+
var import_results = require("../utils/results.js");
|
|
30
|
+
var import_urls = require("../utils/urls.js");
|
|
31
|
+
var import_client_interface = require("./client-interface.js");
|
|
32
|
+
var StackServerInterface = class extends import_client_interface.StackClientInterface {
|
|
33
33
|
constructor(options) {
|
|
34
34
|
super(options);
|
|
35
35
|
this.options = options;
|
|
@@ -53,7 +53,7 @@ var StackServerInterface = class extends import_clientInterface.StackClientInter
|
|
|
53
53
|
return import_results.Result.ok(await this.sendServerRequest(path, requestOptions, tokenStoreOrNull));
|
|
54
54
|
} catch (e) {
|
|
55
55
|
for (const errorType of errorsToCatch) {
|
|
56
|
-
if (e
|
|
56
|
+
if (errorType.isInstance(e)) {
|
|
57
57
|
return import_results.Result.error(e);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -82,7 +82,7 @@ var StackServerInterface = class extends import_clientInterface.StackClientInter
|
|
|
82
82
|
[import_known_errors.KnownErrors.CannotGetOwnUserWithoutUser]
|
|
83
83
|
);
|
|
84
84
|
if (responseOrError.status === "error") {
|
|
85
|
-
if (
|
|
85
|
+
if (import_known_errors.KnownErrors.CannotGetOwnUserWithoutUser.isInstance(responseOrError.error)) {
|
|
86
86
|
return null;
|
|
87
87
|
} else {
|
|
88
88
|
throw new import_errors.StackAssertionError("Unexpected uncaught error", { cause: responseOrError.error });
|
|
@@ -357,6 +357,19 @@ var StackServerInterface = class extends import_clientInterface.StackClientInter
|
|
|
357
357
|
null
|
|
358
358
|
);
|
|
359
359
|
}
|
|
360
|
+
async grantServerProjectPermission(userId, permissionId) {
|
|
361
|
+
await this.sendServerRequest(
|
|
362
|
+
import_urls.urlString`/project-permissions/${userId}/${permissionId}`,
|
|
363
|
+
{
|
|
364
|
+
method: "POST",
|
|
365
|
+
headers: {
|
|
366
|
+
"content-type": "application/json"
|
|
367
|
+
},
|
|
368
|
+
body: JSON.stringify({})
|
|
369
|
+
},
|
|
370
|
+
null
|
|
371
|
+
);
|
|
372
|
+
}
|
|
360
373
|
async revokeServerTeamUserPermission(teamId, userId, permissionId) {
|
|
361
374
|
await this.sendServerRequest(
|
|
362
375
|
import_urls.urlString`/team-permissions/${teamId}/${userId}/${permissionId}`,
|
|
@@ -370,6 +383,19 @@ var StackServerInterface = class extends import_clientInterface.StackClientInter
|
|
|
370
383
|
null
|
|
371
384
|
);
|
|
372
385
|
}
|
|
386
|
+
async revokeServerProjectPermission(userId, permissionId) {
|
|
387
|
+
await this.sendServerRequest(
|
|
388
|
+
import_urls.urlString`/project-permissions/${userId}/${permissionId}`,
|
|
389
|
+
{
|
|
390
|
+
method: "DELETE",
|
|
391
|
+
headers: {
|
|
392
|
+
"content-type": "application/json"
|
|
393
|
+
},
|
|
394
|
+
body: JSON.stringify({})
|
|
395
|
+
},
|
|
396
|
+
null
|
|
397
|
+
);
|
|
398
|
+
}
|
|
373
399
|
async deleteServerUser(userId) {
|
|
374
400
|
await this.sendServerRequest(
|
|
375
401
|
import_urls.urlString`/users/${userId}`,
|
|
@@ -505,4 +531,4 @@ var StackServerInterface = class extends import_clientInterface.StackClientInter
|
|
|
505
531
|
0 && (module.exports = {
|
|
506
532
|
StackServerInterface
|
|
507
533
|
});
|
|
508
|
-
//# sourceMappingURL=
|
|
534
|
+
//# sourceMappingURL=server-interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/interface/server-interface.ts"],"sourcesContent":["import { KnownErrors } from \"../known-errors\";\nimport { AccessToken, InternalSession, RefreshToken } from \"../sessions\";\nimport { StackAssertionError } from \"../utils/errors\";\nimport { filterUndefined } from \"../utils/objects\";\nimport { Result } from \"../utils/results\";\nimport { urlString } from \"../utils/urls\";\nimport {\n ClientInterfaceOptions,\n StackClientInterface\n} from \"./client-interface\";\nimport { ContactChannelsCrud } from \"./crud/contact-channels\";\nimport { CurrentUserCrud } from \"./crud/current-user\";\nimport { ConnectedAccountAccessTokenCrud } from \"./crud/oauth\";\nimport { ProjectPermissionsCrud } from \"./crud/project-permissions\";\nimport { SessionsCrud } from \"./crud/sessions\";\nimport { TeamInvitationCrud } from \"./crud/team-invitation\";\nimport { TeamMemberProfilesCrud } from \"./crud/team-member-profiles\";\nimport { TeamMembershipsCrud } from \"./crud/team-memberships\";\nimport { TeamPermissionsCrud } from \"./crud/team-permissions\";\nimport { TeamsCrud } from \"./crud/teams\";\nimport { UsersCrud } from \"./crud/users\";\n\nexport type ServerAuthApplicationOptions = (\n & ClientInterfaceOptions\n & (\n | {\n readonly secretServerKey: string,\n }\n | {\n readonly projectOwnerSession: InternalSession,\n }\n )\n);\n\nexport class StackServerInterface extends StackClientInterface {\n constructor(public override options: ServerAuthApplicationOptions) {\n super(options);\n }\n\n protected async sendServerRequest(path: string, options: RequestInit, session: InternalSession | null, requestType: \"server\" | \"admin\" = \"server\") {\n return await this.sendClientRequest(\n path,\n {\n ...options,\n headers: {\n \"x-stack-secret-server-key\": \"secretServerKey\" in this.options ? this.options.secretServerKey : \"\",\n ...options.headers,\n },\n },\n session,\n requestType,\n );\n }\n\n protected async sendServerRequestAndCatchKnownError<E extends typeof KnownErrors[keyof KnownErrors]>(\n path: string,\n requestOptions: RequestInit,\n tokenStoreOrNull: InternalSession | null,\n errorsToCatch: readonly E[],\n ): Promise<Result<\n Response & {\n usedTokens: {\n accessToken: AccessToken,\n refreshToken: RefreshToken | null,\n } | null,\n },\n InstanceType<E>\n >> {\n try {\n return Result.ok(await this.sendServerRequest(path, requestOptions, tokenStoreOrNull));\n } catch (e) {\n for (const errorType of errorsToCatch) {\n if (errorType.isInstance(e)) {\n return Result.error(e as InstanceType<E>);\n }\n }\n throw e;\n }\n }\n\n async createServerUser(data: UsersCrud['Server']['Create']): Promise<UsersCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n \"/users\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async getServerUserByToken(session: InternalSession): Promise<CurrentUserCrud['Server']['Read'] | null> {\n const responseOrError = await this.sendServerRequestAndCatchKnownError(\n \"/users/me\",\n {},\n session,\n [KnownErrors.CannotGetOwnUserWithoutUser],\n );\n if (responseOrError.status === \"error\") {\n if (KnownErrors.CannotGetOwnUserWithoutUser.isInstance(responseOrError.error)) {\n return null;\n } else {\n throw new StackAssertionError(\"Unexpected uncaught error\", { cause: responseOrError.error });\n }\n }\n const response = responseOrError.data;\n const user: CurrentUserCrud['Server']['Read'] = await response.json();\n if (!(user as any)) throw new StackAssertionError(\"User endpoint returned null; this should never happen\");\n return user;\n }\n\n async getServerUserById(userId: string): Promise<Result<UsersCrud['Server']['Read']>> {\n const responseOrError = await this.sendServerRequestAndCatchKnownError(\n urlString`/users/${userId}`,\n {},\n null,\n [KnownErrors.UserNotFound],\n );\n if (responseOrError.status === \"error\") {\n return Result.error(responseOrError.error);\n }\n const user: UsersCrud['Server']['Read'] = await responseOrError.data.json();\n return Result.ok(user);\n }\n\n async listServerTeamInvitations(options: {\n teamId: string,\n }): Promise<TeamInvitationCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n urlString`/team-invitations?team_id=${options.teamId}`,\n {},\n null,\n );\n const result = await response.json() as TeamInvitationCrud['Server']['List'];\n return result.items;\n }\n\n async revokeServerTeamInvitation(invitationId: string, teamId: string) {\n await this.sendServerRequest(\n urlString`/team-invitations/${invitationId}?team_id=${teamId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async listServerTeamMemberProfiles(\n options: {\n teamId: string,\n },\n ): Promise<TeamMemberProfilesCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n urlString`/team-member-profiles?team_id=${options.teamId}`,\n {},\n null,\n );\n const result = await response.json() as TeamMemberProfilesCrud['Server']['List'];\n return result.items;\n }\n\n async getServerTeamMemberProfile(\n options: {\n teamId: string,\n userId: string,\n },\n ): Promise<TeamMemberProfilesCrud['Client']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/team-member-profiles/${options.teamId}/${options.userId}`,\n {},\n null,\n );\n return await response.json();\n }\n\n async listServerTeamPermissions(\n options: {\n userId?: string,\n teamId?: string,\n recursive: boolean,\n },\n session: InternalSession | null,\n ): Promise<TeamPermissionsCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n `/team-permissions?${new URLSearchParams(filterUndefined({\n user_id: options.userId,\n team_id: options.teamId,\n recursive: options.recursive.toString(),\n }))}`,\n {},\n session,\n );\n const result = await response.json() as TeamPermissionsCrud['Server']['List'];\n return result.items;\n }\n\n async listServerProjectPermissions(\n options: {\n userId?: string,\n recursive: boolean,\n },\n session: InternalSession | null,\n ): Promise<ProjectPermissionsCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n `/project-permissions?${new URLSearchParams(filterUndefined({\n user_id: options.userId,\n recursive: options.recursive.toString(),\n }))}`,\n {},\n session,\n );\n const result = await response.json() as ProjectPermissionsCrud['Server']['List'];\n return result.items;\n }\n\n async listServerUsers(options: {\n cursor?: string,\n limit?: number,\n orderBy?: 'signedUpAt',\n desc?: boolean,\n query?: string,\n }): Promise<UsersCrud['Server']['List']> {\n const searchParams = new URLSearchParams(filterUndefined({\n cursor: options.cursor,\n limit: options.limit?.toString(),\n desc: options.desc?.toString(),\n ...options.orderBy ? {\n order_by: {\n signedUpAt: \"signed_up_at\",\n }[options.orderBy],\n } : {},\n ...options.query ? {\n query: options.query,\n } : {},\n }));\n const response = await this.sendServerRequest(\"/users?\" + searchParams.toString(), {}, null);\n return await response.json();\n }\n\n async listServerTeams(options?: {\n userId?: string,\n }): Promise<TeamsCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n `/teams?${new URLSearchParams(filterUndefined({\n user_id: options?.userId,\n }))}`,\n {},\n null\n );\n const result = await response.json() as TeamsCrud['Server']['List'];\n return result.items;\n }\n\n async getServerTeam(teamId: string): Promise<TeamsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n `/teams/${teamId}`,\n {},\n null\n );\n return await response.json();\n }\n\n async listServerTeamUsers(teamId: string): Promise<UsersCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(`/users?team_id=${teamId}`, {}, null);\n const result = await response.json() as UsersCrud['Server']['List'];\n return result.items;\n }\n\n /* when passing a session, the user will be added to the team */\n async createServerTeam(data: TeamsCrud['Server']['Create']): Promise<TeamsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n \"/teams\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null\n );\n return await response.json();\n }\n\n async updateServerTeam(teamId: string, data: TeamsCrud['Server']['Update']): Promise<TeamsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/teams/${teamId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteServerTeam(teamId: string): Promise<void> {\n await this.sendServerRequest(\n urlString`/teams/${teamId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async addServerUserToTeam(options: {\n userId: string,\n teamId: string,\n }): Promise<TeamMembershipsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/team-memberships/${options.teamId}/${options.userId}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async removeServerUserFromTeam(options: {\n userId: string,\n teamId: string,\n }) {\n await this.sendServerRequest(\n urlString`/team-memberships/${options.teamId}/${options.userId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async updateServerUser(userId: string, update: UsersCrud['Server']['Update']): Promise<UsersCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/users/${userId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(update),\n },\n null,\n );\n return await response.json();\n }\n\n async createServerProviderAccessToken(\n userId: string,\n provider: string,\n scope: string,\n ): Promise<ConnectedAccountAccessTokenCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/connected-accounts/${userId}/${provider}/access-token`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ scope }),\n },\n null,\n );\n return await response.json();\n }\n\n async createServerUserSession(userId: string, expiresInMillis: number, isImpersonation: boolean): Promise<{ accessToken: string, refreshToken: string }> {\n const response = await this.sendServerRequest(\n \"/auth/sessions\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n user_id: userId,\n expires_in_millis: expiresInMillis,\n is_impersonation: isImpersonation,\n }),\n },\n null,\n );\n const result = await response.json();\n return {\n accessToken: result.access_token,\n refreshToken: result.refresh_token,\n };\n }\n\n async leaveServerTeam(\n options: {\n teamId: string,\n userId: string,\n },\n ) {\n await this.sendClientRequest(\n urlString`/team-memberships/${options.teamId}/${options.userId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async updateServerTeamMemberProfile(options: {\n teamId: string,\n userId: string,\n profile: TeamMemberProfilesCrud['Server']['Update'],\n }) {\n await this.sendServerRequest(\n urlString`/team-member-profiles/${options.teamId}/${options.userId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(options.profile),\n },\n null,\n );\n }\n\n async grantServerTeamUserPermission(teamId: string, userId: string, permissionId: string) {\n await this.sendServerRequest(\n urlString`/team-permissions/${teamId}/${userId}/${permissionId}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async grantServerProjectPermission(userId: string, permissionId: string) {\n await this.sendServerRequest(\n urlString`/project-permissions/${userId}/${permissionId}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async revokeServerTeamUserPermission(teamId: string, userId: string, permissionId: string) {\n await this.sendServerRequest(\n urlString`/team-permissions/${teamId}/${userId}/${permissionId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async revokeServerProjectPermission(userId: string, permissionId: string) {\n await this.sendServerRequest(\n urlString`/project-permissions/${userId}/${permissionId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async deleteServerUser(userId: string) {\n await this.sendServerRequest(\n urlString`/users/${userId}`,\n {\n method: \"DELETE\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n }\n\n async createServerContactChannel(\n data: ContactChannelsCrud['Server']['Create'],\n ): Promise<ContactChannelsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n \"/contact-channels\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async updateServerContactChannel(\n userId: string,\n contactChannelId: string,\n data: ContactChannelsCrud['Server']['Update'],\n ): Promise<ContactChannelsCrud['Server']['Read']> {\n const response = await this.sendServerRequest(\n urlString`/contact-channels/${userId}/${contactChannelId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteServerContactChannel(\n userId: string,\n contactChannelId: string,\n ): Promise<void> {\n await this.sendServerRequest(\n urlString`/contact-channels/${userId}/${contactChannelId}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async listServerContactChannels(\n userId: string,\n ): Promise<ContactChannelsCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n urlString`/contact-channels?user_id=${userId}`,\n {\n method: \"GET\",\n },\n null,\n );\n const json = await response.json() as ContactChannelsCrud['Server']['List'];\n return json.items;\n }\n\n async sendServerContactChannelVerificationEmail(\n userId: string,\n contactChannelId: string,\n callbackUrl: string,\n ): Promise<void> {\n await this.sendServerRequest(\n urlString`/contact-channels/${userId}/${contactChannelId}/send-verification-code`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ callback_url: callbackUrl }),\n },\n null,\n );\n }\n\n\n async listServerSessions(userId: string): Promise<SessionsCrud['Server']['Read'][]> {\n const response = await this.sendServerRequest(\n urlString`/auth/sessions?user_id=${userId}`,\n {\n method: \"GET\",\n },\n null,\n );\n return await response.json();\n }\n\n async deleteServerSession(sessionId: string) {\n await this.sendServerRequest(\n urlString`/auth/sessions/${sessionId}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n\n async sendServerTeamInvitation(options: {\n email: string,\n teamId: string,\n callbackUrl: string,\n }): Promise<void> {\n await this.sendServerRequest(\n \"/team-invitations/send-code\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email: options.email,\n team_id: options.teamId,\n callback_url: options.callbackUrl,\n }),\n },\n null,\n );\n }\n\n async updatePassword(\n options: { oldPassword: string, newPassword: string },\n ): Promise<KnownErrors[\"PasswordConfirmationMismatch\"] | KnownErrors[\"PasswordRequirementsNotMet\"] | undefined> {\n const res = await this.sendServerRequestAndCatchKnownError(\n \"/auth/password/update\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n old_password: options.oldPassword,\n new_password: options.newPassword,\n }),\n },\n null,\n [KnownErrors.PasswordConfirmationMismatch, KnownErrors.PasswordRequirementsNotMet]\n );\n\n if (res.status === \"error\") {\n return res.error;\n }\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -23,10 +23,10 @@ __export(webhooks_exports, {
|
|
|
23
23
|
webhookEvents: () => webhookEvents
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(webhooks_exports);
|
|
26
|
-
var import_team_memberships = require("./crud/team-memberships");
|
|
27
|
-
var import_team_permissions = require("./crud/team-permissions");
|
|
28
|
-
var import_teams = require("./crud/teams");
|
|
29
|
-
var import_users = require("./crud/users");
|
|
26
|
+
var import_team_memberships = require("./crud/team-memberships.js");
|
|
27
|
+
var import_team_permissions = require("./crud/team-permissions.js");
|
|
28
|
+
var import_teams = require("./crud/teams.js");
|
|
29
|
+
var import_users = require("./crud/users.js");
|
|
30
30
|
var webhookEvents = [
|
|
31
31
|
import_users.userCreatedWebhookEvent,
|
|
32
32
|
import_users.userUpdatedWebhookEvent,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { StatusError } from './utils/errors.
|
|
2
|
-
import { Json } from './utils/json.
|
|
3
|
-
import './utils/results.
|
|
1
|
+
import { StatusError } from './utils/errors.mjs';
|
|
2
|
+
import { Json } from './utils/json.mjs';
|
|
3
|
+
import './utils/results.mjs';
|
|
4
4
|
|
|
5
5
|
type KnownErrorJson = {
|
|
6
6
|
code: string;
|
|
@@ -16,13 +16,18 @@ type KnownErrorConstructor<SuperInstance extends KnownError, Args extends any[]>
|
|
|
16
16
|
};
|
|
17
17
|
errorCode: string;
|
|
18
18
|
constructorArgsFromJson: (json: KnownErrorJson) => Args;
|
|
19
|
+
isInstance: (error: unknown) => error is SuperInstance & {
|
|
20
|
+
constructorArgs: Args;
|
|
21
|
+
};
|
|
19
22
|
};
|
|
20
23
|
declare abstract class KnownError extends StatusError {
|
|
21
24
|
readonly statusCode: number;
|
|
22
25
|
readonly humanReadableMessage: string;
|
|
23
26
|
readonly details?: Json | undefined;
|
|
27
|
+
private readonly __stackKnownErrorBrand;
|
|
24
28
|
name: string;
|
|
25
29
|
constructor(statusCode: number, humanReadableMessage: string, details?: Json | undefined);
|
|
30
|
+
static isKnownError(error: unknown): error is KnownError;
|
|
26
31
|
getBody(): Uint8Array;
|
|
27
32
|
getHeaders(): Record<string, string[]>;
|
|
28
33
|
toDescriptiveJson(): Json;
|
|
@@ -259,6 +264,9 @@ declare const KnownErrors: {
|
|
|
259
264
|
ProjectNotFound: KnownErrorConstructor<KnownError & KnownErrorBrand<"PROJECT_NOT_FOUND">, [projectId: string]> & {
|
|
260
265
|
errorCode: "PROJECT_NOT_FOUND";
|
|
261
266
|
};
|
|
267
|
+
BranchDoesNotExist: KnownErrorConstructor<KnownError & KnownErrorBrand<"BRANCH_DOES_NOT_EXIST">, [branchId: string]> & {
|
|
268
|
+
errorCode: "BRANCH_DOES_NOT_EXIST";
|
|
269
|
+
};
|
|
262
270
|
SignUpNotEnabled: KnownErrorConstructor<KnownError & KnownErrorBrand<"SIGN_UP_NOT_ENABLED">, []> & {
|
|
263
271
|
errorCode: "SIGN_UP_NOT_ENABLED";
|
|
264
272
|
};
|
package/dist/known-errors.d.ts
CHANGED
|
@@ -16,13 +16,18 @@ type KnownErrorConstructor<SuperInstance extends KnownError, Args extends any[]>
|
|
|
16
16
|
};
|
|
17
17
|
errorCode: string;
|
|
18
18
|
constructorArgsFromJson: (json: KnownErrorJson) => Args;
|
|
19
|
+
isInstance: (error: unknown) => error is SuperInstance & {
|
|
20
|
+
constructorArgs: Args;
|
|
21
|
+
};
|
|
19
22
|
};
|
|
20
23
|
declare abstract class KnownError extends StatusError {
|
|
21
24
|
readonly statusCode: number;
|
|
22
25
|
readonly humanReadableMessage: string;
|
|
23
26
|
readonly details?: Json | undefined;
|
|
27
|
+
private readonly __stackKnownErrorBrand;
|
|
24
28
|
name: string;
|
|
25
29
|
constructor(statusCode: number, humanReadableMessage: string, details?: Json | undefined);
|
|
30
|
+
static isKnownError(error: unknown): error is KnownError;
|
|
26
31
|
getBody(): Uint8Array;
|
|
27
32
|
getHeaders(): Record<string, string[]>;
|
|
28
33
|
toDescriptiveJson(): Json;
|
|
@@ -259,6 +264,9 @@ declare const KnownErrors: {
|
|
|
259
264
|
ProjectNotFound: KnownErrorConstructor<KnownError & KnownErrorBrand<"PROJECT_NOT_FOUND">, [projectId: string]> & {
|
|
260
265
|
errorCode: "PROJECT_NOT_FOUND";
|
|
261
266
|
};
|
|
267
|
+
BranchDoesNotExist: KnownErrorConstructor<KnownError & KnownErrorBrand<"BRANCH_DOES_NOT_EXIST">, [branchId: string]> & {
|
|
268
|
+
errorCode: "BRANCH_DOES_NOT_EXIST";
|
|
269
|
+
};
|
|
262
270
|
SignUpNotEnabled: KnownErrorConstructor<KnownError & KnownErrorBrand<"SIGN_UP_NOT_ENABLED">, []> & {
|
|
263
271
|
errorCode: "SIGN_UP_NOT_ENABLED";
|
|
264
272
|
};
|
package/dist/known-errors.js
CHANGED
|
@@ -24,9 +24,9 @@ __export(known_errors_exports, {
|
|
|
24
24
|
KnownErrors: () => KnownErrors
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(known_errors_exports);
|
|
27
|
-
var import_errors = require("./utils/errors");
|
|
28
|
-
var import_functions = require("./utils/functions");
|
|
29
|
-
var import_strings = require("./utils/strings");
|
|
27
|
+
var import_errors = require("./utils/errors.js");
|
|
28
|
+
var import_functions = require("./utils/functions.js");
|
|
29
|
+
var import_strings = require("./utils/strings.js");
|
|
30
30
|
var KnownError = class extends import_errors.StatusError {
|
|
31
31
|
constructor(statusCode, humanReadableMessage, details) {
|
|
32
32
|
super(
|
|
@@ -36,8 +36,12 @@ var KnownError = class extends import_errors.StatusError {
|
|
|
36
36
|
this.statusCode = statusCode;
|
|
37
37
|
this.humanReadableMessage = humanReadableMessage;
|
|
38
38
|
this.details = details;
|
|
39
|
+
this.__stackKnownErrorBrand = "stack-known-error-brand-sentinel";
|
|
39
40
|
this.name = "KnownError";
|
|
40
41
|
}
|
|
42
|
+
static isKnownError(error) {
|
|
43
|
+
return typeof error === "object" && error !== null && "__stackKnownErrorBrand" in error && error.__stackKnownErrorBrand === "stack-known-error-brand-sentinel";
|
|
44
|
+
}
|
|
41
45
|
getBody() {
|
|
42
46
|
return new TextEncoder().encode(JSON.stringify(this.toDescriptiveJson(), void 0, 2));
|
|
43
47
|
}
|
|
@@ -89,6 +93,16 @@ function createKnownErrorConstructor(SuperClass, errorCode, create, constructorA
|
|
|
89
93
|
static constructorArgsFromJson(json) {
|
|
90
94
|
return constructorArgsFromJsonFn(json.details);
|
|
91
95
|
}
|
|
96
|
+
static isInstance(error) {
|
|
97
|
+
if (!KnownError.isKnownError(error)) return false;
|
|
98
|
+
let current = error;
|
|
99
|
+
while (true) {
|
|
100
|
+
current = Object.getPrototypeOf(current);
|
|
101
|
+
if (!current) break;
|
|
102
|
+
if ("errorCode" in current.constructor && current.constructor.errorCode === errorCode) return true;
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
92
106
|
}
|
|
93
107
|
KnownErrorImpl.errorCode = errorCode;
|
|
94
108
|
;
|
|
@@ -523,6 +537,18 @@ var ProjectNotFound = createKnownErrorConstructor(
|
|
|
523
537
|
},
|
|
524
538
|
(json) => [json.project_id]
|
|
525
539
|
);
|
|
540
|
+
var BranchDoesNotExist = createKnownErrorConstructor(
|
|
541
|
+
KnownError,
|
|
542
|
+
"BRANCH_DOES_NOT_EXIST",
|
|
543
|
+
(branchId) => [
|
|
544
|
+
400,
|
|
545
|
+
`The branch with ID ${branchId} does not exist.`,
|
|
546
|
+
{
|
|
547
|
+
branch_id: branchId
|
|
548
|
+
}
|
|
549
|
+
],
|
|
550
|
+
(json) => [json.branch_id]
|
|
551
|
+
);
|
|
526
552
|
var SignUpNotEnabled = createKnownErrorConstructor(
|
|
527
553
|
KnownError,
|
|
528
554
|
"SIGN_UP_NOT_ENABLED",
|
|
@@ -867,7 +893,7 @@ var InvalidOAuthClientIdOrSecret = createKnownErrorConstructor(
|
|
|
867
893
|
"INVALID_OAUTH_CLIENT_ID_OR_SECRET",
|
|
868
894
|
(clientId) => [
|
|
869
895
|
400,
|
|
870
|
-
"The OAuth client ID or secret is invalid. The client ID must be equal to the project ID, and the client secret must be a publishable client key.",
|
|
896
|
+
"The OAuth client ID or secret is invalid. The client ID must be equal to the project ID (potentially with a hash and a branch ID), and the client secret must be a publishable client key.",
|
|
871
897
|
{
|
|
872
898
|
client_id: clientId ?? null
|
|
873
899
|
}
|
|
@@ -1193,6 +1219,7 @@ var KnownErrors = {
|
|
|
1193
1219
|
ApiKeyNotFound,
|
|
1194
1220
|
PublicApiKeyCannotBeRevoked,
|
|
1195
1221
|
ProjectNotFound,
|
|
1222
|
+
BranchDoesNotExist,
|
|
1196
1223
|
SignUpNotEnabled,
|
|
1197
1224
|
PasswordAuthenticationNotEnabled,
|
|
1198
1225
|
PasskeyAuthenticationNotEnabled,
|