@stackframe/stack 2.8.39 → 2.8.41
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 +19 -0
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/integrations/convex.js +18 -0
- package/dist/esm/integrations/convex.js.map +1 -0
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js +82 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.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/server-app-impl.js +34 -0
- package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
- 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/index.js.map +1 -1
- package/dist/esm/lib/stack-app/users/index.js.map +1 -1
- package/dist/esm/providers/stack-provider-client.js.map +1 -1
- package/dist/index.d.mts +96 -19
- package/dist/index.d.ts +96 -19
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/convex.js +43 -0
- package/dist/integrations/convex.js.map +1 -0
- package/dist/lib/stack-app/apps/implementations/client-app-impl.js +82 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/common.js +1 -1
- package/dist/lib/stack-app/apps/implementations/common.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/server-app-impl.js +34 -0
- package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -1
- package/dist/lib/stack-app/apps/interfaces/client-app.js.map +1 -1
- 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/index.js.map +1 -1
- package/dist/lib/stack-app/users/index.js.map +1 -1
- package/dist/providers/stack-provider-client.js.map +1 -1
- package/package.json +6 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @stackframe/stack
|
|
2
2
|
|
|
3
|
+
## 2.8.41
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
- @stackframe/stack-shared@2.8.41
|
|
9
|
+
- @stackframe/stack-ui@2.8.41
|
|
10
|
+
- @stackframe/stack-sc@2.8.41
|
|
11
|
+
|
|
12
|
+
## 2.8.40
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Various changes
|
|
17
|
+
- Updated dependencies
|
|
18
|
+
- @stackframe/stack-shared@2.8.40
|
|
19
|
+
- @stackframe/stack-ui@2.8.40
|
|
20
|
+
- @stackframe/stack-sc@2.8.40
|
|
21
|
+
|
|
3
22
|
## 2.8.39
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
package/dist/esm/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
export * from "./lib/stack-app/index.js";
|
|
3
|
+
import { getConvexProvidersConfig } from "./integrations/convex.js";
|
|
3
4
|
import { default as default2 } from "./components-page/stack-handler.js";
|
|
4
5
|
import { useStackApp, useUser } from "./lib/hooks.js";
|
|
5
6
|
import { default as default3 } from "./providers/stack-provider.js";
|
|
6
7
|
import { StackTheme } from "./providers/theme-provider.js";
|
|
7
8
|
import { AccountSettings } from "./components-page/account-settings.js";
|
|
8
9
|
import { AuthPage } from "./components-page/auth-page.js";
|
|
10
|
+
import { CliAuthConfirmation } from "./components-page/cli-auth-confirm.js";
|
|
9
11
|
import { EmailVerification } from "./components-page/email-verification.js";
|
|
10
12
|
import { ForgotPassword } from "./components-page/forgot-password.js";
|
|
11
13
|
import { PasswordReset } from "./components-page/password-reset.js";
|
|
@@ -21,7 +23,6 @@ import { OAuthButtonGroup } from "./components/oauth-button-group.js";
|
|
|
21
23
|
import { SelectedTeamSwitcher } from "./components/selected-team-switcher.js";
|
|
22
24
|
import { TeamSwitcher } from "./components/team-switcher.js";
|
|
23
25
|
import { UserButton } from "./components/user-button.js";
|
|
24
|
-
import { CliAuthConfirmation } from "./components-page/cli-auth-confirm.js";
|
|
25
26
|
export {
|
|
26
27
|
AccountSettings,
|
|
27
28
|
AuthPage,
|
|
@@ -44,6 +45,7 @@ export {
|
|
|
44
45
|
TeamSwitcher,
|
|
45
46
|
UserAvatar,
|
|
46
47
|
UserButton,
|
|
48
|
+
getConvexProvidersConfig,
|
|
47
49
|
useStackApp,
|
|
48
50
|
useUser
|
|
49
51
|
};
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nexport * from './lib/stack-app';\n\nexport { default as StackHandler } from \"./components-page/stack-handler\";\nexport { useStackApp, useUser } from \"./lib/hooks\";\nexport { default as StackProvider } from \"./providers/stack-provider\";\nexport { StackTheme } from './providers/theme-provider';\n\nexport { AccountSettings } from \"./components-page/account-settings\";\nexport { AuthPage } from \"./components-page/auth-page\";\nexport { EmailVerification } from \"./components-page/email-verification\";\nexport { ForgotPassword } from \"./components-page/forgot-password\";\nexport { PasswordReset } from \"./components-page/password-reset\";\nexport { SignIn } from \"./components-page/sign-in\";\nexport { SignUp } from \"./components-page/sign-up\";\nexport { CredentialSignIn as CredentialSignIn } from \"./components/credential-sign-in\";\nexport { CredentialSignUp as CredentialSignUp } from \"./components/credential-sign-up\";\nexport { UserAvatar } from \"./components/elements/user-avatar\";\nexport { MagicLinkSignIn as MagicLinkSignIn } from \"./components/magic-link-sign-in\";\nexport { MessageCard } from \"./components/message-cards/message-card\";\nexport { OAuthButton } from \"./components/oauth-button\";\nexport { OAuthButtonGroup } from \"./components/oauth-button-group\";\nexport { SelectedTeamSwitcher } from \"./components/selected-team-switcher\";\nexport { TeamSwitcher } from \"./components/team-switcher\";\nexport { UserButton } from \"./components/user-button\";\
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nexport * from './lib/stack-app';\n\nexport { getConvexProvidersConfig } from \"./integrations/convex\";\n\nexport { default as StackHandler } from \"./components-page/stack-handler\";\nexport { useStackApp, useUser } from \"./lib/hooks\";\nexport { default as StackProvider } from \"./providers/stack-provider\";\nexport { StackTheme } from './providers/theme-provider';\n\nexport { AccountSettings } from \"./components-page/account-settings\";\nexport { AuthPage } from \"./components-page/auth-page\";\nexport { CliAuthConfirmation } from \"./components-page/cli-auth-confirm\";\nexport { EmailVerification } from \"./components-page/email-verification\";\nexport { ForgotPassword } from \"./components-page/forgot-password\";\nexport { PasswordReset } from \"./components-page/password-reset\";\nexport { SignIn } from \"./components-page/sign-in\";\nexport { SignUp } from \"./components-page/sign-up\";\nexport { CredentialSignIn as CredentialSignIn } from \"./components/credential-sign-in\";\nexport { CredentialSignUp as CredentialSignUp } from \"./components/credential-sign-up\";\nexport { UserAvatar } from \"./components/elements/user-avatar\";\nexport { MagicLinkSignIn as MagicLinkSignIn } from \"./components/magic-link-sign-in\";\nexport { MessageCard } from \"./components/message-cards/message-card\";\nexport { OAuthButton } from \"./components/oauth-button\";\nexport { OAuthButtonGroup } from \"./components/oauth-button-group\";\nexport { SelectedTeamSwitcher } from \"./components/selected-team-switcher\";\nexport { TeamSwitcher } from \"./components/team-switcher\";\nexport { UserButton } from \"./components/user-button\";\n"],"mappings":";AAIA,cAAc;AAEd,SAAS,gCAAgC;AAEzC,SAAoB,WAAXA,gBAA+B;AACxC,SAAS,aAAa,eAAe;AACrC,SAAoB,WAAXA,gBAAgC;AACzC,SAAS,kBAAkB;AAE3B,SAAS,uBAAuB;AAChC,SAAS,gBAAgB;AACzB,SAAS,2BAA2B;AACpC,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,cAAc;AACvB,SAAS,cAAc;AACvB,SAA6B,wBAAwB;AACrD,SAA6B,wBAAwB;AACrD,SAAS,kBAAkB;AAC3B,SAA4B,uBAAuB;AACnD,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;","names":["default"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// src/integrations/convex.ts
|
|
2
|
+
import { urlString } from "@stackframe/stack-shared/dist/utils/urls";
|
|
3
|
+
import { getDefaultProjectId } from "../lib/stack-app/apps/implementations/common.js";
|
|
4
|
+
function getConvexProvidersConfig(options) {
|
|
5
|
+
const projectId = options.projectId ?? getDefaultProjectId();
|
|
6
|
+
return [
|
|
7
|
+
{
|
|
8
|
+
type: "customJwt",
|
|
9
|
+
issuer: urlString`https://api.stack-auth.com/api/v1/projects/${projectId}`,
|
|
10
|
+
jwks: urlString`https://api.stack-auth.com/api/v1/projects/${projectId}/.well-known/jwks.json?include_anonymous=true`,
|
|
11
|
+
algorithm: "ES256"
|
|
12
|
+
}
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
getConvexProvidersConfig
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=convex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/integrations/convex.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { urlString } from \"@stackframe/stack-shared/dist/utils/urls\";\nimport { getDefaultProjectId } from \"../lib/stack-app/apps/implementations/common\";\n\nexport function getConvexProvidersConfig(options: {\n projectId?: string,\n}) {\n const projectId = options.projectId ?? getDefaultProjectId();\n return [\n {\n type: \"customJwt\",\n issuer: urlString`https://api.stack-auth.com/api/v1/projects/${projectId}`,\n jwks: urlString`https://api.stack-auth.com/api/v1/projects/${projectId}/.well-known/jwks.json?include_anonymous=true`,\n algorithm: \"ES256\",\n },\n ];\n}\n"],"mappings":";AAIA,SAAS,iBAAiB;AAC1B,SAAS,2BAA2B;AAE7B,SAAS,yBAAyB,SAEtC;AACD,QAAM,YAAY,QAAQ,aAAa,oBAAoB;AAC3D,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,QAAQ,uDAAuD,SAAS;AAAA,MACxE,MAAM,uDAAuD,SAAS;AAAA,MACtE,WAAW;AAAA,IACb;AAAA,EACF;AACF;","names":[]}
|
|
@@ -148,6 +148,9 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
|
|
|
148
148
|
return await this._interface.getItem({ customCustomerId, itemId }, session);
|
|
149
149
|
}
|
|
150
150
|
);
|
|
151
|
+
this._convexPartialUserCache = createCache(
|
|
152
|
+
async ([ctx]) => await this._getPartialUserFromConvex(ctx)
|
|
153
|
+
);
|
|
151
154
|
this._anonymousSignUpInProgress = null;
|
|
152
155
|
this._memoryTokenStore = createEmptyTokenStore();
|
|
153
156
|
this._nextServerCookiesTokenStores = /* @__PURE__ */ new WeakMap();
|
|
@@ -437,7 +440,8 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
|
|
|
437
440
|
}
|
|
438
441
|
async _getSession(overrideTokenStoreInit) {
|
|
439
442
|
const tokenStore = this._getOrCreateTokenStore(await this._createCookieHelper(), overrideTokenStoreInit);
|
|
440
|
-
|
|
443
|
+
const session = this._getSessionFromTokenStore(tokenStore);
|
|
444
|
+
return session;
|
|
441
445
|
}
|
|
442
446
|
_useSession(overrideTokenStoreInit) {
|
|
443
447
|
const tokenStore = this._useTokenStore(overrideTokenStoreInit);
|
|
@@ -1328,6 +1332,83 @@ var __StackClientAppImplIncomplete = class __StackClientAppImplIncomplete {
|
|
|
1328
1332
|
return crud && this._currentUserFromCrud(crud, session);
|
|
1329
1333
|
}, [crud, session, options?.or]);
|
|
1330
1334
|
}
|
|
1335
|
+
_getTokenPartialUserFromSession(session, options) {
|
|
1336
|
+
const accessToken = session.getAccessTokenIfNotExpiredYet(0);
|
|
1337
|
+
if (!accessToken) {
|
|
1338
|
+
return null;
|
|
1339
|
+
}
|
|
1340
|
+
const isAnonymous = accessToken.payload.is_anonymous;
|
|
1341
|
+
if (isAnonymous && options.or !== "anonymous") {
|
|
1342
|
+
return null;
|
|
1343
|
+
}
|
|
1344
|
+
return {
|
|
1345
|
+
id: accessToken.payload.sub,
|
|
1346
|
+
primaryEmail: accessToken.payload.email,
|
|
1347
|
+
displayName: accessToken.payload.name,
|
|
1348
|
+
primaryEmailVerified: accessToken.payload.email_verified,
|
|
1349
|
+
isAnonymous
|
|
1350
|
+
};
|
|
1351
|
+
}
|
|
1352
|
+
async _getPartialUserFromConvex(ctx) {
|
|
1353
|
+
const auth = await ctx.auth.getUserIdentity();
|
|
1354
|
+
if (!auth) {
|
|
1355
|
+
return null;
|
|
1356
|
+
}
|
|
1357
|
+
return {
|
|
1358
|
+
id: auth.subject,
|
|
1359
|
+
displayName: auth.name ?? null,
|
|
1360
|
+
primaryEmail: auth.email ?? null,
|
|
1361
|
+
primaryEmailVerified: auth.email_verified,
|
|
1362
|
+
isAnonymous: auth.is_anonymous
|
|
1363
|
+
};
|
|
1364
|
+
}
|
|
1365
|
+
async getPartialUser(options) {
|
|
1366
|
+
switch (options.from) {
|
|
1367
|
+
case "token": {
|
|
1368
|
+
this._ensurePersistentTokenStore(options.tokenStore ?? this._tokenStoreInit);
|
|
1369
|
+
const session = await this._getSession(options.tokenStore);
|
|
1370
|
+
return this._getTokenPartialUserFromSession(session, options);
|
|
1371
|
+
}
|
|
1372
|
+
case "convex": {
|
|
1373
|
+
return await this._getPartialUserFromConvex(options.ctx);
|
|
1374
|
+
}
|
|
1375
|
+
default: {
|
|
1376
|
+
throw new Error(`Invalid 'from' option: ${options.from}`);
|
|
1377
|
+
}
|
|
1378
|
+
}
|
|
1379
|
+
}
|
|
1380
|
+
usePartialUser(options) {
|
|
1381
|
+
switch (options.from) {
|
|
1382
|
+
case "token": {
|
|
1383
|
+
this._ensurePersistentTokenStore(options.tokenStore ?? this._tokenStoreInit);
|
|
1384
|
+
const session = this._useSession(options.tokenStore);
|
|
1385
|
+
return this._getTokenPartialUserFromSession(session, options);
|
|
1386
|
+
}
|
|
1387
|
+
case "convex": {
|
|
1388
|
+
const result = useAsyncCache(this._convexPartialUserCache, [options.ctx], "usePartialUser(convex)");
|
|
1389
|
+
return result;
|
|
1390
|
+
}
|
|
1391
|
+
default: {
|
|
1392
|
+
throw new Error(`Invalid 'from' option: ${options.from}`);
|
|
1393
|
+
}
|
|
1394
|
+
}
|
|
1395
|
+
}
|
|
1396
|
+
getConvexClientAuth(options) {
|
|
1397
|
+
return async (args) => {
|
|
1398
|
+
const session = await this._getSession(options.tokenStore);
|
|
1399
|
+
if (!args.forceRefreshToken) {
|
|
1400
|
+
const tokens2 = await session.getOrFetchLikelyValidTokens(2e4);
|
|
1401
|
+
return tokens2?.accessToken.token ?? null;
|
|
1402
|
+
}
|
|
1403
|
+
const tokens = await session.fetchNewTokens();
|
|
1404
|
+
return tokens?.accessToken.token ?? null;
|
|
1405
|
+
};
|
|
1406
|
+
}
|
|
1407
|
+
async getConvexHttpClientAuth(options) {
|
|
1408
|
+
const session = await this._getSession(options.tokenStore);
|
|
1409
|
+
const tokens = await session.getOrFetchLikelyValidTokens(2e4);
|
|
1410
|
+
return tokens?.accessToken.token ?? throwErr("No access token available");
|
|
1411
|
+
}
|
|
1331
1412
|
async _updateClientUser(update, session) {
|
|
1332
1413
|
const res = await this._interface.updateClientUser(userUpdateOptionsToCrud(update), session);
|
|
1333
1414
|
await this._refreshUser(session);
|