@rosen-bridge/fastify-enhanced 2.0.2 → 3.1.0-771abce9

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
@@ -1,5 +1,20 @@
1
1
  # @rosen-bridge/fastify-enhanced
2
2
 
3
+ ## 3.1.0-771abce9
4
+
5
+ ### Minor Changes
6
+
7
+ - Add support for using AbstractLogger in place of the default Fastify logger
8
+
9
+ ## 3.0.0
10
+
11
+ ### Major Changes
12
+
13
+ - Remove @rosen-bridge/json-bigint dependency and jsonParser in facvor of zod's coerce functionality
14
+ - Add apiKey securityScheme to swagger
15
+ - Update the type of fastify-options argument of makeFastify to FastifyHttpOptions
16
+ - Re-export fastify request and reply types
17
+
3
18
  ## 2.0.2
4
19
 
5
20
  ### Patch Changes
package/README.md CHANGED
@@ -16,47 +16,42 @@ npm:
16
16
 
17
17
  ```sh
18
18
  npm i @rosen-bridge/fastify-enhanced
19
+
20
+ # install compatible zod version
21
+ npm i zod@^3.21.4
19
22
  ```
20
23
 
21
24
  yarn:
22
25
 
23
26
  ```sh
24
27
  yarn add @rosen-bridge/fastify-enhanced
28
+
29
+ # install compatible zod version
30
+ yarn add zod@^3.21.4
25
31
  ```
26
32
 
27
33
  ## Usage
28
34
 
29
- To use the enhanced Fastify, import `createFastify` and use it to create a fastify instance and register routes. Use data types defined under `types` object, to define validation constraints for requests and responses:
35
+ To use the enhanced Fastify, import `makeFastify` and use it to create a fastify instance and register routes. Install and use zod to define schemas for validating requests and responses:
36
+
37
+ > Note: For **BigInt** field types, since JSON does not support the BigInt data type, you should use `z.coerce.bigint()` in the schema, and the value in the data transfer object (DTO) should be either a **number** or a **string**; `coerce` allows Zod to validate and transform the number or string value into a BigInt. Also its preferred to use string for bigint types in the response schemas.
30
38
 
31
39
  ```ts
32
- import { FastifyBaseLogger, FastifyInstance } from 'fastify';
33
- import { IncomingMessage, Server, ServerResponse } from 'http';
34
-
35
- import {
36
- ZodTypeProvider,
37
- createFastify,
38
- types,
39
- } from '@rosen-bridge/fastify-enhanced';
40
-
41
- const addTokenPaymentRoute = (
42
- fastify: FastifyInstance<
43
- Server<typeof IncomingMessage, typeof ServerResponse>,
44
- IncomingMessage,
45
- ServerResponse<IncomingMessage>,
46
- FastifyBaseLogger,
47
- ZodTypeProvider
48
- >,
49
- ) => {
50
- const bodySchema = types.object({
51
- tokenName: types.string(),
52
- tokenAmount: types.bigint(),
53
- tokenDecimals: types.number(),
40
+ import { z } from 'zod';
41
+
42
+ import { FastifyWithZod, makeFastify } from '@rosen-bridge/fastify-enhanced';
43
+
44
+ const addTokenPaymentRoute = (fastify: FastifyWithZod) => {
45
+ const bodySchema = z.object({
46
+ tokenName: z.string(),
47
+ tokenAmount: z.coerce.bigint(),
48
+ tokenDecimals: z.number(),
54
49
  });
55
50
 
56
- const res200Schema = types.object({
57
- name: types.string(),
58
- amount: types.bigint(),
59
- decimal: types.number(),
51
+ const res200Schema = z.object({
52
+ name: z.string(),
53
+ amount: z.string(),
54
+ decimal: z.number(),
60
55
  });
61
56
 
62
57
  const payTokenOpts = {
@@ -71,15 +66,89 @@ const addTokenPaymentRoute = (
71
66
  fastify.post('/payToken', payTokenOpts, async (request, reply) => {
72
67
  return reply.status(200).send({
73
68
  name: request.body.tokenName,
74
- amount: request.body.tokenAmount,
69
+ amount: request.body.tokenAmount.toString(),
75
70
  decimal: request.body.tokenDecimals,
76
71
  });
77
72
  });
73
+ };
74
+
75
+ const addDemoRoute = (fastify: FastifyWithZod) => {
76
+ const bodySchema = z.object({
77
+ numberField: z.number(),
78
+ bigintField: z.coerce.bigint(),
79
+ booleanField: z.boolean(),
80
+ stringField: z.string(),
81
+ optionalStringField: z.optional(z.string()),
82
+ objectField: z.object({
83
+ bigintField: z.coerce.bigint(),
84
+ // ...
85
+ }),
86
+ numberArrayField: z.array(z.number()),
87
+ stringArrayField: z.array(z.string()),
88
+ unionField: z.union([
89
+ z.string(),
90
+ z.object({
91
+ stringArrayField: z.array(z.string()),
92
+ // ...
93
+ }),
94
+ ]),
95
+ });
96
+
97
+ const qsSchema = z.object({
98
+ qs: z.union([z.string().transform((i) => [i]), z.array(z.string())]),
99
+ });
100
+
101
+ const res200Schema = z.object({
102
+ qs: z.array(z.string()),
103
+ numberField: z.number(),
104
+ bigintField: z.string(),
105
+ booleanField: z.boolean(),
106
+ stringField: z.string(),
107
+ optionalStringField: z.optional(z.string()),
108
+ objectField: z.object({
109
+ bigintField: z.string(),
110
+ // ...
111
+ }),
112
+ numberArrayField: z.array(z.number()),
113
+ stringArrayField: z.array(z.string()),
114
+ unionField: z.union([
115
+ z.string(),
116
+ z.object({
117
+ stringArrayField: z.array(z.string()),
118
+ // ...
119
+ }),
120
+ ]),
121
+ });
122
+
123
+ const routeOpts = {
124
+ schema: {
125
+ querystring: qsSchema,
126
+ body: bodySchema,
127
+ response: {
128
+ 200: res200Schema,
129
+ },
130
+ },
131
+ };
78
132
 
79
- return fastify;
133
+ fastify.post('/demo', routeOpts, async (request, reply) => {
134
+ return reply.status(200).send({
135
+ qs: request.query.qs,
136
+ numberField: request.body.numberField,
137
+ bigintField: request.body.bigintField.toString(),
138
+ booleanField: request.body.booleanField,
139
+ stringField: request.body.stringField,
140
+ optionalStringField: request.body.optionalStringField,
141
+ objectField: {
142
+ bigintField: request.body.objectField.bigintField.toString(),
143
+ },
144
+ numberArrayField: request.body.numberArrayField,
145
+ stringArrayField: request.body.stringArrayField,
146
+ unionField: request.body.unionField,
147
+ });
148
+ });
80
149
  };
81
150
 
82
- const fastify = await createFastify(
151
+ const fastify = await makeFastify(
83
152
  {
84
153
  path: '/swagger',
85
154
  title: '',
@@ -89,27 +158,68 @@ const fastify = await createFastify(
89
158
  { logger: false },
90
159
  );
91
160
  addTokenPaymentRoute(fastify);
161
+ // Or fastify.register(addTokenPaymentRoute);
162
+ addDemoRoute(fastify);
92
163
 
93
164
  const start = async () => {
94
165
  try {
95
- await fastify.listen({ port: 8000 });
166
+ await fastify.ready();
167
+ await fastify.listen({ host: '127.0.0.1', port: 8000 });
168
+ console.log(`listening http://127.0.0.1:8000`);
96
169
  } catch (err) {
97
- console.log(err);
170
+ console.error(err);
98
171
  process.exit(1);
99
172
  }
100
173
  };
174
+
101
175
  start();
