@ogcio/fastify-logging-wrapper 5.4.0 → 5.5.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,67 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [5.5.0](https://github.com/ogcio/shared-node-utils/compare/@ogcio/fastify-logging-wrapper@v5.4.1...@ogcio/fastify-logging-wrapper@v5.5.0) (2026-09-07)
7
+
8
+
9
+ ### Features
10
+
11
+ * AB[#36812](https://github.com/ogcio/shared-node-utils/issues/36812) pii-hash fastify logging wrapper ([#188](https://github.com/ogcio/shared-node-utils/issues/188)) ([e58f050](https://github.com/ogcio/shared-node-utils/commit/e58f050cda8931859eef9a2f738727f56534dc8f))
12
+ * AB[#36812](https://github.com/ogcio/shared-node-utils/issues/36812) pii-utils - fastify error handler ([#199](https://github.com/ogcio/shared-node-utils/issues/199)) ([ab0a2ad](https://github.com/ogcio/shared-node-utils/commit/ab0a2ad6e7c3470f4d7fd4e7e98928e56b71e4fb))
13
+ * **fastify-logging-wrapper:** add completion-only lifecycle logs AB[#40740](https://github.com/ogcio/shared-node-utils/issues/40740) ([#289](https://github.com/ogcio/shared-node-utils/issues/289)) ([ea36e3b](https://github.com/ogcio/shared-node-utils/commit/ea36e3bad5210ce3f1b5ddae1a6f0f3936c3b99b))
14
+ * **fastify-logging-wrapper:** add customConfig for initialize new pino instance ([#8](https://github.com/ogcio/shared-node-utils/issues/8)) ([847f075](https://github.com/ogcio/shared-node-utils/commit/847f075c3c3b873a844e413085ca97c0f6e1f1a7))
15
+ * **fastify-logging-wrapper:** log properties filter AB[#40055](https://github.com/ogcio/shared-node-utils/issues/40055) ([#286](https://github.com/ogcio/shared-node-utils/issues/286)) ([fe2c1dd](https://github.com/ogcio/shared-node-utils/commit/fe2c1dd992ee7fff47497cde7d59b8aba3111ee0))
16
+ * **root:** startup repo ([7422a6c](https://github.com/ogcio/shared-node-utils/commit/7422a6c8a7d51722299e6cd61eebacefe2b80d6d))
17
+ * updated deps across packages ([#129](https://github.com/ogcio/shared-node-utils/issues/129)) ([86d83ca](https://github.com/ogcio/shared-node-utils/commit/86d83ca57c614fd1a2612862b7e946a0a0d23576))
18
+ * **v5:** add api auth package ([#19](https://github.com/ogcio/shared-node-utils/issues/19)) ([cbc4b83](https://github.com/ogcio/shared-node-utils/commit/cbc4b831ceb29e926f0a7dd869039f0a7575fc69))
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * log request in pre parsing ([#118](https://github.com/ogcio/shared-node-utils/issues/118)) ([c7f6d42](https://github.com/ogcio/shared-node-utils/commit/c7f6d42fe141b7f9bad4de6ae96d171dbd34284c))
24
+ * prepublish with pnpm ([#255](https://github.com/ogcio/shared-node-utils/issues/255)) ([d0746d4](https://github.com/ogcio/shared-node-utils/commit/d0746d43d7c359e06dee6d33a3898e27d75e896e))
25
+ * publish shared errors for version 5 ([#4](https://github.com/ogcio/shared-node-utils/issues/4)) ([7159dcd](https://github.com/ogcio/shared-node-utils/commit/7159dcdd2564a730bacbf3ff300aa129debbfe3a))
26
+ * skip internal objects serialize if empty AB[#26429](https://github.com/ogcio/shared-node-utils/issues/26429) ([#75](https://github.com/ogcio/shared-node-utils/issues/75)) ([b667b9d](https://github.com/ogcio/shared-node-utils/commit/b667b9ddd5c4f4b0f937ad8e11e171f81af8bba4))
27
+
28
+
29
+ ### Miscellaneous Chores
30
+
31
+ * **auto-release:** release @ogcio/fastify-logging-wrapper 5.4.0 ([#280](https://github.com/ogcio/shared-node-utils/issues/280)) ([6e10905](https://github.com/ogcio/shared-node-utils/commit/6e109057ea0deabd2c6d0b1f145738dd644e160b))
32
+ * bump logging-wrapper ([#287](https://github.com/ogcio/shared-node-utils/issues/287)) ([75f5f3f](https://github.com/ogcio/shared-node-utils/commit/75f5f3f402c8b5f0659f1971182f7f6baca2913b))
33
+ * bump patch release for fastify loggin wrapper ([#78](https://github.com/ogcio/shared-node-utils/issues/78)) ([8fae0da](https://github.com/ogcio/shared-node-utils/commit/8fae0dab725a9e05581b84945249668580a667e9))
34
+ * dependabot v5 ([#17](https://github.com/ogcio/shared-node-utils/issues/17)) ([89f9630](https://github.com/ogcio/shared-node-utils/commit/89f96309bed5637de99de5f8beeed275e74f2ef7))
35
+ * setup pnpm workspace ([#242](https://github.com/ogcio/shared-node-utils/issues/242)) ([a75f672](https://github.com/ogcio/shared-node-utils/commit/a75f6728bbf2f44a00f033b0ada12058756f06dd))
36
+ * update deps to 5.1.0 ([#14](https://github.com/ogcio/shared-node-utils/issues/14)) ([6b7821b](https://github.com/ogcio/shared-node-utils/commit/6b7821ba037ae00db96c2303b5911563deef029c))
37
+
38
+ ## [5.4.0](https://github.com/ogcio/shared-node-utils/compare/@ogcio/fastify-logging-wrapper@v5.3.0...@ogcio/fastify-logging-wrapper@v5.4.0) (2026-07-14)
39
+
40
+
41
+ ### Features
42
+
43
+ * AB[#36812](https://github.com/ogcio/shared-node-utils/issues/36812) pii-hash fastify logging wrapper ([#188](https://github.com/ogcio/shared-node-utils/issues/188)) ([e58f050](https://github.com/ogcio/shared-node-utils/commit/e58f050cda8931859eef9a2f738727f56534dc8f))
44
+ * AB[#36812](https://github.com/ogcio/shared-node-utils/issues/36812) pii-utils - fastify error handler ([#199](https://github.com/ogcio/shared-node-utils/issues/199)) ([ab0a2ad](https://github.com/ogcio/shared-node-utils/commit/ab0a2ad6e7c3470f4d7fd4e7e98928e56b71e4fb))
45
+ * **fastify-logging-wrapper:** add customConfig for initialize new pino instance ([#8](https://github.com/ogcio/shared-node-utils/issues/8)) ([847f075](https://github.com/ogcio/shared-node-utils/commit/847f075c3c3b873a844e413085ca97c0f6e1f1a7))
46
+ * **fastify-logging-wrapper:** log properties filter AB[#40055](https://github.com/ogcio/shared-node-utils/issues/40055) ([#286](https://github.com/ogcio/shared-node-utils/issues/286)) ([fe2c1dd](https://github.com/ogcio/shared-node-utils/commit/fe2c1dd992ee7fff47497cde7d59b8aba3111ee0))
47
+ * **root:** startup repo ([7422a6c](https://github.com/ogcio/shared-node-utils/commit/7422a6c8a7d51722299e6cd61eebacefe2b80d6d))
48
+ * updated deps across packages ([#129](https://github.com/ogcio/shared-node-utils/issues/129)) ([86d83ca](https://github.com/ogcio/shared-node-utils/commit/86d83ca57c614fd1a2612862b7e946a0a0d23576))
49
+ * **v5:** add api auth package ([#19](https://github.com/ogcio/shared-node-utils/issues/19)) ([cbc4b83](https://github.com/ogcio/shared-node-utils/commit/cbc4b831ceb29e926f0a7dd869039f0a7575fc69))
50
+
51
+
52
+ ### Bug Fixes
53
+
54
+ * log request in pre parsing ([#118](https://github.com/ogcio/shared-node-utils/issues/118)) ([c7f6d42](https://github.com/ogcio/shared-node-utils/commit/c7f6d42fe141b7f9bad4de6ae96d171dbd34284c))
55
+ * prepublish with pnpm ([#255](https://github.com/ogcio/shared-node-utils/issues/255)) ([d0746d4](https://github.com/ogcio/shared-node-utils/commit/d0746d43d7c359e06dee6d33a3898e27d75e896e))
56
+ * publish shared errors for version 5 ([#4](https://github.com/ogcio/shared-node-utils/issues/4)) ([7159dcd](https://github.com/ogcio/shared-node-utils/commit/7159dcdd2564a730bacbf3ff300aa129debbfe3a))
57
+ * skip internal objects serialize if empty AB[#26429](https://github.com/ogcio/shared-node-utils/issues/26429) ([#75](https://github.com/ogcio/shared-node-utils/issues/75)) ([b667b9d](https://github.com/ogcio/shared-node-utils/commit/b667b9ddd5c4f4b0f937ad8e11e171f81af8bba4))
58
+
59
+
60
+ ### Miscellaneous Chores
61
+
62
+ * bump patch release for fastify loggin wrapper ([#78](https://github.com/ogcio/shared-node-utils/issues/78)) ([8fae0da](https://github.com/ogcio/shared-node-utils/commit/8fae0dab725a9e05581b84945249668580a667e9))
63
+ * dependabot v5 ([#17](https://github.com/ogcio/shared-node-utils/issues/17)) ([89f9630](https://github.com/ogcio/shared-node-utils/commit/89f96309bed5637de99de5f8beeed275e74f2ef7))
64
+ * setup pnpm workspace ([#242](https://github.com/ogcio/shared-node-utils/issues/242)) ([a75f672](https://github.com/ogcio/shared-node-utils/commit/a75f6728bbf2f44a00f033b0ada12058756f06dd))
65
+ * update deps to 5.1.0 ([#14](https://github.com/ogcio/shared-node-utils/issues/14)) ([6b7821b](https://github.com/ogcio/shared-node-utils/commit/6b7821ba037ae00db96c2303b5911563deef029c))
66
+
6
67
  ## 5.0.2 (2024-10-03)
7
68
 
8
69
 
package/README.md CHANGED
@@ -60,6 +60,38 @@ If an error is thrown, a log entry is automatically written.
60
60
  {"level":50,"level_name":"ERROR","hostname":"hostname","request_id":"1kPptKhMSeyZ9OwcSwBxhg-0000000008","timestamp":1713869258238,"request":{"scheme":"http","method":"GET","path":"/this-path-must-not-exist","hostname":"localhost:80","query_params":{"status_code":"404","error_message":"Not Found"}},"error":{"class":"REQUEST_ERROR","message":"Not Found","trace":"FastifyError: Not Found..... The whole trace here","code":"FST_ERR_NOT_FOUND"},"message":"ERROR"}
61
61
  ```
62
62
 
63
+ ## Filtering logged fields
64
+
65
+ By default the wrapper logs the full request and response, so headers, query
66
+ params, cookies and similar fields end up in the logs. A built-in list always
67
+ masks the most sensitive headers (`authorization`, `cookie`, `set-cookie`,
68
+ `x-api-key`, `x-amz-security-token`, `proxy-authorization`).
69
+
70
+ To avoid logging additional sensitive or PII fields, pass an optional
71
+ configuration to `initializeLoggingHooks`. Rules are **additive**: they run on
72
+ top of the built-in redaction, they never disable it. Omitting the config keeps
73
+ the current behaviour unchanged.
74
+
75
+ ```typescript
76
+ initializeLoggingHooks(server, {
77
+ request: {
78
+ headers: { omit: ["x-internal-trace"], mask: ["x-custom-token"] },
79
+ queryParams: { omit: ["email"], mask: ["ppsn"] },
80
+ clientIp: "omit",
81
+ userAgent: "omit",
82
+ },
83
+ response: {
84
+ headers: { omit: ["x-debug-info"] },
85
+ },
86
+ });
87
+ ```
88
+
89
+ - `omit` removes the field entirely from the log entry.
90
+ - `mask` keeps the field but replaces its value with `[redacted]`.
91
+ - Header names are matched **case-insensitively**; query-param names are matched
92
+ **exactly**.
93
+ - `clientIp` and `userAgent` are single values, so they only accept `"omit"`.
94
+
63
95
  ## Additional entries
64
96
 
65
97
  Additional log entries can be added as needed, but they will include, thanks to this package, common info about the request context that will be useful for future troubleshooting.
@@ -39,6 +39,27 @@ describe("Logging entries when all works fine are the expected ones", () => {
39
39
  const apiTrackEntry = JSON.parse(loggedRecords[2]);
40
40
  assert.notNestedProperty(apiTrackEntry, "error");
41
41
  });
42
+
43
+ it("logs only the completed request when configured", async () => {
44
+ const { server, loggingDestination } = initializeServer({
45
+ lifecycle: "completion-only",
46
+ });
47
+ afterEach(() => server.close());
48
+
49
+ const response = await server.inject({
50
+ method: DEFAULT_METHOD,
51
+ url: DEFAULT_PATH,
52
+ });
53
+
54
+ assert.equal(response.statusCode, 200);
55
+ const loggedRecords = loggingDestination.getLoggedRecords();
56
+ assert.equal(loggedRecords.length, 1);
57
+ checkExpectedResponseEntry({
58
+ responseLogEntry: loggedRecords[0],
59
+ responseStatusCode: 200,
60
+ expectedMessage: LogMessages.ApiTrack,
61
+ });
62
+ });
42
63
  });
43
64
 
44
65
  describe("Request id is overriden by header", () => {
@@ -0,0 +1,57 @@
1
+ import { assert, describe, it } from "vitest";
2
+ import { applyFieldRules } from "../src/field-filter.js";
3
+ import { REDACTED_VALUE } from "../src/logging-wrapper-entities.js";
4
+
5
+ describe("applyFieldRules", () => {
6
+ it("returns the value untouched when no rules are given", () => {
7
+ const value = { a: 1, b: 2 };
8
+ assert.strictEqual(applyFieldRules(value, undefined), value);
9
+ assert.strictEqual(applyFieldRules(value, {}), value);
10
+ assert.strictEqual(applyFieldRules(value, { omit: [], mask: [] }), value);
11
+ });
12
+
13
+ it("omits the requested keys", () => {
14
+ const result = applyFieldRules({ a: 1, b: 2, c: 3 }, { omit: ["b"] });
15
+ assert.deepStrictEqual(result, { a: 1, c: 3 });
16
+ });
17
+
18
+ it("masks the requested keys", () => {
19
+ const result = applyFieldRules({ a: 1, b: 2 }, { mask: ["b"] });
20
+ assert.deepStrictEqual(result, { a: 1, b: REDACTED_VALUE });
21
+ });
22
+
23
+ it("omit takes precedence over mask for the same key", () => {
24
+ const result = applyFieldRules(
25
+ { a: 1, b: 2 },
26
+ {
27
+ omit: ["b"],
28
+ mask: ["b"],
29
+ },
30
+ );
31
+ assert.deepStrictEqual(result, { a: 1 });
32
+ });
33
+
34
+ it("matches keys case-insensitively when requested", () => {
35
+ const result = applyFieldRules(
36
+ { "x-custom-token": "secret", "content-type": "json" },
37
+ { mask: ["X-Custom-Token"] },
38
+ true,
39
+ );
40
+ assert.deepStrictEqual(result, {
41
+ "x-custom-token": REDACTED_VALUE,
42
+ "content-type": "json",
43
+ });
44
+ });
45
+
46
+ it("matches keys case-sensitively by default", () => {
47
+ const result = applyFieldRules({ Email: "a@b.com" }, { omit: ["email"] });
48
+ assert.deepStrictEqual(result, { Email: "a@b.com" });
49
+ });
50
+
51
+ it("passes through non-object values", () => {
52
+ assert.strictEqual(applyFieldRules("plain", { omit: ["a"] }), "plain");
53
+ assert.strictEqual(applyFieldRules(null, { omit: ["a"] }), null);
54
+ const arr = [1, 2];
55
+ assert.strictEqual(applyFieldRules(arr, { omit: ["a"] }), arr);
56
+ });
57
+ });
@@ -6,15 +6,19 @@ import {
6
6
  getLoggingConfiguration,
7
7
  initializeLoggingHooks,
8
8
  } from "../../src/fastify-logging-wrapper.js";
9
+ import type { LoggingOptions } from "../../src/field-filter.js";
9
10
 
10
- export const buildFastify = (loggerDestination?: DestinationStream) => {
11
+ export const buildFastify = (
12
+ loggerDestination?: DestinationStream,
13
+ options?: LoggingOptions,
14
+ ) => {
11
15
  const server = Fastify({
12
16
  ...getLoggingConfiguration({
13
17
  loggerDestination: loggerDestination,
14
18
  }),
15
19
  });
16
20
 
17
- initializeLoggingHooks(server);
21
+ initializeLoggingHooks(server, options);
18
22
 
19
23
  server.get("/ping", async (_request, _reply) => {
20
24
  return { data: "pong\n" };
@@ -1,5 +1,6 @@
1
1
  import type { FastifyInstance } from "fastify";
2
2
  import { assert } from "vitest";
3
+ import type { LoggingOptions } from "../../src/field-filter.js";
3
4
  import {
4
5
  type LogErrorClasses,
5
6
  LogMessages,
@@ -23,12 +24,14 @@ export const DEFAULT_METHOD = "GET";
23
24
  export const DEFAULT_SCHEME = "http";
24
25
  export const DEFAULT_PATH = "/ping";
25
26
 
26
- export const initializeServer = (): {
27
+ export const initializeServer = (
28
+ options?: LoggingOptions,
29
+ ): {
27
30
  server: FastifyInstance;
28
31
  loggingDestination: TestingLoggerDestination;
29
32
  } => {
30
33
  const loggingDestination = getTestingDestinationLogger();
31
- const server = buildFastify(loggingDestination.loggerDestination);
34
+ const server = buildFastify(loggingDestination.loggerDestination, options);
32
35
 
33
36
  return { server, loggingDestination };
34
37
  };
@@ -0,0 +1,99 @@
1
+ import { afterEach, assert, describe, it } from "vitest";
2
+ import { REDACTED_VALUE } from "../src/logging-wrapper-entities.js";
3
+ import {
4
+ DEFAULT_METHOD,
5
+ initializeServer,
6
+ parseLogEntry,
7
+ } from "./helpers/fastify-test-helpers.js";
8
+
9
+ describe("Logging options filter request and response fields", () => {
10
+ it("omits and masks request headers (case-insensitive)", async () => {
11
+ const { server, loggingDestination } = initializeServer({
12
+ request: {
13
+ headers: { omit: ["x-drop-me"], mask: ["X-Secret"] },
14
+ },
15
+ });
16
+ afterEach(() => server.close());
17
+
18
+ await server.inject({
19
+ method: DEFAULT_METHOD,
20
+ url: "/ping",
21
+ headers: { "x-drop-me": "gone", "x-secret": "sensitive", "x-keep": "ok" },
22
+ });
23
+
24
+ const request = parseLogEntry(
25
+ loggingDestination.getLoggedRecords()[0],
26
+ ).request;
27
+ assert.notProperty(request.headers, "x-drop-me");
28
+ assert.equal(request.headers["x-secret"], REDACTED_VALUE);
29
+ assert.equal(request.headers["x-keep"], "ok");
30
+ });
31
+
32
+ it("omits and masks query params (case-sensitive)", async () => {
33
+ const { server, loggingDestination } = initializeServer({
34
+ request: {
35
+ queryParams: { omit: ["email"], mask: ["ppsn"] },
36
+ },
37
+ });
38
+ afterEach(() => server.close());
39
+
40
+ await server.inject({
41
+ method: DEFAULT_METHOD,
42
+ url: "/ping?email=a@b.com&ppsn=123&keep=1",
43
+ });
44
+
45
+ const request = parseLogEntry(
46
+ loggingDestination.getLoggedRecords()[0],
47
+ ).request;
48
+ assert.notProperty(request.query_params, "email");
49
+ assert.equal(request.query_params.ppsn, REDACTED_VALUE);
50
+ assert.equal(request.query_params.keep, "1");
51
+ });
52
+
53
+ it("omits derived client_ip and user_agent fields", async () => {
54
+ const { server, loggingDestination } = initializeServer({
55
+ request: { clientIp: "omit", userAgent: "omit" },
56
+ });
57
+ afterEach(() => server.close());
58
+
59
+ await server.inject({ method: DEFAULT_METHOD, url: "/ping" });
60
+
61
+ const request = parseLogEntry(
62
+ loggingDestination.getLoggedRecords()[0],
63
+ ).request;
64
+ assert.notProperty(request, "client_ip");
65
+ assert.notProperty(request, "user_agent");
66
+ });
67
+
68
+ it("masks response headers", async () => {
69
+ const { server, loggingDestination } = initializeServer({
70
+ response: { headers: { mask: ["content-type"] } },
71
+ });
72
+ afterEach(() => server.close());
73
+
74
+ await server.inject({ method: DEFAULT_METHOD, url: "/ping" });
75
+
76
+ const response = parseLogEntry(
77
+ loggingDestination.getLoggedRecords()[1],
78
+ ).response;
79
+ assert.equal(response.headers["content-type"], REDACTED_VALUE);
80
+ });
81
+
82
+ it("keeps the default behaviour when no options are given", async () => {
83
+ const { server, loggingDestination } = initializeServer();
84
+ afterEach(() => server.close());
85
+
86
+ await server.inject({
87
+ method: DEFAULT_METHOD,
88
+ url: "/ping",
89
+ headers: { "x-anything": "kept" },
90
+ });
91
+
92
+ const request = parseLogEntry(
93
+ loggingDestination.getLoggedRecords()[0],
94
+ ).request;
95
+ assert.equal(request.headers["x-anything"], "kept");
96
+ assert.property(request, "client_ip");
97
+ assert.property(request, "user_agent");
98
+ });
99
+ });
@@ -1,7 +1,8 @@
1
1
  import type { FastifyInstance, FastifyServerOptions, RawServerBase } from "fastify";
2
2
  import type { FastifyLoggerOptions, PinoLoggerOptions } from "fastify/types/logger.js";
3
3
  import { type DestinationStream } from "pino";
4
- export declare const initializeLoggingHooks: (server: FastifyInstance) => void;
4
+ import type { LoggingOptions } from "./field-filter.js";
5
+ export declare const initializeLoggingHooks: (server: FastifyInstance, options?: LoggingOptions) => void;
5
6
  export declare const getLoggingConfiguration: (customConfig?: {
6
7
  pinoOptions?: PinoLoggerOptions;
7
8
  loggerDestination?: DestinationStream;
@@ -1 +1 @@
1
- {"version":3,"file":"fastify-logging-wrapper.d.ts","sourceRoot":"","sources":["../src/fastify-logging-wrapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,eAAe,EAGf,oBAAoB,EACpB,aAAa,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EACV,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,KAAK,iBAAiB,EAA4B,MAAM,MAAM,CAAC;AA8BxE,eAAO,MAAM,sBAAsB,GAAI,QAAQ,eAAe,KAAG,IAiDhE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,eACI;IACE,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,uBAAuB,CAAC,EAAE,KAAK,CAAC;CACjC,GACD;IACE,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,iBAAiB,CAAC,EAAE,KAAK,CAAC;IAC1B,uBAAuB,CAAC,EAAE,oBAAoB,CAAC,aAAa,CAAC,GAC3D,iBAAiB,CAAC;CACrB,KACJ,oBA8BF,CAAC"}
1
+ {"version":3,"file":"fastify-logging-wrapper.d.ts","sourceRoot":"","sources":["../src/fastify-logging-wrapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,eAAe,EAGf,oBAAoB,EACpB,aAAa,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EACV,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,KAAK,iBAAiB,EAA4B,MAAM,MAAM,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA+BxD,eAAO,MAAM,sBAAsB,GACjC,QAAQ,eAAe,EACvB,UAAU,cAAc,KACvB,IAuDF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,eACI;IACE,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,uBAAuB,CAAC,EAAE,KAAK,CAAC;CACjC,GACD;IACE,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,iBAAiB,CAAC,EAAE,KAAK,CAAC;IAC1B,uBAAuB,CAAC,EAAE,oBAAoB,CAAC,aAAa,CAAC,GAC3D,iBAAiB,CAAC;CACrB,KACJ,oBA8BF,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { REQUEST_ID_HEADER } from "@ogcio/shared-errors";
2
2
  import hyperid from "hyperid";
3
3
  import { pino } from "pino";
4
- import { getLoggerConfiguration, getLoggingContext, getLoggingContextError, getPartialLoggingContextError, parseFullLoggingRequest, resetLoggingContext, setLoggingContext, } from "./logging-wrapper.js";
4
+ import { getLoggerConfiguration, getLoggingContext, getLoggingContextError, getPartialLoggingContextError, parseFullLoggingRequest, resetLoggingContext, setLoggingContext, setLoggingOptions, } from "./logging-wrapper.js";
5
5
  import { LogMessages, REQUEST_ID_LOG_LABEL, } from "./logging-wrapper-entities.js";
6
6
  const hyperidInstance = hyperid({ fixedLength: true, urlSafe: true });
7
7
  const isObjectNotEmpty = (value) => {
@@ -10,15 +10,19 @@ const isObjectNotEmpty = (value) => {
10
10
  !Array.isArray(value) &&
11
11
  Object.keys(Object.fromEntries(Object.entries(value).filter(([_, v]) => v !== undefined))).length > 0);
12
12
  };
13
- export const initializeLoggingHooks = (server) => {
13
+ export const initializeLoggingHooks = (server, options) => {
14
+ setLoggingOptions(options);
15
+ const completionOnly = options?.lifecycle === "completion-only";
14
16
  server.addHook("preParsing", (request, _reply, payload, done) => {
15
17
  setLoggingContext({ request });
16
- const requestParsed = parseFullLoggingRequest(request);
17
- if (isObjectNotEmpty(requestParsed)) {
18
- request.log.info({ request: requestParsed }, LogMessages.NewRequest);
19
- }
20
- else {
21
- request.log.info(LogMessages.NewRequest);
18
+ if (!completionOnly) {
19
+ const requestParsed = parseFullLoggingRequest(request);
20
+ if (isObjectNotEmpty(requestParsed)) {
21
+ request.log.info({ request: requestParsed }, LogMessages.NewRequest);
22
+ }
23
+ else {
24
+ request.log.info(LogMessages.NewRequest);
25
+ }
22
26
  }
23
27
  done(null, payload);
24
28
  });
@@ -29,7 +33,9 @@ export const initializeLoggingHooks = (server) => {
29
33
  setRequestInContext: false,
30
34
  });
31
35
  setLoggingContext(contextParams);
32
- reply.log.info(LogMessages.Response);
36
+ if (!completionOnly) {
37
+ reply.log.info(LogMessages.Response);
38
+ }
33
39
  // Include error in API Track if exists
34
40
  const error = getPartialLoggingContextError();
35
41
  if (isObjectNotEmpty(error)) {
@@ -1 +1 @@
1
- {"version":3,"file":"fastify-logging-wrapper.js","sourceRoot":"","sources":["../src/fastify-logging-wrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fastify-logging-wrapper.js","sourceRoot":"","sources":["../src/fastify-logging-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface FieldRules {
2
+ omit?: string[];
3
+ mask?: string[];
4
+ }
5
+ export interface LoggingOptions {
6
+ lifecycle?: "completion-only";
7
+ request?: {
8
+ headers?: FieldRules;
9
+ queryParams?: FieldRules;
10
+ clientIp?: "omit";
11
+ userAgent?: "omit";
12
+ };
13
+ response?: {
14
+ headers?: FieldRules;
15
+ };
16
+ }
17
+ export declare const applyFieldRules: (value: unknown, rules: FieldRules | undefined, caseInsensitive?: boolean) => unknown;
18
+ //# sourceMappingURL=field-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-filter.d.ts","sourceRoot":"","sources":["../src/field-filter.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,UAAU,CAAC;QACrB,WAAW,CAAC,EAAE,UAAU,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,UAAU,CAAC;KACtB,CAAC;CACH;AAED,eAAO,MAAM,eAAe,GAC1B,OAAO,OAAO,EACd,OAAO,UAAU,GAAG,SAAS,EAC7B,yBAAuB,KACtB,OAsBF,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { REDACTED_VALUE } from "./logging-wrapper-entities.js";
2
+ export const applyFieldRules = (value, rules, caseInsensitive = false) => {
3
+ if (!rules || (!rules.omit?.length && !rules.mask?.length)) {
4
+ return value;
5
+ }
6
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
7
+ return value;
8
+ }
9
+ const normalize = (key) => caseInsensitive ? key.toLowerCase() : key;
10
+ const toOmit = new Set((rules.omit ?? []).map(normalize));
11
+ const toMask = new Set((rules.mask ?? []).map(normalize));
12
+ const result = {};
13
+ for (const [key, entry] of Object.entries(value)) {
14
+ const normalized = normalize(key);
15
+ if (toOmit.has(normalized)) {
16
+ continue;
17
+ }
18
+ result[key] = toMask.has(normalized) ? REDACTED_VALUE : entry;
19
+ }
20
+ return result;
21
+ };
22
+ //# sourceMappingURL=field-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-filter.js","sourceRoot":"","sources":["../src/field-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAoB/D,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,KAAc,EACd,KAA6B,EAC7B,eAAe,GAAG,KAAK,EACd,EAAE;IACX,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE,CACxC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAE1D,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC5E,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;IAChE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { getLoggingConfiguration, initializeLoggingHooks, } from "./fastify-logging-wrapper.js";
2
- export { getLoggingContextError, setLoggingContext, } from "./logging-wrapper.js";
2
+ export type { FieldRules, LoggingOptions } from "./field-filter.js";
3
+ export { getLoggingContext, getLoggingContextError, setLoggingContext, } from "./logging-wrapper.js";
3
4
  export { LoggingError, LogMessages, toLoggingError, } from "./logging-wrapper-entities.js";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,+BAA+B,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export { getLoggingConfiguration, initializeLoggingHooks, } from "./fastify-logging-wrapper.js";
2
- export { getLoggingContextError, setLoggingContext, } from "./logging-wrapper.js";
2
+ export { getLoggingContext, getLoggingContextError, setLoggingContext, } from "./logging-wrapper.js";
3
3
  export { LogMessages, toLoggingError, } from "./logging-wrapper-entities.js";
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,WAAW,EACX,cAAc,GACf,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,WAAW,EACX,cAAc,GACf,MAAM,+BAA+B,CAAC"}
@@ -11,8 +11,8 @@ export interface LoggingRequest {
11
11
  }
12
12
  export interface FullLoggingRequest extends LoggingRequest {
13
13
  headers: unknown;
14
- user_agent: string | undefined;
15
- client_ip: string;
14
+ user_agent?: string;
15
+ client_ip?: string;
16
16
  }
17
17
  export interface LoggingResponse {
18
18
  headers: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"logging-wrapper-entities.d.ts","sourceRoot":"","sources":["../src/logging-wrapper-entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,oBAAY,WAAW;IACrB,UAAU,gBAAgB;IAC1B,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,QAAQ,cAAc;CACvB;AAED,oBAAY,eAAe;IACzB,WAAW,iBAAiB;IAC5B,eAAe,qBAAqB;IACpC,YAAY,kBAAkB;IAC9B,YAAY,kBAAkB;IAC9B,YAAY,kBAAkB;CAC/B;AAED,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,eAAO,MAAM,cAAc,UAO1B,CAAC;AAEF,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAIjD,eAAO,MAAM,cAAc,GACzB,OAAO,SAAS,GAAG,YAAY,KAC9B,YAyBF,CAAC"}
1
+ {"version":3,"file":"logging-wrapper-entities.d.ts","sourceRoot":"","sources":["../src/logging-wrapper-entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,oBAAY,WAAW;IACrB,UAAU,gBAAgB;IAC1B,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,QAAQ,cAAc;CACvB;AAED,oBAAY,eAAe;IACzB,WAAW,iBAAiB;IAC5B,eAAe,qBAAqB;IACpC,YAAY,kBAAkB;IAC9B,YAAY,kBAAkB;IAC9B,YAAY,kBAAkB;CAC/B;AAED,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,eAAO,MAAM,cAAc,UAO1B,CAAC;AAEF,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAIjD,eAAO,MAAM,cAAc,GACzB,OAAO,SAAS,GAAG,YAAY,KAC9B,YAyBF,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import type { HttpError } from "@fastify/sensible";
2
2
  import type { FastifyError, FastifyReply, FastifyRequest } from "fastify";
3
3
  import type { LogLevel, PinoLoggerOptions } from "fastify/types/logger.js";
4
+ import { type LoggingOptions } from "./field-filter.js";
4
5
  import { type FullLoggingRequest, type LoggingContext, type LoggingError, type LoggingPseudoUser } from "./logging-wrapper-entities.js";
6
+ export declare const setLoggingOptions: (options?: LoggingOptions) => void;
5
7
  type INPUT_ERROR_TYPES = FastifyError | HttpError;
6
8
  export declare const getLoggingContext: (params: {
7
9
  includeError: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"logging-wrapper.d.ts","sourceRoot":"","sources":["../src/logging-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EAOvB,MAAM,+BAA+B,CAAC;AAIvC,KAAK,iBAAiB,GAAG,YAAY,GAAG,SAAS,CAAC;AAElD,eAAO,MAAM,iBAAiB,GAAI,QAAQ;IACxC,YAAY,EAAE,OAAO,CAAC;CACvB,KAAG,cAGyC,CAAC;AAE9C,eAAO,MAAM,iBAAiB,GAAI,QAAQ;IACxC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC,KAAG,IAaH,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAO,IAKtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAAO,YAAY,GAAG,SACR,CAAC;AAElD,eAAO,MAAM,6BAA6B,QACtC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAC3B,SAGF,CAAC;AAcH,eAAO,MAAM,uBAAuB,GAClC,KAAK,cAAc,KAClB,kBAKD,CAAC;AAOH,eAAO,MAAM,sBAAsB,GACjC,eAAc,QAAkB,KAC/B,iBAmBD,CAAC"}
1
+ {"version":3,"file":"logging-wrapper.d.ts","sourceRoot":"","sources":["../src/logging-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EAOvB,MAAM,+BAA+B,CAAC;AAMvC,eAAO,MAAM,iBAAiB,GAAI,UAAS,cAAmB,KAAG,IAEhE,CAAC;AAEF,KAAK,iBAAiB,GAAG,YAAY,GAAG,SAAS,CAAC;AAElD,eAAO,MAAM,iBAAiB,GAAI,QAAQ;IACxC,YAAY,EAAE,OAAO,CAAC;CACvB,KAAG,cAGyC,CAAC;AAE9C,eAAO,MAAM,iBAAiB,GAAI,QAAQ;IACxC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC,KAAG,IAaH,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAO,IAKtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAAO,YAAY,GAAG,SACR,CAAC;AAElD,eAAO,MAAM,6BAA6B,QACtC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAC3B,SAGF,CAAC;AAcH,eAAO,MAAM,uBAAuB,GAClC,KAAK,cAAc,KAClB,kBAaF,CAAC;AAWF,eAAO,MAAM,sBAAsB,GACjC,eAAc,QAAkB,KAC/B,iBAmBD,CAAC"}
@@ -1,6 +1,11 @@
1
1
  import { hostname } from "os";
2
+ import { applyFieldRules } from "./field-filter.js";
2
3
  import { MESSAGE_KEY, REDACTED_PATHS, REDACTED_VALUE, toLoggingError, } from "./logging-wrapper-entities.js";
3
4
  const loggingContext = {};
5
+ let loggingOptions = {};
6
+ export const setLoggingOptions = (options = {}) => {
7
+ loggingOptions = options;
8
+ };
4
9
  export const getLoggingContext = (params) => params.includeError
5
10
  ? loggingContext
6
11
  : { ...loggingContext, error: undefined };
@@ -35,18 +40,26 @@ const parseLoggingRequest = (req) => ({
35
40
  method: req.method,
36
41
  path: getPathWithoutParams(req),
37
42
  hostname: req.hostname,
38
- query_params: req.query,
43
+ query_params: applyFieldRules(req.query, loggingOptions.request?.queryParams),
39
44
  port: req.port,
40
45
  });
41
- export const parseFullLoggingRequest = (req) => ({
42
- ...parseLoggingRequest(req),
43
- headers: req.headers,
44
- client_ip: req.ip,
45
- user_agent: req.headers["user-agent"] ?? undefined,
46
- });
46
+ export const parseFullLoggingRequest = (req) => {
47
+ const requestOptions = loggingOptions.request;
48
+ const parsed = {
49
+ ...parseLoggingRequest(req),
50
+ headers: applyFieldRules(req.headers, requestOptions?.headers, true),
51
+ };
52
+ if (requestOptions?.clientIp !== "omit") {
53
+ parsed.client_ip = req.ip;
54
+ }
55
+ if (requestOptions?.userAgent !== "omit") {
56
+ parsed.user_agent = req.headers["user-agent"] ?? undefined;
57
+ }
58
+ return parsed;
59
+ };
47
60
  const parseLoggingResponse = (res) => ({
48
61
  status_code: res.statusCode,
49
- headers: res.getHeaders(),
62
+ headers: applyFieldRules(res.getHeaders(), loggingOptions.response?.headers, true),
50
63
  });
51
64
  export const getLoggerConfiguration = (minimumLevel = "debug") => ({
52
65
  base: { hostname: hostname() },
@@ -1 +1 @@
1
- {"version":3,"file":"logging-wrapper.js","sourceRoot":"","sources":["../src/logging-wrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logging-wrapper.js","sourceRoot":"","sources":["../src/logging-wrapper.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,9 @@
1
1
  {
2
2
  "name": "@ogcio/fastify-logging-wrapper",
3
- "version": "5.4.0",
3
+ "version": "5.5.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
7
- "scripts": {
8
- "build": "rm -rf dist tsconfig.prod.tsbuildinfo tsconfig.tsbuildinfo && tsc -p tsconfig.prod.json",
9
- "test": "vitest run --coverage --outputFile=results.xml",
10
- "prepublishOnly": "npm i && npm run build && npm run test"
11
- },
12
7
  "keywords": [],
13
8
  "author": {
14
9
  "name": "Samuele Salvatico",
@@ -19,19 +14,26 @@
19
14
  "dependencies": {
20
15
  "@fastify/error": "^4.2.0",
21
16
  "@fastify/sensible": "^6.0.4",
22
- "hyperid": "^3.3.0"
17
+ "hyperid": "^3.3.0",
18
+ "pino": "^10.3.1"
23
19
  },
24
20
  "peerDependencies": {
25
21
  "fastify": "^5.8.4",
26
22
  "@ogcio/shared-errors": "^1.1.1"
27
23
  },
28
24
  "devDependencies": {
29
- "@types/http-errors": "^2.0.5"
25
+ "@ogcio/shared-errors": "^1.1.1",
26
+ "@types/http-errors": "^2.0.5",
27
+ "fastify": "^5.8.4"
30
28
  },
31
29
  "repository": {
32
30
  "type": "git",
33
31
  "url": "git+https://github.com/ogcio/shared-node-utils.git",
34
32
  "directory": "packages/fastify-logging-wrapper"
35
33
  },
36
- "homepage": "https://github.com/ogcio/shared-node-utils/tree/main/packages/fastify-logging-wrapper#readme"
37
- }
34
+ "homepage": "https://github.com/ogcio/shared-node-utils/tree/main/packages/fastify-logging-wrapper#readme",
35
+ "scripts": {
36
+ "build": "rm -rf dist tsconfig.prod.tsbuildinfo tsconfig.tsbuildinfo && tsc -p tsconfig.prod.json",
37
+ "test": "vitest run --coverage --outputFile=results.xml"
38
+ }
39
+ }
@@ -14,6 +14,7 @@ import type {
14
14
  import type { HttpError } from "http-errors";
15
15
  import hyperid from "hyperid";
16
16
  import { type DestinationStream, type LoggerOptions, pino } from "pino";
17
+ import type { LoggingOptions } from "./field-filter.js";
17
18
  import {
18
19
  getLoggerConfiguration,
19
20
  getLoggingContext,
@@ -22,6 +23,7 @@ import {
22
23
  parseFullLoggingRequest,
23
24
  resetLoggingContext,
24
25
  setLoggingContext,
26
+ setLoggingOptions,
25
27
  } from "./logging-wrapper.js";
26
28
  import {
27
29
  LogMessages,
@@ -43,16 +45,23 @@ const isObjectNotEmpty = (value: object | undefined) => {
43
45
  );
44
46
  };
45
47
 
46
- export const initializeLoggingHooks = (server: FastifyInstance): void => {
48
+ export const initializeLoggingHooks = (
49
+ server: FastifyInstance,
50
+ options?: LoggingOptions,
51
+ ): void => {
52
+ setLoggingOptions(options);
53
+ const completionOnly = options?.lifecycle === "completion-only";
47
54
  server.addHook("preParsing", (request, _reply, payload, done) => {
48
55
  setLoggingContext({ request });
49
56
 
50
- const requestParsed = parseFullLoggingRequest(request);
57
+ if (!completionOnly) {
58
+ const requestParsed = parseFullLoggingRequest(request);
51
59
 
52
- if (isObjectNotEmpty(requestParsed)) {
53
- request.log.info({ request: requestParsed }, LogMessages.NewRequest);
54
- } else {
55
- request.log.info(LogMessages.NewRequest);
60
+ if (isObjectNotEmpty(requestParsed)) {
61
+ request.log.info({ request: requestParsed }, LogMessages.NewRequest);
62
+ } else {
63
+ request.log.info(LogMessages.NewRequest);
64
+ }
56
65
  }
57
66
 
58
67
  done(null, payload);
@@ -66,7 +75,9 @@ export const initializeLoggingHooks = (server: FastifyInstance): void => {
66
75
  });
67
76
  setLoggingContext(contextParams);
68
77
 
69
- reply.log.info(LogMessages.Response);
78
+ if (!completionOnly) {
79
+ reply.log.info(LogMessages.Response);
80
+ }
70
81
  // Include error in API Track if exists
71
82
 
72
83
  const error = getPartialLoggingContextError();
@@ -0,0 +1,47 @@
1
+ import { REDACTED_VALUE } from "./logging-wrapper-entities.js";
2
+
3
+ export interface FieldRules {
4
+ omit?: string[];
5
+ mask?: string[];
6
+ }
7
+
8
+ export interface LoggingOptions {
9
+ lifecycle?: "completion-only";
10
+ request?: {
11
+ headers?: FieldRules;
12
+ queryParams?: FieldRules;
13
+ clientIp?: "omit";
14
+ userAgent?: "omit";
15
+ };
16
+ response?: {
17
+ headers?: FieldRules;
18
+ };
19
+ }
20
+
21
+ export const applyFieldRules = (
22
+ value: unknown,
23
+ rules: FieldRules | undefined,
24
+ caseInsensitive = false,
25
+ ): unknown => {
26
+ if (!rules || (!rules.omit?.length && !rules.mask?.length)) {
27
+ return value;
28
+ }
29
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
30
+ return value;
31
+ }
32
+
33
+ const normalize = (key: string): string =>
34
+ caseInsensitive ? key.toLowerCase() : key;
35
+ const toOmit = new Set((rules.omit ?? []).map(normalize));
36
+ const toMask = new Set((rules.mask ?? []).map(normalize));
37
+
38
+ const result: Record<string, unknown> = {};
39
+ for (const [key, entry] of Object.entries(value as Record<string, unknown>)) {
40
+ const normalized = normalize(key);
41
+ if (toOmit.has(normalized)) {
42
+ continue;
43
+ }
44
+ result[key] = toMask.has(normalized) ? REDACTED_VALUE : entry;
45
+ }
46
+ return result;
47
+ };
package/src/index.ts CHANGED
@@ -2,7 +2,9 @@ export {
2
2
  getLoggingConfiguration,
3
3
  initializeLoggingHooks,
4
4
  } from "./fastify-logging-wrapper.js";
5
+ export type { FieldRules, LoggingOptions } from "./field-filter.js";
5
6
  export {
7
+ getLoggingContext,
6
8
  getLoggingContextError,
7
9
  setLoggingContext,
8
10
  } from "./logging-wrapper.js";
@@ -15,8 +15,8 @@ export interface LoggingRequest {
15
15
 
16
16
  export interface FullLoggingRequest extends LoggingRequest {
17
17
  headers: unknown;
18
- user_agent: string | undefined;
19
- client_ip: string;
18
+ user_agent?: string;
19
+ client_ip?: string;
20
20
  }
21
21
 
22
22
  export interface LoggingResponse {
@@ -2,6 +2,7 @@ import type { HttpError } from "@fastify/sensible";
2
2
  import type { FastifyError, FastifyReply, FastifyRequest } from "fastify";
3
3
  import type { LogLevel, PinoLoggerOptions } from "fastify/types/logger.js";
4
4
  import { hostname } from "os";
5
+ import { applyFieldRules, type LoggingOptions } from "./field-filter.js";
5
6
  import {
6
7
  type FullLoggingRequest,
7
8
  type LoggingContext,
@@ -17,6 +18,12 @@ import {
17
18
 
18
19
  const loggingContext: LoggingContext = {};
19
20
 
21
+ let loggingOptions: LoggingOptions = {};
22
+
23
+ export const setLoggingOptions = (options: LoggingOptions = {}): void => {
24
+ loggingOptions = options;
25
+ };
26
+
20
27
  type INPUT_ERROR_TYPES = FastifyError | HttpError;
21
28
 
22
29
  export const getLoggingContext = (params: {
@@ -71,22 +78,34 @@ const parseLoggingRequest = (req: FastifyRequest): LoggingRequest => ({
71
78
  method: req.method,
72
79
  path: getPathWithoutParams(req),
73
80
  hostname: req.hostname,
74
- query_params: req.query,
81
+ query_params: applyFieldRules(req.query, loggingOptions.request?.queryParams),
75
82
  port: req.port,
76
83
  });
77
84
 
78
85
  export const parseFullLoggingRequest = (
79
86
  req: FastifyRequest,
80
- ): FullLoggingRequest => ({
81
- ...parseLoggingRequest(req),
82
- headers: req.headers,
83
- client_ip: req.ip,
84
- user_agent: req.headers["user-agent"] ?? undefined,
85
- });
87
+ ): FullLoggingRequest => {
88
+ const requestOptions = loggingOptions.request;
89
+ const parsed: FullLoggingRequest = {
90
+ ...parseLoggingRequest(req),
91
+ headers: applyFieldRules(req.headers, requestOptions?.headers, true),
92
+ };
93
+ if (requestOptions?.clientIp !== "omit") {
94
+ parsed.client_ip = req.ip;
95
+ }
96
+ if (requestOptions?.userAgent !== "omit") {
97
+ parsed.user_agent = req.headers["user-agent"] ?? undefined;
98
+ }
99
+ return parsed;
100
+ };
86
101
 
87
102
  const parseLoggingResponse = (res: FastifyReply): LoggingResponse => ({
88
103
  status_code: res.statusCode,
89
- headers: res.getHeaders(),
104
+ headers: applyFieldRules(
105
+ res.getHeaders(),
106
+ loggingOptions.response?.headers,
107
+ true,
108
+ ),
90
109
  });
91
110
 
92
111
  export const getLoggerConfiguration = (
@@ -0,0 +1 @@
1
+ {"fileNames":["../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.scripthost.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.collection.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.float16.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.intl.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.iterator.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.promise.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.regexp.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.array.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.date.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.error.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.temporal.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.full.d.ts","../../node_modules/.pnpm/@ogcio+shared-errors@1.1.1/node_modules/@ogcio/shared-errors/dist/shared-consts.d.ts","../../node_modules/.pnpm/@ogcio+shared-errors@1.1.1/node_modules/@ogcio/shared-errors/dist/validation-error-data.d.ts","../../node_modules/.pnpm/@ogcio+shared-errors@1.1.1/node_modules/@ogcio/shared-errors/dist/index.d.ts","../../node_modules/.pnpm/fast-uri@3.1.7/node_modules/fast-uri/types/index.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/scope.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/index.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/rules.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/util.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/subschema.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/errors.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/index.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/dataType.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/not.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/if.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/index.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/required.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/const.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/enum.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/index.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/format.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/errors.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/types/json-schema.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/types/jtd-schema.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/validation_error.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/ref_error.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/core.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/resolve.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/index.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/types/index.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/ajv.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/jtd/error.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/jtd/type.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/jtd/values.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/jtd/index.d.ts","../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/jtd.d.ts","../../node_modules/.pnpm/@fastify+ajv-compiler@4.0.6/node_modules/@fastify/ajv-compiler/types/index.d.ts","../../node_modules/.pnpm/@fastify+error@4.2.0/node_modules/@fastify/error/types/index.d.ts","../../node_modules/.pnpm/fast-json-stringify@7.0.1/node_modules/fast-json-stringify/types/index.d.ts","../../node_modules/.pnpm/@fastify+fast-json-stringify-compiler@5.1.0/node_modules/@fastify/fast-json-stringify-compiler/types/index.d.ts","../../node_modules/.pnpm/find-my-way@9.9.0/node_modules/find-my-way/index.d.ts","../../node_modules/.pnpm/light-my-request@6.6.0/node_modules/light-my-request/types/index.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/utils.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/schema.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/type-provider.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/reply.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/globals.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/blob.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/console.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/crypto.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/encoding.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/events.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/utility.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/header.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/readable.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/fetch.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/formdata.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/connector.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/client-stats.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/client.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/errors.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/dispatcher.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/global-origin.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/pool-stats.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/pool.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/handlers.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/balanced-pool.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/round-robin-pool.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/h2c-client.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/agent.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-call-history.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-agent.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-client.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-pool.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/snapshot-agent.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/mock-errors.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/socks5-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/retry-handler.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/retry-agent.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/api.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/cache-interceptor.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/interceptors.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/util.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/cookies.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/patch.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/websocket.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/eventsource.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/content-type.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/cache.d.ts","../../node_modules/.pnpm/undici-types@7.24.6/node_modules/undici-types/index.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/importmeta.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/messaging.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/navigator.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/performance.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/storage.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/streams.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/timers.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/web-globals/url.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/assert.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/assert/strict.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/async_hooks.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/buffer.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/child_process.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/cluster.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/console.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/constants.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/crypto.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/dgram.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/dns.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/dns/promises.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/domain.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/events.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/fs.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/fs/promises.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/http.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/http2.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/https.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/inspector.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/inspector.generated.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/inspector/promises.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/module.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/net.d.ts","../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/os.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/path.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/path/posix.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/path/win32.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/perf_hooks.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/process.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/punycode.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/querystring.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/quic.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/readline.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/readline/promises.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/repl.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/sea.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/sqlite.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/stream.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/stream/consumers.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/stream/iter.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/stream/promises.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/stream/web.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/string_decoder.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/test.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/test/reporters.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/timers.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/timers/promises.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/tls.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/trace_events.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/tty.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/url.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/util.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/util/types.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/v8.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/vm.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/wasi.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/worker_threads.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/zlib.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/zlib/iter.d.ts","../../node_modules/.pnpm/@types+node@25.9.5/node_modules/@types/node/index.d.ts","../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/index.d.ts","../../node_modules/.pnpm/sonic-boom@4.2.1/node_modules/sonic-boom/types/index.d.ts","../../node_modules/.pnpm/thread-stream@4.0.0/node_modules/thread-stream/index.d.ts","../../node_modules/.pnpm/pino@10.3.1/node_modules/pino/pino.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/logger.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/plugin.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/register.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/instance.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/hooks.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/route.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/context.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/request.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/content-type-parser.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/errors.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/types/server-factory.d.ts","../../node_modules/.pnpm/fastify@5.12.1/node_modules/fastify/fastify.d.ts","../../node_modules/.pnpm/@types+http-errors@2.0.5/node_modules/@types/http-errors/index.d.ts","../../node_modules/.pnpm/hyperid@3.3.0/node_modules/hyperid/index.d.ts","../../node_modules/.pnpm/@fastify+sensible@6.0.4/node_modules/@fastify/sensible/lib/httpError.d.ts","../../node_modules/.pnpm/@fastify+sensible@6.0.4/node_modules/@fastify/sensible/types/index.d.ts","./src/logging-wrapper-entities.ts","./src/field-filter.ts","./src/logging-wrapper.ts","./src/fastify-logging-wrapper.ts","./src/index.ts"],"fileIdsList":[[137,141,150,163,227,235,239,242,244,245,246,259],[163,227,235,239,242,244,245,246,259],[153,163,227,235,239,242,244,245,246,259],[163,227,235,239,242,244,245,246,259,302,305],[94,95,163,227,235,239,242,244,245,246,259],[163,224,225,227,235,239,242,244,245,246,259],[163,226,227,235,239,242,244,245,246,259],[227,235,239,242,244,245,246,259],[163,227,235,239,242,244,245,246,259,268],[163,227,228,233,235,238,239,242,244,245,246,248,259,264,277],[163,227,228,229,235,238,239,242,244,245,246,259],[163,227,230,235,239,242,244,245,246,259,278],[163,227,231,232,235,239,242,244,245,246,250,259],[163,227,232,235,239,242,244,245,246,259,264,274],[163,227,233,235,238,239,242,244,245,246,248,259],[163,226,227,234,235,239,242,244,245,246,259],[163,227,235,236,239,242,244,245,246,259],[163,227,235,237,238,239,242,244,245,246,259],[163,226,227,235,238,239,242,244,245,246,259],[163,227,235,238,239,240,242,244,245,246,259,264,277],[163,227,235,238,239,240,242,244,245,246,259,264,266,268],[163,214,227,235,238,239,241,242,244,245,246,248,259,264,277],[163,227,235,238,239,241,242,244,245,246,248,259,264,274,277],[163,227,235,239,241,242,243,244,245,246,259,264,274,277],[161,162,163,164,165,166,167,168,169,170,171,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285],[163,227,235,238,239,242,244,245,246,259],[163,227,235,239,242,244,246,259],[163,227,235,239,242,244,245,246,247,259,277],[163,227,235,238,239,242,244,245,246,248,259,264],[163,227,235,239,242,244,245,246,250,259],[163,227,235,239,242,244,245,246,251,259],[163,227,235,238,239,242,244,245,246,254,259],[163,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284],[163,227,235,239,242,244,245,246,256,259],[163,227,235,239,242,244,245,246,257,259],[163,227,232,235,239,242,244,245,246,248,259,268],[163,227,235,238,239,242,244,245,246,259,260],[163,227,235,239,242,244,245,246,259,261,278,281],[163,227,235,238,239,242,244,245,246,259,264,267,268],[163,227,235,239,242,244,245,246,259,265,268],[163,227,235,239,242,244,245,246,259,266],[163,227,235,239,242,244,245,246,259,268,278],[163,227,235,239,242,244,245,246,259,269],[163,224,227,235,239,242,244,245,246,259,264,271,277],[163,227,235,239,242,244,245,246,259,264,270],[163,227,235,238,239,242,244,245,246,259,272,273],[163,227,235,239,242,244,245,246,259,272,273],[163,227,232,235,239,242,244,245,246,248,259,264,274],[163,227,235,239,242,244,245,246,259,275],[163,227,235,239,242,244,245,246,248,259,276],[163,227,235,239,241,242,244,245,246,257,259,277],[163,227,235,239,242,244,245,246,259,278,279],[163,227,232,235,239,242,244,245,246,259,279],[163,227,235,239,242,244,245,246,259,264,280],[163,227,235,239,242,244,245,246,247,259,281],[163,227,235,239,242,244,245,246,259,282],[163,227,230,235,239,242,244,245,246,259],[163,227,232,235,239,242,244,245,246,259],[163,227,235,239,242,244,245,246,259,278],[163,214,227,235,239,242,244,245,246,259],[163,227,235,239,242,244,245,246,259,277],[163,227,235,239,242,244,245,246,259,283],[163,227,235,239,242,244,245,246,254,259],[163,227,235,239,242,244,245,246,259,273],[163,214,227,235,238,239,240,242,244,245,246,254,259,264,268,277,280,281,283],[163,227,235,239,242,244,245,246,259,264,284],[163,227,235,239,242,244,245,246,259,266,285],[100,101,105,132,133,135,136,137,139,140,163,227,235,239,242,244,245,246,259],[98,99,163,227,235,239,242,244,245,246,259],[98,163,227,235,239,242,244,245,246,259],[100,140,163,227,235,239,242,244,245,246,259],[100,101,137,138,140,163,227,235,239,242,244,245,246,259],[140,163,227,235,239,242,244,245,246,259],[97,140,141,163,227,235,239,242,244,245,246,259],[100,101,139,140,163,227,235,239,242,244,245,246,259],[100,101,103,104,139,140,163,227,235,239,242,244,245,246,259],[100,101,102,139,140,163,227,235,239,242,244,245,246,259],[100,101,105,132,133,134,135,136,139,140,163,227,235,239,242,244,245,246,259],[100,105,134,135,136,137,139,140,149,163,227,235,239,242,244,245,246,259],[97,100,101,105,137,139,163,227,235,239,242,244,245,246,259],[105,140,163,227,235,239,242,244,245,246,259],[107,108,109,110,111,112,113,114,115,116,140,163,227,235,239,242,244,245,246,259],[130,140,163,227,235,239,242,244,245,246,259],[106,117,125,126,127,128,129,131,163,227,235,239,242,244,245,246,259],[130,140,142,163,227,235,239,242,244,245,246,259],[140,142,163,227,235,239,242,244,245,246,259],[140,143,144,145,146,147,148,163,227,235,239,242,244,245,246,259],[105,140,142,163,227,235,239,242,244,245,246,259],[110,140,163,227,235,239,242,244,245,246,259],[118,119,120,121,122,123,124,140,163,227,235,239,242,244,245,246,259],[141,163,227,235,239,242,244,245,246,259],[151,152,154,155,156,157,158,159,160,163,227,235,239,241,242,243,244,245,246,248,259,291,292,293,294,295,296,297,298,299,300,301],[157,158,159,163,227,235,239,242,244,245,246,259,296,298],[157,163,227,235,239,242,244,245,246,259,296],[152,163,227,235,239,242,244,245,246,259],[152,157,158,159,160,163,227,235,239,242,244,245,246,259,264,291,292,293,294,296,298],[152,155,156,157,158,159,160,163,227,235,239,241,242,244,245,246,248,259,291,293,295,296,298,299,302],[152,157,158,159,160,163,227,235,239,242,244,245,246,259,290,294,296,298],[157,159,163,227,235,239,242,244,245,246,259,291,294],[157,163,227,235,239,242,244,245,246,259,291,292,294,302],[157,158,159,163,227,235,239,242,244,245,246,259,291,294,296,298],[151,157,158,159,163,227,235,239,242,244,245,246,259,291,294,296,297],[152,155,157,158,159,160,163,227,235,239,242,244,245,246,259,291,294,295,297,298],[151,154,163,227,235,239,242,244,245,246,259,302],[157,163,227,235,239,241,242,243,244,245,246,259],[157,158,163,227,235,239,242,244,245,246,259,296],[163,227,235,239,241,242,243,244,245,246,259],[163,227,235,239,241,242,244,245,246,259],[163,227,235,239,241,242,244,245,246,259,264],[163,227,235,239,241,242,244,245,246,259,286],[163,227,235,238,239,242,244,245,246,259,283,287,288,289],[163,227,235,238,239,242,244,245,246,259,286],[163,227,235,238,239,242,244,245,246,259,283],[163,178,181,184,185,227,235,239,242,244,245,246,259,277],[163,181,227,235,239,242,244,245,246,259,264,277],[163,181,185,227,235,239,242,244,245,246,259,277],[163,227,235,239,242,244,245,246,259,264],[163,175,227,235,239,242,244,245,246,259],[163,179,227,235,239,242,244,245,246,259],[163,177,178,181,227,235,239,242,244,245,246,259,277],[163,227,235,239,242,244,245,246,248,259,274],[163,227,235,239,242,244,245,246,259,286],[163,175,227,235,239,242,244,245,246,259,286],[163,177,181,227,235,239,242,244,245,246,248,259,277],[163,172,173,174,176,180,227,235,238,239,242,244,245,246,259,264,277],[163,181,190,198,227,235,239,242,244,245,246,259],[163,173,179,227,235,239,242,244,245,246,259],[163,181,208,209,227,235,239,242,244,245,246,259],[163,173,176,181,227,235,239,242,244,245,246,259,268,277,286],[163,181,227,235,239,242,244,245,246,259],[163,177,181,227,235,239,242,244,245,246,259,277],[163,172,227,235,239,242,244,245,246,259],[163,175,176,177,179,180,181,182,183,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,209,210,211,212,213,227,235,239,242,244,245,246,259],[163,181,201,204,227,235,239,242,244,245,246,259],[163,181,190,191,192,227,235,239,242,244,245,246,259],[163,179,181,191,193,227,235,239,242,244,245,246,259],[163,180,227,235,239,242,244,245,246,259],[163,173,175,181,227,235,239,242,244,245,246,259],[163,181,185,191,193,227,235,239,242,244,245,246,259],[163,185,227,235,239,242,244,245,246,259],[163,179,181,184,227,235,239,242,244,245,246,259,277],[163,173,177,181,190,227,235,239,242,244,245,246,259],[163,181,201,227,235,239,242,244,245,246,259],[163,193,227,235,239,242,244,245,246,259],[163,173,177,181,185,227,235,239,242,244,245,246,259],[163,175,181,208,227,235,239,242,244,245,246,259,268,283,286],[96,163,227,235,239,242,244,245,246,259,290,291,302,303,304,307,308,309],[163,227,235,239,242,244,245,246,259,307],[163,227,235,239,242,244,245,246,259,307,308,309,310],[96,163,227,235,239,242,244,245,246,259,302,303,306],[163,227,235,239,242,244,245,246,250,259,291,302,306,307,308]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"2a2de5b9459b3fc44decd9ce6100b72f1b002ef523126c1d3d8b2a4a63d74d78","affectsGlobalScope":true,"impliedFormat":1},{"version":"f13f4b465c99041e912db5c44129a94588e1aafee35a50eab51044833f50b4ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"ef4a897cd2a3f91000c10264e400b3667c7e51e1b7365f03b62e8081dc53bde6","impliedFormat":1},{"version":"9ebea7b550b47ee8f25cdea204384a91fd841342568a468d6e624295d3dccdad","impliedFormat":99},{"version":"16fb776915dc743d26209aac7d6058d9a607ec5f0a51e7862618a8360c6ef7d3","impliedFormat":99},{"version":"3c57f1b9cac4c48acb0914572006c8333d5325771ca744bfbee6038fb1c31541","impliedFormat":99},{"version":"84bcc7c6b06f4d643a55dc63b56be0c81d990f8d549b66ea615c553268774dc3","impliedFormat":1},{"version":"2d225e7bda2871c066a7079c88174340950fb604f624f2586d3ea27bb9e5f4ff","impliedFormat":1},{"version":"6a785f84e63234035e511817dd48ada756d984dd8f9344e56eb8b2bdcd8fd001","impliedFormat":1},{"version":"c1422d016f7df2ccd3594c06f2923199acd09898f2c42f50ea8159f1f856f618","impliedFormat":1},{"version":"2973b1b7857ca144251375b97f98474e9847a890331e27132d5a8b3aea9350a8","impliedFormat":1},{"version":"0eb6152d37c84d6119295493dfcc20c331c6fda1304a513d159cdaa599dcb78b","impliedFormat":1},{"version":"237df26f8c326ca00cd9d2deb40214a079749062156386b6d75bdcecc6988a6b","impliedFormat":1},{"version":"cd44995ee13d5d23df17a10213fed7b483fabfd5ea08f267ab52c07ce0b6b4da","impliedFormat":1},{"version":"58ce1486f851942bd2d3056b399079bc9cb978ec933fe9833ea417e33eab676e","impliedFormat":1},{"version":"7557d4d7f19f94341f4413575a3453ba7f6039c9591015bcf4282a8e75414043","impliedFormat":1},{"version":"a3b2cc16f3ce2d882eca44e1066f57a24751545f2a5e4a153d4de31b4cac9bb5","impliedFormat":1},{"version":"ac2b3b377d3068bfb6e1cb8889c99098f2c875955e2325315991882a74d92cc8","impliedFormat":1},{"version":"8deb39d89095469957f73bd194d11f01d9894b8c1f1e27fbf3f6e8122576b336","impliedFormat":1},{"version":"a38a9c41f433b608a0d37e645a31eecf7233ef3d3fffeb626988d3219f80e32f","impliedFormat":1},{"version":"8e1428dcba6a984489863935049893631170a37f9584c0479f06e1a5b1f04332","impliedFormat":1},{"version":"1fce9ecb87a2d3898941c60df617e52e50fb0c03c9b7b2ba8381972448327285","impliedFormat":1},{"version":"5ef0597b8238443908b2c4bf69149ed3894ac0ddd0515ac583d38c7595b151f1","impliedFormat":1},{"version":"ac52b775a80badff5f4ac329c5725a26bd5aaadd57afa7ad9e98b4844767312a","impliedFormat":1},{"version":"6ae5b4a63010c82bf2522b4ecfc29ffe6a8b0c5eea6b2b35120077e9ac54d7a1","impliedFormat":1},{"version":"dd7109c49f416f218915921d44f0f28975df78e04e437c62e1e1eb3be5e18a35","impliedFormat":1},{"version":"eee181112e420b345fc78422a6cc32385ede3d27e2eaf8b8c4ad8b2c29e3e52e","impliedFormat":1},{"version":"25fbe57c8ee3079e2201fe580578fab4f3a78881c98865b7c96233af00bf9624","impliedFormat":1},{"version":"62cc8477858487b4c4de7d7ae5e745a8ce0015c1592f398b63ee05d6e64ca295","impliedFormat":1},{"version":"cc2a9ec3cb10e4c0b8738b02c31798fad312d21ef20b6a2f5be1d077e9f5409d","impliedFormat":1},{"version":"4b4fadcda7d34034737598c07e2dca5d7e1e633cb3ba8dd4d2e6a7782b30b296","impliedFormat":1},{"version":"360fdc8829a51c5428636f1f83e7db36fef6c5a15ed4411b582d00a1c2bd6e97","impliedFormat":1},{"version":"1cf0d15e6ab1ecabbf329b906ae8543e6b8955133b7f6655f04d433e3a0597ab","impliedFormat":1},{"version":"7c9f98fe812643141502b30fb2b5ec56d16aaf94f98580276ae37b7924dd44a4","impliedFormat":1},{"version":"b3547893f24f59d0a644c52f55901b15a3fa1a115bc5ea9a582911469b9348b7","impliedFormat":1},{"version":"596e5b88b6ca8399076afcc22af6e6e0c4700c7cd1f420a78d637c3fb44a885e","impliedFormat":1},{"version":"adddf736e08132c7059ee572b128fdacb1c2650ace80d0f582e93d097ed4fbaf","impliedFormat":1},{"version":"d4cad9dc13e9c5348637170ddd5d95f7ed5fdfc856ddca40234fa55518bc99a6","impliedFormat":1},{"version":"d70675ba7ba7d02e52b7070a369957a70827e4b2bca2c1680c38a832e87b61fd","impliedFormat":1},{"version":"3be71f4ce8988a01e2f5368bdd58e1d60236baf511e4510ee9291c7b3729a27e","impliedFormat":1},{"version":"423d2ccc38e369a7527988d682fafc40267bcd6688a7473e59c5eea20a29b64f","impliedFormat":1},{"version":"2f9fde0868ed030277c678b435f63fcf03d27c04301299580a4017963cc04ce6","impliedFormat":1},{"version":"feeb73d48cc41c6dd23d17473521b0af877751504c30c18dc84267c8eeea429a","impliedFormat":1},{"version":"25f1159094dc0bf3a71313a74e0885426af21c5d6564a254004f2cadf9c5b052","impliedFormat":1},{"version":"cde493e09daad4bb29922fe633f760be9f0e8e2f39cdca999cce3b8690b5e13a","impliedFormat":1},{"version":"3d7f9eb12aface876f7b535cc89dcd416daf77f0b3573333f16ec0a70bcf902a","impliedFormat":1},{"version":"4304f640f7cb4724ea82441accb7c7607fa7207541182470d625adda99b2900b","impliedFormat":1},{"version":"e0205f04611bea8b5b82168065b8ef1476a8e96236201494eb8c785331c43118","impliedFormat":1},{"version":"62d26d8ba4fa15ab425c1b57a050ed76c5b0ecbffaa53f182110aa3a02405a07","impliedFormat":1},{"version":"9941cbf7ca695e95d588f5f1692ab040b078d44a95d231fa9a8f828186b7b77d","impliedFormat":1},{"version":"41b8775befd7ded7245a627e9f4de6110236688ce4c124d2d40c37bc1a3bfe05","impliedFormat":1},{"version":"a6613ee552418429af38391e37389036654a882c342a1b81f2711e8ddac597f2","impliedFormat":1},{"version":"da47cb979ae4a849f9b983f43ef34365b7050c4f5ae2ebf818195858774e1d67","impliedFormat":1},{"version":"ac3bcb82d7280fc313a967f311764258d18caf33db6d2b1a0243cde607ff01a0","impliedFormat":1},{"version":"c9b5632d6665177030428d02603aeac3e920d31ec83ac500b55d44c7da74bd84","impliedFormat":1},{"version":"46456824df16d60f243a7e386562b27bac838aaba66050b9bc0f31e1ab34c1f2","impliedFormat":1},{"version":"b91034069e217212d8dda6c92669ee9f180b4c36273b5244c3be2c657f9286c7","impliedFormat":1},{"version":"0697277dd829ac2610d68fe1b457c9e758105bb52d40e149d9c15e5e2fe6dca4","impliedFormat":1},{"version":"b0d06dbb409369169143ede5df1fb58b2fca8d44588e199bd624b6f6d966bf08","impliedFormat":1},{"version":"88dfdb2a44912a28aea3ebb657dc7fcec6ba59f7233005e3405824995b713dac","impliedFormat":1},{"version":"f38a45cbc0356dfb6455211e75ecd0f8aeaedbacd4cb8d6646c818d36a46d195","impliedFormat":1},{"version":"cc2d5d5687bdf9d7c49b6946b8769ac7abcbdcd1701d9bb9ca70a8bc1b003e8b","impliedFormat":1},{"version":"814e29fd63ffbadaa938eed9ed5b2da3bbdd3671312eaf8d2798010e123aae7a","impliedFormat":1},{"version":"9c0623d67471ddc5b9d82b4e06252c746d54f7ae8ccff8701cd51c249f7e7694","impliedFormat":1},{"version":"71654f68a41362f16a2690ec215e583d3cfa913d49327e43c3c7f354022f67a3","impliedFormat":1},{"version":"f69b484edf398d636992757d587e7e38ea91844a66dbca9d682c9cf7858b77cf","impliedFormat":1},{"version":"633f0cda8da5fc0465e0f3d19569e09e0a16f60a47b1ad24d440f58f72e14965","impliedFormat":1},{"version":"c3ccf44723b474b5d7a87c53eed9711e81422f0e29b3e8f8f8d42775fa802243","impliedFormat":1},{"version":"9f6d49a0b21b0a5adeb354ec8f42aca672a8e8c1b8196f062ea5309395f03380","impliedFormat":1},{"version":"fd4baead95dac76786410f7b870f1511d7be6cf36b752fbe7458d43e61e657d9","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc2110f7decca6bfb9392e30421cfa1436479e4a6756e8fec6cbc22625d4f881","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"14e9acf826baba0ef4b5665704084896e7bcc06f65a9ab13af7e93d27d6b7069","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"21adf13435b9b748529c8cedf80f884e5130b9684188120a686cd2b26a2059c7","impliedFormat":1},{"version":"eec76bf6b9346f3f95fa402621b889489e96930e72295b0369022f332e9b4a6a","impliedFormat":1},{"version":"0ecd58f413f9bc3b7d4383eae31b0c8fc576985cd7404d6f99f8c643543ade74","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"d33ce35e3f9cfcc1d94eca415bdd3bde94d5b153ffdd33e6c4455c029986c630","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"4dc59f6e1dbf3d5f66660fceabe6c174d3261b37b696ae1854f0dbaf255fc753","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"114f493b30f364255290472111b5a4791d5902c308645670cd0401429cbc6930","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2ae155afe8a01cc0ae612d99117cf8ef16692ba7c4366590156fdec1bcf2d8c","impliedFormat":1},{"version":"3f5e5d9be35913db9fea42a63f3df0b7e3c8703b97670a2125587b4dbbd56d7c","impliedFormat":1},{"version":"c8b8968311ec4e5e97b7b5fb8a65efaba455db9bdcfd7fff7fb15f6e317bfba0","impliedFormat":1},{"version":"57c23df0b5f7a8e26363a3849b0bc7763f6b241207157c8e40089d1df4116f35","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b8bc0c17b54081b0878673989216229e575d67a10874e84566a21025a2461ee","impliedFormat":1},{"version":"5b0db5a58b73498792a29bfebc333438e61906fef75da898b410e24e52229e6f","impliedFormat":1},{"version":"dbe055b2b29a7bab2c1ca8f259436306adb43f469dca7e639a02cd3695d3f621","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"aecbf1d9e6a18dab7d92ef8a89a1444b47e1eb6134cb2bb776a26d55ff58c29a","impliedFormat":1},{"version":"2ea729503db9793f2691162fec3dd1118cab62e96d025f8eeb376d43ec293395","impliedFormat":1},{"version":"9ec87fea42b92894b0f209931a880789d43c3397d09dd99c631ae40a2f7071d1","impliedFormat":1},{"version":"c68e88cdfadfb6c8ba5fc38e58a3a166b0beae77b1f05b7d921150a32a5ffb8d","impliedFormat":1},{"version":"2bc7aa4fba46df0bd495425a7c8201437a7d465f83854fac859df2d67f664df3","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"1fede9296beac11ce8e6b425396a1791f64341f2be85deebb6286faf6e16306e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce697b6a251d9cad53998c7fd3098072df883b525ec45d83530e434dc6d80dc6","impliedFormat":1},{"version":"53ff1acab080a8318445df2c7da35ec47489dc83be40569e39c7c750046e217f","impliedFormat":1},{"version":"0eb5d0cbf09de5d34542b977fd6a933bb2e0817bffe8e1a541b2f1ad1b9af1ff","impliedFormat":1},{"version":"3db996ecdee7aabecc5385976cc07eb66216034a273c07b17d1a85292e9bab0c","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"c32c840c62d8bd7aeb3147aa6754cd2d922b990a6b6634530cb2ebdce5adc8e9","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"c1fa52b3d014001e8662fa2669d90ea15373958a288e3b83a3b621733d25292a","affectsGlobalScope":true,"impliedFormat":1},{"version":"cbed824fec91efefc7bbdcb8b43d1a531fdbebd0e2ef19481501ff365a93cb70","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"d0716593b3f2b0451bcf0c24cfa86dec2235c325c89f201934248b7c742715fc","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"2991bca2cc0f0628a278df2a2ccdb8d6cbcb700f3761abbed62bba137d5b1790","impliedFormat":1},{"version":"47d480d0c84b0f6215f1f817e0939b247ebf5217b6784846b96fa6ab710ce99d","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"8413d0641f293aed551c7464615b770d34a02dedede889b9591172287d68e773","impliedFormat":1},{"version":"0ea59f7d3e51440baa64f429253759b106cfcbaf51e474cae606e02265b37cf8","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"1b241e24f3227d078c06aeda6e050187ad59a4e591f4467abed44d92b084e08d","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"7fde0e1be5c8be204ffbf428abfcf01da2eb0f130e1bc3f539eb7275f4fd1f58","impliedFormat":1},{"version":"e284328553df5f425a5d33d36a0c3fa66b46af9d097cad6f4d2e8696dfdeb0f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"f36b3fbe2be150a9ca140da48593f21e6a8172004f92ddc549b43efec39f3e54","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"016b29bf4926b80255a108c53a1451717350059da04fcae64d1075f5e93bbb39","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"1c4f139ade4f6ebf45463505f8155173e5d7a5305e50e0aae0a5e712d6ff3b48","impliedFormat":1},{"version":"e16b319e5aca1031168de823c4946ff8e29629c4c8cc0ec0fcfe2a8ab2155043","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"9d3821bc75c59577e52643324cec92fc2145642e8d17cf7ee07a3181f21d985d","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"201db9cf1687fab1adf5282fcba861f382b32303dc4f67c89d59655e78a25461","impliedFormat":1},{"version":"2c3c5c0f54055e87640f5d233716fd889f3034fc7911d603b642369b0dbeb2a7","impliedFormat":1},{"version":"0a20eaf2e4b1e3c1e1f87f7bccb0c936375b23b022baeea750519b7c9bc6ce83","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"a16b91b27bd6b706c687c88cbc8a7d4ee98e5ed6043026d6b84bda923c0aed67","impliedFormat":1},{"version":"1c9e5b1a17b1fc9b3711fb36e0690421261ab2880f15b145155b5b2ba2ab6c2d","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"6eeded8c7e352be6e0efb83f4935ec752513c4d22043b52522b90849a49a3a11","impliedFormat":1},{"version":"6c1ad90050ffbb151cacc68e2d06ea1a26a945659391e32651f5d42b86fd7f2c","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"6953d7597831d0860c7034cf4f0419687d263b6b98a4b32e37ce6d49615c36e2","impliedFormat":1},{"version":"4fe80f12b1d5189384a219095c2eabadbb389c2d3703aae7c5376dbaa56061df","impliedFormat":1},{"version":"9eb1d2dceae65d1c82fc6be7e9b6b19cf3ca93c364678611107362b6ad4d2d41","impliedFormat":1},{"version":"e34aecf8d244b86b519e778b9a85e05f877119f4e920c635f8ee024bb4c354c8","impliedFormat":1},{"version":"e40f9840e4686053a5d42b39fddfd6774172a3d12fa61c1edb8c35b452a5e74a","impliedFormat":1},{"version":"4be4c4bea246023f3a9be669a3a1b8cb0cfe28da3ce643d281e1cdb3b3578e27","impliedFormat":1},{"version":"1b9c3803fb0888f9ec9c398dd2bb6002654eaefa527f06c0c1c04c831c0b8b19","impliedFormat":1},{"version":"b8ab697fa1664caef9427ee3edfb687a35e88c06b2d12c63d1d32dfaf3b722a1","impliedFormat":1},{"version":"739731be7ff615eab4160e58549755ba4978b0692257e9a731c194faf4ef543b","impliedFormat":1},{"version":"3fd523f1afe8b61552c89e4e7e14a453ba843c40046ac8cd831886854393a523","impliedFormat":1},{"version":"aaf7da505f9167078132deef7f189f772e69b84b186a2ff3cefe64812a4093d5","impliedFormat":1},{"version":"64102e00cb41de7f423608037d17dff83954904383e5c45f1054c2246cf5e184","impliedFormat":1},{"version":"69b59327a18869d2168be6beb4ad0bf235fa85c1f3ad9ff1a08de5d26f6c6910","impliedFormat":1},{"version":"ee51197d5201fcde5614bdbe4c539ef568d98cf97f29f02023a6e63a7b2240e8","impliedFormat":1},{"version":"fe029999423fa40bb9e6b3cb94e0933049c7c13bb26bccd764b02528270231d5","impliedFormat":1},{"version":"44b227ad122395768f07a8f1b84041b096220335b34ff7af3b8caa61731b294d","impliedFormat":1},{"version":"a31d3c5f50d13db8bb892ea6c7667716accb8a4bfc3b350fdb72e96aa1c89a38","impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"3c52d4f4a2b6d155b89b2986ef57444090f8b9bee926466e8c054c35fe2ef02d","impliedFormat":1},{"version":"75cb3bb75a869361b5d3c2e5b1980b1bcd761e9c52b022c291708ed80a747bf4","impliedFormat":1},{"version":"1e0084c03f8416bf73fa90ceeff1ef74faac95d3c58fac945335ac362d413bd7","impliedFormat":1},{"version":"e385cccee16a8f9781055a376e53b3047401560400f384a5009bc572c5d646d7","signature":"06611289e9c1705f5265d0bf11dfdca3822f8658ccce90e375906e7bc7f699c4","impliedFormat":99},{"version":"f18b1e8f3ce471f7a916935c86e60f0a4137871b5170d721ad2ebe9624023eee","signature":"c460fecc769ad926f9a025499b551d60006b64ead662d81e16a8b9daa59366c5","impliedFormat":99},{"version":"2f81bb12323cb5fe5cfc6aac84938a26ae2e66623324b68a57f2f9ea303b7d80","signature":"c8382daa2e14a549de8ceb4cecaeec8ab3643400836d2c74e16159dcd15ee984","impliedFormat":99},{"version":"0d9bb5aebb9384865ca44628b3196cf0b3d97ba07f4d1c38ca47bc574ac00a2a","signature":"99a5b0f6d9e80986f601bcc67e94ca909200144e81ddef7a7ce675186643e91b","impliedFormat":99},{"version":"f7b85511a4b0425de202cb3b06f5fdb15005ae8aa328043d99cdf058cba62083","signature":"d73791262c74025a7cc0993013c11ca53ffd0d125f976486d126e02131dd4264","impliedFormat":99}],"root":[[307,311]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":199,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"target":99},"referencedMap":[[151,1],[152,2],[154,3],[305,2],[306,4],[96,5],[94,2],[95,2],[303,2],[224,6],[225,6],[226,7],[163,8],[227,9],[228,10],[229,11],[161,2],[230,12],[231,13],[232,14],[233,15],[234,16],[235,17],[236,17],[237,18],[238,19],[239,20],[240,21],[164,2],[162,2],[241,22],[242,23],[243,24],[286,25],[244,26],[245,27],[246,26],[247,28],[248,29],[250,30],[251,31],[252,31],[253,31],[254,32],[255,33],[256,34],[257,35],[258,36],[259,37],[260,37],[261,38],[262,2],[263,2],[264,39],[265,40],[266,41],[267,39],[268,42],[269,43],[270,44],[271,45],[272,46],[273,47],[274,48],[275,49],[276,50],[277,51],[278,52],[279,53],[280,54],[281,55],[282,56],[165,26],[166,2],[167,57],[168,58],[169,2],[170,59],[171,2],[215,60],[216,61],[217,62],[218,62],[219,63],[220,2],[221,9],[222,64],[223,61],[283,65],[284,66],[285,67],[141,68],[98,2],[100,69],[99,70],[104,71],[139,72],[136,73],[138,74],[101,73],[102,75],[106,75],[105,76],[103,77],[137,78],[150,79],[135,73],[140,80],[133,2],[134,2],[107,81],[112,73],[114,73],[109,73],[110,81],[116,73],[117,82],[108,73],[113,73],[115,73],[111,73],[131,83],[130,73],[132,84],[126,73],[147,85],[145,86],[144,73],[142,71],[149,87],[146,88],[143,86],[148,86],[128,73],[127,73],[123,73],[129,89],[124,73],[125,90],[118,73],[119,73],[120,73],[121,73],[122,73],[249,2],[153,91],[97,2],[302,92],[299,93],[297,94],[300,95],[295,96],[294,97],[291,98],[292,99],[293,100],[160,101],[298,102],[296,103],[158,104],[301,105],[159,106],[157,107],[155,108],[304,2],[156,109],[287,110],[290,111],[288,112],[289,113],[91,2],[92,2],[16,2],[14,2],[15,2],[20,2],[19,2],[2,2],[21,2],[22,2],[23,2],[24,2],[25,2],[26,2],[27,2],[28,2],[3,2],[29,2],[30,2],[4,2],[31,2],[35,2],[32,2],[33,2],[34,2],[36,2],[37,2],[38,2],[5,2],[39,2],[40,2],[41,2],[42,2],[6,2],[46,2],[43,2],[44,2],[45,2],[47,2],[7,2],[48,2],[53,2],[54,2],[49,2],[50,2],[51,2],[52,2],[8,2],[58,2],[55,2],[56,2],[57,2],[59,2],[9,2],[60,2],[61,2],[62,2],[64,2],[63,2],[65,2],[66,2],[10,2],[67,2],[68,2],[69,2],[11,2],[70,2],[71,2],[72,2],[73,2],[74,2],[75,2],[12,2],[76,2],[77,2],[78,2],[79,2],[80,2],[1,2],[81,2],[82,2],[13,2],[83,2],[84,2],[85,2],[86,2],[93,2],[87,2],[88,2],[89,2],[90,2],[18,2],[17,2],[190,114],[203,115],[187,116],[204,117],[213,118],[178,119],[179,120],[177,121],[212,122],[207,123],[211,124],[181,125],[200,126],[180,127],[210,128],[175,129],[176,123],[182,130],[183,2],[189,131],[186,130],[173,132],[214,133],[205,134],[193,135],[192,130],[194,136],[197,137],[191,138],[195,139],[208,122],[184,140],[185,141],[198,142],[174,117],[202,143],[201,130],[188,141],[196,144],[199,145],[206,2],[172,2],[209,146],[310,147],[308,148],[311,149],[307,150],[309,151]],"latestChangedDtsFile":"./dist/index.d.ts","version":"6.0.3"}
package/vitest.config.mts CHANGED
@@ -4,15 +4,20 @@ export default defineConfig({
4
4
  test: {
5
5
  reporters: "default",
6
6
  coverage: {
7
- reporter: ["text", "cobertura"],
8
- provider: "istanbul",
7
+ enabled: true,
8
+ provider: "v8",
9
+ reportsDirectory: "coverage",
10
+ reporter: ["lcov", "cobertura"],
11
+ clean: true,
12
+ include: ["src/**/*.ts"],
13
+ exclude: ["**/test/**", "**/dist/**", "**/node_modules/**"],
9
14
  },
10
15
  include: [
11
16
  "**/@(test?(s)|__test?(s)__)/**/*.test.@(js|cjs|mjs|tap|cts|jsx|mts|ts|tsx)",
12
17
  "**/*.@(test?(s)|spec).@(js|cjs|mjs|tap|cts|jsx|mts|ts|tsx)",
13
18
  "**/test?(s).@(js|cjs|mjs|tap|cts|jsx|mts|ts|tsx)",
14
19
  ],
15
- exclude: ["**/@(fixture*(s)|dist|node_modules)/**"],
20
+ exclude: ["**/@(fixture*(s)|dist|node_modules|.yalc)/**"],
16
21
  maxConcurrency: 1,
17
22
  testTimeout: 30000, // Timeout in milliseconds (30 seconds)
18
23
  },