@descope/vue-sdk 2.0.16 → 2.0.19

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
@@ -54,6 +54,7 @@ app.mount('#app');
54
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
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
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. -->
57
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. -->
58
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. -->
59
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. -->
@@ -425,10 +426,11 @@ Open your browser and navigate to [http://localhost:3000](http://localhost:3000)
425
426
 
426
427
  See the following table for customization environment variables for the example app:
427
428
 
428
- | Env Variable | Description | Default value |
429
- | ------------------------ | -------------------------------------- | ----------------- |
430
- | VUE_APP_DESCOPE_FLOW_ID | Which flow ID to use in the login page | **sign-up-or-in** |
431
- | VUE_APP_DESCOPE_BASE_URL | Custom Descope base URL | None |
429
+ | Env Variable | Description | Default value |
430
+ | ------------------------------- | -------------------------------------- | ----------------- |
431
+ | VUE_APP_DESCOPE_FLOW_ID | Which flow ID to use in the login page | **sign-up-or-in** |
432
+ | VUE_APP_DESCOPE_BASE_URL | Custom Descope base URL | None |
433
+ | VUE_APP_DESCOPE_BASE_STATIC_URL | Custom Descope base static URL | None |
432
434
 
433
435
  Example for `.env.local` file template:
434
436
 
@@ -439,6 +441,8 @@ VUE_APP_DESCOPE_PROJECT_ID="<Project-ID>"
439
441
  VUE_APP_DESCOPE_FLOW_ID=""
440
442
  # Descope base URL
441
443
  VUE_APP_DESCOPE_BASE_URL=""
444
+ # Descope base static URL
445
+ VUE_APP_DESCOPE_BASE_STATIC_URL=""
442
446
  ```
443
447
 
444
448
  ## Q & A
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 i=Symbol("$descope"),a={"x-descope-sdk-name":"vue","x-descope-sdk-version":"2.0.16"},d="undefined"!=typeof window,u=()=>{const t=e.inject(i);if(!t)throw Error("Missing Descope context, make sure you are using the Descope plugin");return t},l=()=>u().options,c=()=>u().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:d,storeLastAuthenticatedUser:d,...e,autoRefresh:d});return g=t,t};g=m({projectId:"temp pid"});const f=()=>d?g?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),y=()=>d?g?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),h=p(((e=f(),t)=>g?.getJwtPermissions(e,t))),w=p(((e=f(),t)=>g?.getJwtRoles(e,t))),b=["project-id","base-url","flow-id","^theme","^locale","^tenant","^debug","^telemetryKey","redirect-url","auto-focus","store-last-authenticated-user",".errorTransformer","^form","^client"];var v=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},errorTransformer:{type:Function},form:{type:Object},client:{type:Object}},emits:["success","error","ready"],setup(t,{emit:r}){const n=t;s.default.sdkConfigOverrides={baseHeaders:a,persistTokens:!1,hooks:{get beforeRequest(){return g.httpClient.hooks.beforeRequest},set beforeRequest(e){}}};const{projectId:o,baseUrl:i,storeLastAuthenticatedUser:d}=l(),u=c(),p=e.computed((()=>n.form?JSON.stringify(n.form):"")),m=e.computed((()=>n.client?JSON.stringify(n.client):"")),f=async e=>{await(u.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(i),"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,"store-last-authenticated-user":e.unref(d),".errorTransformer":t.errorTransformer,"^form":e.unref(p),"^client":e.unref(m),onSuccess:f,onError:y,onReady:h},null,40,b)]))}});v.__file="src/Descope.vue";const S=["project-id","base-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}=l();return(s,o)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-user-management-widget",{"project-id":e.unref(r),"base-url":e.unref(n),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug,"widget-id":t.widgetId},null,8,S)]))}});k.__file="src/UserManagement.vue";const x=["project-id","base-url","^theme","^tenant","^debug","widget-id"];var _=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}=l();return(s,o)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-role-management-widget",{"project-id":e.unref(r),"base-url":e.unref(n),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug,"widget-id":t.widgetId},null,8,x)]))}});_.__file="src/RoleManagement.vue";const j=["project-id","base-url","^theme","^tenant","^debug","widget-id"];var q=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}=l();return(s,o)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-access-key-management-widget",{"project-id":e.unref(r),"base-url":e.unref(n),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug,"widget-id":t.widgetId},null,8,j)]))}});q.__file="src/AccessKeyManagement.vue";const U=["project-id","base-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}=l();return(s,o)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-audit-management-widget",{"project-id":e.unref(r),"base-url":e.unref(n),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug,"widget-id":t.widgetId},null,8,U)]))}});B.__file="src/AuditManagement.vue";const I=["project-id","base-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}=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),"^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:a});C=n;const s=e.ref(null),o=e.ref(""),d=e.ref(null),u=e.ref(null);n.onSessionTokenChange((e=>{o.value=e})),n.onUserChange((e=>{u.value=e}));const l=async()=>{s.value=!0,await n.refresh(),s.value=!1},c=e.computed((()=>null===s.value)),p=e.computed((()=>null===d.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(i,{session:{fetchSession:l,isLoading:e.readonly(s),session:e.readonly(o),isFetchSessionWasNeverCalled:c},user:{fetchUser:async()=>{d.value=!0,await n.me(),d.value=!1},isLoading:e.readonly(d),user:e.readonly(u),isFetchUserWasNeverCalled:p},sdk:n,options:r})}};exports.AccessKeyManagement=q,exports.AuditManagement=B,exports.Descope=v,exports.RoleManagement=_,exports.UserManagement=k,exports.UserProfile=E,exports.default=T,exports.getJwtPermissions=h,exports.getJwtRoles=w,exports.getRefreshToken=y,exports.getSdk=()=>C,exports.getSessionToken=f,exports.isRefreshTokenExpired=(e=y())=>g?.isJwtExpired(e),exports.isSessionTokenExpired=(e=f())=>g?.isJwtExpired(e),exports.routeGuard=()=>e.unref(R)?.(),exports.useDescope=c,exports.useSession=()=>{const{session:t}=u();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}=u(),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"),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":"2.0.19"},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}};
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.ts CHANGED
@@ -27,6 +27,9 @@ declare const _default$6: vue.DefineComponent<{
27
27
  type: StringConstructor;
28
28
  };
29
29
  autoFocus: {
30
+ type: StringConstructor | BooleanConstructor;
31
+ };
32
+ validateOnBlur: {
30
33
  type: BooleanConstructor;
31
34
  };
32
35
  errorTransformer: {
@@ -64,6 +67,9 @@ declare const _default$6: vue.DefineComponent<{
64
67
  type: StringConstructor;
65
68
  };
66
69
  autoFocus: {
70
+ type: StringConstructor | BooleanConstructor;
71
+ };
72
+ validateOnBlur: {
67
73
  type: BooleanConstructor;
68
74
  };
69
75
  errorTransformer: {
@@ -81,7 +87,7 @@ declare const _default$6: vue.DefineComponent<{
81
87
  onReady?: (...args: any[]) => any;
82
88
  }, {
83
89
  debug: boolean;
84
- autoFocus: boolean;
90
+ validateOnBlur: boolean;
85
91
  }>;
86
92
 
87
93
  declare const _default$5: vue.DefineComponent<{
@@ -261,6 +267,7 @@ declare const _default$1: vue.DefineComponent<{
261
267
  type Options = {
262
268
  projectId: string;
263
269
  baseUrl?: string;
270
+ baseStaticUrl?: string;
264
271
  persistTokens?: boolean;
265
272
  sessionTokenViaCookie?: boolean;
266
273
  storeLastAuthenticatedUser?: boolean;
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 o,createElementVNode as i,unref as a,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":"2.0.16"},m="undefined"!=typeof window,y=()=>{const e=s(p);if(!e)throw Error("Missing Descope context, make sure you are using the Descope plugin");return e},h=()=>y().options,b=()=>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:s,session:r}=y(),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}},v=e=>(...t)=>{let s;try{s=e(...t)}catch(e){console.error(e)}return s};let S;const _=e=>{const t=c({persistTokens:m,storeLastAuthenticatedUser:m,...e,autoRefresh:m});return S=t,t};S=_({projectId:"temp pid"});const j=()=>m?S?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),k=()=>m?S?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),U=(e=j())=>S?.isJwtExpired(e),I=(e=k())=>S?.isJwtExpired(e),R=v(((e=j(),t)=>S?.getJwtPermissions(e,t))),q=v(((e=j(),t)=>S?.getJwtRoles(e,t))),M=["project-id","base-url","flow-id","^theme","^locale","^tenant","^debug","^telemetryKey","redirect-url","auto-focus","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},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,storeLastAuthenticatedUser:c}=h(),p=b(),m=e((()=>r.form?JSON.stringify(r.form):"")),y=e((()=>r.client?JSON.stringify(r.client):"")),f=async e=>{await(p.httpClient.hooks?.afterRequest?.({},new Response(JSON.stringify(e.detail)))),s("success",e)},w=e=>s("error",e),v=e=>s("ready",e);return(e,s)=>(n(),o("div",null,[i("descope-wc",{"project-id":a(d),"base-url":a(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,"store-last-authenticated-user":a(c),".errorTransformer":t.errorTransformer,"^form":a(m),"^client":a(y),onSuccess:f,onError:w,onReady:v},null,40,M)]))}});T.__file="src/Descope.vue";const C=["project-id","base-url","^theme","^tenant","^debug","widget-id"];var A=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}=h();return(r,d)=>(n(),o("div",null,[i("descope-user-management-widget",{"project-id":a(t),"base-url":a(s),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"widget-id":e.widgetId},null,8,C)]))}});A.__file="src/UserManagement.vue";const L=["project-id","base-url","^theme","^tenant","^debug","widget-id"];var F=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}=h();return(r,d)=>(n(),o("div",null,[i("descope-role-management-widget",{"project-id":a(t),"base-url":a(s),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"widget-id":e.widgetId},null,8,L)]))}});F.__file="src/RoleManagement.vue";const N=["project-id","base-url","^theme","^tenant","^debug","widget-id"];var B=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}=h();return(r,d)=>(n(),o("div",null,[i("descope-access-key-management-widget",{"project-id":a(t),"base-url":a(s),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"widget-id":e.widgetId},null,8,N)]))}});B.__file="src/AccessKeyManagement.vue";const J=["project-id","base-url","^theme","^tenant","^debug","widget-id"];var K=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}=h();return(r,d)=>(n(),o("div",null,[i("descope-audit-management-widget",{"project-id":a(t),"base-url":a(s),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"widget-id":e.widgetId},null,8,J)]))}});K.__file="src/AuditManagement.vue";const x=["project-id","base-url","^theme","^debug","widget-id"];var O=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}=h();return(t,u)=>(n(),o("div",null,[i("descope-user-profile-widget",{"project-id":a(r),"base-url":a(d),"^theme":e.theme,"^debug":e.debug,"widget-id":e.widgetId,onLogout:s},null,40,x)]))}});O.__file="src/UserProfile.vue";const D=d(null),P=()=>a(D)?.();let W;const E=()=>W;var G={install:function(s,r){const n=_({persistTokens:!0,...r,autoRefresh:!0,baseHeaders:g});W=n;const o=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()=>{o.value=!0,await n.refresh(),o.value=!1},y=e((()=>null===o.value)),h=e((()=>null===l.value));D.value=()=>new Promise(((e,s)=>{!i.value&&y.value&&m().catch(s),t((()=>o.value),(()=>!o.value&&e(!!a(i))),{immediate:!0})})),s.provide(p,{session:{fetchSession:m,isLoading:u(o),session:u(i),isFetchSessionWasNeverCalled:y},user:{fetchUser:async()=>{l.value=!0,await n.me(),l.value=!1},isLoading:u(l),user:u(c),isFetchUserWasNeverCalled:h},sdk:n,options:r})}};export{B as AccessKeyManagement,K as AuditManagement,T as Descope,F as RoleManagement,A as UserManagement,O as UserProfile,G as default,R as getJwtPermissions,q as getJwtRoles,k as getRefreshToken,E as getSdk,j as getSessionToken,I as isRefreshTokenExpired,U as isSessionTokenExpired,P as routeGuard,b as useDescope,f as useSession,w as useUser};
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":"2.0.19"},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 J=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)]))}});J.__file="src/AuditManagement.vue";const K=["project-id","base-url","base-static-url","^theme","^debug","widget-id"];var x=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,K)]))}});x.__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,J as AuditManagement,T as Descope,L as RoleManagement,C as UserManagement,x 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};
2
2
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@descope/vue-sdk",
3
- "version": "2.0.16",
3
+ "version": "2.0.19",
4
4
  "main": "dist/index.cjs",
5
5
  "module": "dist/index.mjs",
6
6
  "type": "module",
@@ -37,12 +37,12 @@
37
37
  ]
38
38
  },
39
39
  "dependencies": {
40
- "@descope/access-key-management-widget": "0.1.68",
41
- "@descope/audit-management-widget": "0.1.31",
42
- "@descope/role-management-widget": "0.1.66",
43
- "@descope/user-management-widget": "0.4.68",
44
- "@descope/user-profile-widget": "0.0.34",
45
- "@descope/web-component": "3.12.0"
40
+ "@descope/access-key-management-widget": "0.1.81",
41
+ "@descope/audit-management-widget": "0.1.44",
42
+ "@descope/role-management-widget": "0.1.79",
43
+ "@descope/user-management-widget": "0.4.82",
44
+ "@descope/user-profile-widget": "0.0.52",
45
+ "@descope/web-component": "3.15.0"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "vue": ">=3"