diff --git a/client/__tests__/filter.test.ts b/client/__tests__/filter.test.ts index 03fe8fb..3d1efc4 100644 --- a/client/__tests__/filter.test.ts +++ b/client/__tests__/filter.test.ts @@ -1,4 +1,4 @@ -import { jpFilter as jqFilter } from "../filter"; +import { jqTransform } from "../filter"; const exampleResponse = { status: 200, @@ -46,7 +46,7 @@ const exampleResponse = { describe("json path filter", () => { it("returns only selected fields", async () => { - const result = await jqFilter( + const result = await jqTransform( exampleResponse, "{ status: .status, data: { kind: .data.kind, items: [.data.items[] | { metadata: { name: .metadata.name } }] } }" ); @@ -56,13 +56,13 @@ describe("json path filter", () => { describe("returns original input data", () => { it("on error", async () => { - const result = await jqFilter(exampleResponse, "{ { }"); + const result = await jqTransform(exampleResponse, "{ { }"); expect(result).toMatchSnapshot(); }); it("when no filter supplied", async () => { - const result = await jqFilter(exampleResponse, undefined); + const result = await jqTransform(exampleResponse, undefined); expect(result).toMatchSnapshot(); }); diff --git a/client/filter.ts b/client/filter.ts index 3f32c9a..4d902a0 100644 --- a/client/filter.ts +++ b/client/filter.ts @@ -4,10 +4,13 @@ import { createLogger } from "../log"; const logger = createLogger({ name: "filter" }); -// jq-node doesn't support `import` syntax +// import { jq } from "node-jq"; +// TODO fix node config because jq-node cannot be imported with the `import` syntax above +// Error: +// Module '"node-jq"' has no exported member 'jq'. const jq = require("node-jq"); -export const jpFilter = async ( +export const jqTransform = async ( data: any, jqHeader: string | string[] | undefined ): Promise => { @@ -16,7 +19,6 @@ export const jpFilter = async ( return data; } try { - // jq.run() returns a Promise return await jq.run(query, data, { input: "json", output: "json" }); } catch (error: any) { logger.error( diff --git a/client/index.ts b/client/index.ts index c9624d3..44c8194 100644 --- a/client/index.ts +++ b/client/index.ts @@ -13,7 +13,7 @@ import { createLogger } from "../log"; import { ForwardedRequest, ForwardedResponse, JQ_HEADER } from "../types"; import { deferral } from "../util/deferral"; import { Backoff } from "./backoff"; -import { jpFilter as jqFilter } from "./filter"; +import { jqTransform } from "./filter"; import { jwt } from "./jwks"; /** @@ -160,8 +160,11 @@ export class JsonRpcClient { }); const jpSelectHeader = request.headers[JQ_HEADER]; this.#logger.debug({ response }, "forwarded response before filters"); - const data = await jqFilter(response.data, jpSelectHeader); - this.#logger.debug({ data }, "forwarded response data after filters"); + const data = await jqTransform(response.data, jpSelectHeader); + this.#logger.debug( + { response: data }, + "forwarded response data after filters" + ); return { headers: response.headers, status: response.status, diff --git a/log/index.ts b/log/index.ts index 9f112f1..7a11bfe 100644 --- a/log/index.ts +++ b/log/index.ts @@ -24,6 +24,7 @@ export const createLogger = ( "response.config.headers.authorization", // Axios intercepted response object "response.request.headers.authorization", // Axios intercepted response object contains the request as well "request.headers.authorization", // Axios intercepted request object + forwarded request object (JSON RPC request) + "headers.authorization", ], formatters: { level: (label) => { diff --git a/types/index.ts b/types/index.ts index 3dcec2e..7b96475 100644 --- a/types/index.ts +++ b/types/index.ts @@ -2,7 +2,7 @@ import { Request } from "express"; import core from "express-serve-static-core"; import { IncomingHttpHeaders } from "node:http"; -export const JQ_HEADER = "braekhus-jq-response-filter"; +export const JQ_HEADER = "braekhus-jq-response-transform"; export type IncomingRequest = Request< core.ParamsDictionary,