@descope/vue-sdk 1.0.1 → 1.0.3

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
@@ -40,18 +40,15 @@ app.mount('#app');
40
40
 
41
41
  ```vue
42
42
  <template>
43
- <Descope
44
- :flowId.prop="'my-flow-id'"
45
- @error="handleError"
46
- @success="handleSuccess"
47
- />
43
+ <Descope flowId="my-flow-id" @error="handleError" @success="handleSuccess" />
48
44
  <!-- additional props -->
49
- <!-- :theme.prop="'dark'" theme can be "light", "dark" or "os", which auto select a theme based on the OS theme. Default is "light" -->
50
- <!-- :debug.prop="true" debug can be set to true to enable debug mode -->
51
- <!-- :tenant.prop="tenantId" tenant ID for SSO (SAML) login. If not provided, Descope will use the domain of available email to choose the tenant -->
52
- <!-- :redirectUrl.prop="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) -->
53
- <!-- :autoFocus.prop="'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 -->
54
- <!-- :errorTransformer.prop="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. -->
45
+ <!-- theme="dark" theme can be "light", "dark" or "os", which auto select a theme based on the OS theme. Default is "light" -->
46
+ <!-- v-bind:debug="true" debug can be set to true to enable debug mode -->
47
+ <!-- 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. -->
48
+ <!-- tenant="tenantId" tenant ID for SSO (SAML) login. If not provided, Descope will use the domain of available email to choose the tenant -->
49
+ <!-- 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) -->
50
+ <!-- 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 -->
51
+ <!-- :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. -->
55
52
  </template>
56
53
 
57
54
  <script setup>
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),s=require("@descope/web-component"),r=require("@descope/web-js-sdk");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=t(s),n=t(r);const u=Symbol("$descope"),a={"x-descope-sdk-name":"vue","x-descope-sdk-version":"1.0.1"},i="undefined"!=typeof window,l=()=>{const s=e.inject(u);if(!s)throw Error("Missing Descope context, make sure you are using the Descope plugin");return s},c=()=>l().sdk,d=["project-id","base-url","flow-id","^theme","^tenant","^debug","^telemetryKey","redirect-url","auto-focus",".errorTransformer"];var p=e.defineComponent({__name:"Descope",props:{flowId:{type:String,required:!0},tenant:{type:String},theme:{type:String},debug:{type:Boolean},telemetryKey:{type:String},redirectUrl:{type:String},autoFocus:{type:Boolean},errorTransformer:{type:Function}},emits:["success","error"],setup(s,{emit:r}){o.default.sdkConfigOverrides={baseHeaders:a};const{projectId:t,baseUrl:n}=l().options,u=c(),i=async e=>{r("success",e),await(u.httpClient.hooks?.afterRequest?.({},new Response(JSON.stringify(e.detail))))},p=e=>r("error",e);return(r,o)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-wc",{"project-id":e.unref(t),"base-url":e.unref(n),"flow-id":s.flowId,"^theme":s.theme,"^tenant":s.tenant,"^debug":s.debug,"^telemetryKey":s.telemetryKey,"redirect-url":s.redirectUrl,"auto-focus":s.autoFocus,".errorTransformer":s.errorTransformer,onSuccess:i,onError:p},null,40,d)]))}});p.__file="src/Descope.vue";const f=e=>(...s)=>{let r;try{r=e(...s)}catch(e){console.error(e)}return r};let v;const g=e=>{const s=n.default({...e,persistTokens:i,autoRefresh:i});return v=s,s};v=g({projectId:"temp pid"});const m=()=>i?v?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),y=f(((e=m(),s)=>v?.getJwtPermissions(e,s))),h=f(((e=m(),s)=>v?.getJwtRoles(e,s))),w=e.ref(null);let S;var k={install:function(s,r){const t=g({...r,persistTokens:!0,autoRefresh:!0,baseHeaders:a});S=t;const o=e.ref(null),n=e.ref(""),i=e.ref(null),l=e.ref(null);t.onSessionTokenChange((e=>{n.value=e})),t.onUserChange((e=>{l.value=e}));const c=async()=>{o.value=!0,await t.refresh(),o.value=!1},d=e.computed((()=>null===o.value)),p=e.computed((()=>null===i.value));w.value=async()=>(!n.value&&d.value&&await c(),!!e.unref(n)),s.provide(u,{session:{fetchSession:c,isLoading:e.readonly(o),session:e.readonly(n),isFetchSessionWasNeverCalled:d},user:{fetchUser:async()=>{i.value=!0,await t.me(),i.value=!1},isLoading:e.readonly(i),user:e.readonly(l),isFetchUserWasNeverCalled:p},sdk:t,options:r})}};exports.Descope=p,exports.default=k,exports.getJwtPermissions=y,exports.getJwtRoles=h,exports.getRefreshToken=()=>i?v?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),exports.getSdk=()=>S,exports.getSessionToken=m,exports.routeGuard=()=>e.unref(w)?.(),exports.useDescope=c,exports.useSession=()=>{const{session:s}=l();return s.isFetchSessionWasNeverCalled.value&&s.fetchSession(),{isLoading:e.computed((()=>s.isLoading.value||s.isFetchSessionWasNeverCalled.value)),sessionToken:s.session,isAuthenticated:e.computed((()=>!!s.session.value))}},exports.useUser=()=>{const{user:s,session:r}=l(),t=()=>{!s.user.value&&r.session.value&&s.fetchUser()};return t(),e.watch(r.session,t),{isLoading:e.computed((()=>s.isLoading.value||s.isFetchUserWasNeverCalled.value)),user:s.user}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),s=require("@descope/web-component"),r=require("@descope/web-js-sdk");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=t(s),n=t(r);const a=Symbol("$descope"),u={"x-descope-sdk-name":"vue","x-descope-sdk-version":"1.0.3"},i="undefined"!=typeof window,l=()=>{const s=e.inject(a);if(!s)throw Error("Missing Descope context, make sure you are using the Descope plugin");return s},c=()=>l().sdk,d=["project-id","base-url","flow-id","^theme","^locale","^tenant","^debug","^telemetryKey","redirect-url","auto-focus",".errorTransformer"];var p=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}},emits:["success","error"],setup(s,{emit:r}){o.default.sdkConfigOverrides={baseHeaders:u};const{projectId:t,baseUrl:n}=l().options,a=c(),i=async e=>{await(a.httpClient.hooks?.afterRequest?.({},new Response(JSON.stringify(e.detail)))),r("success",e)},p=e=>r("error",e);return(r,o)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-wc",{"project-id":e.unref(t),"base-url":e.unref(n),"flow-id":s.flowId,"^theme":s.theme,"^locale":s.locale,"^tenant":s.tenant,"^debug":s.debug,"^telemetryKey":s.telemetryKey,"redirect-url":s.redirectUrl,"auto-focus":s.autoFocus,".errorTransformer":s.errorTransformer,onSuccess:i,onError:p},null,40,d)]))}});p.__file="src/Descope.vue";const f=e=>(...s)=>{let r;try{r=e(...s)}catch(e){console.error(e)}return r};let v;const m=e=>{const s=n.default({...e,persistTokens:i,autoRefresh:i});return v=s,s};v=m({projectId:"temp pid"});const g=()=>i?v?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),y=f(((e=g(),s)=>v?.getJwtPermissions(e,s))),h=f(((e=g(),s)=>v?.getJwtRoles(e,s))),w=e.ref(null);let S;var k={install:function(s,r){const t=m({...r,persistTokens:!0,autoRefresh:!0,baseHeaders:u});S=t;const o=e.ref(null),n=e.ref(""),i=e.ref(null),l=e.ref(null);t.onSessionTokenChange((e=>{n.value=e})),t.onUserChange((e=>{l.value=e}));const c=async()=>{o.value=!0,await t.refresh(),o.value=!1},d=e.computed((()=>null===o.value)),p=e.computed((()=>null===i.value));w.value=()=>new Promise(((s,r)=>{!n.value&&d.value&&c().catch(r),e.watch((()=>o.value),(()=>!o.value&&s(!!e.unref(n))),{immediate:!0})})),s.provide(a,{session:{fetchSession:c,isLoading:e.readonly(o),session:e.readonly(n),isFetchSessionWasNeverCalled:d},user:{fetchUser:async()=>{i.value=!0,await t.me(),i.value=!1},isLoading:e.readonly(i),user:e.readonly(l),isFetchUserWasNeverCalled:p},sdk:t,options:r})}};exports.Descope=p,exports.default=k,exports.getJwtPermissions=y,exports.getJwtRoles=h,exports.getRefreshToken=()=>i?v?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),exports.getSdk=()=>S,exports.getSessionToken=g,exports.routeGuard=()=>e.unref(w)?.(),exports.useDescope=c,exports.useSession=()=>{const{session:s}=l();return s.isFetchSessionWasNeverCalled.value&&s.fetchSession(),{isLoading:e.computed((()=>s.isLoading.value||s.isFetchSessionWasNeverCalled.value)),sessionToken:s.session,isAuthenticated:e.computed((()=>!!s.session.value))}},exports.useUser=()=>{const{user:s,session:r}=l(),t=()=>{!s.user.value&&r.session.value&&s.fetchUser()};return t(),e.watch(r.session,t),{isLoading:e.computed((()=>s.isLoading.value||s.isFetchUserWasNeverCalled.value)),user:s.user}};
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.ts CHANGED
@@ -13,6 +13,9 @@ declare const _default$1: vue.DefineComponent<{
13
13
  theme: {
14
14
  type: StringConstructor;
15
15
  };
16
+ locale: {
17
+ type: StringConstructor;
18
+ };
16
19
  debug: {
17
20
  type: BooleanConstructor;
18
21
  };
@@ -41,6 +44,9 @@ declare const _default$1: vue.DefineComponent<{
41
44
  theme: {
42
45
  type: StringConstructor;
43
46
  };
47
+ locale: {
48
+ type: StringConstructor;
49
+ };
44
50
  debug: {
45
51
  type: BooleanConstructor;
46
52
  };
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{computed as e,watch as s,inject as o,defineComponent as r,openBlock as t,createElementBlock as n,createElementVNode as i,unref as a,ref as l,readonly as u}from"vue";import c from"@descope/web-component";import d from"@descope/web-js-sdk";const p=Symbol("$descope"),v={"x-descope-sdk-name":"vue","x-descope-sdk-version":"1.0.1"},f="undefined"!=typeof window,m=()=>{const e=o(p);if(!e)throw Error("Missing Descope context, make sure you are using the Descope plugin");return e},g=()=>m().sdk,h=()=>{const{session:s}=m();return s.isFetchSessionWasNeverCalled.value&&s.fetchSession(),{isLoading:e((()=>s.isLoading.value||s.isFetchSessionWasNeverCalled.value)),sessionToken:s.session,isAuthenticated:e((()=>!!s.session.value))}},y=()=>{const{user:o,session:r}=m(),t=()=>{!o.user.value&&r.session.value&&o.fetchUser()};return t(),s(r.session,t),{isLoading:e((()=>o.isLoading.value||o.isFetchUserWasNeverCalled.value)),user:o.user}},w=["project-id","base-url","flow-id","^theme","^tenant","^debug","^telemetryKey","redirect-url","auto-focus",".errorTransformer"];var S=r({__name:"Descope",props:{flowId:{type:String,required:!0},tenant:{type:String},theme:{type:String},debug:{type:Boolean},telemetryKey:{type:String},redirectUrl:{type:String},autoFocus:{type:Boolean},errorTransformer:{type:Function}},emits:["success","error"],setup(e,{emit:s}){c.sdkConfigOverrides={baseHeaders:v};const{projectId:o,baseUrl:r}=m().options,l=g(),u=async e=>{s("success",e),await(l.httpClient.hooks?.afterRequest?.({},new Response(JSON.stringify(e.detail))))},d=e=>s("error",e);return(s,l)=>(t(),n("div",null,[i("descope-wc",{"project-id":a(o),"base-url":a(r),"flow-id":e.flowId,"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug,"^telemetryKey":e.telemetryKey,"redirect-url":e.redirectUrl,"auto-focus":e.autoFocus,".errorTransformer":e.errorTransformer,onSuccess:u,onError:d},null,40,w)]))}});S.__file="src/Descope.vue";const k=e=>(...s)=>{let o;try{o=e(...s)}catch(e){console.error(e)}return o};let b;const T=e=>{const s=d({...e,persistTokens:f,autoRefresh:f});return b=s,s};b=T({projectId:"temp pid"});const C=()=>f?b?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),F=()=>f?b?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),R=k(((e=C(),s)=>b?.getJwtPermissions(e,s))),U=k(((e=C(),s)=>b?.getJwtRoles(e,s))),L=l(null),N=()=>a(L)?.();let j;const D=()=>j;var W={install:function(s,o){const r=T({...o,persistTokens:!0,autoRefresh:!0,baseHeaders:v});j=r;const t=l(null),n=l(""),i=l(null),c=l(null);r.onSessionTokenChange((e=>{n.value=e})),r.onUserChange((e=>{c.value=e}));const d=async()=>{t.value=!0,await r.refresh(),t.value=!1},f=e((()=>null===t.value)),m=e((()=>null===i.value));L.value=async()=>(!n.value&&f.value&&await d(),!!a(n)),s.provide(p,{session:{fetchSession:d,isLoading:u(t),session:u(n),isFetchSessionWasNeverCalled:f},user:{fetchUser:async()=>{i.value=!0,await r.me(),i.value=!1},isLoading:u(i),user:u(c),isFetchUserWasNeverCalled:m},sdk:r,options:o})}};export{S as Descope,W as default,R as getJwtPermissions,U as getJwtRoles,F as getRefreshToken,D as getSdk,C as getSessionToken,N as routeGuard,g as useDescope,h as useSession,y as useUser};
1
+ import{computed as e,watch as s,inject as o,defineComponent as r,openBlock as t,createElementBlock as n,createElementVNode as a,unref as i,ref as l,readonly as u}from"vue";import c from"@descope/web-component";import d from"@descope/web-js-sdk";const p=Symbol("$descope"),v={"x-descope-sdk-name":"vue","x-descope-sdk-version":"1.0.3"},f="undefined"!=typeof window,m=()=>{const e=o(p);if(!e)throw Error("Missing Descope context, make sure you are using the Descope plugin");return e},g=()=>m().sdk,h=()=>{const{session:s}=m();return s.isFetchSessionWasNeverCalled.value&&s.fetchSession(),{isLoading:e((()=>s.isLoading.value||s.isFetchSessionWasNeverCalled.value)),sessionToken:s.session,isAuthenticated:e((()=>!!s.session.value))}},y=()=>{const{user:o,session:r}=m(),t=()=>{!o.user.value&&r.session.value&&o.fetchUser()};return t(),s(r.session,t),{isLoading:e((()=>o.isLoading.value||o.isFetchUserWasNeverCalled.value)),user:o.user}},S=["project-id","base-url","flow-id","^theme","^locale","^tenant","^debug","^telemetryKey","redirect-url","auto-focus",".errorTransformer"];var w=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}},emits:["success","error"],setup(e,{emit:s}){c.sdkConfigOverrides={baseHeaders:v};const{projectId:o,baseUrl:r}=m().options,l=g(),u=async e=>{await(l.httpClient.hooks?.afterRequest?.({},new Response(JSON.stringify(e.detail)))),s("success",e)},d=e=>s("error",e);return(s,l)=>(t(),n("div",null,[a("descope-wc",{"project-id":i(o),"base-url":i(r),"flow-id":e.flowId,"^theme":e.theme,"^locale":e.locale,"^tenant":e.tenant,"^debug":e.debug,"^telemetryKey":e.telemetryKey,"redirect-url":e.redirectUrl,"auto-focus":e.autoFocus,".errorTransformer":e.errorTransformer,onSuccess:u,onError:d},null,40,S)]))}});w.__file="src/Descope.vue";const k=e=>(...s)=>{let o;try{o=e(...s)}catch(e){console.error(e)}return o};let b;const T=e=>{const s=d({...e,persistTokens:f,autoRefresh:f});return b=s,s};b=T({projectId:"temp pid"});const C=()=>f?b?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),F=()=>f?b?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),R=k(((e=C(),s)=>b?.getJwtPermissions(e,s))),U=k(((e=C(),s)=>b?.getJwtRoles(e,s))),L=l(null),N=()=>i(L)?.();let j;const D=()=>j;var W={install:function(o,r){const t=T({...r,persistTokens:!0,autoRefresh:!0,baseHeaders:v});j=t;const n=l(null),a=l(""),c=l(null),d=l(null);t.onSessionTokenChange((e=>{a.value=e})),t.onUserChange((e=>{d.value=e}));const f=async()=>{n.value=!0,await t.refresh(),n.value=!1},m=e((()=>null===n.value)),g=e((()=>null===c.value));L.value=()=>new Promise(((e,o)=>{!a.value&&m.value&&f().catch(o),s((()=>n.value),(()=>!n.value&&e(!!i(a))),{immediate:!0})})),o.provide(p,{session:{fetchSession:f,isLoading:u(n),session:u(a),isFetchSessionWasNeverCalled:m},user:{fetchUser:async()=>{c.value=!0,await t.me(),c.value=!1},isLoading:u(c),user:u(d),isFetchUserWasNeverCalled:g},sdk:t,options:r})}};export{w as Descope,W as default,R as getJwtPermissions,U as getJwtRoles,F as getRefreshToken,D as getSdk,C as getSessionToken,N as routeGuard,g as useDescope,h as useSession,y 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": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "main": "dist/index.cjs",
5
5
  "module": "dist/index.mjs",
6
6
  "type": "module",
@@ -31,7 +31,7 @@
31
31
  ]
32
32
  },
33
33
  "dependencies": {
34
- "@descope/web-component": "2.6.0"
34
+ "@descope/web-component": "2.7.1"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "vue": ">=3"