@descope/vue-sdk 0.0.0-next-45ef6f06-20240717 → 0.0.1

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 CHANGED
@@ -27,11 +27,11 @@ import descope from '@descope/vue-sdk';
27
27
 
28
28
  const app = createApp(App);
29
29
  app.use(descope, {
30
- projectId: 'my-project-id'
31
- // If the Descope project manages the token response in cookies, a custom domain
32
- // must be configured (e.g., https://auth.app.example.com)
33
- // and should be set as the baseUrl property.
34
- // baseUrl: https://auth.app.example.com'
30
+ projectId: 'my-project-id',
31
+ // If the Descope project manages the token response in cookies, a custom domain
32
+ // must be configured (e.g., https://auth.app.example.com)
33
+ // and should be set as the baseUrl property.
34
+ // baseUrl: https://auth.app.example.com'
35
35
  });
36
36
  app.mount('#app');
37
37
  ```
@@ -40,24 +40,19 @@ app.mount('#app');
40
40
 
41
41
  ```vue
42
42
  <template>
43
- <p v-if="isFlowLoading">Loading...</p>
44
- <Descope
45
- flowId="my-flow-id"
46
- @success="handleSuccess"
47
- @error="handleError"
48
- @ready="handleReady"
49
- />
50
- <!-- additional props -->
51
- <!-- theme="dark" theme can be "light", "dark" or "os", which auto select a theme based on the OS theme. Default is "light" -->
52
- <!-- v-bind:debug="true" debug can be set to true to enable debug mode -->
53
- <!-- locale="en" locale can be any supported locale which the flow's screen translated to, if not provided, the locale is taken from the browser's locale. -->
54
- <!-- tenant="tenantId" tenant ID for SSO (SAML) login. If not provided, Descope will use the domain of available email to choose the tenant -->
55
- <!-- redirectUrl="redirectUrl" Redirect URL for OAuth and SSO (will be used when redirecting back from the OAuth provider / IdP), or for "Magic Link" and "Enchanted Link" (will be used as a link in the message sent to the the user) -->
56
- <!-- autoFocus="skipFirstScreen" autoFocus can be true, false or "skipFirstScreen". Default is true. - true: automatically focus on the first input of each screen - false: do not automatically focus on screen's inputs - "skipFirstScreen": automatically focus on the first input of each screen, except first screen -->
57
- <!-- validateOnBlur can be true in order to show input validation errors on blur, in addition to on submit. Default is false. -->
58
- <!-- errorTransformer="errorTransformer" errorTransformer is a function that receives an error object and returns a string. The returned string will be displayed to the user. NOTE: errorTransformer is not required. If not provided, the error object will be displayed as is. -->
59
- <!-- form="{ email: 'test@domain.com' }" form is an object the initial form context that is used in screens inputs in the flow execution. Used to inject predifined input values on flow start such as custom inputs, custom attrbiutes and other inputs. Keys passed can be accessed in flows actions, conditions and screens prefixed with "form.". NOTE: form is not required. If not provided, 'form' context key will be empty before user input. -->
60
- <!-- client="{ version: '1.2.3' }" client is an object the initial client context in the flow execution. Keys passed can be accessed in flows actions and conditions prefixed with "client.". NOTE: client is not required. If not provided, context key will be empty. -->
43
+ <p v-if="isFlowLoading">Loading...</p>
44
+ <Descope flowId="my-flow-id" @success="handleSuccess" @error="handleError" @ready="handleReady" />
45
+ <!-- additional props -->
46
+ <!-- theme="dark" theme can be "light", "dark" or "os", which auto select a theme based on the OS theme. Default is "light" -->
47
+ <!-- v-bind:debug="true" debug can be set to true to enable debug mode -->
48
+ <!-- locale="en" locale can be any supported locale which the flow's screen translated to, if not provided, the locale is taken from the browser's locale. -->
49
+ <!-- tenant="tenantId" tenant ID for SSO (SAML) login. If not provided, Descope will use the domain of available email to choose the tenant -->
50
+ <!-- redirectUrl="redirectUrl" Redirect URL for OAuth and SSO (will be used when redirecting back from the OAuth provider / IdP), or for "Magic Link" and "Enchanted Link" (will be used as a link in the message sent to the the user) -->
51
+ <!-- autoFocus="skipFirstScreen" autoFocus can be true, false or "skipFirstScreen". Default is true. - true: automatically focus on the first input of each screen - false: do not automatically focus on screen's inputs - "skipFirstScreen": automatically focus on the first input of each screen, except first screen -->
52
+ <!-- validateOnBlur can be true in order to show input validation errors on blur, in addition to on submit. Default is false. -->
53
+ <!-- errorTransformer="errorTransformer" errorTransformer is a function that receives an error object and returns a string. The returned string will be displayed to the user. NOTE: errorTransformer is not required. If not provided, the error object will be displayed as is. -->
54
+ <!-- form="{ email: 'test@domain.com' }" form is an object the initial form context that is used in screens inputs in the flow execution. Used to inject predifined input values on flow start such as custom inputs, custom attrbiutes and other inputs. Keys passed can be accessed in flows actions, conditions and screens prefixed with "form.". NOTE: form is not required. If not provided, 'form' context key will be empty before user input. -->
55
+ <!-- client="{ version: '1.2.3' }" client is an object the initial client context in the flow execution. Keys passed can be accessed in flows actions and conditions prefixed with "client.". NOTE: client is not required. If not provided, context key will be empty. -->
61
56
  </template>
62
57
 
63
58
  <script setup>
@@ -67,15 +62,15 @@ import { ref } from 'vue';
67
62
  const isFlowLoading = ref(true);
68
63
 
69
64
  const handleSuccess = (e) => {
70
- console.log('Logged in!', e);
65
+ console.log('Logged in!', e);
71
66
  };
72
67
 
73
68
  const handleError = (e) => {
74
- console.log('Could not log in', e);
69
+ console.log('Could not log in', e);
75
70
  };
76
71
 
77
72
  const handleReady = () => {
78
- isFlowLoading.value = false;
73
+ isFlowLoading.value = false;
79
74
  };
80
75
 
81
76
  // let tenantId = '<tenantId>'; // replace with your tenant ID
@@ -146,13 +141,13 @@ import { getSessionToken } from '@descope/vue-sdk';
146
141
  // fetch data using back
147
142
  // Note: Descope backend SDKs support extracting session token from the Authorization header
148
143
  export const fetchData = async () => {
149
- const sessionToken = getSessionToken();
150
- const res = await fetch('/path/to/server/api', {
151
- headers: {
152
- Authorization: `Bearer ${sessionToken}`
153
- }
154
- });
155
- // ... use res
144
+ const sessionToken = getSessionToken();
145
+ const res = await fetch('/path/to/server/api', {
146
+ headers: {
147
+ Authorization: `Bearer ${sessionToken}`,
148
+ },
149
+ });
150
+ // ... use res
156
151
  };
