@ahoo-wang/fetcher-cosec 3.13.15 → 3.15.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/dist/authorizationRequestInterceptor.d.ts.map +1 -1
- package/dist/authorizationResponseInterceptor.d.ts.map +1 -1
- package/dist/cosecConfigurer.d.ts.map +1 -1
- package/dist/cosecRequestInterceptor.d.ts.map +1 -1
- package/dist/deviceIdStorage.d.ts +1 -1
- package/dist/deviceIdStorage.d.ts.map +1 -1
- package/dist/forbiddenErrorInterceptor.d.ts.map +1 -1
- package/dist/index.es.js +269 -925
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.js.map +1 -1
- package/dist/jwtToken.d.ts.map +1 -1
- package/dist/jwtTokenManager.d.ts.map +1 -1
- package/dist/resourceAttributionRequestInterceptor.d.ts.map +1 -1
- package/dist/spaceIdProvider.d.ts +1 -1
- package/dist/spaceIdProvider.d.ts.map +1 -1
- package/dist/tokenRefresher.d.ts.map +1 -1
- package/dist/tokenStorage.d.ts +1 -1
- package/dist/tokenStorage.d.ts.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/unauthorizedErrorInterceptor.d.ts.map +1 -1
- package/package.json +9 -9
package/dist/index.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(t
|
|
2
|
-
//# sourceMappingURL=index.umd.js.map
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`@ahoo-wang/fetcher`),require(`nanoid`),require(`@ahoo-wang/fetcher-storage`),require(`@ahoo-wang/fetcher-eventbus`)):typeof define==`function`&&define.amd?define([`exports`,`@ahoo-wang/fetcher`,`nanoid`,`@ahoo-wang/fetcher-storage`,`@ahoo-wang/fetcher-eventbus`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.FetcherCoSec={},e.Fetcher,e.nanoid,e.FetcherStorage,e.FetcherEventBus))})(this,function(e,t,n,r,i){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var a=class{static{this.DEVICE_ID=`CoSec-Device-Id`}static{this.APP_ID=`CoSec-App-Id`}static{this.SPACE_ID=`CoSec-Space-Id`}static{this.AUTHORIZATION=`Authorization`}static{this.REQUEST_ID=`CoSec-Request-Id`}},o=class{static{this.UNAUTHORIZED=401}static{this.FORBIDDEN=403}},s={ALLOW:{authorized:!0,reason:`Allow`},EXPLICIT_DENY:{authorized:!1,reason:`Explicit Deny`},IMPLICIT_DENY:{authorized:!1,reason:`Implicit Deny`},TOKEN_EXPIRED:{authorized:!1,reason:`Token Expired`},TOO_MANY_REQUESTS:{authorized:!1,reason:`Too Many Requests`}},c=class{generateId(){return(0,n.nanoid)()}},l=new c,u={resolveSpaceId:()=>null},d=`cosec-space-id`,f=class extends r.KeyStorage{constructor({key:e=d,eventBus:t=new i.BroadcastTypedEventBus({delegate:new i.SerialTypedEventBus(d)}),...n}={}){super({key:e,eventBus:t,...n,serializer:(0,r.typedIdentitySerializer)()})}},p=class{constructor(e){this.options=e}resolveSpaceId(e){return this.options.spacedResourcePredicate.test(e)?this.options.spaceIdStorage.get():null}},m=`CoSecRequestInterceptor`,h=-(2**53-1)+t.DEFAULT_INTERCEPTOR_ORDER_STEP,g=`Ignore-Refresh-Token`,_=class{constructor({appId:e,deviceIdStorage:t,spaceIdProvider:n}){this.name=m,this.order=h,this.appId=e,this.deviceIdStorage=t,this.spaceIdProvider=n??u}async intercept(e){let t=l.generateId(),n=this.deviceIdStorage.getOrCreate(),r=this.spaceIdProvider.resolveSpaceId(e),i=e.ensureRequestHeaders();i[a.APP_ID]=this.appId,i[a.DEVICE_ID]=n,i[a.REQUEST_ID]=t,r&&(i[a.SPACE_ID]=r)}},v=`AuthorizationRequestInterceptor`,y=h+t.DEFAULT_INTERCEPTOR_ORDER_STEP,b=class{constructor(e){this.options=e,this.name=v,this.order=y}async intercept(e){let t=this.options.tokenManager.currentToken,n=e.ensureRequestHeaders();!t||n[a.AUTHORIZATION]||(!e.attributes.has(`Ignore-Refresh-Token`)&&t.isRefreshNeeded&&t.isRefreshable&&await this.options.tokenManager.refresh(),t=this.options.tokenManager.currentToken,t&&(n[a.AUTHORIZATION]=`Bearer ${t.access.token}`))}},x=`AuthorizationResponseInterceptor`,S=-(2**53-1)+1e3,C=class{constructor(e){this.options=e,this.name=x,this.order=S}async intercept(e){let t=e.response;if(t&&t.status===o.UNAUTHORIZED&&this.options.tokenManager.isRefreshable)try{await this.options.tokenManager.refresh(),await e.fetcher.interceptors.exchange(e)}catch(e){throw this.options.tokenManager.tokenStorage.remove(),e}}},w=`cosec-device-id`,T=class extends r.KeyStorage{constructor({key:e=w,eventBus:t=new i.BroadcastTypedEventBus({delegate:new i.SerialTypedEventBus(w)}),...n}={}){super({key:e,eventBus:t,...n,serializer:(0,r.typedIdentitySerializer)()})}generateDeviceId(){return l.generateId()}getOrCreate(){let e=this.get();return e||(e=this.generateDeviceId(),this.set(e)),e}},E=`ForbiddenErrorInterceptor`,D=0,O=class{constructor(e){this.options=e,this.name=E,this.order=0}async intercept(e){e.response?.status===o.FORBIDDEN&&await this.options.onForbidden(e)}},k=class e extends t.FetcherError{constructor(t,n){super(`Refresh token failed.`,n),this.token=t,this.name=`RefreshTokenError`,Object.setPrototypeOf(this,e.prototype)}},A=class{constructor(e,t){this.tokenStorage=e,this.tokenRefresher=t}get currentToken(){return this.tokenStorage.get()}async refresh(){let e=this.currentToken;if(!e)throw Error(`No token found`);return this.refreshInProgress||=this.tokenRefresher.refresh(e.token).then(e=>{this.tokenStorage.setCompositeToken(e)}).catch(t=>{throw this.tokenStorage.remove(),new k(e,t)}).finally(()=>{this.refreshInProgress=void 0}),this.refreshInProgress}get isRefreshNeeded(){return this.currentToken?this.currentToken.isRefreshNeeded:!1}get isRefreshable(){return this.currentToken?this.currentToken.isRefreshable:!1}},j=`tenantId`,M=`ownerId`,N=`ResourceAttributionRequestInterceptor`,P=t.URL_RESOLVE_INTERCEPTOR_ORDER-t.DEFAULT_INTERCEPTOR_ORDER_STEP,F=class{constructor({tenantId:e=j,ownerId:t=M,tokenStorage:n}){this.name=N,this.order=P,this.tenantIdPathKey=e,this.ownerIdPathKey=t,this.tokenStorage=n}intercept(e){let t=this.tokenStorage.get();if(!t)return;let n=t.access.payload;if(!n||!n.tenantId&&!n.sub)return;let r=e.fetcher.urlBuilder.urlTemplateResolver.extractPathParams(e.request.url),i=this.tenantIdPathKey,a=e.ensureRequestUrlParams().path,o=n.tenantId;o&&r.includes(i)&&!a[i]&&(a[i]=o);let s=this.ownerIdPathKey,c=n.sub;c&&r.includes(s)&&!a[s]&&(a[s]=c)}};function I(e){try{if(typeof e!=`string`)return null;let t=e.split(`.`);if(t.length!==3)return null;let n=t[1].replace(/-/g,`+`).replace(/_/g,`/`),r=n.padEnd(n.length+(4-n.length%4)%4,`=`),i=decodeURIComponent(atob(r).split(``).map(function(e){return`%`+(`00`+e.charCodeAt(0).toString(16)).slice(-2)}).join(``));return JSON.parse(i)}catch(e){return console.error(`Failed to parse JWT token`,e),null}}function L(e,t=0){let n=typeof e==`string`?I(e):e;if(!n)return!0;let r=n.exp;return r?Date.now()/1e3>r-t:!1}var R=class{constructor(e,t=0){this.token=e,this.earlyPeriod=t,this.payload=I(e)}get isExpired(){return this.payload?L(this.payload,this.earlyPeriod):!0}},z=class{constructor(e,t=0){this.token=e,this.earlyPeriod=t,this.access=new R(e.accessToken,t),this.refresh=new R(e.refreshToken,t)}get isRefreshNeeded(){return this.access.isExpired}get isRefreshable(){return!this.refresh.isExpired}get authenticated(){return!this.access.isExpired}},B=class{constructor(e=0){this.earlyPeriod=e}deserialize(e){return new z(JSON.parse(e),this.earlyPeriod)}serialize(e){return JSON.stringify(e.token)}},V=new B,H=`cosec-token`,U=class extends r.KeyStorage{constructor({key:e=H,eventBus:t=new i.BroadcastTypedEventBus({delegate:new i.SerialTypedEventBus(H)}),earlyPeriod:n=0,...r}={}){super({key:e,eventBus:t,...r,serializer:new B(n)}),this.earlyPeriod=n}setCompositeToken(e){this.signIn(e)}signIn(e){this.set(new z(e,this.earlyPeriod))}signOut(){this.remove()}get authenticated(){return this.get()?.authenticated===!0}get currentUser(){return this.authenticated?this.get()?.access.payload??null:null}},W=`UnauthorizedErrorInterceptor`,G=0,K=class{constructor(e){this.options=e,this.name=W,this.order=0}async intercept(e){(e.response?.status===o.UNAUTHORIZED||e.error instanceof k)&&await this.options.onUnauthorized(e)}},q=class{constructor(e){this.config=e,this.tokenStorage=e.tokenStorage??new U,this.deviceIdStorage=e.deviceIdStorage??new T,this.spaceIdProvider=e.spaceIdProvider??u,e.tokenRefresher&&(this.tokenManager=new A(this.tokenStorage,e.tokenRefresher))}applyTo(e){e.interceptors.request.use(new _({appId:this.config.appId,deviceIdStorage:this.deviceIdStorage,spaceIdProvider:this.spaceIdProvider})),e.interceptors.request.use(new F({tokenStorage:this.tokenStorage})),this.tokenManager&&(e.interceptors.request.use(new b({tokenManager:this.tokenManager})),e.interceptors.response.use(new C({tokenManager:this.tokenManager}))),this.config.onUnauthorized&&e.interceptors.error.use(new K({onUnauthorized:this.config.onUnauthorized})),this.config.onForbidden&&e.interceptors.error.use(new O({onForbidden:this.config.onForbidden}))}},J=class{constructor(e){this.options=e}refresh(e){return this.options.fetcher.post(this.options.endpoint,{body:e},{resultExtractor:t.ResultExtractors.Json,attributes:new Map([[g,!0]])})}};e.AUTHORIZATION_REQUEST_INTERCEPTOR_NAME=v,e.AUTHORIZATION_REQUEST_INTERCEPTOR_ORDER=y,e.AUTHORIZATION_RESPONSE_INTERCEPTOR_NAME=x,e.AUTHORIZATION_RESPONSE_INTERCEPTOR_ORDER=S,e.AuthorizationRequestInterceptor=b,e.AuthorizationResponseInterceptor=C,e.AuthorizeResults=s,e.COSEC_REQUEST_INTERCEPTOR_NAME=m,e.COSEC_REQUEST_INTERCEPTOR_ORDER=h,e.CoSecConfigurer=q,e.CoSecHeaders=a,e.CoSecRequestInterceptor=_,e.CoSecTokenRefresher=J,e.DEFAULT_COSEC_DEVICE_ID_KEY=w,e.DEFAULT_COSEC_SPACE_ID_KEY=d,e.DEFAULT_COSEC_TOKEN_KEY=H,e.DefaultSpaceIdProvider=p,e.DeviceIdStorage=T,e.FORBIDDEN_ERROR_INTERCEPTOR_NAME=E,e.FORBIDDEN_ERROR_INTERCEPTOR_ORDER=D,e.ForbiddenErrorInterceptor=O,e.IGNORE_REFRESH_TOKEN_ATTRIBUTE_KEY=g,e.JwtCompositeToken=z,e.JwtCompositeTokenSerializer=B,e.JwtToken=R,e.JwtTokenManager=A,e.NanoIdGenerator=c,e.NoneSpaceIdProvider=u,e.RESOURCE_ATTRIBUTION_REQUEST_INTERCEPTOR_NAME=N,e.RESOURCE_ATTRIBUTION_REQUEST_INTERCEPTOR_ORDER=P,e.RefreshTokenError=k,e.ResourceAttributionRequestInterceptor=F,e.ResponseCodes=o,e.SpaceIdStorage=f,e.TokenStorage=U,e.UNAUTHORIZED_ERROR_INTERCEPTOR_NAME=W,e.UNAUTHORIZED_ERROR_INTERCEPTOR_ORDER=G,e.UnauthorizedErrorInterceptor=K,e.idGenerator=l,e.isTokenExpired=L,e.jwtCompositeTokenSerializer=V,e.parseJwtPayload=I});
|
|
2
|
+
//# sourceMappingURL=index.umd.js.map
|