176
+
177
+ /*
178
+ curl --request POST \
179
+ --url 'http://localhost:8000/demo?qs=key1&qs=key2' \
180
+ --header 'content-type: application/json' \
181
+ --data '{
182
+ "numberField": 10,
183
+ "bigintField": "10000",
184
+ "booleanField": true,
185
+ "stringField": "str",
186
+ "objectField": {
187
+ "bigintField": 10
188
+ },
189
+ "numberArrayField": [
190
+ 0,
191
+ 100,
192
+ 1000
193
+ ],
194
+ "stringArrayField": [
195
+ "str1",
196
+ "str2"
197
+ ],
198
+ "unionField": {
199
+ "stringArrayField": [
200
+ "str1",
201
+ "str2"
202
+ ]
203
+ }
204
+ }'
205
+ */
102
206
  ```
103
207
 
104
- To define a nested route don't forget to add `ZodTypeProvider` to the Fastify instance that is passed to the `register` method, to enable Zod typing validation:
208
+ In order to use an instance of **AbstractLogger** for logging, use the `logger` property of the fastify options.
105
209
 
106
210
  ```ts
107
- fastify.register(
108
- (instance, opts, next) => {
109
- const subFastify = instance.withTypeProvider<ZodTypeProvider>();
110
- addTokenPaymentRoute(subFastify);
111
- next();
211
+ import { ConsoleLogger } from '@rosen-bridge/abstract-logger';
212
+ import { makeFastify } from '@rosen-bridge/fastify-enhanced';
213
+
214
+ const fastify = await makeFastify(
215
+ {
216
+ path: '/swagger',
217
+ title: '',
218
+ description: '',
219
+ version: '0.0.1',
220
+ },
221
+ {
222
+ logger: new ConsoleLogger(),
112
223
  },
113
- { prefix: 'subroute' },
114
224
  );
115
225
  ```
package/dist/fastify.d.ts CHANGED
@@ -1,16 +1,8 @@
1
1
  import 'zod-openapi/extend';
2
- import { FastifyWithZod, SwaggerOpts } from './types';
2
+ import { FastifyOpts, FastifyWithZod, SwaggerOpts } from './types';
3
3
  /**
4
4
  * creates an instance of Fastify with Zod validation library as validator and
5
5
  * type provider
6
6
  */
7
- export declare const makeFastify: (swaggerOpts?: SwaggerOpts, opts?: {
8
- logger: boolean;
9
- }, jsonHandler?: {
10
- parse: (text: string, reviver?: (this: any, key: string, value: any) => any) => any;
11
- stringify: {
12
- (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;
13
- (value: any, replacer?: (number | string)[] | null, space?: string | number): string;
14
- };
15
- }) => Promise<FastifyWithZod>;
7
+ export declare const makeFastify: (swaggerOpts?: SwaggerOpts, opts?: FastifyOpts) => Promise<FastifyWithZod>;
16
8
  //# sourceMappingURL=fastify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../lib/fastify.ts"],"names":[],"mappings":"AAOA,OAAO,oBAAoB,CAAC;AAM5B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,cAAa,WAKZ,EACD;;CAAuB,EACvB;;;;;;CAIE,KACD,OAAO,CAAC,cAAc,CAkBxB,CAAC"}
1
+ {"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../lib/fastify.ts"],"names":[],"mappings":"AAOA,OAAO,oBAAoB,CAAC;AAM5B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,cAAa,WAKZ,EACD,OAAM,WAAgB,KACrB,OAAO,CAAC,cAAc,CAexB,CAAC"}
package/dist/fastify.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import Fastify from 'fastify';
2
2
  import { fastifyZodOpenApiPlugin, serializerCompiler, validatorCompiler, } from 'fastify-zod-openapi';
3
3
  import 'zod-openapi/extend';
4
- import { JsonBigIntFactory } from '@rosen-bridge/json-bigint';
5
- import { makeJsonParser } from './jsonParser';
4
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
5
+ import { FastifyLogger } from './logger';
6
6
  import { registerSwagger } from './swagger';
7
7
  /**
8
8
  * creates an instance of Fastify with Zod validation library as validator and
@@ -13,17 +13,16 @@ export const makeFastify = async (swaggerOpts = {
13
13
  title: 'api',
14
14
  description: '',
15
15
  version: '0.0.1',
16
- }, opts = { logger: true }, jsonHandler = JsonBigIntFactory({
17
- alwaysParseAsBig: false,
18
- useNativeBigInt: true,
19
- storeAsString: true,
20
- })) => {
21
- const fastify = Fastify(opts).withTypeProvider();
16
+ }, opts = {}) => {
17
+ const fastify = Fastify({
18
+ ...opts,
19
+ logger: false,
20
+ loggerInstance: new FastifyLogger(opts.logger ?? new DummyLogger()),
21
+ }).withTypeProvider();
22
22
  fastify.setValidatorCompiler(validatorCompiler);
23
23
  fastify.setSerializerCompiler(serializerCompiler);
24
24
  await fastify.register(fastifyZodOpenApiPlugin);
25
- fastify.addContentTypeParser('application/json', { parseAs: 'string' }, makeJsonParser(jsonHandler));
26
25
  await registerSwagger(fastify, swaggerOpts);
27
26
  return fastify;
28
27
  };
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdGlmeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9mYXN0aWZ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixpQkFBaUIsR0FDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUc1Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUM5QixjQUEyQjtJQUN6QixJQUFJLEVBQUUsVUFBVTtJQUNoQixLQUFLLEVBQUUsS0FBSztJQUNaLFdBQVcsRUFBRSxFQUFFO0lBQ2YsT0FBTyxFQUFFLE9BQU87Q0FDakIsRUFDRCxJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQ3ZCLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztJQUM5QixnQkFBZ0IsRUFBRSxLQUFLO0lBQ3ZCLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLGFBQWEsRUFBRSxJQUFJO0NBQ3BCLENBQUMsRUFDdUIsRUFBRTtJQUMzQixNQUFNLE9BQU8sR0FDWCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLEVBQWlDLENBQUM7SUFFbEUsT0FBTyxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDaEQsT0FBTyxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFbEQsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFFaEQsT0FBTyxDQUFDLG9CQUFvQixDQUMxQixrQkFBa0IsRUFDbEIsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQ3JCLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FDNUIsQ0FBQztJQUVGLE1BQU0sZUFBZSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUU1QyxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRmFzdGlmeSBmcm9tICdmYXN0aWZ5JztcbmltcG9ydCB7XG4gIHR5cGUgRmFzdGlmeVpvZE9wZW5BcGlUeXBlUHJvdmlkZXIsXG4gIGZhc3RpZnlab2RPcGVuQXBpUGx1Z2luLFxuICBzZXJpYWxpemVyQ29tcGlsZXIsXG4gIHZhbGlkYXRvckNvbXBpbGVyLFxufSBmcm9tICdmYXN0aWZ5LXpvZC1vcGVuYXBpJztcbmltcG9ydCAnem9kLW9wZW5hcGkvZXh0ZW5kJztcblxuaW1wb3J0IHsgSnNvbkJpZ0ludEZhY3RvcnkgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2pzb24tYmlnaW50JztcblxuaW1wb3J0IHsgbWFrZUpzb25QYXJzZXIgfSBmcm9tICcuL2pzb25QYXJzZXInO1xuaW1wb3J0IHsgcmVnaXN0ZXJTd2FnZ2VyIH0gZnJvbSAnLi9zd2FnZ2VyJztcbmltcG9ydCB7IEZhc3RpZnlXaXRoWm9kLCBTd2FnZ2VyT3B0cyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRmFzdGlmeSB3aXRoIFpvZCB2YWxpZGF0aW9uIGxpYnJhcnkgYXMgdmFsaWRhdG9yIGFuZFxuICogdHlwZSBwcm92aWRlclxuICovXG5leHBvcnQgY29uc3QgbWFrZUZhc3RpZnkgPSBhc3luYyAoXG4gIHN3YWdnZXJPcHRzOiBTd2FnZ2VyT3B0cyA9IHtcbiAgICBwYXRoOiAnL3N3YWdnZXInLFxuICAgIHRpdGxlOiAnYXBpJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgdmVyc2lvbjogJzAuMC4xJyxcbiAgfSxcbiAgb3B0cyA9IHsgbG9nZ2VyOiB0cnVlIH0sXG4gIGpzb25IYW5kbGVyID0gSnNvbkJpZ0ludEZhY3Rvcnkoe1xuICAgIGFsd2F5c1BhcnNlQXNCaWc6IGZhbHNlLFxuICAgIHVzZU5hdGl2ZUJpZ0ludDogdHJ1ZSxcbiAgICBzdG9yZUFzU3RyaW5nOiB0cnVlLFxuICB9KSxcbik6IFByb21pc2U8RmFzdGlmeVdpdGhab2Q+ID0+IHtcbiAgY29uc3QgZmFzdGlmeSA9XG4gICAgRmFzdGlmeShvcHRzKS53aXRoVHlwZVByb3ZpZGVyPEZhc3RpZnlab2RPcGVuQXBpVHlwZVByb3ZpZGVyPigpO1xuXG4gIGZhc3RpZnkuc2V0VmFsaWRhdG9yQ29tcGlsZXIodmFsaWRhdG9yQ29tcGlsZXIpO1xuICBmYXN0aWZ5LnNldFNlcmlhbGl6ZXJDb21waWxlcihzZXJpYWxpemVyQ29tcGlsZXIpO1xuXG4gIGF3YWl0IGZhc3RpZnkucmVnaXN0ZXIoZmFzdGlmeVpvZE9wZW5BcGlQbHVnaW4pO1xuXG4gIGZhc3RpZnkuYWRkQ29udGVudFR5cGVQYXJzZXI8c3RyaW5nPihcbiAgICAnYXBwbGljYXRpb24vanNvbicsXG4gICAgeyBwYXJzZUFzOiAnc3RyaW5nJyB9LFxuICAgIG1ha2VKc29uUGFyc2VyKGpzb25IYW5kbGVyKSxcbiAgKTtcblxuICBhd2FpdCByZWdpc3RlclN3YWdnZXIoZmFzdGlmeSwgc3dhZ2dlck9wdHMpO1xuXG4gIHJldHVybiBmYXN0aWZ5O1xufTtcbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdGlmeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9mYXN0aWZ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixpQkFBaUIsR0FDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHNUM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFDOUIsY0FBMkI7SUFDekIsSUFBSSxFQUFFLFVBQVU7SUFDaEIsS0FBSyxFQUFFLEtBQUs7SUFDWixXQUFXLEVBQUUsRUFBRTtJQUNmLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLEVBQ0QsT0FBb0IsRUFBRSxFQUNHLEVBQUU7SUFDM0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3RCLEdBQUcsSUFBSTtRQUNQLE1BQU0sRUFBRSxLQUFLO1FBQ2IsY0FBYyxFQUFFLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztLQUNwRSxDQUFDLENBQUMsZ0JBQWdCLEVBQWlDLENBQUM7SUFFckQsT0FBTyxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDaEQsT0FBTyxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFbEQsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFFaEQsTUFBTSxlQUFlLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRTVDLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGYXN0aWZ5IGZyb20gJ2Zhc3RpZnknO1xuaW1wb3J0IHtcbiAgdHlwZSBGYXN0aWZ5Wm9kT3BlbkFwaVR5cGVQcm92aWRlcixcbiAgZmFzdGlmeVpvZE9wZW5BcGlQbHVnaW4sXG4gIHNlcmlhbGl6ZXJDb21waWxlcixcbiAgdmFsaWRhdG9yQ29tcGlsZXIsXG59IGZyb20gJ2Zhc3RpZnktem9kLW9wZW5hcGknO1xuaW1wb3J0ICd6b2Qtb3BlbmFwaS9leHRlbmQnO1xuXG5pbXBvcnQgeyBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcblxuaW1wb3J0IHsgRmFzdGlmeUxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IHJlZ2lzdGVyU3dhZ2dlciB9IGZyb20gJy4vc3dhZ2dlcic7XG5pbXBvcnQgeyBGYXN0aWZ5T3B0cywgRmFzdGlmeVdpdGhab2QsIFN3YWdnZXJPcHRzIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogY3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBGYXN0aWZ5IHdpdGggWm9kIHZhbGlkYXRpb24gbGlicmFyeSBhcyB2YWxpZGF0b3IgYW5kXG4gKiB0eXBlIHByb3ZpZGVyXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlRmFzdGlmeSA9IGFzeW5jIChcbiAgc3dhZ2dlck9wdHM6IFN3YWdnZXJPcHRzID0ge1xuICAgIHBhdGg6ICcvc3dhZ2dlcicsXG4gICAgdGl0bGU6ICdhcGknLFxuICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICB2ZXJzaW9uOiAnMC4wLjEnLFxuICB9LFxuICBvcHRzOiBGYXN0aWZ5T3B0cyA9IHt9LFxuKTogUHJvbWlzZTxGYXN0aWZ5V2l0aFpvZD4gPT4ge1xuICBjb25zdCBmYXN0aWZ5ID0gRmFzdGlmeSh7XG4gICAgLi4ub3B0cyxcbiAgICBsb2dnZXI6IGZhbHNlLFxuICAgIGxvZ2dlckluc3RhbmNlOiBuZXcgRmFzdGlmeUxvZ2dlcihvcHRzLmxvZ2dlciA/PyBuZXcgRHVtbXlMb2dnZXIoKSksXG4gIH0pLndpdGhUeXBlUHJvdmlkZXI8RmFzdGlmeVpvZE9wZW5BcGlUeXBlUHJvdmlkZXI+KCk7XG5cbiAgZmFzdGlmeS5zZXRWYWxpZGF0b3JDb21waWxlcih2YWxpZGF0b3JDb21waWxlcik7XG4gIGZhc3RpZnkuc2V0U2VyaWFsaXplckNvbXBpbGVyKHNlcmlhbGl6ZXJDb21waWxlcik7XG5cbiAgYXdhaXQgZmFzdGlmeS5yZWdpc3RlcihmYXN0aWZ5Wm9kT3BlbkFwaVBsdWdpbik7XG5cbiAgYXdhaXQgcmVnaXN0ZXJTd2FnZ2VyKGZhc3RpZnksIHN3YWdnZXJPcHRzKTtcblxuICByZXR1cm4gZmFzdGlmeTtcbn07XG4iXX0=
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export type { FastifyZodOpenApiTypeProvider } from 'fastify-zod-openapi';
2
2
  export * from './fastify';
3
3
  export * from './types';
4
+ export type { FastifyRequest, FastifyReply, HookHandlerDoneFunction, } from 'fastify';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACzE,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACzE,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,YAAY,EACV,cAAc,EACd,YAAY,EACZ,uBAAuB,GACxB,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export * from './fastify';
2
2
  export * from './types';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IEZhc3RpZnlab2RPcGVuQXBpVHlwZVByb3ZpZGVyIH0gZnJvbSAnZmFzdGlmeS16b2Qtb3BlbmFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2Zhc3RpZnknO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IEZhc3RpZnlab2RPcGVuQXBpVHlwZVByb3ZpZGVyIH0gZnJvbSAnZmFzdGlmeS16b2Qtb3BlbmFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2Zhc3RpZnknO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgdHlwZSB7XG4gIEZhc3RpZnlSZXF1ZXN0LFxuICBGYXN0aWZ5UmVwbHksXG4gIEhvb2tIYW5kbGVyRG9uZUZ1bmN0aW9uLFxufSBmcm9tICdmYXN0aWZ5JztcbiJdfQ==
@@ -0,0 +1,73 @@
1
+ import { FastifyBaseLogger, LogLevel } from 'fastify';
2
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
3
+ export declare class FastifyLogger implements FastifyBaseLogger {
4
+ protected logger: AbstractLogger;
5
+ level: LogLevel;
6
+ /**
7
+ * creates a new instance
8
+ *
9
+ * @param logger - the underlying logger to delegate to
10
+ * @param level - for FastifyBaseLogger interface compliance
11
+ */
12
+ constructor(logger: AbstractLogger, level?: LogLevel);
13
+ /**
14
+ * no-op silent logger method (for Pino interface compliance)
15
+ * logs nothing regardless of input
16
+ */
17
+ silent: () => void;
18
+ /**
19
+ * logs a trace-level message
20
+ *
21
+ * @param obj: object to be serialized
22
+ * @param msg: the log message to write
23
+ */
24
+ trace: (...args: unknown[]) => void;
25
+ /**
26
+ * logs a debug-level message
27
+ *
28
+ * @param obj: object to be serialized
29
+ * @param msg: the log message to write
30
+ */
31
+ debug: (...args: unknown[]) => void;
32
+ /**
33
+ * logs an info-level message
34
+ *
35
+ * @param obj: object to be serialized
36
+ * @param msg: the log message to write
37
+ */
38
+ info: (...args: unknown[]) => void;
39
+ /**
40
+ * logs a warning-level message
41
+ *
42
+ * @param obj: object to be serialized
43
+ * @param msg: the log message to write
44
+ */
45
+ warn: (...args: unknown[]) => void;
46
+ /**
47
+ * logs an error-level message
48
+ *
49
+ * @param obj: object to be serialized
50
+ * @param msg: the log message to write
51
+ */
52
+ error: (...args: unknown[]) => void;
53
+ /**
54
+ * logs a critical/fatal-level message
55
+ *
56
+ * @param obj: object to be serialized
57
+ * @param msg: the log message to write
58
+ */
59
+ fatal: (...args: unknown[]) => void;
60
+ /**
61
+ * creates a child logger with bindings and optional configuration
62
+ * conforms to the Pino/Fastify logger interface
63
+ *
64
+ * @param bindings - Key-value pairs to attach to all logs from the child logger
65
+ * @returns A new FastifyBaseLogger instance (child logger)
66
+ */
67
+ child: (bindings: Record<string, unknown>) => FastifyBaseLogger;
68
+ /**
69
+ * utility function to map and serialize the arguments of fastify logger functions
70
+ */
71
+ private parseArgs;
72
+ }
73
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../lib/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,qBAAa,aAAc,YAAW,iBAAiB;IAQnD,SAAS,CAAC,MAAM,EAAE,cAAc;IACzB,KAAK,EAAE,QAAQ;IARxB;;;;;OAKG;gBAES,MAAM,EAAE,cAAc,EACzB,KAAK,GAAE,QAAiB;IAGjC;;;OAGG;IACH,MAAM,aAEJ;IAEF;;;;;OAKG;IACH,KAAK,GAAI,GAAG,MAAM,OAAO,EAAE,UAGzB;IAEF;;;;;OAKG;IACH,KAAK,GAAI,GAAG,MAAM,OAAO,EAAE,UAGzB;IAEF;;;;;OAKG;IACH,IAAI,GAAI,GAAG,MAAM,OAAO,EAAE,UAGxB;IAEF;;;;;OAKG;IACH,IAAI,GAAI,GAAG,MAAM,OAAO,EAAE,UAGxB;IAEF;;;;;OAKG;IACH,KAAK,GAAI,GAAG,MAAM,OAAO,EAAE,UAGzB;IAEF;;;;;OAKG;IACH,KAAK,GAAI,GAAG,MAAM,OAAO,EAAE,UAGzB;IAEF;;;;;;OAMG;IACH,KAAK,GAAI,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,iBAAiB,CAK5D;IAEF;;OAEG;IACH,OAAO,CAAC,SAAS,CAuBf;CACH"}
package/dist/logger.js ADDED
@@ -0,0 +1,121 @@
1
+ import { serializers } from 'fastify/lib/logger-pino.js';
2
+ export class FastifyLogger {
3
+ logger;
4
+ level;
5
+ /**
6
+ * creates a new instance
7
+ *
8
+ * @param logger - the underlying logger to delegate to
9
+ * @param level - for FastifyBaseLogger interface compliance
10
+ */
11
+ constructor(logger, level = 'info') {
12
+ this.logger = logger;
13
+ this.level = level;
14
+ }
15
+ /**
16
+ * no-op silent logger method (for Pino interface compliance)
17
+ * logs nothing regardless of input
18
+ */
19
+ silent = () => {
20
+ // No-op
21
+ };
22
+ /**
23
+ * logs a trace-level message
24
+ *
25
+ * @param obj: object to be serialized
26
+ * @param msg: the log message to write
27
+ */
28
+ trace = (...args) => {
29
+ const { message, ...context } = this.parseArgs(...args);
30
+ this.logger.trace(message, context);
31
+ };
32
+ /**
33
+ * logs a debug-level message
34
+ *
35
+ * @param obj: object to be serialized
36
+ * @param msg: the log message to write
37
+ */
38
+ debug = (...args) => {
39
+ const { message, ...context } = this.parseArgs(...args);
40
+ this.logger.debug(message, context);
41
+ };
42
+ /**
43
+ * logs an info-level message
44
+ *
45
+ * @param obj: object to be serialized
46
+ * @param msg: the log message to write
47
+ */
48
+ info = (...args) => {
49
+ const { message, ...context } = this.parseArgs(...args);
50
+ this.logger.info(message, context);
51
+ };
52
+ /**
53
+ * logs a warning-level message
54
+ *
55
+ * @param obj: object to be serialized
56
+ * @param msg: the log message to write
57
+ */
58
+ warn = (...args) => {
59
+ const { message, ...context } = this.parseArgs(...args);
60
+ this.logger.warn(message, context);
61
+ };
62
+ /**
63
+ * logs an error-level message
64
+ *
65
+ * @param obj: object to be serialized
66
+ * @param msg: the log message to write
67
+ */
68
+ error = (...args) => {
69
+ const { message, ...context } = this.parseArgs(...args);
70
+ this.logger.error(message, context);
71
+ };
72
+ /**
73
+ * logs a critical/fatal-level message
74
+ *
75
+ * @param obj: object to be serialized
76
+ * @param msg: the log message to write
77
+ */
78
+ fatal = (...args) => {
79
+ const { message, ...context } = this.parseArgs(...args);
80
+ this.logger.critical(message, context);
81
+ };
82
+ /**
83
+ * creates a child logger with bindings and optional configuration
84
+ * conforms to the Pino/Fastify logger interface
85
+ *
86
+ * @param bindings - Key-value pairs to attach to all logs from the child logger
87
+ * @returns A new FastifyBaseLogger instance (child logger)
88
+ */
89
+ child = (bindings) => {
90
+ if (Object.keys(bindings).length === 0)
91
+ return this;
92
+ const childLogger = this.logger.child(JSON.stringify(bindings));
93
+ return new FastifyLogger(childLogger, this.level);
94
+ };
95
+ /**
96
+ * utility function to map and serialize the arguments of fastify logger functions
97
+ */
98
+ parseArgs = (...args) => {
99
+ const [arg0, arg1] = args;
100
+ let info = {};
101
+ if (typeof arg0 === 'string') {
102
+ // format: message [...splat]
103
+ info.message = arg0;
104
+ }
105
+ else {
106
+ // format: meta [message] [...splat]
107
+ info = (arg0 ?? {});
108
+ if (arg0 instanceof Error)
109
+ info = { err: arg0, message: arg0.message };
110
+ // serialize fastify req, res, err
111
+ for (const key in info) {
112
+ if (serializers[key])
113
+ info[key] = serializers[key](info[key]);
114
+ }
115
+ if (arg1)
116
+ info.message = arg1;
117
+ }
118
+ return info;
119
+ };
120
+ }
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJekQsTUFBTSxPQUFPLGFBQWE7SUFRWjtJQUNIO0lBUlQ7Ozs7O09BS0c7SUFDSCxZQUNZLE1BQXNCLEVBQ3pCLFFBQWtCLE1BQU07UUFEckIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDekIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7SUFDOUIsQ0FBQztJQUVKOzs7T0FHRztJQUNILE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDWixRQUFRO0lBQ1YsQ0FBQyxDQUFDO0lBRUY7Ozs7O09BS0c7SUFDSCxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQWUsRUFBRSxFQUFFO1FBQzdCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDLENBQUM7SUFFRjs7Ozs7T0FLRztJQUNILEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBZSxFQUFFLEVBQUU7UUFDN0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQztJQUVGOzs7OztPQUtHO0lBQ0gsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFlLEVBQUUsRUFBRTtRQUM1QixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMs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Z0xldmVsIH0gZnJvbSAnZmFzdGlmeSc7XG5pbXBvcnQgeyBzZXJpYWxpemVycyB9IGZyb20gJ2Zhc3RpZnkvbGliL2xvZ2dlci1waW5vLmpzJztcblxuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5cbmV4cG9ydCBjbGFzcyBGYXN0aWZ5TG9nZ2VyIGltcGxlbWVudHMgRmFzdGlmeUJhc2VMb2dnZXIge1xuICAvKipcbiAgICogY3JlYXRlcyBhIG5ldyBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0gbG9nZ2VyIC0gdGhlIHVuZGVybHlpbmcgbG9nZ2VyIHRvIGRlbGVnYXRlIHRvXG4gICAqIEBwYXJhbSBsZXZlbCAtIGZvciBGYXN0aWZ5QmFzZUxvZ2dlciBpbnRlcmZhY2UgY29tcGxpYW5jZVxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGxvZ2dlcjogQWJzdHJhY3RMb2dnZXIsXG4gICAgcHVibGljIGxldmVsOiBMb2dMZXZlbCA9ICdpbmZvJyxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBuby1vcCBzaWxlbnQgbG9nZ2VyIG1ldGhvZCAoZm9yIFBpbm8gaW50ZXJmYWNlIGNvbXBsaWFuY2UpXG4gICAqIGxvZ3Mgbm90aGluZyByZWdhcmRsZXNzIG9mIGlucHV0XG4gICAqL1xuICBzaWxlbnQgPSAoKSA9PiB7XG4gICAgLy8gTm8tb3BcbiAgfTtcblxuICAvKipcbiAgICogbG9ncyBhIHRyYWNlLWxldmVsIG1lc3NhZ2VcbiAgICpcbiAgICogQHBhcmFtIG9iajogb2JqZWN0IHRvIGJlIHNlcmlhbGl6ZWRcbiAgICogQHBhcmFtIG1zZzogdGhlIGxvZyBtZXNzYWdlIHRvIHdyaXRlXG4gICAqL1xuICB0cmFjZSA9ICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmNvbnRleHQgfSA9IHRoaXMucGFyc2VBcmdzKC4uLmFyZ3MpO1xuICAgIHRoaXMubG9nZ2VyLnRyYWNlKG1lc3NhZ2UgYXMgc3RyaW5nLCBjb250ZXh0KTtcbiAgfTtcblxuICAvKipcbiAgICogbG9ncyBhIGRlYnVnLWxldmVsIG1lc3NhZ2VcbiAgICpcbiAgICogQHBhcmFtIG9iajogb2JqZWN0IHRvIGJlIHNlcmlhbGl6ZWRcbiAgICogQHBhcmFtIG1zZzogdGhlIGxvZyBtZXNzYWdlIHRvIHdyaXRlXG4gICAqL1xuICBkZWJ1ZyA9ICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIC4uLmNvbnRleHQgfSA9IHRoaXMucGFyc2VBcmdzKC4uLmFyZ3MpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKG1lc3NhZ2UgYXMgc3RyaW5nLCBjb250ZXh0KTtcbiAgfTtcblxuICAvKipcbiAgICogbG9ncyBhbiBpbmZvLWxldmVsIG1lc3NhZ2VcbiAgICpcbiAgICogQHBhcmFtIG9iajogb2JqZWN0IHRvIGJlIHNlcmlhbGl6ZWRcbiAgICogQHBhcmFtIG1zZzogdGhlIGxvZyBtZXNzYWdlIHRvIHdyaXRlXG4gICAqL1xuICBpbmZvID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uY29udGV4dCB9ID0gdGhpcy5wYXJzZUFyZ3MoLi4uYXJncyk7XG4gICAgdGhpcy5sb2dnZXIuaW5mbyhtZXNzYWdlIGFzIHN0cmluZywgY29udGV4dCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGxvZ3MgYSB3YXJuaW5nLWxldmVsIG1lc3NhZ2VcbiAgICpcbiAgICogQHBhcmFtIG9iajogb2JqZWN0IHRvIGJlIHNlcmlhbGl6ZWRcbiAgICogQHBhcmFtIG1zZzogdGhlIGxvZyBtZXNzYWdlIHRvIHdyaXRlXG4gICAqL1xuICB3YXJuID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uY29udGV4dCB9ID0gdGhpcy5wYXJzZUFyZ3MoLi4uYXJncyk7XG4gICAgdGhpcy5sb2dnZXIud2FybihtZXNzYWdlIGFzIHN0cmluZywgY29udGV4dCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGxvZ3MgYW4gZXJyb3ItbGV2ZWwgbWVzc2FnZVxuICAgKlxuICAgKiBAcGFyYW0gb2JqOiBvYmplY3QgdG8gYmUgc2VyaWFsaXplZFxuICAgKiBAcGFyYW0gbXNnOiB0aGUgbG9nIG1lc3NhZ2UgdG8gd3JpdGVcbiAgICovXG4gIGVycm9yID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uY29udGV4dCB9ID0gdGhpcy5wYXJzZUFyZ3MoLi4uYXJncyk7XG4gICAgdGhpcy5sb2dnZXIuZXJyb3IobWVzc2FnZSBhcyBzdHJpbmcsIGNvbnRleHQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBsb2dzIGEgY3JpdGljYWwvZmF0YWwtbGV2ZWwgbWVzc2FnZVxuICAgKlxuICAgKiBAcGFyYW0gb2JqOiBvYmplY3QgdG8gYmUgc2VyaWFsaXplZFxuICAgKiBAcGFyYW0gbXNnOiB0aGUgbG9nIG1lc3NhZ2UgdG8gd3JpdGVcbiAgICovXG4gIGZhdGFsID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uY29udGV4dCB9ID0gdGhpcy5wYXJzZUFyZ3MoLi4uYXJncyk7XG4gICAgdGhpcy5sb2dnZXIuY3JpdGljYWwobWVzc2FnZSBhcyBzdHJpbmcsIGNvbnRleHQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjcmVhdGVzIGEgY2hpbGQgbG9nZ2VyIHdpdGggYmluZGluZ3MgYW5kIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb25cbiAgICogY29uZm9ybXMgdG8gdGhlIFBpbm8vRmFzdGlmeSBsb2dnZXIgaW50ZXJmYWNlXG4gICAqXG4gICAqIEBwYXJhbSBiaW5kaW5ncyAtIEtleS12YWx1ZSBwYWlycyB0byBhdHRhY2ggdG8gYWxsIGxvZ3MgZnJvbSB0aGUgY2hpbGQgbG9nZ2VyXG4gICAqIEByZXR1cm5zIEEgbmV3IEZhc3RpZnlCYXNlTG9nZ2VyIGluc3RhbmNlIChjaGlsZCBsb2dnZXIpXG4gICAqL1xuICBjaGlsZCA9IChiaW5kaW5nczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBGYXN0aWZ5QmFzZUxvZ2dlciA9PiB7XG4gICAgaWYgKE9iamVjdC5rZXlzKGJpbmRpbmdzKS5sZW5ndGggPT09IDApIHJldHVybiB0aGlzO1xuXG4gICAgY29uc3QgY2hpbGRMb2dnZXIgPSB0aGlzLmxvZ2dlci5jaGlsZChKU09OLnN0cmluZ2lmeShiaW5kaW5ncykpO1xuICAgIHJldHVybiBuZXcgRmFzdGlmeUxvZ2dlcihjaGlsZExvZ2dlciwgdGhpcy5sZXZlbCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHV0aWxpdHkgZnVuY3Rpb24gdG8gbWFwIGFuZCBzZXJpYWxpemUgdGhlIGFyZ3VtZW50cyBvZiBmYXN0aWZ5IGxvZ2dlciBmdW5jdGlvbnNcbiAgICovXG4gIHByaXZhdGUgcGFyc2VBcmdzID0gKC4uLmFyZ3M6IHVua25vd25bXSk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgICBjb25zdCBbYXJnMCwgYXJnMV0gPSBhcmdzO1xuXG4gICAgbGV0IGluZm86IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgICBpZiAodHlwZW9mIGFyZzAgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBmb3JtYXQ6IG1lc3NhZ2UgWy4uLnNwbGF0XVxuICAgICAgaW5mby5tZXNzYWdlID0gYXJnMDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZm9ybWF0OiBtZXRhIFttZXNzYWdlXSBbLi4uc3BsYXRdXG4gICAgICBpbmZvID0gKGFyZzAgPz8ge30pIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gICAgICBpZiAoYXJnMCBpbnN0YW5jZW9mIEVycm9yKSBpbmZvID0geyBlcnI6IGFyZzAsIG1lc3NhZ2U6IGFyZzAubWVzc2FnZSB9O1xuXG4gICAgICAvLyBzZXJpYWxpemUgZmFzdGlmeSByZXEsIHJlcywgZXJyXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbmZvKSB7XG4gICAgICAgIGlmIChzZXJpYWxpemVyc1trZXldKSBpbmZvW2tleV0gPSBzZXJpYWxpemVyc1trZXldKGluZm9ba2V5XSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhcmcxKSBpbmZvLm1lc3NhZ2UgPSBhcmcxO1xuICAgIH1cblxuICAgIHJldHVybiBpbmZvO1xuICB9O1xufVxuIl19
package/dist/swagger.d.ts CHANGED
@@ -1,7 +1,6 @@
1
- import { FastifyPluginAsyncZodOpenApi } from 'fastify-zod-openapi';
2
- import { SwaggerOpts } from './types';
1
+ import { FastifyWithZod, SwaggerOpts } from './types';
3
2
  /**
4
3
  * adds swagger to the fastify instance
5
4
  */
6
- export declare const registerSwagger: FastifyPluginAsyncZodOpenApi<SwaggerOpts>;
5
+ export declare const registerSwagger: (fastify: FastifyWithZod, opts: SwaggerOpts) => Promise<void>;
7
6
  //# sourceMappingURL=swagger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"swagger.d.ts","sourceRoot":"","sources":["../lib/swagger.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,4BAA4B,EAG7B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,4BAA4B,CACxD,WAAW,CAqCZ,CAAC"}
1
+ {"version":3,"file":"swagger.d.ts","sourceRoot":"","sources":["../lib/swagger.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,cAAc,EACvB,MAAM,WAAW,kBA2ClB,CAAC"}
package/dist/swagger.js CHANGED
@@ -13,6 +13,15 @@ export const registerSwagger = async (fastify, opts) => {
13
13
  description: opts.description,
14
14
  version: opts.version,
15
15
  },
16
+ components: {
17
+ securitySchemes: {
18
+ apiKey: {
19
+ type: 'apiKey',
20
+ name: 'Api-Key',
21
+ in: 'header',
22
+ },
23
+ },
24
+ },
16
25
  },
17
26
  transform: fastifyZodOpenApiTransform,
18
27
  transformObject: fastifyZodOpenApiTransformObject,
@@ -33,11 +42,8 @@ export const registerSwagger = async (fastify, opts) => {
33
42
  },
34
43
  staticCSP: true,
35
44
  transformStaticCSP: (header) => header,
36
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
37
- transformSpecification: (swaggerObject, request, reply) => {
38
- return swaggerObject;
39
- },
45
+ transformSpecification: (swaggerObject) => swaggerObject,
40
46
  transformSpecificationClone: true,
41
47
  });
42
48
  };
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dhZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9zd2FnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sU0FBUyxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFFTCwwQkFBMEIsRUFDMUIsZ0NBQWdDLEdBQ2pDLE1BQU0scUJBQXFCLENBQUM7QUFLN0I7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBRXhCLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDMUIsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRTtRQUM5QixPQUFPLEVBQUU7WUFDUCxPQUFPLEVBQUUsT0FBNEI7WUFDckMsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUM3QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDdEI7U0FDRjtRQUNELFNBQVMsRUFBRSwwQkFBMEI7UUFDckMsZUFBZSxFQUFFLGdDQUFnQztLQUNsRCxDQUFDLENBQUM7SUFFSCxNQUFNLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO1FBQ2hDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSTtRQUN0QixRQUFRLEVBQUU7WUFDUixZQUFZLEVBQUUsTUFBTTtZQUNwQixXQUFXLEVBQUUsS0FBSztTQUNuQjtRQUNELE9BQU8sRUFBRTtZQUNQLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBZ0IsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLEVBQUUsQ0FBQztZQUNULENBQUM7WUFDRCxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQWdCLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxFQUFFLENBQUM7WUFDVCxDQUFDO1NBQ0Y7UUFDRCxTQUFTLEVBQUUsSUFBSTtRQUNmLGtCQUFrQixFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNO1FBQ3RDLDZEQUE2RDtRQUM3RCxzQkFBc0IsRUFBRSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDeEQsT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQztRQUNELDJCQUEyQixFQUFFLElBQUk7S0FDbEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN3YWdnZXIgZnJvbSAnQGZhc3RpZnkvc3dhZ2dlcic7XG5pbXBvcnQgc3dhZ2dlclVpIGZyb20gJ0BmYXN0aWZ5L3N3YWdnZXItdWknO1xuaW1wb3J0IHtcbiAgRmFzdGlmeVBsdWdpbkFzeW5jWm9kT3BlbkFwaSxcbiAgZmFzdGlmeVpvZE9wZW5BcGlUcmFuc2Zvcm0sXG4gIGZhc3RpZnlab2RPcGVuQXBpVHJhbnNmb3JtT2JqZWN0LFxufSBmcm9tICdmYXN0aWZ5LXpvZC1vcGVuYXBpJztcbmltcG9ydCB7IFpvZE9wZW5BcGlWZXJzaW9uIH0gZnJvbSAnem9kLW9wZW5hcGknO1xuXG5pbXBvcnQgeyBTd2FnZ2VyT3B0cyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIGFkZHMgc3dhZ2dlciB0byB0aGUgZmFzdGlmeSBpbnN0YW5jZVxuICovXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJTd2FnZ2VyOiBGYXN0aWZ5UGx1Z2luQXN5bmNab2RPcGVuQXBpPFxuICBTd2FnZ2VyT3B0c1xuPiA9IGFzeW5jIChmYXN0aWZ5LCBvcHRzKSA9PiB7XG4gIGF3YWl0IGZhc3RpZnkucmVnaXN0ZXIoc3dhZ2dlciwge1xuICAgIG9wZW5hcGk6IHtcbiAgICAgIG9wZW5hcGk6ICczLjEuMCcgYXMgWm9kT3BlbkFwaVZlcnNpb24sXG4gICAgICBpbmZvOiB7XG4gICAgICAgIHRpdGxlOiBvcHRzLnRpdGxlLFxuICAgICAgICBkZXNjcmlwdGlvbjogb3B0cy5kZXNjcmlwdGlvbixcbiAgICAgICAgdmVyc2lvbjogb3B0cy52ZXJzaW9uLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHRyYW5zZm9ybTogZmFzdGlmeVpvZE9wZW5BcGlUcmFuc2Zvcm0sXG4gICAgdHJhbnNmb3JtT2JqZWN0OiBmYXN0aWZ5Wm9kT3BlbkFwaVRyYW5zZm9ybU9iamVjdCxcbiAgfSk7XG5cbiAgYXdhaXQgZmFzdGlmeS5yZWdpc3Rlcihzd2FnZ2VyVWksIHtcbiAgICByb3V0ZVByZWZpeDogb3B0cy5wYXRoLFxuICAgIHVpQ29uZmlnOiB7XG4gICAgICBkb2NFeHBhbnNpb246ICdmdWxsJyxcbiAgICAgIGRlZXBMaW5raW5nOiBmYWxzZSxcbiAgICB9LFxuICAgIHVpSG9va3M6IHtcbiAgICAgIG9uUmVxdWVzdDogKHJlcXVlc3QsIHJlcGx5LCBuZXh0OiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIG5leHQoKTtcbiAgICAgIH0sXG4gICAgICBwcmVIYW5kbGVyOiAocmVxdWVzdCwgcmVwbHksIG5leHQ6ICgpID0+IHZvaWQpID0+IHtcbiAgICAgICAgbmV4dCgpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHN0YXRpY0NTUDogdHJ1ZSxcbiAgICB0cmFuc2Zvcm1TdGF0aWNDU1A6IChoZWFkZXIpID0+IGhlYWRlcixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgdHJhbnNmb3JtU3BlY2lmaWNhdGlvbjogKHN3YWdnZXJPYmplY3QsIHJlcXVlc3QsIHJlcGx5KSA9PiB7XG4gICAgICByZXR1cm4gc3dhZ2dlck9iamVjdDtcbiAgICB9LFxuICAgIHRyYW5zZm9ybVNwZWNpZmljYXRpb25DbG9uZTogdHJ1ZSxcbiAgfSk7XG59O1xuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dhZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9zd2FnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sU0FBUyxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsZ0NBQWdDLEdBQ2pDLE1BQU0scUJBQXFCLENBQUM7QUFLN0I7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUNsQyxPQUF1QixFQUN2QixJQUFpQixFQUNqQixFQUFFO0lBQ0YsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRTtRQUM5QixPQUFPLEVBQUU7WUFDUCxPQUFPLEVBQUUsT0FBNEI7WUFDckMsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUM3QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDdEI7WUFDRCxVQUFVLEVBQUU7Z0JBQ1YsZUFBZSxFQUFFO29CQUNmLE1BQU0sRUFBRTt3QkFDTixJQUFJLEVBQUUsUUFBUTt3QkFDZCxJQUFJLEVBQUUsU0FBUzt3QkFDZixFQUFFLEVBQUUsUUFBUTtxQkFDYjtpQkFDRjthQUNGO1NBQ0Y7UUFDRCxTQUFTLEVBQUUsMEJBQTBCO1FBQ3JDLGVBQWUsRUFBRSxnQ0FBZ0M7S0FDbEQsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtRQUNoQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDdEIsUUFBUSxFQUFFO1lBQ1IsWUFBWSxFQUFFLE1BQU07WUFDcEIsV0FBVyxFQUFFLEtBQUs7U0FDbkI7UUFDRCxPQUFPLEVBQUU7WUFDUCxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQWdCLEVBQUUsRUFBRTtnQkFDOUMsSUFBSSxFQUFFLENBQUM7WUFDVCxDQUFDO1lBQ0QsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFnQixFQUFFLEVBQUU7Z0JBQy9DLElBQUksRUFBRSxDQUFDO1lBQ1QsQ0FBQztTQUNGO1FBQ0QsU0FBUyxFQUFFLElBQUk7UUFDZixrQkFBa0IsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTTtRQUN0QyxzQkFBc0IsRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsYUFBYTtRQUN4RCwyQkFBMkIsRUFBRSxJQUFJO0tBQ2xDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzd2FnZ2VyIGZyb20gJ0BmYXN0aWZ5L3N3YWdnZXInO1xuaW1wb3J0IHN3YWdnZXJVaSBmcm9tICdAZmFzdGlmeS9zd2FnZ2VyLXVpJztcbmltcG9ydCB7XG4gIGZhc3RpZnlab2RPcGVuQXBpVHJhbnNmb3JtLFxuICBmYXN0aWZ5Wm9kT3BlbkFwaVRyYW5zZm9ybU9iamVjdCxcbn0gZnJvbSAnZmFzdGlmeS16b2Qtb3BlbmFwaSc7XG5pbXBvcnQgeyBab2RPcGVuQXBpVmVyc2lvbiB9IGZyb20gJ3pvZC1vcGVuYXBpJztcblxuaW1wb3J0IHsgRmFzdGlmeVdpdGhab2QsIFN3YWdnZXJPcHRzIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogYWRkcyBzd2FnZ2VyIHRvIHRoZSBmYXN0aWZ5IGluc3RhbmNlXG4gKi9cbmV4cG9ydCBjb25zdCByZWdpc3RlclN3YWdnZXIgPSBhc3luYyAoXG4gIGZhc3RpZnk6IEZhc3RpZnlXaXRoWm9kLFxuICBvcHRzOiBTd2FnZ2VyT3B0cyxcbikgPT4ge1xuICBhd2FpdCBmYXN0aWZ5LnJlZ2lzdGVyKHN3YWdnZXIsIHtcbiAgICBvcGVuYXBpOiB7XG4gICAgICBvcGVuYXBpOiAnMy4xLjAnIGFzIFpvZE9wZW5BcGlWZXJzaW9uLFxuICAgICAgaW5mbzoge1xuICAgICAgICB0aXRsZTogb3B0cy50aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IG9wdHMuZGVzY3JpcHRpb24sXG4gICAgICAgIHZlcnNpb246IG9wdHMudmVyc2lvbixcbiAgICAgIH0sXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIHNlY3VyaXR5U2NoZW1lczoge1xuICAgICAgICAgIGFwaUtleToge1xuICAgICAgICAgICAgdHlwZTogJ2FwaUtleScsXG4gICAgICAgICAgICBuYW1lOiAnQXBpLUtleScsXG4gICAgICAgICAgICBpbjogJ2hlYWRlcicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB0cmFuc2Zvcm06IGZhc3RpZnlab2RPcGVuQXBpVHJhbnNmb3JtLFxuICAgIHRyYW5zZm9ybU9iamVjdDogZmFzdGlmeVpvZE9wZW5BcGlUcmFuc2Zvcm1PYmplY3QsXG4gIH0pO1xuXG4gIGF3YWl0IGZhc3RpZnkucmVnaXN0ZXIoc3dhZ2dlclVpLCB7XG4gICAgcm91dGVQcmVmaXg6IG9wdHMucGF0aCxcbiAgICB1aUNvbmZpZzoge1xuICAgICAgZG9jRXhwYW5zaW9uOiAnZnVsbCcsXG4gICAgICBkZWVwTGlua2luZzogZmFsc2UsXG4gICAgfSxcbiAgICB1aUhvb2tzOiB7XG4gICAgICBvblJlcXVlc3Q6IChyZXF1ZXN0LCByZXBseSwgbmV4dDogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgICBuZXh0KCk7XG4gICAgICB9LFxuICAgICAgcHJlSGFuZGxlcjogKHJlcXVlc3QsIHJlcGx5LCBuZXh0OiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIG5leHQoKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzdGF0aWNDU1A6IHRydWUsXG4gICAgdHJhbnNmb3JtU3RhdGljQ1NQOiAoaGVhZGVyKSA9PiBoZWFkZXIsXG4gICAgdHJhbnNmb3JtU3BlY2lmaWNhdGlvbjogKHN3YWdnZXJPYmplY3QpID0+IHN3YWdnZXJPYmplY3QsXG4gICAgdHJhbnNmb3JtU3BlY2lmaWNhdGlvbkNsb25lOiB0cnVlLFxuICB9KTtcbn07XG4iXX0=
package/dist/types.d.ts CHANGED
@@ -1,11 +1,17 @@
1
- import { FastifyBaseLogger, FastifyInstance } from 'fastify';
1
+ import { FastifyInstance, FastifyHttpOptions } from 'fastify';
2
2
  import type { FastifyZodOpenApiTypeProvider } from 'fastify-zod-openapi';
3
3
  import * as http from 'http';
4
- export type FastifyWithZod = FastifyInstance<http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>, http.IncomingMessage, http.ServerResponse<http.IncomingMessage>, FastifyBaseLogger, FastifyZodOpenApiTypeProvider>;
5
- export interface SwaggerOpts {
4
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
5
+ import { FastifyLogger } from './logger';
6
+ export type FastifyWithZodServer = http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
7
+ export type FastifyWithZod = FastifyInstance<FastifyWithZodServer, http.IncomingMessage, http.ServerResponse<http.IncomingMessage>, FastifyLogger, FastifyZodOpenApiTypeProvider>;
8
+ export type FastifyOpts = Omit<FastifyHttpOptions<FastifyWithZodServer, FastifyLogger>, 'loggerInstance' | 'logger'> & {
9
+ logger?: AbstractLogger;
10
+ };
11
+ export type SwaggerOpts = {
6
12
  path: string;
7
13
  title: string;
8
14
  description: string;
9
15
  version: string;
10
- }
16
+ };
11
17
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,MAAM,cAAc,GAAG,eAAe,CAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,eAAe,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,EACpE,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,EACzC,iBAAiB,EACjB,6BAA6B,CAC9B,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAC5C,OAAO,IAAI,CAAC,eAAe,EAC3B,OAAO,IAAI,CAAC,cAAc,CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,eAAe,CAC1C,oBAAoB,EACpB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,EACzC,aAAa,EACb,6BAA6B,CAC9B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,kBAAkB,CAAC,oBAAoB,EAAE,aAAa,CAAC,EACvD,gBAAgB,GAAG,QAAQ,CAC5B,GAAG;IACF,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
package/dist/types.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhc3RpZnlCYXNlTG9nZ2VyLCBGYXN0aWZ5SW5zdGFuY2UgfSBmcm9tICdmYXN0aWZ5JztcbmltcG9ydCB0eXBlIHsgRmFzdGlmeVpvZE9wZW5BcGlUeXBlUHJvdmlkZXIgfSBmcm9tICdmYXN0aWZ5LXpvZC1vcGVuYXBpJztcbmltcG9ydCAqIGFzIGh0dHAgZnJvbSAnaHR0cCc7XG5cbmV4cG9ydCB0eXBlIEZhc3RpZnlXaXRoWm9kID0gRmFzdGlmeUluc3RhbmNlPFxuICBodHRwLlNlcnZlcjx0eXBlb2YgaHR0cC5JbmNvbWluZ01lc3NhZ2UsIHR5cGVvZiBodHRwLlNlcnZlclJlc3BvbnNlPixcbiAgaHR0cC5JbmNvbWluZ01lc3NhZ2UsXG4gIGh0dHAuU2VydmVyUmVzcG9uc2U8aHR0cC5JbmNvbWluZ01lc3NhZ2U+LFxuICBGYXN0aWZ5QmFzZUxvZ2dlcixcbiAgRmFzdGlmeVpvZE9wZW5BcGlUeXBlUHJvdmlkZXJcbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3dhZ2dlck9wdHMge1xuICBwYXRoOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhc3RpZnlJbnN0YW5jZSwgRmFzdGlmeUh0dHBPcHRpb25zIH0gZnJvbSAnZmFzdGlmeSc7XG5pbXBvcnQgdHlwZSB7IEZhc3RpZnlab2RPcGVuQXBpVHlwZVByb3ZpZGVyIH0gZnJvbSAnZmFzdGlmeS16b2Qtb3BlbmFwaSc7XG5pbXBvcnQgKiBhcyBodHRwIGZyb20gJ2h0dHAnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcblxuaW1wb3J0IHsgRmFzdGlmeUxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcblxuZXhwb3J0IHR5cGUgRmFzdGlmeVdpdGhab2RTZXJ2ZXIgPSBodHRwLlNlcnZlcjxcbiAgdHlwZW9mIGh0dHAuSW5jb21pbmdNZXNzYWdlLFxuICB0eXBlb2YgaHR0cC5TZXJ2ZXJSZXNwb25zZVxuPjtcblxuZXhwb3J0IHR5cGUgRmFzdGlmeVdpdGhab2QgPSBGYXN0aWZ5SW5zdGFuY2U8XG4gIEZhc3RpZnlXaXRoWm9kU2VydmVyLFxuICBodHRwLkluY29taW5nTWVzc2FnZSxcbiAgaHR0cC5TZXJ2ZXJSZXNwb25zZTxodHRwLkluY29taW5nTWVzc2FnZT4sXG4gIEZhc3RpZnlMb2dnZXIsXG4gIEZhc3RpZnlab2RPcGVuQXBpVHlwZVByb3ZpZGVyXG4+O1xuXG5leHBvcnQgdHlwZSBGYXN0aWZ5T3B0cyA9IE9taXQ8XG4gIEZhc3RpZnlIdHRwT3B0aW9uczxGYXN0aWZ5V2l0aFpvZFNlcnZlciwgRmFzdGlmeUxvZ2dlcj4sXG4gICdsb2dnZXJJbnN0YW5jZScgfCAnbG9nZ2VyJ1xuPiAmIHtcbiAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXI7XG59O1xuXG5leHBvcnQgdHlwZSBTd2FnZ2VyT3B0cyA9IHtcbiAgcGF0aDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG59O1xuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rosen-bridge/fastify-enhanced",
3
- "version": "2.0.2",
3
+ "version": "3.1.0-771abce9",
4
4
  "description": "a wrapper around fastify web framework to make it even better",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,12 +30,17 @@
30
30
  "dependencies": {
31
31
  "@fastify/swagger": "^9.5.1",
32
32
  "@fastify/swagger-ui": "^5.2.3",
33
- "@rosen-bridge/json-bigint": "^1.1.0",
33
+ "@rosen-bridge/abstract-logger": "^4.0.0",
34
34
  "fastify": "^5.3.3",
35
35
  "fastify-zod-openapi": "^4.1.2",
36
- "zod": "^3.25.56",
37
36
  "zod-openapi": "^4.2.4"
38
37
  },
38
+ "devDependencies": {
39
+ "zod": "^3.21.4"
40
+ },
41
+ "peerDependencies": {
42
+ "zod": "^3.21.4"
43
+ },
39
44
  "engines": {
40
45
  "node": ">=22.18.0",
41
46
  "npm": "11.6.2"
@@ -1,4 +0,0 @@
1
- import { ContentTypeParserDoneFunction } from 'fastify/types/content-type-parser';
2
- import { JsonBigIntFactory } from '@rosen-bridge/json-bigint';
3
- export declare const makeJsonParser: (jsonHandler: ReturnType<typeof JsonBigIntFactory>) => (req: unknown, body: string, done: ContentTypeParserDoneFunction) => void;
4
- //# sourceMappingURL=jsonParser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsonParser.d.ts","sourceRoot":"","sources":["../lib/jsonParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,eAAO,MAAM,cAAc,GACzB,aAAa,UAAU,CAAC,OAAO,iBAAiB,CAAC,MAEzC,KAAK,OAAO,EAAE,MAAM,MAAM,EAAE,MAAM,6BAA6B,SAgBxE,CAAC"}
@@ -1,18 +0,0 @@
1
- export const makeJsonParser = (jsonHandler) => {
2
- return (req, body, done) => {
3
- try {
4
- const json = jsonHandler.parse(body);
5
- done(null, json);
6
- }
7
- catch (err) {
8
- if (err instanceof Error || err === null) {
9
- done(err, undefined);
10
- }
11
- else {
12
- const wrappedErr = new Error(`An unexpected error occurred while trying to parse request body`, { cause: err });
13
- done(wrappedErr, undefined);
14
- }
15
- }
16
- };
17
- };
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvblBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9qc29uUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUM1QixXQUFpRCxFQUNqRCxFQUFFO0lBQ0YsT0FBTyxDQUFDLEdBQVksRUFBRSxJQUFZLEVBQUUsSUFBbUMsRUFBRSxFQUFFO1FBQ3pFLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksR0FBRyxZQUFZLEtBQUssSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sVUFBVSxHQUFHLElBQUksS0FBSyxDQUMxQixpRUFBaUUsRUFDakUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQ2YsQ0FBQztnQkFDRixJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGVudFR5cGVQYXJzZXJEb25lRnVuY3Rpb24gfSBmcm9tICdmYXN0aWZ5L3R5cGVzL2NvbnRlbnQtdHlwZS1wYXJzZXInO1xuXG5pbXBvcnQgeyBKc29uQmlnSW50RmFjdG9yeSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuXG5leHBvcnQgY29uc3QgbWFrZUpzb25QYXJzZXIgPSAoXG4gIGpzb25IYW5kbGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBKc29uQmlnSW50RmFjdG9yeT4sXG4pID0+IHtcbiAgcmV0dXJuIChyZXE6IHVua25vd24sIGJvZHk6IHN0cmluZywgZG9uZTogQ29udGVudFR5cGVQYXJzZXJEb25lRnVuY3Rpb24pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QganNvbiA9IGpzb25IYW5kbGVyLnBhcnNlKGJvZHkpO1xuICAgICAgZG9uZShudWxsLCBqc29uKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciB8fCBlcnIgPT09IG51bGwpIHtcbiAgICAgICAgZG9uZShlcnIsIHVuZGVmaW5lZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB3cmFwcGVkRXJyID0gbmV3IEVycm9yKFxuICAgICAgICAgIGBBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byBwYXJzZSByZXF1ZXN0IGJvZHlgLFxuICAgICAgICAgIHsgY2F1c2U6IGVyciB9LFxuICAgICAgICApO1xuICAgICAgICBkb25lKHdyYXBwZWRFcnIsIHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcbiJdfQ==