@stackframe/js 2.7.20 → 2.7.22

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.
Files changed (162) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/admin-app-impl-Co__PI-r.d.ts +357 -0
  3. package/dist/admin-app-impl-s-tPjfRz.d.mts +357 -0
  4. package/dist/esm/index.js.map +1 -1
  5. package/dist/esm/lib/auth.js.map +1 -1
  6. package/dist/esm/lib/cookie.js +5 -8
  7. package/dist/esm/lib/cookie.js.map +1 -1
  8. package/dist/esm/lib/stack-app/api-keys/index.js +14 -0
  9. package/dist/esm/lib/stack-app/api-keys/index.js.map +1 -0
  10. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js +257 -0
  11. package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -0
  12. package/dist/esm/lib/{stack-app.js → stack-app/apps/implementations/client-app-impl.js} +36 -952
  13. package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -0
  14. package/dist/esm/lib/stack-app/apps/implementations/common.js +107 -0
  15. package/dist/esm/lib/stack-app/apps/implementations/common.js.map +1 -0
  16. package/dist/esm/lib/stack-app/apps/implementations/index.js +24 -0
  17. package/dist/esm/lib/stack-app/apps/implementations/index.js.map +1 -0
  18. package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js +430 -0
  19. package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -0
  20. package/dist/esm/lib/stack-app/apps/index.js +16 -0
  21. package/dist/esm/lib/stack-app/apps/index.js.map +1 -0
  22. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js +7 -0
  23. package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js.map +1 -0
  24. package/dist/esm/lib/stack-app/apps/interfaces/client-app.js +7 -0
  25. package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +1 -0
  26. package/dist/esm/lib/stack-app/apps/interfaces/server-app.js +7 -0
  27. package/dist/esm/lib/stack-app/apps/interfaces/server-app.js.map +1 -0
  28. package/dist/esm/lib/stack-app/common.js +6 -0
  29. package/dist/esm/lib/stack-app/common.js.map +1 -0
  30. package/dist/esm/lib/stack-app/connected-accounts/index.js +1 -0
  31. package/dist/esm/lib/stack-app/contact-channels/index.js +39 -0
  32. package/dist/esm/lib/stack-app/contact-channels/index.js.map +1 -0
  33. package/dist/esm/lib/stack-app/email-templates/index.js +11 -0
  34. package/dist/esm/lib/stack-app/email-templates/index.js.map +1 -0
  35. package/dist/esm/lib/stack-app/index.js +16 -0
  36. package/dist/esm/lib/stack-app/index.js.map +1 -0
  37. package/dist/esm/lib/stack-app/permissions/index.js +20 -0
  38. package/dist/esm/lib/stack-app/permissions/index.js.map +1 -0
  39. package/dist/esm/lib/stack-app/project-configs/index.js +1 -0
  40. package/dist/esm/lib/stack-app/projects/index.js +57 -0
  41. package/dist/esm/lib/stack-app/projects/index.js.map +1 -0
  42. package/dist/esm/lib/stack-app/teams/index.js +38 -0
  43. package/dist/esm/lib/stack-app/teams/index.js.map +1 -0
  44. package/dist/esm/lib/stack-app/users/index.js +47 -0
  45. package/dist/esm/lib/stack-app/users/index.js.map +1 -0
  46. package/dist/esm/utils/url.js +4 -13
  47. package/dist/esm/utils/url.js.map +1 -1
  48. package/dist/{lib/stack-app.d.mts → index-COYzPcGI.d.mts} +128 -338
  49. package/dist/{lib/stack-app.d.ts → index-CueS5Qbi.d.ts} +128 -338
  50. package/dist/index.d.mts +17 -5
  51. package/dist/index.d.ts +17 -5
  52. package/dist/index.js.map +1 -1
  53. package/dist/lib/auth.js.map +1 -1
  54. package/dist/lib/cookie.d.mts +2 -2
  55. package/dist/lib/cookie.d.ts +2 -2
  56. package/dist/lib/cookie.js +6 -9
  57. package/dist/lib/cookie.js.map +1 -1
  58. package/dist/lib/stack-app/api-keys/index.d.mts +40 -0
  59. package/dist/lib/stack-app/api-keys/index.d.ts +40 -0
  60. package/dist/lib/stack-app/api-keys/index.js +39 -0
  61. package/dist/lib/stack-app/api-keys/index.js.map +1 -0
  62. package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.mts +30 -0
  63. package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts +30 -0
  64. package/dist/lib/stack-app/apps/implementations/admin-app-impl.js +282 -0
  65. package/dist/lib/stack-app/apps/implementations/admin-app-impl.js.map +1 -0
  66. package/dist/lib/stack-app/apps/implementations/client-app-impl.d.mts +30 -0
  67. package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts +30 -0
  68. package/dist/lib/{stack-app.js → stack-app/apps/implementations/client-app-impl.js} +63 -984
  69. package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -0
  70. package/dist/lib/stack-app/apps/implementations/common.d.mts +44 -0
  71. package/dist/lib/stack-app/apps/implementations/common.d.ts +44 -0
  72. package/dist/lib/stack-app/apps/implementations/common.js +141 -0
  73. package/dist/lib/stack-app/apps/implementations/common.js.map +1 -0
  74. package/dist/lib/stack-app/apps/implementations/index.d.mts +36 -0
  75. package/dist/lib/stack-app/apps/implementations/index.d.ts +36 -0
  76. package/dist/lib/stack-app/apps/implementations/index.js +51 -0
  77. package/dist/lib/stack-app/apps/implementations/index.js.map +1 -0
  78. package/dist/lib/stack-app/apps/implementations/server-app-impl.d.mts +30 -0
  79. package/dist/lib/stack-app/apps/implementations/server-app-impl.d.ts +30 -0
  80. package/dist/lib/stack-app/apps/implementations/server-app-impl.js +455 -0
  81. package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +1 -0
  82. package/dist/lib/stack-app/apps/index.d.mts +23 -0
  83. package/dist/lib/stack-app/apps/index.d.ts +23 -0
  84. package/dist/lib/stack-app/apps/index.js +37 -0
  85. package/dist/lib/stack-app/apps/index.js.map +1 -0
  86. package/dist/lib/stack-app/apps/interfaces/admin-app.d.mts +23 -0
  87. package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts +23 -0
  88. package/dist/lib/stack-app/apps/interfaces/admin-app.js +32 -0
  89. package/dist/lib/stack-app/apps/interfaces/admin-app.js.map +1 -0
  90. package/dist/lib/stack-app/apps/interfaces/client-app.d.mts +23 -0
  91. package/dist/lib/stack-app/apps/interfaces/client-app.d.ts +23 -0
  92. package/dist/lib/stack-app/apps/interfaces/client-app.js +32 -0
  93. package/dist/lib/stack-app/apps/interfaces/client-app.js.map +1 -0
  94. package/dist/lib/stack-app/apps/interfaces/server-app.d.mts +23 -0
  95. package/dist/lib/stack-app/apps/interfaces/server-app.d.ts +23 -0
  96. package/dist/lib/stack-app/apps/interfaces/server-app.js +32 -0
  97. package/dist/lib/stack-app/apps/interfaces/server-app.js.map +1 -0
  98. package/dist/lib/stack-app/common.d.mts +61 -0
  99. package/dist/lib/stack-app/common.d.ts +61 -0
  100. package/dist/lib/stack-app/common.js +31 -0
  101. package/dist/lib/stack-app/common.js.map +1 -0
  102. package/dist/lib/stack-app/connected-accounts/index.d.mts +10 -0
  103. package/dist/lib/stack-app/connected-accounts/index.d.ts +10 -0
  104. package/dist/lib/stack-app/connected-accounts/index.js +19 -0
  105. package/dist/lib/stack-app/connected-accounts/index.js.map +1 -0
  106. package/dist/lib/stack-app/contact-channels/index.d.mts +38 -0
  107. package/dist/lib/stack-app/contact-channels/index.d.ts +38 -0
  108. package/dist/lib/stack-app/contact-channels/index.js +67 -0
  109. package/dist/lib/stack-app/contact-channels/index.js.map +1 -0
  110. package/dist/lib/stack-app/email-templates/index.d.mts +15 -0
  111. package/dist/lib/stack-app/email-templates/index.d.ts +15 -0
  112. package/dist/lib/stack-app/email-templates/index.js +36 -0
  113. package/dist/lib/stack-app/email-templates/index.js.map +1 -0
  114. package/dist/lib/stack-app/index.d.mts +23 -0
  115. package/dist/lib/stack-app/index.d.ts +23 -0
  116. package/dist/lib/stack-app/index.js +38 -0
  117. package/dist/lib/stack-app/index.js.map +1 -0
  118. package/dist/lib/stack-app/permissions/index.d.mts +21 -0
  119. package/dist/lib/stack-app/permissions/index.d.ts +21 -0
  120. package/dist/lib/stack-app/permissions/index.js +46 -0
  121. package/dist/lib/stack-app/permissions/index.js.map +1 -0
  122. package/dist/lib/stack-app/project-configs/index.d.mts +82 -0
  123. package/dist/lib/stack-app/project-configs/index.d.ts +82 -0
  124. package/dist/lib/stack-app/project-configs/index.js +19 -0
  125. package/dist/lib/stack-app/project-configs/index.js.map +1 -0
  126. package/dist/lib/stack-app/projects/index.d.mts +23 -0
  127. package/dist/lib/stack-app/projects/index.d.ts +23 -0
  128. package/dist/lib/stack-app/projects/index.js +83 -0
  129. package/dist/lib/stack-app/projects/index.js.map +1 -0
  130. package/dist/lib/stack-app/teams/index.d.mts +23 -0
  131. package/dist/lib/stack-app/teams/index.d.ts +23 -0
  132. package/dist/lib/stack-app/teams/index.js +66 -0
  133. package/dist/lib/stack-app/teams/index.js.map +1 -0
  134. package/dist/lib/stack-app/users/index.d.mts +23 -0
  135. package/dist/lib/stack-app/users/index.d.ts +23 -0
  136. package/dist/lib/stack-app/users/index.js +74 -0
  137. package/dist/lib/stack-app/users/index.js.map +1 -0
  138. package/dist/utils/url.d.mts +1 -2
  139. package/dist/utils/url.d.ts +1 -2
  140. package/dist/utils/url.js +4 -14
  141. package/dist/utils/url.js.map +1 -1
  142. package/package.json +2 -2
  143. package/dist/esm/generated/global-css.js +0 -6
  144. package/dist/esm/generated/global-css.js.map +0 -1
  145. package/dist/esm/generated/quetzal-translations.js +0 -2397
  146. package/dist/esm/generated/quetzal-translations.js.map +0 -1
  147. package/dist/esm/global.d.js +0 -1
  148. package/dist/esm/lib/stack-app.js.map +0 -1
  149. package/dist/generated/global-css.d.mts +0 -3
  150. package/dist/generated/global-css.d.ts +0 -3
  151. package/dist/generated/global-css.js +0 -31
  152. package/dist/generated/global-css.js.map +0 -1
  153. package/dist/generated/quetzal-translations.d.mts +0 -4
  154. package/dist/generated/quetzal-translations.d.ts +0 -4
  155. package/dist/generated/quetzal-translations.js +0 -2423
  156. package/dist/generated/quetzal-translations.js.map +0 -1
  157. package/dist/global.d.d.mts +0 -2
  158. package/dist/global.d.d.ts +0 -2
  159. package/dist/global.d.js +0 -2
  160. package/dist/lib/stack-app.js.map +0 -1
  161. /package/dist/esm/{global.d.js.map → lib/stack-app/connected-accounts/index.js.map} +0 -0
  162. /package/dist/{global.d.js.map → esm/lib/stack-app/project-configs/index.js.map} +0 -0
@@ -0,0 +1,39 @@
1
+ // src/lib/stack-app/contact-channels/index.ts
2
+ function contactChannelCreateOptionsToCrud(userId, options) {
3
+ return {
4
+ value: options.value,
5
+ type: options.type,
6
+ used_for_auth: options.usedForAuth,
7
+ user_id: userId
8
+ };
9
+ }
10
+ function contactChannelUpdateOptionsToCrud(options) {
11
+ return {
12
+ value: options.value,
13
+ used_for_auth: options.usedForAuth,
14
+ is_primary: options.isPrimary
15
+ };
16
+ }
17
+ function serverContactChannelUpdateOptionsToCrud(options) {
18
+ return {
19
+ value: options.value,
20
+ is_verified: options.isVerified,
21
+ used_for_auth: options.usedForAuth
22
+ };
23
+ }
24
+ function serverContactChannelCreateOptionsToCrud(userId, options) {
25
+ return {
26
+ type: options.type,
27
+ value: options.value,
28
+ is_verified: options.isVerified,
29
+ user_id: userId,
30
+ used_for_auth: options.usedForAuth
31
+ };
32
+ }
33
+ export {
34
+ contactChannelCreateOptionsToCrud,
35
+ contactChannelUpdateOptionsToCrud,
36
+ serverContactChannelCreateOptionsToCrud,
37
+ serverContactChannelUpdateOptionsToCrud
38
+ };
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/lib/stack-app/contact-channels/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { ContactChannelsCrud } from \"@stackframe/stack-shared/dist/interface/crud/contact-channels\";\n\n\nexport type ContactChannel = {\n id: string,\n value: string,\n type: 'email',\n isPrimary: boolean,\n isVerified: boolean,\n usedForAuth: boolean,\n\n sendVerificationEmail(): Promise<void>,\n update(data: ContactChannelUpdateOptions): Promise<void>,\n delete(): Promise<void>,\n}\n\nexport type ContactChannelCreateOptions = {\n value: string,\n type: 'email',\n usedForAuth: boolean,\n}\n\nexport function contactChannelCreateOptionsToCrud(userId: string, options: ContactChannelCreateOptions): ContactChannelsCrud[\"Client\"][\"Create\"] {\n return {\n value: options.value,\n type: options.type,\n used_for_auth: options.usedForAuth,\n user_id: userId,\n };\n}\n\nexport type ContactChannelUpdateOptions = {\n usedForAuth?: boolean,\n value?: string,\n isPrimary?: boolean,\n}\n\nexport function contactChannelUpdateOptionsToCrud(options: ContactChannelUpdateOptions): ContactChannelsCrud[\"Client\"][\"Update\"] {\n return {\n value: options.value,\n used_for_auth: options.usedForAuth,\n is_primary: options.isPrimary,\n };\n}\n\nexport type ServerContactChannel = ContactChannel & {\n update(data: ServerContactChannelUpdateOptions): Promise<void>,\n}\nexport type ServerContactChannelUpdateOptions = ContactChannelUpdateOptions & {\n isVerified?: boolean,\n}\n\nexport function serverContactChannelUpdateOptionsToCrud(options: ServerContactChannelUpdateOptions): ContactChannelsCrud[\"Server\"][\"Update\"] {\n return {\n value: options.value,\n is_verified: options.isVerified,\n used_for_auth: options.usedForAuth,\n };\n}\n\nexport type ServerContactChannelCreateOptions = ContactChannelCreateOptions & {\n isVerified?: boolean,\n}\nexport function serverContactChannelCreateOptionsToCrud(userId: string, options: ServerContactChannelCreateOptions): ContactChannelsCrud[\"Server\"][\"Create\"] {\n return {\n type: options.type,\n value: options.value,\n is_verified: options.isVerified,\n user_id: userId,\n used_for_auth: options.usedForAuth,\n };\n}\n"],"mappings":";AA0BO,SAAS,kCAAkC,QAAgB,SAA+E;AAC/I,SAAO;AAAA,IACL,OAAO,QAAQ;AAAA,IACf,MAAM,QAAQ;AAAA,IACd,eAAe,QAAQ;AAAA,IACvB,SAAS;AAAA,EACX;AACF;AAQO,SAAS,kCAAkC,SAA+E;AAC/H,SAAO;AAAA,IACL,OAAO,QAAQ;AAAA,IACf,eAAe,QAAQ;AAAA,IACvB,YAAY,QAAQ;AAAA,EACtB;AACF;AASO,SAAS,wCAAwC,SAAqF;AAC3I,SAAO;AAAA,IACL,OAAO,QAAQ;AAAA,IACf,aAAa,QAAQ;AAAA,IACrB,eAAe,QAAQ;AAAA,EACzB;AACF;AAKO,SAAS,wCAAwC,QAAgB,SAAqF;AAC3J,SAAO;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,OAAO,QAAQ;AAAA,IACf,aAAa,QAAQ;AAAA,IACrB,SAAS;AAAA,IACT,eAAe,QAAQ;AAAA,EACzB;AACF;","names":[]}
@@ -0,0 +1,11 @@
1
+ // src/lib/stack-app/email-templates/index.ts
2
+ function adminEmailTemplateUpdateOptionsToCrud(options) {
3
+ return {
4
+ subject: options.subject,
5
+ content: options.content
6
+ };
7
+ }
8
+ export {
9
+ adminEmailTemplateUpdateOptionsToCrud
10
+ };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/lib/stack-app/email-templates/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { EmailTemplateCrud, EmailTemplateType } from \"@stackframe/stack-shared/dist/interface/crud/email-templates\";\n\n\nexport type AdminEmailTemplate = {\n type: EmailTemplateType,\n subject: string,\n content: any,\n isDefault: boolean,\n}\n\nexport type AdminEmailTemplateUpdateOptions = {\n subject?: string,\n content?: any,\n};\nexport function adminEmailTemplateUpdateOptionsToCrud(options: AdminEmailTemplateUpdateOptions): EmailTemplateCrud['Admin']['Update'] {\n return {\n subject: options.subject,\n content: options.content,\n };\n}\n"],"mappings":";AAkBO,SAAS,sCAAsC,SAAgF;AACpI,SAAO;AAAA,IACL,SAAS,QAAQ;AAAA,IACjB,SAAS,QAAQ;AAAA,EACnB;AACF;","names":[]}
@@ -0,0 +1,16 @@
1
+ // src/lib/stack-app/index.ts
2
+ import {
3
+ StackAdminApp,
4
+ StackClientApp,
5
+ StackServerApp
6
+ } from "./apps";
7
+ import {
8
+ stackAppInternalsSymbol
9
+ } from "./common";
10
+ export {
11
+ StackAdminApp,
12
+ StackClientApp,
13
+ StackServerApp,
14
+ stackAppInternalsSymbol
15
+ };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/stack-app/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nexport {\n StackAdminApp, StackClientApp,\n StackServerApp\n} from \"./apps\";\nexport type {\n StackAdminAppConstructor,\n StackAdminAppConstructorOptions,\n StackClientAppConstructor,\n StackClientAppConstructorOptions,\n StackClientAppJson,\n StackServerAppConstructor,\n StackServerAppConstructorOptions\n} from \"./apps\";\n\nexport type {\n ProjectConfig\n} from \"./project-configs\";\n\nexport type {\n ApiKey,\n ApiKeyBase,\n ApiKeyBaseCrudRead,\n ApiKeyCreateOptions,\n ApiKeyFirstView\n} from \"./api-keys\";\n\nexport {\n stackAppInternalsSymbol\n} from \"./common\";\nexport type {\n GetUserOptions,\n HandlerUrls,\n OAuthScopesOnSignIn\n} from \"./common\";\n\nexport type {\n Connection,\n OAuthConnection\n} from \"./connected-accounts\";\n\nexport type {\n ContactChannel\n} from \"./contact-channels\";\n\nexport type {\n AdminTeamPermission,\n AdminTeamPermissionDefinition,\n AdminTeamPermissionDefinitionCreateOptions,\n AdminTeamPermissionDefinitionUpdateOptions,\n TeamPermission\n} from \"./permissions\";\n\nexport type {\n AdminDomainConfig,\n AdminEmailConfig,\n AdminOAuthProviderConfig,\n AdminProjectConfig,\n AdminProjectConfigUpdateOptions,\n OAuthProviderConfig\n} from \"./project-configs\";\n\nexport type {\n AdminOwnedProject,\n AdminProject,\n AdminProjectCreateOptions,\n AdminProjectUpdateOptions,\n Project\n} from \"./projects\";\n\nexport type {\n EditableTeamMemberProfile,\n ServerListUsersOptions,\n ServerTeam,\n ServerTeamCreateOptions,\n ServerTeamMemberProfile,\n ServerTeamUpdateOptions,\n ServerTeamUser,\n Team,\n TeamCreateOptions,\n TeamInvitation,\n TeamMemberProfile,\n TeamUpdateOptions,\n TeamUser\n} from \"./teams\";\n\nexport type {\n Auth,\n CurrentInternalServerUser,\n CurrentInternalUser,\n CurrentServerUser,\n CurrentUser,\n ServerUser,\n Session,\n User\n} from \"./users\";\n\n"],"mappings":";AAIA;AAAA,EACE;AAAA,EAAe;AAAA,EACf;AAAA,OACK;AAuBP;AAAA,EACE;AAAA,OACK;","names":[]}
@@ -0,0 +1,20 @@
1
+ // src/lib/stack-app/permissions/index.ts
2
+ function adminTeamPermissionDefinitionCreateOptionsToCrud(options) {
3
+ return {
4
+ id: options.id,
5
+ description: options.description,
6
+ contained_permission_ids: options.containedPermissionIds
7
+ };
8
+ }
9
+ function adminTeamPermissionDefinitionUpdateOptionsToCrud(options) {
10
+ return {
11
+ id: options.id,
12
+ description: options.description,
13
+ contained_permission_ids: options.containedPermissionIds
14
+ };
15
+ }
16
+ export {
17
+ adminTeamPermissionDefinitionCreateOptionsToCrud,
18
+ adminTeamPermissionDefinitionUpdateOptionsToCrud
19
+ };
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/lib/stack-app/permissions/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { TeamPermissionDefinitionsCrud } from \"@stackframe/stack-shared/dist/interface/crud/team-permissions\";\n\n\nexport type TeamPermission = {\n id: string,\n};\n\nexport type AdminTeamPermission = TeamPermission;\n\nexport type AdminTeamPermissionDefinition = {\n id: string,\n description?: string,\n containedPermissionIds: string[],\n};\n\nexport type AdminTeamPermissionDefinitionCreateOptions = {\n id: string,\n description?: string,\n containedPermissionIds: string[],\n};\nexport function adminTeamPermissionDefinitionCreateOptionsToCrud(options: AdminTeamPermissionDefinitionCreateOptions): TeamPermissionDefinitionsCrud[\"Admin\"][\"Create\"] {\n return {\n id: options.id,\n description: options.description,\n contained_permission_ids: options.containedPermissionIds,\n };\n}\n\nexport type AdminTeamPermissionDefinitionUpdateOptions = Partial<AdminTeamPermissionDefinitionCreateOptions>;\nexport function adminTeamPermissionDefinitionUpdateOptionsToCrud(options: AdminTeamPermissionDefinitionUpdateOptions): TeamPermissionDefinitionsCrud[\"Admin\"][\"Update\"] {\n return {\n id: options.id,\n description: options.description,\n contained_permission_ids: options.containedPermissionIds,\n };\n}\n"],"mappings":";AAwBO,SAAS,iDAAiD,SAAuG;AACtK,SAAO;AAAA,IACL,IAAI,QAAQ;AAAA,IACZ,aAAa,QAAQ;AAAA,IACrB,0BAA0B,QAAQ;AAAA,EACpC;AACF;AAGO,SAAS,iDAAiD,SAAuG;AACtK,SAAO;AAAA,IACL,IAAI,QAAQ;AAAA,IACZ,aAAa,QAAQ;AAAA,IACrB,0BAA0B,QAAQ;AAAA,EACpC;AACF;","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,57 @@
1
+ // src/lib/stack-app/projects/index.ts
2
+ function adminProjectUpdateOptionsToCrud(options) {
3
+ return {
4
+ display_name: options.displayName,
5
+ description: options.description,
6
+ is_production_mode: options.isProductionMode,
7
+ config: {
8
+ domains: options.config?.domains?.map((d) => ({
9
+ domain: d.domain,
10
+ handler_path: d.handlerPath
11
+ })),
12
+ oauth_providers: options.config?.oauthProviders?.map((p) => ({
13
+ id: p.id,
14
+ enabled: p.enabled,
15
+ type: p.type,
16
+ ...p.type === "standard" && {
17
+ client_id: p.clientId,
18
+ client_secret: p.clientSecret,
19
+ facebook_config_id: p.facebookConfigId,
20
+ microsoft_tenant_id: p.microsoftTenantId
21
+ }
22
+ })),
23
+ email_config: options.config?.emailConfig && (options.config.emailConfig.type === "shared" ? {
24
+ type: "shared"
25
+ } : {
26
+ type: "standard",
27
+ host: options.config.emailConfig.host,
28
+ port: options.config.emailConfig.port,
29
+ username: options.config.emailConfig.username,
30
+ password: options.config.emailConfig.password,
31
+ sender_name: options.config.emailConfig.senderName,
32
+ sender_email: options.config.emailConfig.senderEmail
33
+ }),
34
+ sign_up_enabled: options.config?.signUpEnabled,
35
+ credential_enabled: options.config?.credentialEnabled,
36
+ magic_link_enabled: options.config?.magicLinkEnabled,
37
+ passkey_enabled: options.config?.passkeyEnabled,
38
+ allow_localhost: options.config?.allowLocalhost,
39
+ create_team_on_sign_up: options.config?.createTeamOnSignUp,
40
+ client_team_creation_enabled: options.config?.clientTeamCreationEnabled,
41
+ client_user_deletion_enabled: options.config?.clientUserDeletionEnabled,
42
+ team_creator_default_permissions: options.config?.teamCreatorDefaultPermissions,
43
+ team_member_default_permissions: options.config?.teamMemberDefaultPermissions
44
+ }
45
+ };
46
+ }
47
+ function adminProjectCreateOptionsToCrud(options) {
48
+ return {
49
+ ...adminProjectUpdateOptionsToCrud(options),
50
+ display_name: options.displayName
51
+ };
52
+ }
53
+ export {
54
+ adminProjectCreateOptionsToCrud,
55
+ adminProjectUpdateOptionsToCrud
56
+ };
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/lib/stack-app/projects/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { ProductionModeError } from \"@stackframe/stack-shared/dist/helpers/production-mode\";\nimport { InternalProjectsCrud, ProjectsCrud } from \"@stackframe/stack-shared/dist/interface/crud/projects\";\n\nimport { StackAdminApp } from \"../apps/interfaces/admin-app\";\nimport { AdminProjectConfig, AdminProjectConfigUpdateOptions, ProjectConfig } from \"../project-configs\";\n\n\nexport type Project = {\n readonly id: string,\n readonly displayName: string,\n readonly config: ProjectConfig,\n};\n\nexport type AdminProject = {\n readonly id: string,\n readonly displayName: string,\n readonly description: string | null,\n readonly createdAt: Date,\n readonly userCount: number,\n readonly isProductionMode: boolean,\n readonly config: AdminProjectConfig,\n\n update(this: AdminProject, update: AdminProjectUpdateOptions): Promise<void>,\n delete(this: AdminProject): Promise<void>,\n\n getProductionModeErrors(this: AdminProject): Promise<ProductionModeError[]>,\n useProductionModeErrors(this: AdminProject): ProductionModeError[],\n} & Project;\n\nexport type AdminOwnedProject = {\n readonly app: StackAdminApp<false>,\n} & AdminProject;\n\nexport type AdminProjectUpdateOptions = {\n displayName?: string,\n description?: string,\n isProductionMode?: boolean,\n config?: AdminProjectConfigUpdateOptions,\n};\nexport function adminProjectUpdateOptionsToCrud(options: AdminProjectUpdateOptions): ProjectsCrud[\"Admin\"][\"Update\"] {\n return {\n display_name: options.displayName,\n description: options.description,\n is_production_mode: options.isProductionMode,\n config: {\n domains: options.config?.domains?.map((d) => ({\n domain: d.domain,\n handler_path: d.handlerPath\n })),\n oauth_providers: options.config?.oauthProviders?.map((p) => ({\n id: p.id as any,\n enabled: p.enabled,\n type: p.type,\n ...(p.type === 'standard' && {\n client_id: p.clientId,\n client_secret: p.clientSecret,\n facebook_config_id: p.facebookConfigId,\n microsoft_tenant_id: p.microsoftTenantId,\n }),\n })),\n email_config: options.config?.emailConfig && (\n options.config.emailConfig.type === 'shared' ? {\n type: 'shared',\n } : {\n type: 'standard',\n host: options.config.emailConfig.host,\n port: options.config.emailConfig.port,\n username: options.config.emailConfig.username,\n password: options.config.emailConfig.password,\n sender_name: options.config.emailConfig.senderName,\n sender_email: options.config.emailConfig.senderEmail,\n }\n ),\n sign_up_enabled: options.config?.signUpEnabled,\n credential_enabled: options.config?.credentialEnabled,\n magic_link_enabled: options.config?.magicLinkEnabled,\n passkey_enabled: options.config?.passkeyEnabled,\n allow_localhost: options.config?.allowLocalhost,\n create_team_on_sign_up: options.config?.createTeamOnSignUp,\n client_team_creation_enabled: options.config?.clientTeamCreationEnabled,\n client_user_deletion_enabled: options.config?.clientUserDeletionEnabled,\n team_creator_default_permissions: options.config?.teamCreatorDefaultPermissions,\n team_member_default_permissions: options.config?.teamMemberDefaultPermissions,\n },\n };\n}\n\nexport type AdminProjectCreateOptions = Omit<AdminProjectUpdateOptions, 'displayName'> & {\n displayName: string,\n};\nexport function adminProjectCreateOptionsToCrud(options: AdminProjectCreateOptions): InternalProjectsCrud[\"Server\"][\"Create\"] {\n return {\n ...adminProjectUpdateOptionsToCrud(options),\n display_name: options.displayName,\n };\n}\n"],"mappings":";AA2CO,SAAS,gCAAgC,SAAqE;AACnH,SAAO;AAAA,IACL,cAAc,QAAQ;AAAA,IACtB,aAAa,QAAQ;AAAA,IACrB,oBAAoB,QAAQ;AAAA,IAC5B,QAAQ;AAAA,MACN,SAAS,QAAQ,QAAQ,SAAS,IAAI,CAAC,OAAO;AAAA,QAC5C,QAAQ,EAAE;AAAA,QACV,cAAc,EAAE;AAAA,MAClB,EAAE;AAAA,MACF,iBAAiB,QAAQ,QAAQ,gBAAgB,IAAI,CAAC,OAAO;AAAA,QAC3D,IAAI,EAAE;AAAA,QACN,SAAS,EAAE;AAAA,QACX,MAAM,EAAE;AAAA,QACR,GAAI,EAAE,SAAS,cAAc;AAAA,UAC3B,WAAW,EAAE;AAAA,UACb,eAAe,EAAE;AAAA,UACjB,oBAAoB,EAAE;AAAA,UACtB,qBAAqB,EAAE;AAAA,QACzB;AAAA,MACF,EAAE;AAAA,MACF,cAAc,QAAQ,QAAQ,gBAC5B,QAAQ,OAAO,YAAY,SAAS,WAAW;AAAA,QAC7C,MAAM;AAAA,MACR,IAAI;AAAA,QACF,MAAM;AAAA,QACN,MAAM,QAAQ,OAAO,YAAY;AAAA,QACjC,MAAM,QAAQ,OAAO,YAAY;AAAA,QACjC,UAAU,QAAQ,OAAO,YAAY;AAAA,QACrC,UAAU,QAAQ,OAAO,YAAY;AAAA,QACrC,aAAa,QAAQ,OAAO,YAAY;AAAA,QACxC,cAAc,QAAQ,OAAO,YAAY;AAAA,MAC3C;AAAA,MAEF,iBAAiB,QAAQ,QAAQ;AAAA,MACjC,oBAAoB,QAAQ,QAAQ;AAAA,MACpC,oBAAoB,QAAQ,QAAQ;AAAA,MACpC,iBAAiB,QAAQ,QAAQ;AAAA,MACjC,iBAAiB,QAAQ,QAAQ;AAAA,MACjC,wBAAwB,QAAQ,QAAQ;AAAA,MACxC,8BAA8B,QAAQ,QAAQ;AAAA,MAC9C,8BAA8B,QAAQ,QAAQ;AAAA,MAC9C,kCAAkC,QAAQ,QAAQ;AAAA,MAClD,iCAAiC,QAAQ,QAAQ;AAAA,IACnD;AAAA,EACF;AACF;AAKO,SAAS,gCAAgC,SAA8E;AAC5H,SAAO;AAAA,IACL,GAAG,gCAAgC,OAAO;AAAA,IAC1C,cAAc,QAAQ;AAAA,EACxB;AACF;","names":[]}
@@ -0,0 +1,38 @@
1
+ // src/lib/stack-app/teams/index.ts
2
+ function teamUpdateOptionsToCrud(options) {
3
+ return {
4
+ display_name: options.displayName,
5
+ profile_image_url: options.profileImageUrl,
6
+ client_metadata: options.clientMetadata
7
+ };
8
+ }
9
+ function teamCreateOptionsToCrud(options, creatorUserId) {
10
+ return {
11
+ display_name: options.displayName,
12
+ profile_image_url: options.profileImageUrl,
13
+ creator_user_id: creatorUserId
14
+ };
15
+ }
16
+ function serverTeamCreateOptionsToCrud(options) {
17
+ return {
18
+ display_name: options.displayName,
19
+ profile_image_url: options.profileImageUrl,
20
+ creator_user_id: options.creatorUserId
21
+ };
22
+ }
23
+ function serverTeamUpdateOptionsToCrud(options) {
24
+ return {
25
+ display_name: options.displayName,
26
+ profile_image_url: options.profileImageUrl,
27
+ client_metadata: options.clientMetadata,
28
+ client_read_only_metadata: options.clientReadOnlyMetadata,
29
+ server_metadata: options.serverMetadata
30
+ };
31
+ }
32
+ export {
33
+ serverTeamCreateOptionsToCrud,
34
+ serverTeamUpdateOptionsToCrud,
35
+ teamCreateOptionsToCrud,
36
+ teamUpdateOptionsToCrud
37
+ };
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/lib/stack-app/teams/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { TeamsCrud } from \"@stackframe/stack-shared/dist/interface/crud/teams\";\nimport { ReadonlyJson } from \"@stackframe/stack-shared/dist/utils/json\";\n\nimport { ServerUser } from \"../users\";\n\n\nexport type TeamMemberProfile = {\n displayName: string | null,\n profileImageUrl: string | null,\n}\n\nexport type TeamMemberProfileUpdateOptions = {\n displayName?: string,\n profileImageUrl?: string | null,\n};\n\nexport type EditableTeamMemberProfile = TeamMemberProfile & {\n update(update: TeamMemberProfileUpdateOptions): Promise<void>,\n}\n\nexport type TeamUser = {\n id: string,\n teamProfile: TeamMemberProfile,\n}\n\nexport type TeamInvitation = {\n id: string,\n recipientEmail: string | null,\n expiresAt: Date,\n revoke(): Promise<void>,\n}\n\nexport type Team = {\n id: string,\n displayName: string,\n profileImageUrl: string | null,\n clientMetadata: any,\n clientReadOnlyMetadata: any,\n inviteUser(options: { email: string, callbackUrl?: string }): Promise<void>,\n listUsers(): Promise<TeamUser[]>,\n listInvitations(): Promise<TeamInvitation[]>,\n update(update: TeamUpdateOptions): Promise<void>,\n delete(): Promise<void>,\n};\n\nexport type TeamUpdateOptions = {\n displayName?: string,\n profileImageUrl?: string | null,\n clientMetadata?: ReadonlyJson,\n};\nexport function teamUpdateOptionsToCrud(options: TeamUpdateOptions): TeamsCrud[\"Client\"][\"Update\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n client_metadata: options.clientMetadata,\n };\n}\n\nexport type TeamCreateOptions = {\n displayName: string,\n profileImageUrl?: string,\n}\nexport function teamCreateOptionsToCrud(options: TeamCreateOptions, creatorUserId: string): TeamsCrud[\"Client\"][\"Create\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n creator_user_id: creatorUserId,\n };\n}\n\n\nexport type ServerTeamMemberProfile = TeamMemberProfile;\n\nexport type ServerTeamUser = ServerUser & {\n teamProfile: ServerTeamMemberProfile,\n}\n\nexport type ServerTeam = {\n createdAt: Date,\n serverMetadata: any,\n listUsers(): Promise<ServerTeamUser[]>,\n update(update: ServerTeamUpdateOptions): Promise<void>,\n delete(): Promise<void>,\n addUser(userId: string): Promise<void>,\n inviteUser(options: { email: string, callbackUrl?: string }): Promise<void>,\n removeUser(userId: string): Promise<void>,\n} & Team;\n\nexport type ServerListUsersOptions = {\n cursor?: string,\n limit?: number,\n orderBy?: 'signedUpAt',\n desc?: boolean,\n query?: string,\n};\n\nexport type ServerTeamCreateOptions = TeamCreateOptions & {\n creatorUserId?: string,\n};\nexport function serverTeamCreateOptionsToCrud(options: ServerTeamCreateOptions): TeamsCrud[\"Server\"][\"Create\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n creator_user_id: options.creatorUserId,\n };\n}\n\nexport type ServerTeamUpdateOptions = TeamUpdateOptions & {\n clientReadOnlyMetadata?: ReadonlyJson,\n serverMetadata?: ReadonlyJson,\n};\nexport function serverTeamUpdateOptionsToCrud(options: ServerTeamUpdateOptions): TeamsCrud[\"Server\"][\"Update\"] {\n return {\n display_name: options.displayName,\n profile_image_url: options.profileImageUrl,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n };\n}\n"],"mappings":";AAsDO,SAAS,wBAAwB,SAA2D;AACjG,SAAO;AAAA,IACL,cAAc,QAAQ;AAAA,IACtB,mBAAmB,QAAQ;AAAA,IAC3B,iBAAiB,QAAQ;AAAA,EAC3B;AACF;AAMO,SAAS,wBAAwB,SAA4B,eAAsD;AACxH,SAAO;AAAA,IACL,cAAc,QAAQ;AAAA,IACtB,mBAAmB,QAAQ;AAAA,IAC3B,iBAAiB;AAAA,EACnB;AACF;AA+BO,SAAS,8BAA8B,SAAiE;AAC7G,SAAO;AAAA,IACL,cAAc,QAAQ;AAAA,IACtB,mBAAmB,QAAQ;AAAA,IAC3B,iBAAiB,QAAQ;AAAA,EAC3B;AACF;AAMO,SAAS,8BAA8B,SAAiE;AAC7G,SAAO;AAAA,IACL,cAAc,QAAQ;AAAA,IACtB,mBAAmB,QAAQ;AAAA,IAC3B,iBAAiB,QAAQ;AAAA,IACzB,2BAA2B,QAAQ;AAAA,IACnC,iBAAiB,QAAQ;AAAA,EAC3B;AACF;","names":[]}
@@ -0,0 +1,47 @@
1
+ // src/lib/stack-app/users/index.ts
2
+ import { encodeBase64 } from "@stackframe/stack-shared/dist/utils/bytes";
3
+ function userUpdateOptionsToCrud(options) {
4
+ return {
5
+ display_name: options.displayName,
6
+ client_metadata: options.clientMetadata,
7
+ selected_team_id: options.selectedTeamId,
8
+ totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,
9
+ profile_image_url: options.profileImageUrl,
10
+ otp_auth_enabled: options.otpAuthEnabled,
11
+ passkey_auth_enabled: options.passkeyAuthEnabled
12
+ };
13
+ }
14
+ function serverUserUpdateOptionsToCrud(options) {
15
+ return {
16
+ display_name: options.displayName,
17
+ primary_email: options.primaryEmail,
18
+ client_metadata: options.clientMetadata,
19
+ client_read_only_metadata: options.clientReadOnlyMetadata,
20
+ server_metadata: options.serverMetadata,
21
+ selected_team_id: options.selectedTeamId,
22
+ primary_email_auth_enabled: options.primaryEmailAuthEnabled,
23
+ primary_email_verified: options.primaryEmailVerified,
24
+ password: options.password,
25
+ profile_image_url: options.profileImageUrl,
26
+ totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret
27
+ };
28
+ }
29
+ function serverUserCreateOptionsToCrud(options) {
30
+ return {
31
+ primary_email: options.primaryEmail,
32
+ password: options.password,
33
+ otp_auth_enabled: options.otpAuthEnabled,
34
+ primary_email_auth_enabled: options.primaryEmailAuthEnabled,
35
+ display_name: options.displayName,
36
+ primary_email_verified: options.primaryEmailVerified,
37
+ client_metadata: options.clientMetadata,
38
+ client_read_only_metadata: options.clientReadOnlyMetadata,
39
+ server_metadata: options.serverMetadata
40
+ };
41
+ }
42
+ export {
43
+ serverUserCreateOptionsToCrud,
44
+ serverUserUpdateOptionsToCrud,
45
+ userUpdateOptionsToCrud
46
+ };
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/lib/stack-app/users/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { CurrentUserCrud } from \"@stackframe/stack-shared/dist/interface/crud/current-user\";\nimport { UsersCrud } from \"@stackframe/stack-shared/dist/interface/crud/users\";\nimport { InternalSession } from \"@stackframe/stack-shared/dist/sessions\";\nimport { encodeBase64 } from \"@stackframe/stack-shared/dist/utils/bytes\";\nimport { ReadonlyJson } from \"@stackframe/stack-shared/dist/utils/json\";\nimport { ProviderType } from \"@stackframe/stack-shared/dist/utils/oauth\";\nimport { Result } from \"@stackframe/stack-shared/dist/utils/results\";\nimport { AsyncStoreProperty } from \"../common\";\nimport { OAuthConnection } from \"../connected-accounts\";\nimport { ContactChannel, ContactChannelCreateOptions, ServerContactChannel, ServerContactChannelCreateOptions } from \"../contact-channels\";\nimport { AdminTeamPermission, TeamPermission } from \"../permissions\";\nimport { AdminOwnedProject, AdminProjectUpdateOptions } from \"../projects\";\nimport { EditableTeamMemberProfile, ServerTeam, ServerTeamCreateOptions, Team, TeamCreateOptions } from \"../teams\";\n\n\nexport type Session = {\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n};\n\n/**\n * Contains everything related to the current user session.\n */\nexport type Auth = {\n readonly _internalSession: InternalSession,\n readonly currentSession: Session,\n signOut(options?: { redirectUrl?: URL | string }): Promise<void>,\n\n /**\n * Returns headers for sending authenticated HTTP requests to external servers. Most commonly used in cross-origin\n * requests. Similar to `getAuthJson`, but specifically for HTTP requests.\n *\n * If you are using `tokenStore: \"cookie\"`, you don't need this for same-origin requests. However, most\n * browsers now disable third-party cookies by default, so we must pass authentication tokens by header instead\n * if the client and server are on different hostnames.\n *\n * This function returns a header object that can be used with `fetch` or other HTTP request libraries to send\n * authenticated requests.\n *\n * On the server, you can then pass in the `Request` object to the `tokenStore` option\n * of your Stack app. Please note that CORS does not allow most headers by default, so you\n * must include `x-stack-auth` in the [`Access-Control-Allow-Headers` header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers)\n * of the CORS preflight response.\n *\n * If you are not using HTTP (and hence cannot set headers), you will need to use the `getAuthJson()` function\n * instead.\n *\n * Example:\n *\n * ```ts\n * // client\n * const res = await fetch(\"https://api.example.com\", {\n * headers: {\n * ...await stackApp.getAuthHeaders()\n * // you can also add your own headers here\n * },\n * });\n *\n * // server\n * function handleRequest(req: Request) {\n * const user = await stackServerApp.getUser({ tokenStore: req });\n * return new Response(\"Welcome, \" + user.displayName);\n * }\n * ```\n */\n getAuthHeaders(): Promise<{ \"x-stack-auth\": string }>,\n\n /**\n * Creates a JSON-serializable object containing the information to authenticate a user on an external server.\n * Similar to `getAuthHeaders`, but returns an object that can be sent over any protocol instead of just\n * HTTP headers.\n *\n * While `getAuthHeaders` is the recommended way to send authentication tokens over HTTP, your app may use\n * a different protocol, for example WebSockets or gRPC. This function returns a token object that can be JSON-serialized and sent to the server in any way you like.\n *\n * On the server, you can pass in this token object into the `tokenStore` option to fetch user details.\n *\n * Example:\n *\n * ```ts\n * // client\n * const res = await rpcCall(rpcEndpoint, {\n * data: {\n * auth: await stackApp.getAuthJson(),\n * },\n * });\n *\n * // server\n * function handleRequest(data) {\n * const user = await stackServerApp.getUser({ tokenStore: data.auth });\n * return new Response(\"Welcome, \" + user.displayName);\n * }\n * ```\n */\n getAuthJson(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n registerPasskey(options?: { hostname?: string }): Promise<Result<undefined, KnownErrors[\"PasskeyRegistrationFailed\"] | KnownErrors[\"PasskeyWebAuthnError\"]>>,\n};\n\n/**\n * ```\n * +----------+-------------+-------------------+\n * | \\ | !Server | Server |\n * +----------+-------------+-------------------+\n * | !Session | User | ServerUser |\n * | Session | CurrentUser | CurrentServerUser |\n * +----------+-------------+-------------------+\n * ```\n *\n * The fields on each of these types are available iff:\n * BaseUser: true\n * Auth: Session\n * ServerBaseUser: Server\n * UserExtra: Session OR Server\n *\n * The types are defined as follows (in the typescript manner):\n * User = BaseUser\n * CurrentUser = BaseUser & Auth & UserExtra\n * ServerUser = BaseUser & ServerBaseUser & UserExtra\n * CurrentServerUser = BaseUser & ServerBaseUser & Auth & UserExtra\n **/\n\nexport type BaseUser = {\n readonly id: string,\n\n readonly displayName: string | null,\n\n /**\n * The user's email address.\n *\n * Note: This might NOT be unique across multiple users, so always use `id` for unique identification.\n */\n readonly primaryEmail: string | null,\n readonly primaryEmailVerified: boolean,\n readonly profileImageUrl: string | null,\n\n readonly signedUpAt: Date,\n\n readonly clientMetadata: any,\n readonly clientReadOnlyMetadata: any,\n\n /**\n * Whether the user has a password set.\n */\n readonly hasPassword: boolean,\n readonly otpAuthEnabled: boolean,\n readonly passkeyAuthEnabled: boolean,\n\n readonly isMultiFactorRequired: boolean,\n toClientJson(): CurrentUserCrud[\"Client\"][\"Read\"],\n\n /**\n * @deprecated, use contact channel's usedForAuth instead\n */\n readonly emailAuthEnabled: boolean,\n /**\n * @deprecated\n */\n readonly oauthProviders: readonly { id: string }[],\n}\n\nexport type UserExtra = {\n setDisplayName(displayName: string): Promise<void>,\n /** @deprecated Use contact channel's sendVerificationEmail instead */\n sendVerificationEmail(): Promise<KnownErrors[\"EmailAlreadyVerified\"] | void>,\n setClientMetadata(metadata: any): Promise<void>,\n updatePassword(options: { oldPassword: string, newPassword: string}): Promise<KnownErrors[\"PasswordConfirmationMismatch\"] | KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n setPassword(options: { password: string }): Promise<KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n\n /**\n * A shorthand method to update multiple fields of the user at once.\n */\n update(update: UserUpdateOptions): Promise<void>,\n\n listContactChannels(): Promise<ContactChannel[]>,\n createContactChannel(data: ContactChannelCreateOptions): Promise<ContactChannel>,\n\n delete(): Promise<void>,\n\n getConnectedAccount(id: ProviderType, options: { or: 'redirect', scopes?: string[] }): Promise<OAuthConnection>,\n getConnectedAccount(id: ProviderType, options?: { or?: 'redirect' | 'throw' | 'return-null', scopes?: string[] }): Promise<OAuthConnection | null>,\n\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n\n readonly selectedTeam: Team | null,\n setSelectedTeam(team: Team | null): Promise<void>,\n createTeam(data: TeamCreateOptions): Promise<Team>,\n leaveTeam(team: Team): Promise<void>,\n\n getTeamProfile(team: Team): Promise<EditableTeamMemberProfile>,\n}\n& AsyncStoreProperty<\"team\", [id: string], Team | null, false>\n& AsyncStoreProperty<\"teams\", [], Team[], true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { recursive?: boolean }], TeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { recursive?: boolean }], TeamPermission[], true>;\n\nexport type InternalUserExtra =\n & {\n createProject(newProject: AdminProjectUpdateOptions & { displayName: string }): Promise<AdminOwnedProject>,\n }\n & AsyncStoreProperty<\"ownedProjects\", [], AdminOwnedProject[], true>\n\nexport type User = BaseUser;\n\nexport type CurrentUser = BaseUser & Auth & UserExtra;\n\nexport type CurrentInternalUser = CurrentUser & InternalUserExtra;\n\nexport type ProjectCurrentUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalUser : CurrentUser;\n\n\nexport type UserUpdateOptions = {\n displayName?: string,\n clientMetadata?: ReadonlyJson,\n selectedTeamId?: string | null,\n totpMultiFactorSecret?: Uint8Array | null,\n profileImageUrl?: string | null,\n otpAuthEnabled?: boolean,\n passkeyAuthEnabled?:boolean,\n}\nexport function userUpdateOptionsToCrud(options: UserUpdateOptions): CurrentUserCrud[\"Client\"][\"Update\"] {\n return {\n display_name: options.displayName,\n client_metadata: options.clientMetadata,\n selected_team_id: options.selectedTeamId,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n profile_image_url: options.profileImageUrl,\n otp_auth_enabled: options.otpAuthEnabled,\n passkey_auth_enabled: options.passkeyAuthEnabled,\n };\n}\n\n\nexport type ServerBaseUser = {\n setPrimaryEmail(email: string | null, options?: { verified?: boolean | undefined }): Promise<void>,\n\n readonly lastActiveAt: Date,\n\n readonly serverMetadata: any,\n setServerMetadata(metadata: any): Promise<void>,\n setClientReadOnlyMetadata(metadata: any): Promise<void>,\n\n createTeam(data: Omit<ServerTeamCreateOptions, \"creatorUserId\">): Promise<ServerTeam>,\n\n listContactChannels(): Promise<ServerContactChannel[]>,\n createContactChannel(data: ServerContactChannelCreateOptions): Promise<ServerContactChannel>,\n\n update(user: ServerUserUpdateOptions): Promise<void>,\n\n grantPermission(scope: Team, permissionId: string): Promise<void>,\n revokePermission(scope: Team, permissionId: string): Promise<void>,\n\n /**\n * Creates a new session object with a refresh token for this user. Can be used to impersonate them.\n */\n createSession(options?: { expiresInMillis?: number }): Promise<Session>,\n}\n& AsyncStoreProperty<\"team\", [id: string], ServerTeam | null, false>\n& AsyncStoreProperty<\"teams\", [], ServerTeam[], true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { direct?: boolean }], AdminTeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { direct?: boolean }], AdminTeamPermission[], true>;\n\n/**\n * A user including sensitive fields that should only be used on the server, never sent to the client\n * (such as sensitive information and serverMetadata).\n */\nexport type ServerUser = ServerBaseUser & BaseUser & UserExtra;\n\nexport type CurrentServerUser = Auth & ServerUser;\n\nexport type CurrentInternalServerUser = CurrentServerUser & InternalUserExtra;\n\nexport type ProjectCurrentServerUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalServerUser : CurrentServerUser;\n\n\nexport type ServerUserUpdateOptions = {\n primaryEmail?: string | null,\n primaryEmailVerified?: boolean,\n primaryEmailAuthEnabled?: boolean,\n clientReadOnlyMetadata?: ReadonlyJson,\n serverMetadata?: ReadonlyJson,\n password?: string,\n} & UserUpdateOptions;\nexport function serverUserUpdateOptionsToCrud(options: ServerUserUpdateOptions): CurrentUserCrud[\"Server\"][\"Update\"] {\n return {\n display_name: options.displayName,\n primary_email: options.primaryEmail,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n selected_team_id: options.selectedTeamId,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n primary_email_verified: options.primaryEmailVerified,\n password: options.password,\n profile_image_url: options.profileImageUrl,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n };\n}\n\n\nexport type ServerUserCreateOptions = {\n primaryEmail?: string | null,\n primaryEmailAuthEnabled?: boolean,\n password?: string,\n otpAuthEnabled?: boolean,\n displayName?: string,\n primaryEmailVerified?: boolean,\n clientMetadata?: any,\n clientReadOnlyMetadata?: any,\n serverMetadata?: any,\n}\nexport function serverUserCreateOptionsToCrud(options: ServerUserCreateOptions): UsersCrud[\"Server\"][\"Create\"] {\n return {\n primary_email: options.primaryEmail,\n password: options.password,\n otp_auth_enabled: options.otpAuthEnabled,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n display_name: options.displayName,\n primary_email_verified: options.primaryEmailVerified,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n };\n}\n"],"mappings":";AAQA,SAAS,oBAAoB;AAwNtB,SAAS,wBAAwB,SAAiE;AACvG,SAAO;AAAA,IACL,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,kBAAkB,QAAQ;AAAA,IAC1B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,qBAAqB,IAAI,QAAQ;AAAA,IAClH,mBAAmB,QAAQ;AAAA,IAC3B,kBAAkB,QAAQ;AAAA,IAC1B,sBAAsB,QAAQ;AAAA,EAChC;AACF;AAqDO,SAAS,8BAA8B,SAAuE;AACnH,SAAO;AAAA,IACL,cAAc,QAAQ;AAAA,IACtB,eAAe,QAAQ;AAAA,IACvB,iBAAiB,QAAQ;AAAA,IACzB,2BAA2B,QAAQ;AAAA,IACnC,iBAAiB,QAAQ;AAAA,IACzB,kBAAkB,QAAQ;AAAA,IAC1B,4BAA4B,QAAQ;AAAA,IACpC,wBAAwB,QAAQ;AAAA,IAChC,UAAU,QAAQ;AAAA,IAClB,mBAAmB,QAAQ;AAAA,IAC3B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,qBAAqB,IAAI,QAAQ;AAAA,EACpH;AACF;AAcO,SAAS,8BAA8B,SAAiE;AAC7G,SAAO;AAAA,IACL,eAAe,QAAQ;AAAA,IACvB,UAAU,QAAQ;AAAA,IAClB,kBAAkB,QAAQ;AAAA,IAC1B,4BAA4B,QAAQ;AAAA,IACpC,cAAc,QAAQ;AAAA,IACtB,wBAAwB,QAAQ;AAAA,IAChC,iBAAiB,QAAQ;AAAA,IACzB,2BAA2B,QAAQ;AAAA,IACnC,iBAAiB,QAAQ;AAAA,EAC3B;AACF;","names":[]}
@@ -1,17 +1,9 @@
1
1
  // src/utils/url.ts
2
- function autoRedirect() {
3
- const url = new URL(window.location.href);
4
- const redirectUrl = url.searchParams.get("auto-redirect-url");
5
- if (redirectUrl) {
6
- const urlObject = new URL(redirectUrl);
7
- if (urlObject.origin !== window.location.origin) {
8
- throw new Error("auto-redirect-url is not same origin (" + urlObject.origin + " !== " + window.location.origin + ")");
9
- }
10
- url.searchParams.delete("auto-redirect-url");
11
- window.location.replace(urlObject.href);
12
- }
13
- }
2
+ import { StackAssertionError } from "@stackframe/stack-shared/dist/utils/errors";
14
3
  function constructRedirectUrl(redirectUrl) {
4
+ if (typeof window === "undefined" || !window.location) {
5
+ throw new StackAssertionError("Attempted to call constructRedirectUrl in a non-browser environment. You may be able to fix this by passing the `callbackUrl` option with your function call.", { redirectUrl });
6
+ }
15
7
  const retainedQueryParams = ["after_auth_return_to"];
16
8
  const currentUrl = new URL(window.location.href);
17
9
  const url = redirectUrl ? new URL(redirectUrl, window.location.href) : new URL(window.location.href);
@@ -24,7 +16,6 @@ function constructRedirectUrl(redirectUrl) {
24
16
  return url.toString();
25
17
  }
26
18
  export {
27
- autoRedirect,
28
19
  constructRedirectUrl
29
20
  };
30
21
  //# sourceMappingURL=url.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/url.ts"],"sourcesContent":["//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\n\nexport function autoRedirect() {\n const url = new URL(window.location.href);\n const redirectUrl = url.searchParams.get(\"auto-redirect-url\");\n if (redirectUrl) {\n const urlObject = new URL(redirectUrl);\n if (urlObject.origin !== window.location.origin) {\n throw new Error(\"auto-redirect-url is not same origin (\" + urlObject.origin + \" !== \" + window.location.origin + \")\");\n }\n url.searchParams.delete(\"auto-redirect-url\");\n window.location.replace(urlObject.href);\n }\n}\n\nexport function constructRedirectUrl(redirectUrl: URL | string | undefined) {\n const retainedQueryParams = [\"after_auth_return_to\"];\n const currentUrl = new URL(window.location.href);\n const url = redirectUrl ? new URL(redirectUrl, window.location.href) : new URL(window.location.href);\n for (const param of retainedQueryParams) {\n if (currentUrl.searchParams.has(param)) {\n url.searchParams.set(param, currentUrl.searchParams.get(param)!);\n }\n }\n url.hash = \"\";\n return url.toString();\n}\n"],"mappings":";AAIO,SAAS,eAAe;AAC7B,QAAM,MAAM,IAAI,IAAI,OAAO,SAAS,IAAI;AACxC,QAAM,cAAc,IAAI,aAAa,IAAI,mBAAmB;AAC5D,MAAI,aAAa;AACf,UAAM,YAAY,IAAI,IAAI,WAAW;AACrC,QAAI,UAAU,WAAW,OAAO,SAAS,QAAQ;AAC/C,YAAM,IAAI,MAAM,2CAA2C,UAAU,SAAS,UAAU,OAAO,SAAS,SAAS,GAAG;AAAA,IACtH;AACA,QAAI,aAAa,OAAO,mBAAmB;AAC3C,WAAO,SAAS,QAAQ,UAAU,IAAI;AAAA,EACxC;AACF;AAEO,SAAS,qBAAqB,aAAuC;AAC1E,QAAM,sBAAsB,CAAC,sBAAsB;AACnD,QAAM,aAAa,IAAI,IAAI,OAAO,SAAS,IAAI;AAC/C,QAAM,MAAM,cAAc,IAAI,IAAI,aAAa,OAAO,SAAS,IAAI,IAAI,IAAI,IAAI,OAAO,SAAS,IAAI;AACnG,aAAW,SAAS,qBAAqB;AACvC,QAAI,WAAW,aAAa,IAAI,KAAK,GAAG;AACtC,UAAI,aAAa,IAAI,OAAO,WAAW,aAAa,IAAI,KAAK,CAAE;AAAA,IACjE;AAAA,EACF;AACA,MAAI,OAAO;AACX,SAAO,IAAI,SAAS;AACtB;","names":[]}
1
+ {"version":3,"sources":["../../../src/utils/url.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY\n//===========================================\nimport { StackAssertionError } from \"@stackframe/stack-shared/dist/utils/errors\";\n\n\nexport function constructRedirectUrl(redirectUrl: URL | string | undefined) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof window === 'undefined' || !window.location) {\n throw new StackAssertionError(\"Attempted to call constructRedirectUrl in a non-browser environment. You may be able to fix this by passing the `callbackUrl` option with your function call.\", { redirectUrl });\n }\n\n const retainedQueryParams = [\"after_auth_return_to\"];\n const currentUrl = new URL(window.location.href);\n const url = redirectUrl ? new URL(redirectUrl, window.location.href) : new URL(window.location.href);\n for (const param of retainedQueryParams) {\n if (currentUrl.searchParams.has(param)) {\n url.searchParams.set(param, currentUrl.searchParams.get(param)!);\n }\n }\n url.hash = \"\";\n return url.toString();\n}\n"],"mappings":";AAIA,SAAS,2BAA2B;AAG7B,SAAS,qBAAqB,aAAuC;AAE1E,MAAI,OAAO,WAAW,eAAe,CAAC,OAAO,UAAU;AACrD,UAAM,IAAI,oBAAoB,iKAAiK,EAAE,YAAY,CAAC;AAAA,EAChN;AAEA,QAAM,sBAAsB,CAAC,sBAAsB;AACnD,QAAM,aAAa,IAAI,IAAI,OAAO,SAAS,IAAI;AAC/C,QAAM,MAAM,cAAc,IAAI,IAAI,aAAa,OAAO,SAAS,IAAI,IAAI,IAAI,IAAI,OAAO,SAAS,IAAI;AACnG,aAAW,SAAS,qBAAqB;AACvC,QAAI,WAAW,aAAa,IAAI,KAAK,GAAG;AACtC,UAAI,aAAa,IAAI,OAAO,WAAW,aAAa,IAAI,KAAK,CAAE;AAAA,IACjE;AAAA,EACF;AACA,MAAI,OAAO;AACX,SAAO,IAAI,SAAS;AACtB;","names":[]}