Skip to content

Commit

Permalink
nodenext compatibility (#247)
Browse files Browse the repository at this point in the history
* nodenext compatibility

* adapt
  • Loading branch information
Uzlopak authored Nov 24, 2022
1 parent 430b4f3 commit 8fb8611
Show file tree
Hide file tree
Showing 5 changed files with 106 additions and 85 deletions.
81 changes: 0 additions & 81 deletions index.d.ts

This file was deleted.

6 changes: 4 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const { isStream, isGzip, isDeflate } = require('./lib/utils')
const InvalidRequestEncodingError = createError('FST_CP_ERR_INVALID_CONTENT_ENCODING', 'Unsupported Content-Encoding: %s', 415)
const InvalidRequestCompressedPayloadError = createError('FST_CP_ERR_INVALID_CONTENT', 'Could not decompress the request payload using the provided encoding', 400)

function compressPlugin (fastify, opts, next) {
function fastifyCompress (fastify, opts, next) {
const globalCompressParams = processCompressParams(opts)
const globalDecompressParams = processDecompressParams(opts)

Expand Down Expand Up @@ -548,7 +548,9 @@ function createError (code, message, statusCode) {
return FastifyCompressError
}

module.exports = fp(compressPlugin, {
module.exports = fp(fastifyCompress, {
fastify: '4.x',
name: '@fastify/compress'
})
module.exports.default = fastifyCompress
module.exports.fastifyCompress = fastifyCompress
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "6.1.0",
"description": "Fastify compression utils",
"main": "index.js",
"types": "index.d.ts",
"types": "types/index.d.ts",
"dependencies": {
"@fastify/accept-negotiator": "^1.0.0",
"fastify-plugin": "^4.0.0",
Expand Down
100 changes: 100 additions & 0 deletions types/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
import {
FastifyPluginCallback,
FastifyReply,
FastifyRequest,
RawServerBase,
RawServerDefault,
RouteOptions as FastifyRouteOptions
} from 'fastify'
import { Input, InputObject } from 'into-stream'
import { Stream } from 'stream'
import { BrotliOptions, ZlibOptions } from 'zlib'

declare module 'fastify' {
export interface FastifyContextConfig {
/** @deprecated `config.compress` is deprecated, use `compress` shorthand option instead */
compress?: RouteCompressOptions | false;
/** @deprecated `config.decompress` is deprecated, use `decompress` shorthand option instead */
decompress?: RouteDecompressOptions | false;
}

export interface RouteShorthandOptions<
RawServer extends RawServerBase = RawServerDefault
> {
compress?: RouteCompressOptions | false;
decompress?: RouteDecompressOptions | false;
}

interface FastifyReply {
compress(input: Stream | Input | InputObject): void;
}

export interface RouteOptions {
compress?: RouteCompressOptions | false;
decompress?: RouteDecompressOptions | false;
}
}

type FastifyCompress = FastifyPluginCallback<fastifyCompress.FastifyCompressOptions>

type RouteCompressOptions = Pick<fastifyCompress.FastifyCompressOptions,
| 'brotliOptions'
| 'customTypes'
| 'encodings'
| 'inflateIfDeflated'
| 'onUnsupportedEncoding'
| 'removeContentLengthHeader'
| 'threshold'
| 'zlib'
| 'zlibOptions'
>

type RouteDecompressOptions = Pick<fastifyCompress.FastifyCompressOptions,
| 'forceRequestEncoding'
| 'onInvalidRequestPayload'
| 'onUnsupportedRequestEncoding'
| 'requestEncodings'
| 'zlib'
>

type EncodingToken = 'br' | 'deflate' | 'gzip' | 'identity';

declare namespace fastifyCompress {

export interface FastifyCompressOptions {
brotliOptions?: BrotliOptions;
customTypes?: RegExp;
encodings?: EncodingToken[];
forceRequestEncoding?: EncodingToken;
global?: boolean;
inflateIfDeflated?: boolean;
onInvalidRequestPayload?: (encoding: string, request: FastifyRequest, error: Error) => Error | undefined | null;
onUnsupportedEncoding?: (encoding: string, request: FastifyRequest, reply: FastifyReply) => string | Buffer | Stream;
onUnsupportedRequestEncoding?: (encoding: string, request: FastifyRequest, reply: FastifyReply) => Error | undefined | null;
removeContentLengthHeader?: boolean;
requestEncodings?: EncodingToken[];
threshold?: number;
zlib?: unknown;
zlibOptions?: ZlibOptions;
}

export interface FastifyCompressRouteOptions {
compress?: RouteCompressOptions | false;
decompress?: RouteDecompressOptions | false;
}

export interface RouteOptions extends FastifyRouteOptions, FastifyCompressRouteOptions { }

export interface RoutesConfigCompressOptions {
/** @deprecated `config.compress` is deprecated, use `compress` shorthand option instead */
compress?: RouteCompressOptions | false;
/** @deprecated `config.decompress` is deprecated, use `decompress` shorthand option instead */
decompress?: RouteDecompressOptions | false;
}

export const fastifyCompress: FastifyCompress
export { fastifyCompress as default }
}

declare function fastifyCompress(...params: Parameters<FastifyCompress>): ReturnType<FastifyCompress>
export = fastifyCompress
2 changes: 1 addition & 1 deletion test/types/index.test-d.ts → types/index.test-d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import fastify, { FastifyInstance } from 'fastify'
import { createReadStream } from 'fs'
import { expectError, expectType } from 'tsd'
import * as zlib from 'zlib'
import fastifyCompress, { FastifyCompressOptions } from '../..'
import fastifyCompress, { FastifyCompressOptions } from '..'

const stream = createReadStream('./package.json')

Expand Down

0 comments on commit 8fb8611

Please sign in to comment.