@descope/vue-sdk 2.0.3 → 2.0.5
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 +17 -4
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +32 -3
- package/dist/index.mjs +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -40,7 +40,13 @@ app.mount('#app');
|
|
|
40
40
|
|
|
41
41
|
```vue
|
|
42
42
|
<template>
|
|
43
|
-
<
|
|
43
|
+
<p v-if="isFlowLoading">Loading...</p>
|
|
44
|
+
<Descope
|
|
45
|
+
flowId="my-flow-id"
|
|
46
|
+
@success="handleSuccess"
|
|
47
|
+
@error="handleError"
|
|
48
|
+
@ready="handleReady"
|
|
49
|
+
/>
|
|
44
50
|
<!-- additional props -->
|
|
45
51
|
<!-- theme="dark" theme can be "light", "dark" or "os", which auto select a theme based on the OS theme. Default is "light" -->
|
|
46
52
|
<!-- v-bind:debug="true" debug can be set to true to enable debug mode -->
|
|
@@ -55,13 +61,20 @@ app.mount('#app');
|
|
|
55
61
|
|
|
56
62
|
<script setup>
|
|
57
63
|
import { Descope } from '@descope/vue-sdk';
|
|
64
|
+
import { ref } from 'vue';
|
|
65
|
+
|
|
66
|
+
const isFlowLoading = ref(true);
|
|
67
|
+
|
|
68
|
+
const handleSuccess = (e) => {
|
|
69
|
+
console.log('Logged in!', e);
|
|
70
|
+
};
|
|
58
71
|
|
|
59
72
|
const handleError = (e) => {
|
|
60
73
|
console.log('Could not log in', e);
|
|
61
74
|
};
|
|
62
75
|
|
|
63
|
-
const
|
|
64
|
-
|
|
76
|
+
const handleReady = () => {
|
|
77
|
+
isFlowLoading.value = false;
|
|
65
78
|
};
|
|
66
79
|
|
|
67
80
|
// let tenantId = '<tenantId>'; // replace with your tenant ID
|
|
@@ -215,7 +228,7 @@ You can find an example Vue app in the [example folder](./example).
|
|
|
215
228
|
|
|
216
229
|
### Setup
|
|
217
230
|
|
|
218
|
-
To run the examples, set your `Project ID` by setting the `
|
|
231
|
+
To run the examples, set your `Project ID` by setting the `VUE_APP_DESCOPE_PROJECT_ID` env var or directly
|
|
219
232
|
in the sample code.
|
|
220
233
|
Find your Project ID in the [Descope console](https://app.descope.com/settings/project).
|
|
221
234
|
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@descope/web-component"),s=require("@descope/web-js-sdk");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("@descope/user-management-widget");var o=r(t),n=r(s);const a=Symbol("$descope"),u={"x-descope-sdk-name":"vue","x-descope-sdk-version":"2.0.5"},i="undefined"!=typeof window,l=()=>{const t=e.inject(a);if(!t)throw Error("Missing Descope context, make sure you are using the Descope plugin");return t},c=()=>l().options,d=()=>l().sdk,p=e=>(...t)=>{let s;try{s=e(...t)}catch(e){console.error(e)}return s};let f;const m=e=>{const t=n.default({...e,persistTokens:i,autoRefresh:i});return f=t,t};f=m({projectId:"temp pid"});const g=()=>i?f?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),v=p(((e=g(),t)=>f?.getJwtPermissions(e,t))),y=p(((e=g(),t)=>f?.getJwtRoles(e,t))),h=["project-id","base-url","flow-id","^theme","^locale","^tenant","^debug","^telemetryKey","redirect-url","auto-focus",".errorTransformer","^form","^client"];var S=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:s}){const r=t;o.default.sdkConfigOverrides={baseHeaders:u,persistTokens:!1,hooks:{get beforeRequest(){return f.httpClient.hooks.beforeRequest},set beforeRequest(e){}}};const{projectId:n,baseUrl:a}=c(),i=d(),l=e.computed((()=>r.form?JSON.stringify(r.form):"")),p=e.computed((()=>r.client?JSON.stringify(r.client):"")),m=async e=>{await(i.httpClient.hooks?.afterRequest?.({},new Response(JSON.stringify(e.detail)))),s("success",e)},g=e=>s("error",e),v=e=>s("ready",e);return(s,r)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-wc",{"project-id":e.unref(n),"base-url":e.unref(a),"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,".errorTransformer":t.errorTransformer,"^form":e.unref(l),"^client":e.unref(p),onSuccess:m,onError:g,onReady:v},null,40,h)]))}});S.__file="src/Descope.vue";const b=["project-id","base-url","^theme","^tenant","^debug"];var k=e.defineComponent({__name:"UserManagement",props:{tenant:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(t){const{projectId:s,baseUrl:r}=c();return(o,n)=>(e.openBlock(),e.createElementBlock("div",null,[e.createElementVNode("descope-user-management-widget",{"project-id":e.unref(s),"base-url":e.unref(r),"^theme":t.theme,"^tenant":t.tenant,"^debug":t.debug},null,8,b)]))}});k.__file="src/UserManagement.vue";const w=e.ref(null);let x;var R={install:function(t,s){const r=m({...s,persistTokens:!0,autoRefresh:!0,baseHeaders:u});x=r;const o=e.ref(null),n=e.ref(""),i=e.ref(null),l=e.ref(null);r.onSessionTokenChange((e=>{n.value=e})),r.onUserChange((e=>{l.value=e}));const c=async()=>{o.value=!0,await r.refresh(),o.value=!1},d=e.computed((()=>null===o.value)),p=e.computed((()=>null===i.value));w.value=()=>new Promise(((t,s)=>{!n.value&&d.value&&c().catch(s),e.watch((()=>o.value),(()=>!o.value&&t(!!e.unref(n))),{immediate:!0})})),t.provide(a,{session:{fetchSession:c,isLoading:e.readonly(o),session:e.readonly(n),isFetchSessionWasNeverCalled:d},user:{fetchUser:async()=>{i.value=!0,await r.me(),i.value=!1},isLoading:e.readonly(i),user:e.readonly(l),isFetchUserWasNeverCalled:p},sdk:r,options:s})}};exports.Descope=S,exports.UserManagement=k,exports.default=R,exports.getJwtPermissions=v,exports.getJwtRoles=y,exports.getRefreshToken=()=>i?f?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),exports.getSdk=()=>x,exports.getSessionToken=g,exports.routeGuard=()=>e.unref(w)?.(),exports.useDescope=d,exports.useSession=()=>{const{session:t}=l();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:s}=l(),r=()=>{!t.user.value&&s.session.value&&t.fetchUser()};return r(),e.watch(s.session,r),{isLoading:e.computed((()=>t.isLoading.value||t.isFetchUserWasNeverCalled.value)),user:t.user}};
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import * as vue from 'vue';
|
|
|
2
2
|
import { App } from 'vue';
|
|
3
3
|
import * as _descope_core_js_sdk from '@descope/core-js-sdk';
|
|
4
4
|
|
|
5
|
-
declare const _default$
|
|
5
|
+
declare const _default$2: vue.DefineComponent<{
|
|
6
6
|
flowId: {
|
|
7
7
|
type: StringConstructor;
|
|
8
8
|
required: true;
|
|
@@ -39,7 +39,7 @@ declare const _default$1: vue.DefineComponent<{
|
|
|
39
39
|
};
|
|
40
40
|
}, (_ctx: any, _cache: any) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
41
41
|
[key: string]: any;
|
|
42
|
-
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("success" | "error")[], "success" | "error", vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
|
|
42
|
+
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("success" | "error" | "ready")[], "success" | "error" | "ready", vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
|
|
43
43
|
flowId: {
|
|
44
44
|
type: StringConstructor;
|
|
45
45
|
required: true;
|
|
@@ -77,11 +77,40 @@ declare const _default$1: vue.DefineComponent<{
|
|
|
77
77
|
}>> & {
|
|
78
78
|
onSuccess?: (...args: any[]) => any;
|
|
79
79
|
onError?: (...args: any[]) => any;
|
|
80
|
+
onReady?: (...args: any[]) => any;
|
|
80
81
|
}, {
|
|
81
82
|
debug: boolean;
|
|
82
83
|
autoFocus: boolean;
|
|
83
84
|
}>;
|
|
84
85
|
|
|
86
|
+
declare const _default$1: vue.DefineComponent<{
|
|
87
|
+
tenant: {
|
|
88
|
+
type: StringConstructor;
|
|
89
|
+
required: true;
|
|
90
|
+
};
|
|
91
|
+
theme: {
|
|
92
|
+
type: StringConstructor;
|
|
93
|
+
};
|
|
94
|
+
debug: {
|
|
95
|
+
type: BooleanConstructor;
|
|
96
|
+
};
|
|
97
|
+
}, (_ctx: any, _cache: any) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
98
|
+
[key: string]: any;
|
|
99
|
+
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
|
|
100
|
+
tenant: {
|
|
101
|
+
type: StringConstructor;
|
|
102
|
+
required: true;
|
|
103
|
+
};
|
|
104
|
+
theme: {
|
|
105
|
+
type: StringConstructor;
|
|
106
|
+
};
|
|
107
|
+
debug: {
|
|
108
|
+
type: BooleanConstructor;
|
|
109
|
+
};
|
|
110
|
+
}>>, {
|
|
111
|
+
debug: boolean;
|
|
112
|
+
}>;
|
|
113
|
+
|
|
85
114
|
type Options = {
|
|
86
115
|
projectId: string;
|
|
87
116
|
baseUrl?: string;
|
|
@@ -2921,5 +2950,5 @@ declare const getRefreshToken: () => string;
|
|
|
2921
2950
|
declare const getJwtPermissions: (token?: any, tenant?: string) => string[];
|
|
2922
2951
|
declare const getJwtRoles: (token?: any, tenant?: string) => string[];
|
|
2923
2952
|
|
|
2924
|
-
export { _default$
|
|
2953
|
+
export { _default$2 as Descope, _default$1 as UserManagement, _default as default, getJwtPermissions, getJwtRoles, getRefreshToken, getSdk, getSessionToken, routeGuard, useDescope, useSession, useUser };
|
|
2925
2954
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{computed as e,watch as s,inject as
|
|
1
|
+
import{computed as e,watch as s,inject as t,defineComponent as r,openBlock as o,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";import"@descope/user-management-widget";const p=Symbol("$descope"),m={"x-descope-sdk-name":"vue","x-descope-sdk-version":"2.0.5"},g="undefined"!=typeof window,f=()=>{const e=t(p);if(!e)throw Error("Missing Descope context, make sure you are using the Descope plugin");return e},v=()=>f().options,y=()=>f().sdk,h=()=>{const{session:s}=f();return s.isFetchSessionWasNeverCalled.value&&s.fetchSession(),{isLoading:e((()=>s.isLoading.value||s.isFetchSessionWasNeverCalled.value)),sessionToken:s.session,isAuthenticated:e((()=>!!s.session.value))}},b=()=>{const{user:t,session:r}=f(),o=()=>{!t.user.value&&r.session.value&&t.fetchUser()};return o(),s(r.session,o),{isLoading:e((()=>t.isLoading.value||t.isFetchUserWasNeverCalled.value)),user:t.user}},S=e=>(...s)=>{let t;try{t=e(...s)}catch(e){console.error(e)}return t};let w;const k=e=>{const s=d({...e,persistTokens:g,autoRefresh:g});return w=s,s};w=k({projectId:"temp pid"});const R=()=>g?w?.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),U=()=>g?w?.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),T=S(((e=R(),s)=>w?.getJwtPermissions(e,s))),j=S(((e=R(),s)=>w?.getJwtRoles(e,s))),C=["project-id","base-url","flow-id","^theme","^locale","^tenant","^debug","^telemetryKey","redirect-url","auto-focus",".errorTransformer","^form","^client"];var F=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(s,{emit:t}){const r=s;c.sdkConfigOverrides={baseHeaders:m,persistTokens:!1,hooks:{get beforeRequest(){return w.httpClient.hooks.beforeRequest},set beforeRequest(e){}}};const{projectId:l,baseUrl:u}=v(),d=y(),p=e((()=>r.form?JSON.stringify(r.form):"")),g=e((()=>r.client?JSON.stringify(r.client):"")),f=async e=>{await(d.httpClient.hooks?.afterRequest?.({},new Response(JSON.stringify(e.detail)))),t("success",e)},h=e=>t("error",e),b=e=>t("ready",e);return(e,t)=>(o(),n("div",null,[a("descope-wc",{"project-id":i(l),"base-url":i(u),"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,"^form":i(p),"^client":i(g),onSuccess:f,onError:h,onReady:b},null,40,C)]))}});F.__file="src/Descope.vue";const N=["project-id","base-url","^theme","^tenant","^debug"];var _=r({__name:"UserManagement",props:{tenant:{type:String,required:!0},theme:{type:String},debug:{type:Boolean}},setup(e){const{projectId:s,baseUrl:t}=v();return(r,l)=>(o(),n("div",null,[a("descope-user-management-widget",{"project-id":i(s),"base-url":i(t),"^theme":e.theme,"^tenant":e.tenant,"^debug":e.debug},null,8,N)]))}});_.__file="src/UserManagement.vue";const q=l(null),L=()=>i(q)?.();let O;const D=()=>O;var I={install:function(t,r){const o=k({...r,persistTokens:!0,autoRefresh:!0,baseHeaders:m});O=o;const n=l(null),a=l(""),c=l(null),d=l(null);o.onSessionTokenChange((e=>{a.value=e})),o.onUserChange((e=>{d.value=e}));const g=async()=>{n.value=!0,await o.refresh(),n.value=!1},f=e((()=>null===n.value)),v=e((()=>null===c.value));q.value=()=>new Promise(((e,t)=>{!a.value&&f.value&&g().catch(t),s((()=>n.value),(()=>!n.value&&e(!!i(a))),{immediate:!0})})),t.provide(p,{session:{fetchSession:g,isLoading:u(n),session:u(a),isFetchSessionWasNeverCalled:f},user:{fetchUser:async()=>{c.value=!0,await o.me(),c.value=!1},isLoading:u(c),user:u(d),isFetchUserWasNeverCalled:v},sdk:o,options:r})}};export{F as Descope,_ as UserManagement,I as default,T as getJwtPermissions,j as getJwtRoles,U as getRefreshToken,D as getSdk,R as getSessionToken,L as routeGuard,y as useDescope,h as useSession,b 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.
|
|
3
|
+
"version": "2.0.5",
|
|
4
4
|
"main": "dist/index.cjs",
|
|
5
5
|
"module": "dist/index.mjs",
|
|
6
6
|
"type": "module",
|
|
@@ -37,7 +37,8 @@
|
|
|
37
37
|
]
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@descope/
|
|
40
|
+
"@descope/user-management-widget": "0.0.9",
|
|
41
|
+
"@descope/web-component": "3.8.2"
|
|
41
42
|
},
|
|
42
43
|
"peerDependencies": {
|
|
43
44
|
"vue": ">=3"
|