@hexclave/js 1.0.0 → 1.0.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/README.md +7 -23
- package/dist/dev-tool/dev-tool-core.d.ts.map +1 -1
- package/dist/dev-tool/dev-tool-core.js +23 -23
- package/dist/dev-tool/dev-tool-core.js.map +1 -1
- package/dist/dev-tool/index.js +6 -6
- package/dist/dev-tool/index.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-core.d.ts.map +1 -1
- package/dist/esm/dev-tool/dev-tool-core.js +2 -2
- package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
- package/dist/esm/dev-tool/index.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/integrations/convex.js.map +1 -1
- package/dist/esm/lib/auth.js.map +1 -1
- package/dist/esm/lib/auth.test.js.map +1 -1
- package/dist/esm/lib/cookie.js.map +1 -1
- package/dist/esm/lib/stack-app/api-keys/index.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.d.ts +11 -11
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js +3 -1
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js +67 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.d.ts +4 -3
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js +18 -2
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/common.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/common.js +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/common.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/event-tracker.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/event-tracker.test.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/index.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/redirect-page-urls.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/session-replay.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/session-replay.js +3 -2
- package/dist/esm/lib/stack-app/apps/implementations/session-replay.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/admin-app.d.ts +4 -0
- package/dist/esm/lib/stack-app/apps/interfaces/admin-app.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js +1 -0
- package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.d.ts +5 -0
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.js +1 -0
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/server-app.d.ts +4 -0
- package/dist/esm/lib/stack-app/apps/interfaces/server-app.d.ts.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/server-app.js +1 -0
- package/dist/esm/lib/stack-app/apps/interfaces/server-app.js.map +1 -1
- package/dist/esm/lib/stack-app/common.js.map +1 -1
- package/dist/esm/lib/stack-app/contact-channels/index.js.map +1 -1
- package/dist/esm/lib/stack-app/email-templates/index.js.map +1 -1
- package/dist/esm/lib/stack-app/internal-api-keys/index.js.map +1 -1
- package/dist/esm/lib/stack-app/permissions/index.js.map +1 -1
- package/dist/esm/lib/stack-app/projects/index.js.map +1 -1
- package/dist/esm/lib/stack-app/teams/index.js.map +1 -1
- package/dist/esm/lib/stack-app/url-targets.js.map +1 -1
- package/dist/esm/lib/stack-app/url-targets.test.js +1 -1
- package/dist/esm/lib/stack-app/url-targets.test.js.map +1 -1
- package/dist/esm/lib/stack-app/users/index.js.map +1 -1
- package/dist/esm/utils/url.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -4
- package/dist/integrations/convex.js +5 -5
- package/dist/integrations/convex.js.map +1 -1
- package/dist/lib/auth.js +12 -12
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/auth.test.js +2 -2
- package/dist/lib/auth.test.js.map +1 -1
- package/dist/lib/cookie.js +9 -9
- package/dist/lib/cookie.js.map +1 -1
- package/dist/lib/stack-app/api-keys/index.js +2 -2
- package/dist/lib/stack-app/api-keys/index.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts +11 -11
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.js +38 -36
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js +66 -0
- package/dist/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts +4 -3
- package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.js +210 -194
- package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/common.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/implementations/common.js +25 -25
- package/dist/lib/stack-app/apps/implementations/common.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/event-tracker.js +7 -7
- package/dist/lib/stack-app/apps/implementations/event-tracker.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/event-tracker.test.js +3 -3
- package/dist/lib/stack-app/apps/implementations/event-tracker.test.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/index.js +4 -4
- package/dist/lib/stack-app/apps/implementations/index.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/redirect-page-urls.js +8 -8
- package/dist/lib/stack-app/apps/implementations/redirect-page-urls.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/server-app-impl.js +59 -59
- package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/session-replay.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/implementations/session-replay.js +13 -12
- package/dist/lib/stack-app/apps/implementations/session-replay.js.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts +4 -0
- package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/admin-app.js +1 -0
- package/dist/lib/stack-app/apps/interfaces/admin-app.js.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/client-app.d.ts +5 -0
- package/dist/lib/stack-app/apps/interfaces/client-app.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/client-app.js +1 -0
- package/dist/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/server-app.d.ts +4 -0
- package/dist/lib/stack-app/apps/interfaces/server-app.d.ts.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/server-app.js +1 -0
- package/dist/lib/stack-app/apps/interfaces/server-app.js.map +1 -1
- package/dist/lib/stack-app/common.js.map +1 -1
- package/dist/lib/stack-app/contact-channels/index.js.map +1 -1
- package/dist/lib/stack-app/email-templates/index.js.map +1 -1
- package/dist/lib/stack-app/internal-api-keys/index.js.map +1 -1
- package/dist/lib/stack-app/permissions/index.js.map +1 -1
- package/dist/lib/stack-app/projects/index.js.map +1 -1
- package/dist/lib/stack-app/teams/index.js.map +1 -1
- package/dist/lib/stack-app/url-targets.js +6 -6
- package/dist/lib/stack-app/url-targets.js.map +1 -1
- package/dist/lib/stack-app/url-targets.test.js +1 -1
- package/dist/lib/stack-app/url-targets.test.js.map +1 -1
- package/dist/lib/stack-app/users/index.js +3 -3
- package/dist/lib/stack-app/users/index.js.map +1 -1
- package/dist/utils/url.js +2 -2
- package/dist/utils/url.js.map +1 -1
- package/package.json +3 -3
- package/dist/esm/internal/deprecation-warning.d.ts +0 -1
- package/dist/esm/internal/deprecation-warning.js +0 -24
- package/dist/esm/internal/deprecation-warning.js.map +0 -1
- package/dist/internal/deprecation-warning.d.ts +0 -1
- package/dist/internal/deprecation-warning.js +0 -24
- package/dist/internal/deprecation-warning.js.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
const require_chunk = require('../../../../chunk-BE-pF4vm.js');
|
|
3
|
-
let
|
|
4
|
-
let
|
|
5
|
-
let
|
|
3
|
+
let _hexclave_shared_dist_utils_errors = require("@hexclave/shared/dist/utils/errors");
|
|
4
|
+
let _hexclave_shared = require("@hexclave/shared");
|
|
5
|
+
let _hexclave_shared_dist_utils_results = require("@hexclave/shared/dist/utils/results");
|
|
6
6
|
let __common_js = require("./common.js");
|
|
7
7
|
let _simplewebauthn_browser = require("@simplewebauthn/browser");
|
|
8
|
-
let
|
|
8
|
+
let _hexclave_shared_dist_sessions = require("@hexclave/shared/dist/sessions");
|
|
9
9
|
let ____________utils_url_js = require("../../../../utils/url.js");
|
|
10
10
|
let ______api_keys_index_js = require("../../api-keys/index.js");
|
|
11
11
|
let ______contact_channels_index_js = require("../../contact-channels/index.js");
|
|
@@ -144,9 +144,9 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
144
144
|
allow_connected_accounts: data.allowConnectedAccounts
|
|
145
145
|
});
|
|
146
146
|
await Promise.all([app._serverOAuthProvidersCache.refresh([crud.user_id]), app._serverUserConnectedAccountsCache.refresh([crud.user_id])]);
|
|
147
|
-
return
|
|
147
|
+
return _hexclave_shared_dist_utils_results.Result.ok(void 0);
|
|
148
148
|
} catch (error) {
|
|
149
|
-
if (
|
|
149
|
+
if (_hexclave_shared.KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn.isInstance(error)) return _hexclave_shared_dist_utils_results.Result.error(error);
|
|
150
150
|
throw error;
|
|
151
151
|
}
|
|
152
152
|
},
|
|
@@ -163,7 +163,7 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
163
163
|
...extraOptions,
|
|
164
164
|
interface: extraOptions?.interface ?? (() => {
|
|
165
165
|
const apiUrls = (0, __common_js.resolveApiUrls)(resolvedOptions.baseUrl);
|
|
166
|
-
return new
|
|
166
|
+
return new _hexclave_shared.HexclaveServerInterface({
|
|
167
167
|
getBaseUrl: () => apiUrls()[0],
|
|
168
168
|
getApiUrls: apiUrls,
|
|
169
169
|
projectId: resolvedOptions.projectId ?? (0, __common_js.getDefaultProjectId)(),
|
|
@@ -179,7 +179,7 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
179
179
|
return await this._interface.getServerUserByToken(session);
|
|
180
180
|
});
|
|
181
181
|
this._serverUsersCache = (0, __common_js.createCache)(async ([cursor, limit, orderBy, desc, query, includeRestricted, includeAnonymous, onlyAnonymous, teamId]) => {
|
|
182
|
-
if (onlyAnonymous && !includeAnonymous) throw new
|
|
182
|
+
if (onlyAnonymous && !includeAnonymous) throw new _hexclave_shared_dist_utils_errors.HexclaveAssertionError("onlyAnonymous=true requires includeAnonymous=true");
|
|
183
183
|
if (onlyAnonymous) return await this._interface.listServerUsers({
|
|
184
184
|
cursor,
|
|
185
185
|
limit,
|
|
@@ -204,7 +204,7 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
204
204
|
});
|
|
205
205
|
this._serverUserCache = (0, __common_js.createCache)(async ([userId]) => {
|
|
206
206
|
const user = await this._interface.getServerUserById(userId);
|
|
207
|
-
return
|
|
207
|
+
return _hexclave_shared_dist_utils_results.Result.or(user, null);
|
|
208
208
|
});
|
|
209
209
|
this._serverTeamsCache = (0, __common_js.createCache)(async ([userId, orderBy, desc, cursor, limit, query]) => {
|
|
210
210
|
return await this._interface.listServerTeamsPaginated({
|
|
@@ -242,14 +242,14 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
242
242
|
try {
|
|
243
243
|
return { accessToken: (await this._interface.createServerProviderAccessToken(userId, providerId, scope || "")).access_token };
|
|
244
244
|
} catch (err) {
|
|
245
|
-
if (!(
|
|
245
|
+
if (!(_hexclave_shared.KnownErrors.OAuthAccessTokenNotAvailable.isInstance(err) || _hexclave_shared.KnownErrors.OAuthConnectionDoesNotHaveRequiredScope.isInstance(err) || _hexclave_shared.KnownErrors.OAuthConnectionNotConnectedToUser.isInstance(err))) throw err;
|
|
246
246
|
}
|
|
247
247
|
return null;
|
|
248
248
|
});
|
|
249
249
|
this._serverUserOAuthConnectionCache = (0, __common_js.createCache)(async ([userId, providerId, scope, redirect]) => {
|
|
250
250
|
return await this._getUserOAuthConnectionCacheFn({
|
|
251
|
-
getUser: async () =>
|
|
252
|
-
getOrWaitOAuthToken: async () =>
|
|
251
|
+
getUser: async () => _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverUserCache.getOrWait([userId], "write-only")),
|
|
252
|
+
getOrWaitOAuthToken: async () => _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverUserOAuthConnectionAccessTokensCache.getOrWait([
|
|
253
253
|
userId,
|
|
254
254
|
providerId,
|
|
255
255
|
scope || ""
|
|
@@ -267,7 +267,7 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
267
267
|
try {
|
|
268
268
|
return { accessToken: (await this._interface.createServerProviderAccessTokenByAccount(userId, providerId, providerAccountId, scope || "")).access_token };
|
|
269
269
|
} catch (err) {
|
|
270
|
-
if (!(
|
|
270
|
+
if (!(_hexclave_shared.KnownErrors.OAuthAccessTokenNotAvailable.isInstance(err) || _hexclave_shared.KnownErrors.OAuthConnectionDoesNotHaveRequiredScope.isInstance(err) || _hexclave_shared.KnownErrors.OAuthConnectionNotConnectedToUser.isInstance(err))) throw err;
|
|
271
271
|
}
|
|
272
272
|
return null;
|
|
273
273
|
});
|
|
@@ -377,7 +377,7 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
377
377
|
providerAccountId,
|
|
378
378
|
async getAccessToken(options) {
|
|
379
379
|
const scopeString = options?.scopes?.join(" ") ?? "";
|
|
380
|
-
const result =
|
|
380
|
+
const result = _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverUserOAuthConnectionAccessTokensByAccountCache.getOrWait([
|
|
381
381
|
userId,
|
|
382
382
|
providerId,
|
|
383
383
|
providerAccountId,
|
|
@@ -385,9 +385,9 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
385
385
|
], "write-only"));
|
|
386
386
|
if (!result) {
|
|
387
387
|
const scopeDetail = scopeString ? `The requested scopes [${scopeString}] are not available on the existing token.` : "The OAuth refresh token has likely been revoked or expired.";
|
|
388
|
-
return
|
|
388
|
+
return _hexclave_shared_dist_utils_results.Result.error(new _hexclave_shared.KnownErrors.OAuthAccessTokenNotAvailable(providerId, `${scopeDetail} The user needs to re-authorize by calling \`linkConnectedAccount\` or using \`getOrLinkConnectedAccount\`.`));
|
|
389
389
|
}
|
|
390
|
-
return
|
|
390
|
+
return _hexclave_shared_dist_utils_results.Result.ok(result);
|
|
391
391
|
}
|
|
392
392
|
};
|
|
393
393
|
}
|
|
@@ -397,11 +397,11 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
397
397
|
const scopeString = options?.scopes?.join(" ") ?? "";
|
|
398
398
|
if (typeof idOrAccount === "object" && "provider" in idOrAccount && "providerAccountId" in idOrAccount) {
|
|
399
399
|
const { provider, providerAccountId } = idOrAccount;
|
|
400
|
-
const found =
|
|
400
|
+
const found = _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverUserConnectedAccountsCache.getOrWait([crud.id], "write-only")).find((a) => a.provider === provider && a.providerAccountId === providerAccountId);
|
|
401
401
|
if (!found) return null;
|
|
402
402
|
return found;
|
|
403
403
|
}
|
|
404
|
-
return
|
|
404
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverUserOAuthConnectionCache.getOrWait([
|
|
405
405
|
crud.id,
|
|
406
406
|
idOrAccount,
|
|
407
407
|
scopeString,
|
|
@@ -497,20 +497,20 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
497
497
|
},
|
|
498
498
|
getConnectedAccount,
|
|
499
499
|
async listConnectedAccounts() {
|
|
500
|
-
return
|
|
500
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverUserConnectedAccountsCache.getOrWait([crud.id], "write-only"));
|
|
501
501
|
},
|
|
502
502
|
async linkConnectedAccount() {
|
|
503
|
-
throw new
|
|
503
|
+
throw new _hexclave_shared_dist_utils_errors.HexclaveAssertionError("linkConnectedAccount is not available for server users. OAuth flows must be initiated on the client side.");
|
|
504
504
|
},
|
|
505
505
|
async getOrLinkConnectedAccount() {
|
|
506
|
-
throw new
|
|
506
|
+
throw new _hexclave_shared_dist_utils_errors.HexclaveAssertionError("getOrLinkConnectedAccount is not available for server users. OAuth flows must be initiated on the client side.");
|
|
507
507
|
},
|
|
508
508
|
selectedTeam: crud.selected_team ? app._serverTeamFromCrud(crud.selected_team) : null,
|
|
509
509
|
async getTeam(teamId) {
|
|
510
510
|
return (await this.listTeams()).find((t) => t.id === teamId) ?? null;
|
|
511
511
|
},
|
|
512
512
|
async listTeams(options) {
|
|
513
|
-
const result =
|
|
513
|
+
const result = _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverTeamsCache.getOrWait([
|
|
514
514
|
crud.id,
|
|
515
515
|
options?.orderBy,
|
|
516
516
|
options?.desc,
|
|
@@ -539,20 +539,20 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
539
539
|
await app._refreshTeamMembership(team.id, crud.id);
|
|
540
540
|
},
|
|
541
541
|
async listTeamInvitations() {
|
|
542
|
-
return
|
|
542
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverUserTeamInvitationsCache.getOrWait([crud.id], "write-only")).map((inv) => app._serverReceivedTeamInvitationFromCrud(crud.id, inv));
|
|
543
543
|
},
|
|
544
544
|
async listPermissions(scopeOrOptions, options) {
|
|
545
545
|
if (scopeOrOptions && "id" in scopeOrOptions) {
|
|
546
546
|
const scope = scopeOrOptions;
|
|
547
547
|
const recursive = options?.recursive ?? true;
|
|
548
|
-
return
|
|
548
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverTeamUserPermissionsCache.getOrWait([
|
|
549
549
|
scope.id,
|
|
550
550
|
crud.id,
|
|
551
551
|
recursive
|
|
552
552
|
], "write-only")).map((crud) => app._serverPermissionFromCrud(crud));
|
|
553
553
|
} else {
|
|
554
554
|
const recursive = scopeOrOptions?.recursive ?? true;
|
|
555
|
-
return
|
|
555
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverUserProjectPermissionsCache.getOrWait([crud.id, recursive], "write-only")).map((crud) => app._serverPermissionFromCrud(crud));
|
|
556
556
|
}
|
|
557
557
|
},
|
|
558
558
|
async getPermission(scopeOrPermissionId, permissionId) {
|
|
@@ -590,11 +590,11 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
590
590
|
return result;
|
|
591
591
|
},
|
|
592
592
|
async getTeamProfile(team) {
|
|
593
|
-
const result =
|
|
593
|
+
const result = _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverUserTeamProfileCache.getOrWait([team.id, crud.id], "write-only"));
|
|
594
594
|
return app._serverEditableTeamProfileFromCrud(result);
|
|
595
595
|
},
|
|
596
596
|
async listContactChannels() {
|
|
597
|
-
return
|
|
597
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverContactChannelsCache.getOrWait([crud.id], "write-only")).map((data) => app._serverContactChannelFromCrud(crud.id, data));
|
|
598
598
|
},
|
|
599
599
|
createContactChannel: async (data) => {
|
|
600
600
|
const contactChannel = await app._interface.createServerContactChannel((0, ______contact_channels_index_js.serverContactChannelCreateOptionsToCrud)(crud.id, data));
|
|
@@ -602,10 +602,10 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
602
602
|
return app._serverContactChannelFromCrud(crud.id, contactChannel);
|
|
603
603
|
},
|
|
604
604
|
async listNotificationCategories() {
|
|
605
|
-
return
|
|
605
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverNotificationCategoriesCache.getOrWait([crud.id], "write-only")).map((category) => app._serverNotificationCategoryFromCrud(crud.id, category));
|
|
606
606
|
},
|
|
607
607
|
async listApiKeys() {
|
|
608
|
-
return
|
|
608
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverUserApiKeysCache.getOrWait([crud.id], "write-only")).map((apiKey) => app._serverApiKeyFromCrud(apiKey));
|
|
609
609
|
},
|
|
610
610
|
async createApiKey(options) {
|
|
611
611
|
const result = await app._interface.createProjectApiKey(await (0, ______api_keys_index_js.apiKeyCreationOptionsToCrud)("user", crud.id, options), null, "server");
|
|
@@ -613,31 +613,31 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
613
613
|
return app._serverApiKeyFromCrud(result);
|
|
614
614
|
},
|
|
615
615
|
async listOAuthProviders() {
|
|
616
|
-
return
|
|
616
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverOAuthProvidersCache.getOrWait([crud.id], "write-only")).map((oauthCrud) => app._serverOAuthProviderFromCrud(oauthCrud));
|
|
617
617
|
},
|
|
618
618
|
async getOAuthProvider(id) {
|
|
619
619
|
return (await this.listOAuthProviders()).find((p) => p.id === id) ?? null;
|
|
620
620
|
},
|
|
621
621
|
async registerPasskey(options) {
|
|
622
622
|
const hostname = options?.hostname || (await app._getCurrentUrl())?.hostname;
|
|
623
|
-
if (!hostname) throw new
|
|
623
|
+
if (!hostname) throw new _hexclave_shared_dist_utils_errors.HexclaveAssertionError("hostname must be provided if the Stack App does not have a redirect method");
|
|
624
624
|
const initiationResult = await app._interface.initiateServerPasskeyRegistration(crud.id);
|
|
625
|
-
if (initiationResult.status !== "ok") return
|
|
625
|
+
if (initiationResult.status !== "ok") return _hexclave_shared_dist_utils_results.Result.error(new _hexclave_shared.KnownErrors.PasskeyRegistrationFailed("Failed to get initiation options for passkey registration"));
|
|
626
626
|
const { options_json, code } = initiationResult.data;
|
|
627
|
-
if (options_json.rp.id !== "THIS_VALUE_WILL_BE_REPLACED.example.com") throw new
|
|
627
|
+
if (options_json.rp.id !== "THIS_VALUE_WILL_BE_REPLACED.example.com") throw new _hexclave_shared_dist_utils_errors.HexclaveAssertionError(`Expected returned RP ID from server to equal sentinel, but found ${options_json.rp.id}`);
|
|
628
628
|
options_json.rp.id = hostname;
|
|
629
629
|
let attResp;
|
|
630
630
|
try {
|
|
631
631
|
attResp = await (0, _simplewebauthn_browser.startRegistration)({ optionsJSON: options_json });
|
|
632
632
|
} catch (error) {
|
|
633
|
-
if (error instanceof _simplewebauthn_browser.WebAuthnError) return
|
|
633
|
+
if (error instanceof _simplewebauthn_browser.WebAuthnError) return _hexclave_shared_dist_utils_results.Result.error(new _hexclave_shared.KnownErrors.PasskeyWebAuthnError(error.message, error.name));
|
|
634
634
|
else {
|
|
635
|
-
(0,
|
|
636
|
-
return
|
|
635
|
+
(0, _hexclave_shared_dist_utils_errors.captureError)("passkey-registration-failed", error);
|
|
636
|
+
return _hexclave_shared_dist_utils_results.Result.error(new _hexclave_shared.KnownErrors.PasskeyRegistrationFailed("Failed to start passkey registration due to unknown error"));
|
|
637
637
|
}
|
|
638
638
|
}
|
|
639
639
|
const { accessToken, refreshToken } = await app._interface.createServerUserSession(crud.id, 6e4 * 2, false);
|
|
640
|
-
const tempSession = new
|
|
640
|
+
const tempSession = new _hexclave_shared_dist_sessions.InternalSession({
|
|
641
641
|
accessToken,
|
|
642
642
|
refreshToken,
|
|
643
643
|
refreshAccessTokenCallback: async () => null
|
|
@@ -716,7 +716,7 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
716
716
|
await Promise.all([app._serverTeamsCache.refreshWhere(() => true), app._serverUsersCache.refreshWhere(() => true)]);
|
|
717
717
|
},
|
|
718
718
|
async listUsers() {
|
|
719
|
-
return
|
|
719
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverTeamMemberProfilesCache.getOrWait([crud.id], "write-only")).map((u) => app._serverTeamUserFromCrud(u));
|
|
720
720
|
},
|
|
721
721
|
async addUser(userId) {
|
|
722
722
|
await app._interface.addServerUserToTeam({
|
|
@@ -741,10 +741,10 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
741
741
|
await app._serverTeamInvitationsCache.refresh([crud.id]);
|
|
742
742
|
},
|
|
743
743
|
async listInvitations() {
|
|
744
|
-
return
|
|
744
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverTeamInvitationsCache.getOrWait([crud.id], "write-only")).map((crud) => app._serverSentTeamInvitationFromCrud(crud));
|
|
745
745
|
},
|
|
746
746
|
async listApiKeys() {
|
|
747
|
-
return
|
|
747
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await app._serverTeamApiKeysCache.getOrWait([crud.id], "write-only")).map((apiKey) => app._serverApiKeyFromCrud(apiKey));
|
|
748
748
|
},
|
|
749
749
|
async createApiKey(options) {
|
|
750
750
|
const result = await app._interface.createProjectApiKey(await (0, ______api_keys_index_js.apiKeyCreationOptionsToCrud)("team", crud.id, options), null, "server");
|
|
@@ -813,18 +813,18 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
813
813
|
else await app._serverCustomItemsCache.refresh([customer.id, crud.id]);
|
|
814
814
|
return true;
|
|
815
815
|
} catch (error) {
|
|
816
|
-
if (error instanceof
|
|
816
|
+
if (error instanceof _hexclave_shared.KnownErrors.ItemQuantityInsufficientAmount) return false;
|
|
817
817
|
throw error;
|
|
818
818
|
}
|
|
819
819
|
}
|
|
820
820
|
};
|
|
821
821
|
}
|
|
822
822
|
async _getUserApiKey(options) {
|
|
823
|
-
const crud =
|
|
823
|
+
const crud = _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverCheckApiKeyCache.getOrWait(["user", options.apiKey], "write-only"));
|
|
824
824
|
return crud ? this._serverApiKeyFromCrud(crud) : null;
|
|
825
825
|
}
|
|
826
826
|
async _getTeamApiKey(options) {
|
|
827
|
-
const crud =
|
|
827
|
+
const crud = _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverCheckApiKeyCache.getOrWait(["team", options.apiKey], "write-only"));
|
|
828
828
|
return crud ? this._serverApiKeyFromCrud(crud) : null;
|
|
829
829
|
}
|
|
830
830
|
async _getUserByApiKey(apiKey) {
|
|
@@ -858,7 +858,7 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
858
858
|
if (options?.or === "anonymous" && options.includeRestricted === false) throw new Error("Cannot use { or: 'anonymous' } with { includeRestricted: false }. Anonymous users implicitly include restricted users.");
|
|
859
859
|
this._ensurePersistentTokenStore(options?.tokenStore);
|
|
860
860
|
const session = await this._getSession(options?.tokenStore);
|
|
861
|
-
let crud =
|
|
861
|
+
let crud = _hexclave_shared_dist_utils_results.Result.orThrow(await this._currentServerUserCache.getOrWait([session], "write-only"));
|
|
862
862
|
const includeAnonymous = options?.or === "anonymous" || options?.or === "anonymous-if-exists[deprecated]";
|
|
863
863
|
const includeRestricted = options?.includeRestricted === true || includeAnonymous;
|
|
864
864
|
if (crud === null || crud.is_anonymous && !includeAnonymous || crud.is_restricted && !includeRestricted) switch (options?.or) {
|
|
@@ -873,7 +873,7 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
873
873
|
tokenStore: tokens,
|
|
874
874
|
or: "anonymous-if-exists[deprecated]",
|
|
875
875
|
includeRestricted: true
|
|
876
|
-
}) ?? (0,
|
|
876
|
+
}) ?? (0, _hexclave_shared_dist_utils_errors.throwErr)("Something went wrong while signing up anonymously");
|
|
877
877
|
}
|
|
878
878
|
case void 0:
|
|
879
879
|
case "anonymous-if-exists[deprecated]":
|
|
@@ -887,11 +887,11 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
887
887
|
return await this.getUser();
|
|
888
888
|
}
|
|
889
889
|
async getServerUserById(userId) {
|
|
890
|
-
const crud =
|
|
890
|
+
const crud = _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverUserCache.getOrWait([userId], "write-only"));
|
|
891
891
|
return crud && this._serverUserFromCrud(crud);
|
|
892
892
|
}
|
|
893
893
|
async listUsers(options) {
|
|
894
|
-
const crud =
|
|
894
|
+
const crud = _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverUsersCache.getOrWait([
|
|
895
895
|
options?.cursor,
|
|
896
896
|
options?.limit,
|
|
897
897
|
options?.orderBy,
|
|
@@ -925,19 +925,19 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
925
925
|
}
|
|
926
926
|
async getItem(options) {
|
|
927
927
|
if ("userId" in options) {
|
|
928
|
-
const result =
|
|
928
|
+
const result = _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverUserItemsCache.getOrWait([options.userId, options.itemId], "write-only"));
|
|
929
929
|
return this._serverItemFromCrud({
|
|
930
930
|
type: "user",
|
|
931
931
|
id: options.userId
|
|
932
932
|
}, result);
|
|
933
933
|
} else if ("teamId" in options) {
|
|
934
|
-
const result =
|
|
934
|
+
const result = _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverTeamItemsCache.getOrWait([options.teamId, options.itemId], "write-only"));
|
|
935
935
|
return this._serverItemFromCrud({
|
|
936
936
|
type: "team",
|
|
937
937
|
id: options.teamId
|
|
938
938
|
}, result);
|
|
939
939
|
} else {
|
|
940
|
-
const result =
|
|
940
|
+
const result = _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverCustomItemsCache.getOrWait([options.customCustomerId, options.itemId], "write-only"));
|
|
941
941
|
return this._serverItemFromCrud({
|
|
942
942
|
type: "custom",
|
|
943
943
|
id: options.customCustomerId
|
|
@@ -946,21 +946,21 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
946
946
|
}
|
|
947
947
|
async listProducts(options) {
|
|
948
948
|
if ("userId" in options) {
|
|
949
|
-
const response =
|
|
949
|
+
const response = _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverUserProductsCache.getOrWait([
|
|
950
950
|
options.userId,
|
|
951
951
|
options.cursor ?? null,
|
|
952
952
|
options.limit ?? null
|
|
953
953
|
], "write-only"));
|
|
954
954
|
return this._customerProductsFromResponse(response);
|
|
955
955
|
} else if ("teamId" in options) {
|
|
956
|
-
const response =
|
|
956
|
+
const response = _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverTeamProductsCache.getOrWait([
|
|
957
957
|
options.teamId,
|
|
958
958
|
options.cursor ?? null,
|
|
959
959
|
options.limit ?? null
|
|
960
960
|
], "write-only"));
|
|
961
961
|
return this._customerProductsFromResponse(response);
|
|
962
962
|
}
|
|
963
|
-
const response =
|
|
963
|
+
const response = _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverCustomProductsCache.getOrWait([
|
|
964
964
|
options.customCustomerId,
|
|
965
965
|
options.cursor ?? null,
|
|
966
966
|
options.limit ?? null
|
|
@@ -999,7 +999,7 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
999
999
|
return this._serverTeamFromCrud(team);
|
|
1000
1000
|
}
|
|
1001
1001
|
async listTeams(options) {
|
|
1002
|
-
const crud =
|
|
1002
|
+
const crud = _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverTeamsCache.getOrWait([
|
|
1003
1003
|
void 0,
|
|
1004
1004
|
options?.orderBy,
|
|
1005
1005
|
options?.desc,
|
|
@@ -1013,7 +1013,7 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
1013
1013
|
}
|
|
1014
1014
|
async listTeamMemberPermissions(teamId, options) {
|
|
1015
1015
|
const recursive = options?.recursive ?? false;
|
|
1016
|
-
return
|
|
1016
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverAllTeamMemberPermissionsCache.getOrWait([teamId, recursive], "write-only")).map((r) => ({
|
|
1017
1017
|
userId: r.user_id,
|
|
1018
1018
|
permissionId: r.id
|
|
1019
1019
|
}));
|
|
@@ -1037,7 +1037,7 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
1037
1037
|
},
|
|
1038
1038
|
getValue: async (key, options) => {
|
|
1039
1039
|
validateOptions(options);
|
|
1040
|
-
return
|
|
1040
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await this._serverDataVaultStoreValueCache.getOrWait([
|
|
1041
1041
|
id,
|
|
1042
1042
|
key,
|
|
1043
1043
|
options.secret
|
|
@@ -1053,7 +1053,7 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
1053
1053
|
await this._emailDeliveryInfoCache.refresh([]);
|
|
1054
1054
|
}
|
|
1055
1055
|
async getEmailDeliveryStats() {
|
|
1056
|
-
return
|
|
1056
|
+
return _hexclave_shared_dist_utils_results.Result.orThrow(await this._emailDeliveryInfoCache.getOrWait([], "write-only"));
|
|
1057
1057
|
}
|
|
1058
1058
|
async activateEmailCapacityBoost() {
|
|
1059
1059
|
await this._interface.activateEmailCapacityBoost();
|
|
@@ -1083,9 +1083,9 @@ var _StackServerAppImplIncomplete = class extends __client_app_impl_js._StackCli
|
|
|
1083
1083
|
allow_connected_accounts: options.allowConnectedAccounts
|
|
1084
1084
|
});
|
|
1085
1085
|
await Promise.all([this._serverOAuthProvidersCache.refresh([options.userId]), this._serverUserConnectedAccountsCache.refresh([options.userId])]);
|
|
1086
|
-
return
|
|
1086
|
+
return _hexclave_shared_dist_utils_results.Result.ok(this._serverOAuthProviderFromCrud(crud));
|
|
1087
1087
|
} catch (error) {
|
|
1088
|
-
if (
|
|
1088
|
+
if (_hexclave_shared.KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn.isInstance(error)) return _hexclave_shared_dist_utils_results.Result.error(error);
|
|
1089
1089
|
throw error;
|
|
1090
1090
|
}
|
|
1091
1091
|
}
|