diff --git a/packages/stream-transform/dist/cjs/sync.cjs b/packages/stream-transform/dist/cjs/sync.cjs index 360c0e9b6..a495fd454 100644 --- a/packages/stream-transform/dist/cjs/sync.cjs +++ b/packages/stream-transform/dist/cjs/sync.cjs @@ -145,7 +145,7 @@ const transform = function () { } // Validate arguments let expected_handler_length = 1; - if (options.params) { + if (options.params !== undefined && options.params !== null) { expected_handler_length++; } if (handler.length > expected_handler_length) { diff --git a/packages/stream-transform/dist/esm/sync.js b/packages/stream-transform/dist/esm/sync.js index aeb8d90ab..886c81724 100644 --- a/packages/stream-transform/dist/esm/sync.js +++ b/packages/stream-transform/dist/esm/sync.js @@ -5263,7 +5263,7 @@ const transform = function () { } // Validate arguments let expected_handler_length = 1; - if (options.params) { + if (options.params !== undefined && options.params !== null) { expected_handler_length++; } if (handler.length > expected_handler_length) { diff --git a/packages/stream-transform/dist/iife/sync.js b/packages/stream-transform/dist/iife/sync.js index 60b8c7d94..6113387d8 100644 --- a/packages/stream-transform/dist/iife/sync.js +++ b/packages/stream-transform/dist/iife/sync.js @@ -5266,7 +5266,7 @@ var stream_transform_sync = (function (exports) { } // Validate arguments let expected_handler_length = 1; - if (options.params) { + if (options.params !== undefined && options.params !== null) { expected_handler_length++; } if (handler.length > expected_handler_length) { diff --git a/packages/stream-transform/dist/umd/sync.js b/packages/stream-transform/dist/umd/sync.js index 8eb2a88b5..d6cf8f07f 100644 --- a/packages/stream-transform/dist/umd/sync.js +++ b/packages/stream-transform/dist/umd/sync.js @@ -5269,7 +5269,7 @@ } // Validate arguments let expected_handler_length = 1; - if (options.params) { + if (options.params !== undefined && options.params !== null) { expected_handler_length++; } if (handler.length > expected_handler_length) { diff --git a/packages/stream-transform/lib/sync.js b/packages/stream-transform/lib/sync.js index e09e75130..67b2cfc69 100644 --- a/packages/stream-transform/lib/sync.js +++ b/packages/stream-transform/lib/sync.js @@ -33,7 +33,7 @@ const transform = function () { } // Validate arguments let expected_handler_length = 1; - if (options.params) { + if (options.params !== undefined && options.params !== null) { expected_handler_length++; } if (handler.length > expected_handler_length) { diff --git a/packages/stream-transform/test/option.params.js b/packages/stream-transform/test/option.params.js index 17579d9af..4474cf75b 100644 --- a/packages/stream-transform/test/option.params.js +++ b/packages/stream-transform/test/option.params.js @@ -1,7 +1,36 @@ +import "should"; +import { transform as transformSync } from "../lib/sync.js"; import { generate } from "csv-generate"; import { transform } from "../lib/index.js"; describe("option.params", function () { + describe("sync API", function () { + for (const params of [0, false, ""]) { + it(`honors falsy params ${JSON.stringify(params)}`, function () { + const data = transformSync( + ["record"], + { params }, + function (record, value) { + return [record, value]; + }, + ); + data.should.eql([["record", params]]); + }); + } + + for (const params of [undefined, null]) { + it(`rejects callback handlers with params ${params}`, function () { + (function () { + transformSync(["record"], { params }, function (record, callback) { + callback(null, record); + }); + }).should.throw( + "Invalid Handler: only synchronous handlers are supported", + ); + }); + } + }); + it("sync", function (next) { const generator = generate({ length: 100, objectMode: true, seed: 1 }); const transformer = generator.pipe(