157
152
  ```
158
153
 
@@ -172,8 +167,8 @@ import descope from '@descope/vue-sdk';
172
167
  const app = createApp(App);
173
168
 
174
169
  app.use(descope, {
175
- projectId: 'project-id',
176
- sessionTokenViaCookie: true
170
+ projectId: 'project-id',
171
+ sessionTokenViaCookie: true,
177
172
  });
178
173
  ```
179
174
 
@@ -196,13 +191,13 @@ import descope, { getSdk } from '../src';
196
191
  const app = createApp(App);
197
192
 
198
193
  app.use(descope, {
199
- projectId: 'project-id'
194
+ projectId: 'project-id',
200
195
  });
201
196
 
202
197
  const sdk = getSdk();
203
198
 
204
199
  sdk?.onSessionTokenChange((newSession) => {
205
- // here you can implement custom logic when the session is changing
200
+ // here you can implement custom logic when the session is changing
206
201
  });
207
202
  ```
208
203
 
@@ -272,7 +267,7 @@ Note:
272
267
 
273
268
  ```vue
274
269
  <template>
275
- <UserManagement tenant="tenant-id" widget-id="user-management-widget" />
270
+ <UserManagement tenant="tenant-id" widget-id="user-management-widget" />
276
271
  </template>
277
272
 
278
273
  <script setup>
@@ -302,7 +297,7 @@ Note:
302
297
 
303
298
  ```vue
304
299
  <template>
305
- <RoleManagement tenant="tenant-id" widget-id="role-management-widget" />
300
+ <RoleManagement tenant="tenant-id" widget-id="role-management-widget" />
306
301
  </template>
307
302
 
308
303
  <script setup>
@@ -327,17 +322,11 @@ The widget lets you:
327
322
 
328
323
  ```vue
329
324
  <template>
330
- <!-- admin view: manage all tenant users' access keys -->
331
- <AccessKeyManagement
332
- tenant="tenant-id"
333
- widget-id="access-key-management-widget"
334
- />
335
-
336
- <!-- user view: mange access key for the logged-in tenant's user -->
337
- <AccessKeyManagement
338
- tenant="tenant-id"
339
- widget-id="user-access-key-management-widget"
340
- />
325
+ <!-- admin view: manage all tenant users' access keys -->
326
+ <AccessKeyManagement tenant="tenant-id" widget-id="access-key-management-widget" />
327
+
328
+ <!-- user view: mange access key for the logged-in tenant's user -->
329
+ <AccessKeyManagement tenant="tenant-id" widget-id="user-access-key-management-widget" />
341
330
  </template>
342
331
 
343
332
  <script setup>
@@ -356,7 +345,7 @@ The `AuditManagement` widget lets you embed an audit table in your site.
356
345
 
357
346
  ```vue
358
347
  <template>
359
- <AuditManagement tenant="tenant-id" widget-id="audit-management-widget" />
348
+ <AuditManagement tenant="tenant-id" widget-id="audit-management-widget" />
360
349
  </template>
361
350
 
362
351
  <script setup>
@@ -382,7 +371,7 @@ The widget lets you:
382
371
 
383
372
  ```vue
384
373
  <template>
385
- <UserProfile widget-id="user-profile-widget" @logout="onLogout" />
374
+ <UserProfile widget-id="user-profile-widget" @logout="onLogout" />
386
375
  </template>
387
376
 
388
377
  <script setup>
@@ -456,11 +445,11 @@ The Descope SDK caches the user and session token in the frontend. If you update
456
445
  const sdk = useDescope();
457
446
 
458
447
  const handleUpdateUser = () => {
459
- myBackendUpdateUser().then(() => {
460
- sdk.me();
461
- // or
462
- sdk.refresh();
463
- });
448
+ myBackendUpdateUser().then(() => {
449
+ sdk.me();
450
+ // or
451
+ sdk.refresh();
452
+ });
464
453
  };
