feat: Enhance WebSocket integration and add SPA fallback for routing
This commit is contained in:
@@ -8,6 +8,10 @@ export const runCli = async () => {
|
|||||||
feedMetadata: null,
|
feedMetadata: null,
|
||||||
domain: 'idp.global',
|
domain: 'idp.global',
|
||||||
serveDir: paths.distWebDir,
|
serveDir: paths.distWebDir,
|
||||||
|
addCustomRoutes: async (typedserver) => {
|
||||||
|
// Enable SPA fallback - serves index.html for non-file routes (e.g., /login, /dashboard)
|
||||||
|
typedserver.options.spaFallback = true;
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// lets add the reception routes
|
// lets add the reception routes
|
||||||
|
|||||||
@@ -126,9 +126,9 @@ export class IdpClient {
|
|||||||
if (!refreshTokenArg) {
|
if (!refreshTokenArg) {
|
||||||
extractedJwt = await this.helpers.extractDataFromJwtString(await this.getJwt());
|
extractedJwt = await this.helpers.extractDataFromJwtString(await this.getJwt());
|
||||||
}
|
}
|
||||||
|
await this.typedsocketDeferred.promise;
|
||||||
const refreshJwtReq =
|
const refreshJwtReq =
|
||||||
new plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_RefreshJwt>(
|
this.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_RefreshJwt>(
|
||||||
this.parsedReceptionUrl.toString(),
|
|
||||||
'refreshJwt'
|
'refreshJwt'
|
||||||
);
|
);
|
||||||
const response = await refreshJwtReq.fire({
|
const response = await refreshJwtReq.fire({
|
||||||
@@ -149,9 +149,9 @@ export class IdpClient {
|
|||||||
public async getTransferToken(appDataArg?: plugins.idpInterfaces.data.IAppLegacy): Promise<string> {
|
public async getTransferToken(appDataArg?: plugins.idpInterfaces.data.IAppLegacy): Promise<string> {
|
||||||
const jwt = await this.performJwtHousekeeping();
|
const jwt = await this.performJwtHousekeeping();
|
||||||
const extractedJwt = await this.helpers.extractDataFromJwtString(jwt);
|
const extractedJwt = await this.helpers.extractDataFromJwtString(jwt);
|
||||||
|
await this.typedsocketDeferred.promise;
|
||||||
const getTransferToken =
|
const getTransferToken =
|
||||||
new plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_ExchangeRefreshTokenAndTransferToken>(
|
this.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_ExchangeRefreshTokenAndTransferToken>(
|
||||||
this.parsedReceptionUrl.toString(),
|
|
||||||
'exchangeRefreshTokenAndTransferToken'
|
'exchangeRefreshTokenAndTransferToken'
|
||||||
);
|
);
|
||||||
const response = await getTransferToken.fire({
|
const response = await getTransferToken.fire({
|
||||||
@@ -187,9 +187,9 @@ export class IdpClient {
|
|||||||
const url = plugins.smarturl.Smarturl.createFromUrl(href);
|
const url = plugins.smarturl.Smarturl.createFromUrl(href);
|
||||||
const transferToken = url.searchParams['transfertoken'];
|
const transferToken = url.searchParams['transfertoken'];
|
||||||
if (transferToken) {
|
if (transferToken) {
|
||||||
|
await this.typedsocketDeferred.promise;
|
||||||
const getTransferToken =
|
const getTransferToken =
|
||||||
new plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_ExchangeRefreshTokenAndTransferToken>(
|
this.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_ExchangeRefreshTokenAndTransferToken>(
|
||||||
this.parsedReceptionUrl.toString(),
|
|
||||||
'exchangeRefreshTokenAndTransferToken'
|
'exchangeRefreshTokenAndTransferToken'
|
||||||
);
|
);
|
||||||
const response = await getTransferToken.fire({
|
const response = await getTransferToken.fire({
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import type { IdpClient } from "./classes.idpclient.js";
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* this class bundles all the typed requests that are used by the idp
|
* this class bundles all the typed requests that are used by the idp
|
||||||
|
* All requests use TypedSocket (WebSocket) transport
|
||||||
*/
|
*/
|
||||||
export class IdpRequests {
|
export class IdpRequests {
|
||||||
idpClientArg: IdpClient;
|
idpClientArg: IdpClient;
|
||||||
@@ -11,52 +12,45 @@ export class IdpRequests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public get afterRegistrationEmailClicked () {
|
public get afterRegistrationEmailClicked () {
|
||||||
return new plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_AfterRegistrationEmailClicked>(
|
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_AfterRegistrationEmailClicked>(
|
||||||
this.idpClientArg.parsedReceptionUrl.toString(),
|
|
||||||
'afterRegistrationEmailClicked'
|
'afterRegistrationEmailClicked'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public get setData() {
|
public get setData() {
|
||||||
return new plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_SetDataForRegistration>(
|
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_SetDataForRegistration>(
|
||||||
this.idpClientArg.parsedReceptionUrl.toString(),
|
|
||||||
'setDataForRegistration'
|
'setDataForRegistration'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public get mobileNumberVerification () {
|
public get mobileNumberVerification () {
|
||||||
return new plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_MobileVerificationForRegistration>(
|
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_MobileVerificationForRegistration>(
|
||||||
this.idpClientArg.parsedReceptionUrl.toString(),
|
|
||||||
'mobileVerificationForRegistration'
|
'mobileVerificationForRegistration'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public get finishRegistration() {
|
public get finishRegistration() {
|
||||||
return new plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_FinishRegistration>(
|
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_FinishRegistration>(
|
||||||
this.idpClientArg.parsedReceptionUrl.toString(),
|
|
||||||
'finishRegistration'
|
'finishRegistration'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public get loginWithUserNameAndPassword () {
|
public get loginWithUserNameAndPassword () {
|
||||||
return new plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_LoginWithEmailOrUsernameAndPassword>(
|
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_LoginWithEmailOrUsernameAndPassword>(
|
||||||
this.idpClientArg.parsedReceptionUrl.toString(),
|
|
||||||
'loginWithEmailOrUsernameAndPassword'
|
'loginWithEmailOrUsernameAndPassword'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public get obtainJwt () {
|
public get obtainJwt () {
|
||||||
return new plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_RefreshJwt>(
|
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_RefreshJwt>(
|
||||||
this.idpClientArg.parsedReceptionUrl.toString(),
|
|
||||||
'refreshJwt'
|
'refreshJwt'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public get obtainOneTimeToken () {
|
public get obtainOneTimeToken () {
|
||||||
return new plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_ExchangeRefreshTokenAndTransferToken>(
|
return this.idpClientArg.typedsocket.createTypedRequest<plugins.idpInterfaces.request.IReq_ExchangeRefreshTokenAndTransferToken>(
|
||||||
this.idpClientArg.parsedReceptionUrl.toString(),
|
|
||||||
'exchangeRefreshTokenAndTransferToken'
|
'exchangeRefreshTokenAndTransferToken'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user