diff --git a/libs/core/src/lib/__tests__/core.spec.ts b/libs/core/src/lib/__tests__/core.spec.ts index ca98a5f..c9fcbc2 100644 --- a/libs/core/src/lib/__tests__/core.spec.ts +++ b/libs/core/src/lib/__tests__/core.spec.ts @@ -669,22 +669,23 @@ describe('mezzo', () => { expect(res.status).toBe(200); expect(res.body).toEqual([ { - _activeVariant: 'variant1', - _variants: {}, + activeVariant: 'variant1', id: 'GET /route1', method: 'GET', path: 'route1', - routeData: { id: 'GET /route1', path: 'route1' }, - sessionState: { state: {} }, + variants: [ + { + id: 'variant1', + label: 'variant1', + }, + ], }, { - _activeVariant: 'default', - _variants: {}, + activeVariant: 'default', id: 'POST /route2', method: 'POST', path: 'route2', - routeData: { id: 'POST /route2', method: 'POST', path: 'route2' }, - sessionState: { state: {} }, + variants: [], }, ]); }); diff --git a/libs/core/src/lib/admin.ts b/libs/core/src/lib/admin.ts index 32a7541..ba18fb7 100644 --- a/libs/core/src/lib/admin.ts +++ b/libs/core/src/lib/admin.ts @@ -28,7 +28,7 @@ export const addAdminEndpoints = (app: express.Express, mezzo: Mezzo) => { app.get(`/mezzo/routes`, (req, res) => { // const routes = mezzo.userRoutes; // TODO: format and return data - res.json(mezzo.userRoutes); + res.json(mezzo.serialiazeRoutes()); // res.json({ // id: 'todoId', // routes: 'todoRoutes', diff --git a/libs/core/src/lib/core.ts b/libs/core/src/lib/core.ts index 383a621..f9443ed 100644 --- a/libs/core/src/lib/core.ts +++ b/libs/core/src/lib/core.ts @@ -138,6 +138,33 @@ export class Mezzo { const url = `http://localhost:${this.port}${MEZZO_API_PATH}/sessionVariantState/update/${sessionId}`; await axios.post(url, payload); }; + + public serialiazeRoutes = () => { + return this.userRoutes.map((route) => { + // const variants = route.getVariants(); + // console.log('KEYS: ', variants); + const variantRetVal = []; + route.getVariants().forEach((value, key) => { + console.log('Id: ' + key + ' label: ' + value.id); + variantRetVal.push({ + id: key, + label: value.id, + }); + // variantRetVal[key] = { + // label: value.id, + // }; + }); + + return { + id: route.id, + method: route.method, + path: route.path, + // variants: Object.fromEntries(variants), + variants: variantRetVal, + activeVariant: route.getActiveVariant(), + }; + }); + }; } export default new Mezzo(); diff --git a/libs/core/src/models/route-model.ts b/libs/core/src/models/route-model.ts index e010765..b667760 100644 --- a/libs/core/src/models/route-model.ts +++ b/libs/core/src/models/route-model.ts @@ -15,7 +15,11 @@ export class Route { private routeData: RouteData; private sessionState: SessionState; - public getActiveVariantId(request: Request | null) { + public getVariants() { + return this._variants; + } + + public getActiveVariantId(request?: Request) { const variantRequestHeader = request?.get(X_REQUEST_VARIANT); const sessionVariantRequestHeader = request?.get(X_REQUEST_SESSION); const routeStateVariant = this._activeVariant; @@ -31,8 +35,10 @@ export class Route { return variantRequestHeader || sessionVariant || routeStateVariant; } - public getActiveVariant(activeVariantId: string) { - return this._variants.get(activeVariantId); + // public getActiveVariant(activeVariantId: string) { + public getActiveVariant() { + // return this._variants.get(activeVariantId); + return this._activeVariant; } public id: string; @@ -64,8 +70,8 @@ export class Route { callback = this.routeData.callback; handler = this.routeData.handler; } else { - callback = this.getActiveVariant(activeVariant).callback; - handler = this.getActiveVariant(activeVariant).handler; + callback = this._variants.get(activeVariant).callback; + handler = this._variants.get(activeVariant).handler; } logger.info(