465
454
  ```
466
455
 
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@descope/web-component"),r=require("@descope/web-js-sdk");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("@descope/user-management-widget"),require("@descope/role-management-widget"),require("@descope/access-key-management-widget"),require("@descope/audit-management-widget"),require("@descope/user-profile-widget");var s=n(t),o=n(r);const a=Symbol("$descope"),i={"x-descope-sdk-name":"vue","x-descope-sdk-version":"0.0.0-next-45ef6f06-20240717"},u="undefined"!=typeof window,d=()=>{const t=e.inject(a);if(!t)throw Error("Missing Descope context, make sure you are using the Descope plugin");return t},l=()=>d().options,c=()=>d().sdk,p=e=>(...t)=>{let r;try{r=e(...t)}catch(e){console.error(e)}return r};let g;const m=e=>{const t=o.default({persistTokens:u,storeLastAuthenticatedUser:u,...e,autoRefresh:u});return g=t,t};g=m({projectId:"temp pid"});const f=()=>u?g?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),b=()=>u?g?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),y=p(((e=f(),t)=>g?.getJwtPermissions(e,t))),h=p(((e=f(),t)=>g?.getJwtRoles(e,t))),v=["project-id","base-url","base-static-url","flow-id","^theme","^locale","^tenant","^debug","^telemetryKey","redirect-url","auto-focus","validate-on-blur","store-last-authenticated-user",".errorTransformer","^form","^client"];var w=e.defineComponent({__name:"Descope",props:{flowId:{type:String,required:!0},tenant:{type:String},theme:{type:String},locale:{type:String},debug:{type:Boolean},telemetryKey:{type:String},redirectUrl:{type:String},autoFocus:{type:Boolean||String},validateOnBlur:{type:Boolean},errorTransformer:{type:Function},form:{type:Object},client:{type:Object}},emits:["success","error","ready"],setup(t,{emit:r}){const n=t;s.default.sdkConfigOverrides={baseHeaders:i,persistTokens:!1,hooks:{get beforeRequest(){return g.httpClient.hooks.beforeRequest},set beforeRequest(e){}}};const{projectId:o,baseUrl:a,baseStaticUrl:u,storeLastAuthenticatedUser:d}=l(),p=c(),m=e.computed((()=>n.form?JSON.stringify(n.form):"")),f=e.computed((()=>n.client?JSON.stringify(n.client):"")),b=async e=>{await(p.httpClient.hooks?.afterRequest?.({},new Response(JSON.stringify(e.detail)))),r("success",e)},y=e=>r("error",e),h=e=>r("ready",e);return(r,n)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-wc",{"project-id":e.unref(o),"base-url":e.unref(a),"base-static-url":e.unref(u),"flow-id":t.flowId,"^theme":t.theme,"^locale":t.locale,"^tenant":t.tenant,"^debug":t.debug,"^telemetryKey":t.telemetryKey,"redirect-url":t.redirectUrl,"auto-focus":t.autoFocus,"validate-on-blur":t.validateOnBlur,"store-last-authenticated-user":e.unref(d),".errorTransformer":t.errorTransformer,"^form":e.unref(m),"^client":e.unref(f),onSuccess:b,onError:y,onReady:h},null,40,v)]))}});w.__file="src/Descope.vue";const S=["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"];var k=e.defineComponent({__name:"UserManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(t){const{projectId:r,baseUrl:n,baseStaticUrl:s}=l();return(o,a)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-user-management-widget",{"project-id":e.unref(r),"base-url":e.unref(n),"base-static-url":e.unref(s),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug,"widget-id":t.widgetId},null,8,S)]))}});k.__file="src/UserManagement.vue";const U=["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"];var x=e.defineComponent({__name:"RoleManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(t){const{projectId:r,baseUrl:n,baseStaticUrl:s}=l();return(o,a)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-role-management-widget",{"project-id":e.unref(r),"base-url":e.unref(n),"base-static-url":e.unref(s),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug,"widget-id":t.widgetId},null,8,U)]))}});x.__file="src/RoleManagement.vue";const _=["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"];var j=e.defineComponent({__name:"AccessKeyManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(t){const{projectId:r,baseUrl:n,baseStaticUrl:s}=l();return(o,a)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-access-key-management-widget",{"project-id":e.unref(r),"base-url":e.unref(n),"base-static-url":e.unref(s),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug,"widget-id":t.widgetId},null,8,_)]))}});j.__file="src/AccessKeyManagement.vue";const q=["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"];var B=e.defineComponent({__name:"AuditManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(t){const{projectId:r,baseUrl:n,baseStaticUrl:s}=l();return(o,a)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-audit-management-widget",{"project-id":e.unref(r),"base-url":e.unref(n),"base-static-url":e.unref(s),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug,"widget-id":t.widgetId},null,8,q)]))}});B.__file="src/AuditManagement.vue";const I=["project-id","base-url","base-static-url","^theme","^debug","widget-id"];var E=e.defineComponent({__name:"UserProfile",props:{widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},emits:["logout"],setup(t,{emit:r}){const n=e=>r("logout",e),{projectId:s,baseUrl:o,baseStaticUrl:a}=l();return(r,i)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-user-profile-widget",{"project-id":e.unref(s),"base-url":e.unref(o),"base-static-url":e.unref(a),"^theme":t.theme,"^debug":t.debug,"widget-id":t.widgetId,onLogout:n},null,40,I)]))}});E.__file="src/UserProfile.vue";const R=e.ref(null);let C;var T={install:function(t,r){const n=m({persistTokens:!0,...r,autoRefresh:!0,baseHeaders:i});C=n;const s=e.ref(null),o=e.ref(""),u=e.ref(null),d=e.ref(null);n.onSessionTokenChange((e=>{o.value=e})),n.onUserChange((e=>{d.value=e}));const l=async()=>{s.value=!0,await n.refresh(),s.value=!1},c=e.computed((()=>null===s.value)),p=e.computed((()=>null===u.value));R.value=()=>new Promise(((t,r)=>{!o.value&&c.value&&l().catch(r),e.watch((()=>s.value),(()=>!s.value&&t(!!e.unref(o))),{immediate:!0})})),t.provide(a,{session:{fetchSession:l,isLoading:e.readonly(s),session:e.readonly(o),isFetchSessionWasNeverCalled:c},user:{fetchUser:async()=>{u.value=!0,await n.me(),u.value=!1},isLoading:e.readonly(u),user:e.readonly(d),isFetchUserWasNeverCalled:p},sdk:n,options:r})}};exports.AccessKeyManagement=j,exports.AuditManagement=B,exports.Descope=w,exports.RoleManagement=x,exports.UserManagement=k,exports.UserProfile=E,exports.default=T,exports.getJwtPermissions=y,exports.getJwtRoles=h,exports.getRefreshToken=b,exports.getSdk=()=>C,exports.getSessionToken=f,exports.isRefreshTokenExpired=(e=b())=>g?.isJwtExpired(e),exports.isSessionTokenExpired=(e=f())=>g?.isJwtExpired(e),exports.routeGuard=()=>e.unref(R)?.(),exports.useDescope=c,exports.useSession=()=>{const{session:t}=d();return t.isFetchSessionWasNeverCalled.value&&t.fetchSession(),{isLoading:e.computed((()=>t.isLoading.value||t.isFetchSessionWasNeverCalled.value)),sessionToken:t.session,isAuthenticated:e.computed((()=>!!t.session.value))}},exports.useUser=()=>{const{user:t,session:r}=d(),n=()=>{!t.user.value&&r.session.value&&t.fetchUser()};return n(),e.watch(r.session,n),{isLoading:e.computed((()=>t.isLoading.value||t.isFetchUserWasNeverCalled.value)),user:t.user}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@descope/web-component");require("@descope/core-js-sdk");var r=require("@descope/web-js-sdk");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("@descope/user-management-widget"),require("@descope/role-management-widget"),require("@descope/access-key-management-widget"),require("@descope/audit-management-widget"),require("@descope/user-profile-widget");var s=n(t),o=n(r);const a=Symbol("$descope"),i={"x-descope-sdk-name":"vue","x-descope-sdk-version":"0.0.1"},u="undefined"!=typeof window,d=()=>{const t=e.inject(a);if(!t)throw Error("Missing Descope context, make sure you are using the Descope plugin");return t},l=()=>d().options,c=()=>d().sdk,p=e=>(...t)=>{let r;try{r=e(...t)}catch(e){console.error(e)}return r};let g;const m=e=>{const t=o.default({persistTokens:u,storeLastAuthenticatedUser:u,...e,autoRefresh:u});return g=t,t};g=m({projectId:"temp pid"});const f=()=>u?g?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),b=()=>u?g?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),v=p(((e=f(),t)=>g?.getJwtPermissions(e,t))),y=p(((e=f(),t)=>g?.getJwtRoles(e,t)));var h=e.defineComponent({__name:"Descope",props:{flowId:{type:String,required:!0},tenant:{type:String},theme:{type:String},locale:{type:String},debug:{type:Boolean},telemetryKey:{type:String},redirectUrl:{type:String},autoFocus:{type:Boolean||String},validateOnBlur:{type:Boolean},errorTransformer:{type:Function},form:{type:Object},client:{type:Object}},emits:["success","error","ready"],setup(t,{emit:r}){s.default.sdkConfigOverrides={baseHeaders:i,persistTokens:!1,hooks:{get beforeRequest(){return g.httpClient.hooks.beforeRequest},set beforeRequest(e){}}};const n=t,o=r,{projectId:a,baseUrl:u,baseStaticUrl:d,storeLastAuthenticatedUser:p}=l(),m=c(),f=e.computed((()=>n.form?JSON.stringify(n.form):"")),b=e.computed((()=>n.client?JSON.stringify(n.client):"")),v=async e=>{await(m.httpClient.hooks?.afterRequest?.({},new Response(JSON.stringify(e.detail)))),o("success",e)},y=e=>o("error",e),h=e=>o("ready",e);return(r,n)=>{const s=e.resolveComponent("descope-wc");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(s,{"project-id":e.unref(a),"base-url":e.unref(u),"base-static-url":e.unref(d),"flow-id":t.flowId,"^theme":t.theme,"^locale":t.locale,"^tenant":t.tenant,"^debug":t.debug,"^telemetryKey":t.telemetryKey,"redirect-url":t.redirectUrl,"auto-focus":t.autoFocus,"validate-on-blur":t.validateOnBlur,"store-last-authenticated-user":e.unref(p),".errorTransformer":t.errorTransformer,"^form":f.value,"^client":b.value,onSuccess:v,onError:y,onReady:h},null,40,["project-id","base-url","base-static-url","flow-id","^theme","^locale","^tenant","^debug","^telemetryKey","redirect-url","auto-focus","validate-on-blur","store-last-authenticated-user",".errorTransformer","^form","^client"])])}}});h.__file="src/Descope.vue";var w=e.defineComponent({__name:"UserManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(t){const{projectId:r,baseUrl:n,baseStaticUrl:s}=l();return(o,a)=>{const i=e.resolveComponent("descope-user-management-widget");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(i,{"project-id":e.unref(r),"base-url":e.unref(n),"base-static-url":e.unref(s),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug,"widget-id":t.widgetId},null,8,["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"])])}}});w.__file="src/UserManagement.vue";var S=e.defineComponent({__name:"RoleManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(t){const{projectId:r,baseUrl:n,baseStaticUrl:s}=l();return(o,a)=>{const i=e.resolveComponent("descope-role-management-widget");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(i,{"project-id":e.unref(r),"base-url":e.unref(n),"base-static-url":e.unref(s),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug,"widget-id":t.widgetId},null,8,["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"])])}}});S.__file="src/RoleManagement.vue";var k=e.defineComponent({__name:"AccessKeyManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(t){const{projectId:r,baseUrl:n,baseStaticUrl:s}=l();return(o,a)=>{const i=e.resolveComponent("descope-access-key-management-widget");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(i,{"project-id":e.unref(r),"base-url":e.unref(n),"base-static-url":e.unref(s),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug,"widget-id":t.widgetId},null,8,["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"])])}}});k.__file="src/AccessKeyManagement.vue";var U=e.defineComponent({__name:"AuditManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(t){const{projectId:r,baseUrl:n,baseStaticUrl:s}=l();return(o,a)=>{const i=e.resolveComponent("descope-audit-management-widget");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(i,{"project-id":e.unref(r),"base-url":e.unref(n),"base-static-url":e.unref(s),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug,"widget-id":t.widgetId},null,8,["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"])])}}});U.__file="src/AuditManagement.vue";var j=e.defineComponent({__name:"UserProfile",props:{widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},emits:["logout"],setup(t,{emit:r}){const n=r,s=e=>n("logout",e),{projectId:o,baseUrl:a,baseStaticUrl:i}=l();return(r,n)=>{const u=e.resolveComponent("descope-user-profile-widget");return e.openBlock(),e.createElementBlock("div",null,[e.createVNode(u,{"project-id":e.unref(o),"base-url":e.unref(a),"base-static-url":e.unref(i),"^theme":t.theme,"^debug":t.debug,"widget-id":t.widgetId,onLogout:s},null,8,["project-id","base-url","base-static-url","^theme","^debug","widget-id"])])}}});j.__file="src/UserProfile.vue";const x=e.ref(null);let _;var q={install:function(t,r){const n=m({persistTokens:!0,...r,autoRefresh:!0,baseHeaders:i});_=n;const s=e.ref(null),o=e.ref(""),u=e.ref(null),d=e.ref(null);n.onSessionTokenChange((e=>{o.value=e})),n.onUserChange((e=>{d.value=e}));const l=async()=>{s.value=!0,await n.refresh(),s.value=!1},c=e.computed((()=>null===s.value)),p=e.computed((()=>null===u.value));x.value=()=>new Promise(((t,r)=>{!o.value&&c.value&&l().catch(r),e.watch((()=>s.value),(()=>!s.value&&t(!!e.unref(o))),{immediate:!0})})),t.provide(a,{session:{fetchSession:l,isLoading:e.readonly(s),session:e.readonly(o),isFetchSessionWasNeverCalled:c},user:{fetchUser:async()=>{u.value=!0,await n.me(),u.value=!1},isLoading:e.readonly(u),user:e.readonly(d),isFetchUserWasNeverCalled:p},sdk:n,options:r})}};exports.AccessKeyManagement=k,exports.AuditManagement=U,exports.Descope=h,exports.RoleManagement=S,exports.UserManagement=w,exports.UserProfile=j,exports.default=q,exports.getJwtPermissions=v,exports.getJwtRoles=y,exports.getRefreshToken=b,exports.getSdk=()=>_,exports.getSessionToken=f,exports.isRefreshTokenExpired=(e=b())=>g?.isJwtExpired(e),exports.isSessionTokenExpired=(e=f())=>g?.isJwtExpired(e),exports.routeGuard=()=>e.unref(x)?.(),exports.useDescope=c,exports.useSession=()=>{const{session:t}=d();return t.isFetchSessionWasNeverCalled.value&&t.fetchSession(),{isLoading:e.computed((()=>t.isLoading.value||t.isFetchSessionWasNeverCalled.value)),sessionToken:t.session,isAuthenticated:e.computed((()=>!!t.session.value))}},exports.useUser=()=>{const{user:t,session:r}=d(),n=()=>{!t.user.value&&r.session.value&&t.fetchUser()};return n(),e.watch(r.session,n),{isLoading:e.computed((()=>t.isLoading.value||t.isFetchUserWasNeverCalled.value)),user:t.user}};
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.ts CHANGED
@@ -43,7 +43,7 @@ declare const _default$6: vue.DefineComponent<{
43
43
  };
44
44
  }, (_ctx: any, _cache: any) => vue.VNode<vue.RendererNode, vue.RendererElement, {
45
45
  [key: string]: any;
46
- }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("success" | "error" | "ready")[], "success" | "error" | "ready", vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
46
+ }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("success" | "error" | "ready")[], "success" | "error" | "ready", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
47
47
  flowId: {
48
48
  type: StringConstructor;
49
49
  required: true;
@@ -88,7 +88,7 @@ declare const _default$6: vue.DefineComponent<{
88
88
  }, {
89
89
  debug: boolean;
90
90
  validateOnBlur: boolean;
91
- }>;
91
+ }, {}>;
92
92
 
93
93
  declare const _default$5: vue.DefineComponent<{
94
94
  tenant: {
@@ -107,7 +107,7 @@ declare const _default$5: vue.DefineComponent<{
107
107
  };
108
108
  }, (_ctx: any, _cache: any) => vue.VNode<vue.RendererNode, vue.RendererElement, {
109
109
  [key: string]: any;
110
- }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
110
+ }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
111
111
  tenant: {
112
112
  type: StringConstructor;
113
113
  required: true;
@@ -124,7 +124,7 @@ declare const _default$5: vue.DefineComponent<{
124
124
  };
125
125
  }>>, {
126
126
  debug: boolean;
127
- }>;
127
+ }, {}>;
128
128
 
129
129
  declare const _default$4: vue.DefineComponent<{
130
130
  tenant: {
@@ -143,7 +143,7 @@ declare const _default$4: vue.DefineComponent<{
143
143
  };
144
144
  }, (_ctx: any, _cache: any) => vue.VNode<vue.RendererNode, vue.RendererElement, {
145
145
  [key: string]: any;
146
- }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
146
+ }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
147
147
  tenant: {
148
148
  type: StringConstructor;
149
149
  required: true;
@@ -160,7 +160,7 @@ declare const _default$4: vue.DefineComponent<{
160
160
  };
161
161
  }>>, {
162
162
  debug: boolean;
163
- }>;
163
+ }, {}>;
164
164
 
165
165
  declare const _default$3: vue.DefineComponent<{
166
166
  tenant: {
@@ -179,7 +179,7 @@ declare const _default$3: vue.DefineComponent<{
179
179
  };
180
180
  }, (_ctx: any, _cache: any) => vue.VNode<vue.RendererNode, vue.RendererElement, {
181
181
  [key: string]: any;
182
- }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
182
+ }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
183
183
  tenant: {
184
184
  type: StringConstructor;
185
185
  required: true;
@@ -196,7 +196,7 @@ declare const _default$3: vue.DefineComponent<{
196
196
  };
197
197
  }>>, {
198
198
  debug: boolean;
199
- }>;
199
+ }, {}>;
200
200
 
201
201
  declare const _default$2: vue.DefineComponent<{
202
202
  tenant: {
@@ -215,7 +215,7 @@ declare const _default$2: vue.DefineComponent<{
215
215
  };
216
216
  }, (_ctx: any, _cache: any) => vue.VNode<vue.RendererNode, vue.RendererElement, {
217
217
  [key: string]: any;
218
- }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
218
+ }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
219
219
  tenant: {
220
220
  type: StringConstructor;
221
221
  required: true;
@@ -232,7 +232,7 @@ declare const _default$2: vue.DefineComponent<{
232
232
  };
233
233
  }>>, {
234
234
  debug: boolean;
235
- }>;
235
+ }, {}>;
236
236
 
237
237
  declare const _default$1: vue.DefineComponent<{
238
238
  widgetId: {
@@ -247,7 +247,7 @@ declare const _default$1: vue.DefineComponent<{
247
247
  };
248
248
  }, (_ctx: any, _cache: any) => vue.VNode<vue.RendererNode, vue.RendererElement, {
249
249
  [key: string]: any;
250
- }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "logout"[], "logout", vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
250
+ }>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "logout"[], "logout", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
251
251
  widgetId: {
252
252
  type: StringConstructor;
253
253
  required: true;
@@ -262,7 +262,7 @@ declare const _default$1: vue.DefineComponent<{
262
262
  onLogout?: (...args: any[]) => any;
263
263
  }, {
264
264
  debug: boolean;
265
- }>;
265
+ }, {}>;
266
266
 
267
267
  type Options = {
268
268
  projectId: string;
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{computed as e,watch as t,inject as s,defineComponent as r,openBlock as n,createElementBlock as a,createElementVNode as i,unref as o,ref as d,readonly as u}from"vue";import l from"@descope/web-component";import c from"@descope/web-js-sdk";import"@descope/user-management-widget";import"@descope/role-management-widget";import"@descope/access-key-management-widget";import"@descope/audit-management-widget";import"@descope/user-profile-widget";const p=Symbol("$descope"),g={"x-descope-sdk-name":"vue","x-descope-sdk-version":"0.0.0-next-45ef6f06-20240717"},m="undefined"!=typeof window,b=()=>{const e=s(p);if(!e)throw Error("Missing Descope context, make sure you are using the Descope plugin");return e},y=()=>b().options,h=()=>b().sdk,v=()=>{const{session:t}=b();return t.isFetchSessionWasNeverCalled.value&&t.fetchSession(),{isLoading:e((()=>t.isLoading.value||t.isFetchSessionWasNeverCalled.value)),sessionToken:t.session,isAuthenticated:e((()=>!!t.session.value))}},f=()=>{const{user:s,session:r}=b(),n=()=>{!s.user.value&&r.session.value&&s.fetchUser()};return n(),t(r.session,n),{isLoading:e((()=>s.isLoading.value||s.isFetchUserWasNeverCalled.value)),user:s.user}},w=e=>(...t)=>{let s;try{s=e(...t)}catch(e){console.error(e)}return s};let S;const U=e=>{const t=c({persistTokens:m,storeLastAuthenticatedUser:m,...e,autoRefresh:m});return S=t,t};S=U({projectId:"temp pid"});const _=()=>m?S?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),j=()=>m?S?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),k=(e=_())=>S?.isJwtExpired(e),I=(e=j())=>S?.isJwtExpired(e),R=w(((e=_(),t)=>S?.getJwtPermissions(e,t))),q=w(((e=_(),t)=>S?.getJwtRoles(e,t))),M=["project-id","base-url","base-static-url","flow-id","^theme","^locale","^tenant","^debug","^telemetryKey","redirect-url","auto-focus","validate-on-blur","store-last-authenticated-user",".errorTransformer","^form","^client"];var T=r({__name:"Descope",props:{flowId:{type:String,required:!0},tenant:{type:String},theme:{type:String},locale:{type:String},debug:{type:Boolean},telemetryKey:{type:String},redirectUrl:{type:String},autoFocus:{type:Boolean||String},validateOnBlur:{type:Boolean},errorTransformer:{type:Function},form:{type:Object},client:{type:Object}},emits:["success","error","ready"],setup(t,{emit:s}){const r=t;l.sdkConfigOverrides={baseHeaders:g,persistTokens:!1,hooks:{get beforeRequest(){return S.httpClient.hooks.beforeRequest},set beforeRequest(e){}}};const{projectId:d,baseUrl:u,baseStaticUrl:c,storeLastAuthenticatedUser:p}=y(),m=h(),b=e((()=>r.form?JSON.stringify(r.form):"")),v=e((()=>r.client?JSON.stringify(r.client):"")),f=async e=>{await(m.httpClient.hooks?.afterRequest?.({},new Response(JSON.stringify(e.detail)))),s("success",e)},w=e=>s("error",e),U=e=>s("ready",e);return(e,s)=>(n(),a("div",null,[i("descope-wc",{"project-id":o(d),"base-url":o(u),"base-static-url":o(c),"flow-id":t.flowId,"^theme":t.theme,"^locale":t.locale,"^tenant":t.tenant,"^debug":t.debug,"^telemetryKey":t.telemetryKey,"redirect-url":t.redirectUrl,"auto-focus":t.autoFocus,"validate-on-blur":t.validateOnBlur,"store-last-authenticated-user":o(p),".errorTransformer":t.errorTransformer,"^form":o(b),"^client":o(v),onSuccess:f,onError:w,onReady:U},null,40,M)]))}});T.__file="src/Descope.vue";const B=["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"];var C=r({__name:"UserManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(e){const{projectId:t,baseUrl:s,baseStaticUrl:r}=y();return(d,u)=>(n(),a("div",null,[i("descope-user-management-widget",{"project-id":o(t),"base-url":o(s),"base-static-url":o(r),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"widget-id":e.widgetId},null,8,B)]))}});C.__file="src/UserManagement.vue";const A=["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"];var L=r({__name:"RoleManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(e){const{projectId:t,baseUrl:s,baseStaticUrl:r}=y();return(d,u)=>(n(),a("div",null,[i("descope-role-management-widget",{"project-id":o(t),"base-url":o(s),"base-static-url":o(r),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"widget-id":e.widgetId},null,8,A)]))}});L.__file="src/RoleManagement.vue";const F=["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"];var N=r({__name:"AccessKeyManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(e){const{projectId:t,baseUrl:s,baseStaticUrl:r}=y();return(d,u)=>(n(),a("div",null,[i("descope-access-key-management-widget",{"project-id":o(t),"base-url":o(s),"base-static-url":o(r),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"widget-id":e.widgetId},null,8,F)]))}});N.__file="src/AccessKeyManagement.vue";const O=["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"];var x=r({__name:"AuditManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(e){const{projectId:t,baseUrl:s,baseStaticUrl:r}=y();return(d,u)=>(n(),a("div",null,[i("descope-audit-management-widget",{"project-id":o(t),"base-url":o(s),"base-static-url":o(r),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"widget-id":e.widgetId},null,8,O)]))}});x.__file="src/AuditManagement.vue";const J=["project-id","base-url","base-static-url","^theme","^debug","widget-id"];var K=r({__name:"UserProfile",props:{widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},emits:["logout"],setup(e,{emit:t}){const s=e=>t("logout",e),{projectId:r,baseUrl:d,baseStaticUrl:u}=y();return(t,l)=>(n(),a("div",null,[i("descope-user-profile-widget",{"project-id":o(r),"base-url":o(d),"base-static-url":o(u),"^theme":e.theme,"^debug":e.debug,"widget-id":e.widgetId,onLogout:s},null,40,J)]))}});K.__file="src/UserProfile.vue";const D=d(null),P=()=>o(D)?.();let W;const E=()=>W;var G={install:function(s,r){const n=U({persistTokens:!0,...r,autoRefresh:!0,baseHeaders:g});W=n;const a=d(null),i=d(""),l=d(null),c=d(null);n.onSessionTokenChange((e=>{i.value=e})),n.onUserChange((e=>{c.value=e}));const m=async()=>{a.value=!0,await n.refresh(),a.value=!1},b=e((()=>null===a.value)),y=e((()=>null===l.value));D.value=()=>new Promise(((e,s)=>{!i.value&&b.value&&m().catch(s),t((()=>a.value),(()=>!a.value&&e(!!o(i))),{immediate:!0})})),s.provide(p,{session:{fetchSession:m,isLoading:u(a),session:u(i),isFetchSessionWasNeverCalled:b},user:{fetchUser:async()=>{l.value=!0,await n.me(),l.value=!1},isLoading:u(l),user:u(c),isFetchUserWasNeverCalled:y},sdk:n,options:r})}};export{N as AccessKeyManagement,x as AuditManagement,T as Descope,L as RoleManagement,C as UserManagement,K as UserProfile,G as default,R as getJwtPermissions,q as getJwtRoles,j as getRefreshToken,E as getSdk,_ as getSessionToken,I as isRefreshTokenExpired,k as isSessionTokenExpired,P as routeGuard,h as useDescope,v as useSession,f as useUser};
1
+ import{computed as e,watch as t,inject as r,defineComponent as s,resolveComponent as n,openBlock as a,createElementBlock as o,createVNode as i,unref as u,ref as d,readonly as l}from"vue";import c from"@descope/web-component";import"@descope/core-js-sdk";import p from"@descope/web-js-sdk";import"@descope/user-management-widget";import"@descope/role-management-widget";import"@descope/access-key-management-widget";import"@descope/audit-management-widget";import"@descope/user-profile-widget";const g=Symbol("$descope"),m={"x-descope-sdk-name":"vue","x-descope-sdk-version":"0.0.1"},b="undefined"!=typeof window,y=()=>{const e=r(g);if(!e)throw Error("Missing Descope context, make sure you are using the Descope plugin");return e},v=()=>y().options,h=()=>y().sdk,f=()=>{const{session:t}=y();return t.isFetchSessionWasNeverCalled.value&&t.fetchSession(),{isLoading:e((()=>t.isLoading.value||t.isFetchSessionWasNeverCalled.value)),sessionToken:t.session,isAuthenticated:e((()=>!!t.session.value))}},w=()=>{const{user:r,session:s}=y(),n=()=>{!r.user.value&&s.session.value&&r.fetchUser()};return n(),t(s.session,n),{isLoading:e((()=>r.isLoading.value||r.isFetchUserWasNeverCalled.value)),user:r.user}},S=e=>(...t)=>{let r;try{r=e(...t)}catch(e){console.error(e)}return r};let U;const _=e=>{const t=p({persistTokens:b,storeLastAuthenticatedUser:b,...e,autoRefresh:b});return U=t,t};U=_({projectId:"temp pid"});const j=()=>b?U?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),k=()=>b?U?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),I=(e=j())=>U?.isJwtExpired(e),R=(e=k())=>U?.isJwtExpired(e),q=S(((e=j(),t)=>U?.getJwtPermissions(e,t))),M=S(((e=j(),t)=>U?.getJwtRoles(e,t)));var T=s({__name:"Descope",props:{flowId:{type:String,required:!0},tenant:{type:String},theme:{type:String},locale:{type:String},debug:{type:Boolean},telemetryKey:{type:String},redirectUrl:{type:String},autoFocus:{type:Boolean||String},validateOnBlur:{type:Boolean},errorTransformer:{type:Function},form:{type:Object},client:{type:Object}},emits:["success","error","ready"],setup(t,{emit:r}){c.sdkConfigOverrides={baseHeaders:m,persistTokens:!1,hooks:{get beforeRequest(){return U.httpClient.hooks.beforeRequest},set beforeRequest(e){}}};const s=t,d=r,{projectId:l,baseUrl:p,baseStaticUrl:g,storeLastAuthenticatedUser:b}=v(),y=h(),f=e((()=>s.form?JSON.stringify(s.form):"")),w=e((()=>s.client?JSON.stringify(s.client):"")),S=async e=>{await(y.httpClient.hooks?.afterRequest?.({},new Response(JSON.stringify(e.detail)))),d("success",e)},_=e=>d("error",e),j=e=>d("ready",e);return(e,r)=>{const s=n("descope-wc");return a(),o("div",null,[i(s,{"project-id":u(l),"base-url":u(p),"base-static-url":u(g),"flow-id":t.flowId,"^theme":t.theme,"^locale":t.locale,"^tenant":t.tenant,"^debug":t.debug,"^telemetryKey":t.telemetryKey,"redirect-url":t.redirectUrl,"auto-focus":t.autoFocus,"validate-on-blur":t.validateOnBlur,"store-last-authenticated-user":u(b),".errorTransformer":t.errorTransformer,"^form":f.value,"^client":w.value,onSuccess:S,onError:_,onReady:j},null,40,["project-id","base-url","base-static-url","flow-id","^theme","^locale","^tenant","^debug","^telemetryKey","redirect-url","auto-focus","validate-on-blur","store-last-authenticated-user",".errorTransformer","^form","^client"])])}}});T.__file="src/Descope.vue";var B=s({__name:"UserManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(e){const{projectId:t,baseUrl:r,baseStaticUrl:s}=v();return(d,l)=>{const c=n("descope-user-management-widget");return a(),o("div",null,[i(c,{"project-id":u(t),"base-url":u(r),"base-static-url":u(s),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"widget-id":e.widgetId},null,8,["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"])])}}});B.__file="src/UserManagement.vue";var C=s({__name:"RoleManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(e){const{projectId:t,baseUrl:r,baseStaticUrl:s}=v();return(d,l)=>{const c=n("descope-role-management-widget");return a(),o("div",null,[i(c,{"project-id":u(t),"base-url":u(r),"base-static-url":u(s),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"widget-id":e.widgetId},null,8,["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"])])}}});C.__file="src/RoleManagement.vue";var A=s({__name:"AccessKeyManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(e){const{projectId:t,baseUrl:r,baseStaticUrl:s}=v();return(d,l)=>{const c=n("descope-access-key-management-widget");return a(),o("div",null,[i(c,{"project-id":u(t),"base-url":u(r),"base-static-url":u(s),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"widget-id":e.widgetId},null,8,["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"])])}}});A.__file="src/AccessKeyManagement.vue";var L=s({__name:"AuditManagement",props:{tenant:{type:String,required:!0},widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(e){const{projectId:t,baseUrl:r,baseStaticUrl:s}=v();return(d,l)=>{const c=n("descope-audit-management-widget");return a(),o("div",null,[i(c,{"project-id":u(t),"base-url":u(r),"base-static-url":u(s),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"widget-id":e.widgetId},null,8,["project-id","base-url","base-static-url","^theme","^tenant","^debug","widget-id"])])}}});L.__file="src/AuditManagement.vue";var F=s({__name:"UserProfile",props:{widgetId:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},emits:["logout"],setup(e,{emit:t}){const r=t,s=e=>r("logout",e),{projectId:d,baseUrl:l,baseStaticUrl:c}=v();return(t,r)=>{const p=n("descope-user-profile-widget");return a(),o("div",null,[i(p,{"project-id":u(d),"base-url":u(l),"base-static-url":u(c),"^theme":e.theme,"^debug":e.debug,"widget-id":e.widgetId,onLogout:s},null,8,["project-id","base-url","base-static-url","^theme","^debug","widget-id"])])}}});F.__file="src/UserProfile.vue";const N=d(null),O=()=>u(N)?.();let J;const K=()=>J;var x={install:function(r,s){const n=_({persistTokens:!0,...s,autoRefresh:!0,baseHeaders:m});J=n;const a=d(null),o=d(""),i=d(null),c=d(null);n.onSessionTokenChange((e=>{o.value=e})),n.onUserChange((e=>{c.value=e}));const p=async()=>{a.value=!0,await n.refresh(),a.value=!1},b=e((()=>null===a.value)),y=e((()=>null===i.value));N.value=()=>new Promise(((e,r)=>{!o.value&&b.value&&p().catch(r),t((()=>a.value),(()=>!a.value&&e(!!u(o))),{immediate:!0})})),r.provide(g,{session:{fetchSession:p,isLoading:l(a),session:l(o),isFetchSessionWasNeverCalled:b},user:{fetchUser:async()=>{i.value=!0,await n.me(),i.value=!1},isLoading:l(i),user:l(c),isFetchUserWasNeverCalled:y},sdk:n,options:s})}};export{A as AccessKeyManagement,L as AuditManagement,T as Descope,C as RoleManagement,B as UserManagement,F as UserProfile,x as default,q as getJwtPermissions,M as getJwtRoles,k as getRefreshToken,K as getSdk,j as getSessionToken,R as isRefreshTokenExpired,I as isSessionTokenExpired,O as routeGuard,h as useDescope,f as useSession,w as useUser};
2
2
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,96 +1,94 @@
1
1
  {
2
- "name": "@descope/vue-sdk",
3
- "version": "0.0.0-next-45ef6f06-20240717",
4
- "main": "dist/index.cjs",
5
- "module": "dist/index.mjs",
6
- "type": "module",
7
- "license": "MIT",
8
- "exports": {
9
- "require": {
10
- "types": "./dist/index.d.ts",
11
- "default": "./dist/index.cjs"
12
- },
13
- "import": {
14
- "types": "./dist/index.d.ts",
15
- "default": "./dist/index.mjs"
16
- }
17
- },
18
- "types": "dist/index.d.ts",
19
- "files": [
20
- "dist"
21
- ],
22
- "scripts": {
23
- "start": "vue-cli-service serve --port 3000",
24
- "build": "rollup -m -c rollup.config.js",
25
- "test": "vue-cli-service test:unit",
26
- "lint": "vue-cli-service lint",
27
- "format-lint": "pretty-quick --staged --ignore-path .gitignore && lint-staged",
28
- "format": "prettier . -w --ignore-path .gitignore",
29
- "format-check": "prettier . --check --ignore-path .gitignore",
30
- "leaks": "bash ./scripts/gitleaks/gitleaks.sh",
31
- "prepare": "husky install",
32
- "prepublishOnly": "npm run build"
33
- },
34
- "lint-staged": {
35
- "+(src|tests|example)/**/*.{js,ts,jsx,tsx}": [
36
- "npm run lint"
37
- ]
38
- },
39
- "dependencies": {
40
- "@descope/access-key-management-widget": "0.1.111",
41
- "@descope/audit-management-widget": "0.1.74",
42
- "@descope/role-management-widget": "0.1.109",
43
- "@descope/user-management-widget": "0.4.112",
44
- "@descope/user-profile-widget": "0.0.86",
45
- "@descope/web-component": "3.19.8"
46
- },
47
- "peerDependencies": {
48
- "vue": ">=3"
49
- },
50
- "optionalDependencies": {
51
- "@descope/web-js-sdk": ">=1.10.24"
52
- },
53
- "devDependencies": {
54
- "@rollup/plugin-typescript": "^11.1.0",
55
- "@types/jest": "^27.0.1",
56
- "@typescript-eslint/eslint-plugin": "^5.4.0",
57
- "@typescript-eslint/parser": "^5.4.0",
58
- "@vue/cli-plugin-babel": "~5.0.0",
59
- "@vue/cli-plugin-eslint": "~5.0.0",
60
- "@vue/cli-plugin-typescript": "~5.0.0",
61
- "@vue/cli-plugin-unit-jest": "~5.0.0",
62
- "@vue/cli-service": "~5.0.0",
63
- "@vue/eslint-config-typescript": "^9.1.0",
64
- "@vue/test-utils": "^2.0.0-0",
65
- "@vue/vue3-jest": "^27.0.0-alpha.1",
66
- "babel-jest": "^27.0.6",
67
- "eslint": "^7.32.0",
68
- "eslint-config-prettier": "^8.3.0",
69
- "eslint-plugin-prettier": "^4.0.0",
70
- "eslint-plugin-vue": "^8.0.3",
71
- "husky": "^8.0.1",
72
- "jest": "^27.0.5",
73
- "jest-fetch-mock": "^3.0.3",
74
- "lint-staged": "^13.0.3",
75
- "prettier": "^2.4.1",
76
- "pretty-quick": "^3.1.3",
77
- "rollup": "^2.79.1",
78
- "rollup-plugin-auto-external": "^2.0.0",
79
- "rollup-plugin-commonjs": "^10.1.0",
80
- "rollup-plugin-define": "1.0.1",
81
- "rollup-plugin-delete": "^2.0.0",
82
- "rollup-plugin-dts": "^4.2.2",
83
- "rollup-plugin-node-resolve": "^5.2.0",
84
- "rollup-plugin-terser": "^7.0.2",
85
- "rollup-plugin-typescript2": "^0.34.1",
86
- "rollup-plugin-vue": "^6.0.0",
87
- "ts-jest": "^27.0.4",
88
- "tslib": "^2.3.1",
89
- "typescript": "^4.9.3",
90
- "vue": "^3.2.13",
91
- "vue-router": "^4.1.6"
92
- },
93
- "overrides": {
94
- "semver": "7.5.2"
95
- }
96
- }
2
+ "name": "@descope/vue-sdk",
3
+ "version": "0.0.1",
4
+ "main": "dist/index.cjs",
5
+ "module": "dist/index.mjs",
6
+ "type": "module",
7
+ "license": "MIT",
8
+ "exports": {
9
+ "require": {
10
+ "types": "./dist/index.d.ts",
11
+ "default": "./dist/index.cjs"
12
+ },
13
+ "import": {
14
+ "types": "./dist/index.d.ts",
15
+ "default": "./dist/index.mjs"
16
+ }
17
+ },
18
+ "types": "dist/index.d.ts",
19
+ "files": [
20
+ "dist"
21
+ ],
22
+ "lint-staged": {
23
+ "+(src|tests|example)/**/*.{js,ts,jsx,tsx}": [
24
+ "npm run lint"
25
+ ]
26
+ },
27
+ "dependencies": {
28
+ "@descope/access-key-management-widget": "0.1.114",
29
+ "@descope/role-management-widget": "0.1.112",
30
+ "@descope/user-management-widget": "0.4.115",
31
+ "@descope/audit-management-widget": "0.1.77",
32
+ "@descope/user-profile-widget": "0.0.92",
33
+ "@descope/web-js-sdk": "1.15.9",
34
+ "@descope/web-component": "3.20.3",
35
+ "@descope/core-js-sdk": "2.23.5"
36
+ },
37
+ "peerDependencies": {
38
+ "vue": ">=3"
39
+ },
40
+ "devDependencies": {
41
+ "@rollup/plugin-typescript": "^11.1.0",
42
+ "@types/jest": "^27.0.1",
43
+ "@typescript-eslint/eslint-plugin": "^5.4.0",
44
+ "@types/node": "20.14.11",
45
+ "@typescript-eslint/parser": "^5.4.0",
46
+ "@vue/cli-plugin-babel": "~5.0.0",
47
+ "@vue/cli-plugin-eslint": "~5.0.0",
48
+ "@vue/cli-plugin-typescript": "~5.0.0",
49
+ "@vue/cli-plugin-unit-jest": "~5.0.0",
50
+ "@vue/cli-service": "~5.0.0",
51
+ "@vue/eslint-config-typescript": "^9.1.0",
52
+ "@vue/test-utils": "^2.0.0-0",
53
+ "@vue/vue3-jest": "^27.0.0-alpha.1",
54
+ "babel-jest": "^27.0.6",
55
+ "eslint": "^7.32.0",
56
+ "eslint-config-prettier": "^8.3.0",
57
+ "eslint-plugin-prettier": "^4.0.0",
58
+ "eslint-plugin-vue": "^8.0.3",
59
+ "jest": "^29.0.0",
60
+ "jest-fetch-mock": "^3.0.3",
61
+ "lint-staged": "^13.0.3",
62
+ "prettier": "^2.4.1",
63
+ "pretty-quick": "^3.1.3",
64
+ "rollup": "^2.79.1",
65
+ "rollup-plugin-auto-external": "^2.0.0",
66
+ "rollup-plugin-commonjs": "^10.1.0",
67
+ "rollup-plugin-define": "1.0.1",
68
+ "rollup-plugin-delete": "^2.0.0",
69
+ "rollup-plugin-dts": "^4.2.2",
70
+ "rollup-plugin-node-resolve": "^5.2.0",
71
+ "rollup-plugin-terser": "^7.0.2",
72
+ "rollup-plugin-typescript2": "^0.34.1",
73
+ "rollup-plugin-vue": "^6.0.0",
74
+ "ts-jest": "^27.0.4",
75
+ "tslib": "^2.3.1",
76
+ "typescript": "^4.9.3",
77
+ "vue": "^3.2.13",
78
+ "vue-router": "^4.1.6",
79
+ "jest-environment-jsdom": "^29.0.0"
80
+ },
81
+ "overrides": {
82
+ "semver": "7.5.2"
83
+ },
84
+ "scripts": {
85
+ "start": "vue-cli-service serve --port 3000",
86
+ "build": "rollup -m -c rollup.config.js",
87
+ "test": "vue-cli-service test:unit",
88
+ "lint": "vue-cli-service lint",
89
+ "format-lint": "pretty-quick --staged --ignore-path .gitignore && lint-staged",
90
+ "format": "prettier . -w --ignore-path .gitignore",
91
+ "format-check": "prettier . --check --ignore-path .gitignore",
92
+ "leaks": "bash ./scripts/gitleaks/gitleaks.sh"
93
+ }
94
+ }