From f2bebb938c05a6923a3bac00bb07202bfefbadbb Mon Sep 17 00:00:00 2001 From: chyzwar Date: Sun, 11 Oct 2020 11:45:25 +0200 Subject: [PATCH 01/15] feat(): start converting pg-query stream --- packages/pg-query-stream/{index.js => index.ts} | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) rename packages/pg-query-stream/{index.js => index.ts} (92%) diff --git a/packages/pg-query-stream/index.js b/packages/pg-query-stream/index.ts similarity index 92% rename from packages/pg-query-stream/index.js rename to packages/pg-query-stream/index.ts index 3806e60aa..65ba8f6ac 100644 --- a/packages/pg-query-stream/index.js +++ b/packages/pg-query-stream/index.ts @@ -1,8 +1,13 @@ const { Readable } = require('stream') const Cursor = require('pg-cursor') +interface PgQueryStreamConfig { + batchSize: number + highWaterMark?: number +} + class PgQueryStream extends Readable { - constructor(text, values, config = {}) { + constructor(text, values, config: PgQueryStreamConfig = {}) { const { batchSize, highWaterMark = 100 } = config // https://nodejs.org/api/stream.html#stream_new_stream_readable_options super({ objectMode: true, emitClose: true, autoDestroy: true, highWaterMark: batchSize || highWaterMark }) From ae49613df369f507a7fb7adbdf5948b8dfd78dc6 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Sun, 11 Oct 2020 17:33:11 +0200 Subject: [PATCH 02/15] feat(): solution project, initial version of typescript-pg-query stream --- package.json | 9 ++++-- packages/pg-protocol/package.json | 2 +- packages/pg-protocol/tsconfig.json | 1 + packages/pg-query-stream/package.json | 5 ++- packages/pg-query-stream/{ => src}/index.ts | 35 ++++++++++++++------- packages/pg-query-stream/tsconfig.json | 23 ++++++++++++++ tsconfig.json | 12 +++++++ yarn.lock | 31 ++++++++++++------ 8 files changed, 94 insertions(+), 24 deletions(-) rename packages/pg-query-stream/{ => src}/index.ts (64%) create mode 100644 packages/pg-query-stream/tsconfig.json create mode 100644 tsconfig.json diff --git a/package.json b/package.json index 98e3c4e98..490ee1350 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ ], "scripts": { "test": "yarn lerna exec yarn test", - "build": "yarn lerna exec --scope pg-protocol yarn build", + "build": "tsc --build", + "build:watch": "tsc --build --watch", "pretest": "yarn build", "lint": "eslint '*/**/*.{js,ts,tsx}'" }, @@ -23,7 +24,11 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^3.1.4", "lerna": "^3.19.0", - "prettier": "2.1.2" + "prettier": "2.1.2", + "typescript": "^4.0.3" + }, + "optionalDependencies": { + "prettier": "2.0.4" }, "prettier": { "semi": false, diff --git a/packages/pg-protocol/package.json b/packages/pg-protocol/package.json index 3ad45e4cb..7bd4c31ba 100644 --- a/packages/pg-protocol/package.json +++ b/packages/pg-protocol/package.json @@ -13,7 +13,7 @@ "chunky": "^0.0.0", "mocha": "^7.1.2", "ts-node": "^8.5.4", - "typescript": "^3.7.3" + "typescript": "^4.0.3" }, "scripts": { "test": "mocha dist/**/*.test.js", diff --git a/packages/pg-protocol/tsconfig.json b/packages/pg-protocol/tsconfig.json index bdbe07a39..b273c52d6 100644 --- a/packages/pg-protocol/tsconfig.json +++ b/packages/pg-protocol/tsconfig.json @@ -9,6 +9,7 @@ "moduleResolution": "node", "sourceMap": true, "outDir": "dist", + "incremental": true, "baseUrl": ".", "declaration": true, "paths": { diff --git a/packages/pg-query-stream/package.json b/packages/pg-query-stream/package.json index 15da00837..9b6900517 100644 --- a/packages/pg-query-stream/package.json +++ b/packages/pg-query-stream/package.json @@ -22,6 +22,8 @@ "url": "https://github.com/brianc/node-postgres/issues" }, "devDependencies": { + "@types/node": "^14.0.0", + "@types/pg": "^7.14.5", "JSONStream": "~0.7.1", "concat-stream": "~1.0.1", "eslint-plugin-promise": "^3.5.0", @@ -29,7 +31,8 @@ "pg": "^8.4.2", "stream-spec": "~0.3.5", "stream-tester": "0.0.5", - "through": "~2.3.4" + "through": "~2.3.4", + "typescript": "^4.0.3" }, "dependencies": { "pg-cursor": "^2.4.2" diff --git a/packages/pg-query-stream/index.ts b/packages/pg-query-stream/src/index.ts similarity index 64% rename from packages/pg-query-stream/index.ts rename to packages/pg-query-stream/src/index.ts index 65ba8f6ac..7685a5fae 100644 --- a/packages/pg-query-stream/index.ts +++ b/packages/pg-query-stream/src/index.ts @@ -1,15 +1,28 @@ -const { Readable } = require('stream') -const Cursor = require('pg-cursor') +import { Readable } from 'stream' +import { Submittable, Connection } from 'pg' +import Cursor from 'pg-cursor' interface PgQueryStreamConfig { - batchSize: number + batchSize?: number highWaterMark?: number } -class PgQueryStream extends Readable { - constructor(text, values, config: PgQueryStreamConfig = {}) { +class PgQueryStream extends Readable implements Submittable { + cursor: any + handleRowDescription: Function + handleDataRow: Function + handlePortalSuspended: Function + handleCommandComplete: Function + handleReadyForQuery: Function + handleError: Function + handleEmptyQuery: Function + + _result: any + + constructor(text: string, values: any[], config: PgQueryStreamConfig = {}) { const { batchSize, highWaterMark = 100 } = config // https://nodejs.org/api/stream.html#stream_new_stream_readable_options + //@ts-expect-error super({ objectMode: true, emitClose: true, autoDestroy: true, highWaterMark: batchSize || highWaterMark }) this.cursor = new Cursor(text, values, config) @@ -26,19 +39,19 @@ class PgQueryStream extends Readable { this._result = this.cursor._result } - submit(connection) { + submit(connection: Connection): void { this.cursor.submit(connection) } - _destroy(_err, cb) { - this.cursor.close((err) => { + _destroy(_err: Error, cb: Function) { + this.cursor.close((err?: Error) => { cb(err || _err) }) } // https://nodejs.org/api/stream.html#stream_readable_read_size_1 - _read(size) { - this.cursor.read(size, (err, rows, result) => { + _read(size: number) { + this.cursor.read(size, (err: Error, rows: any[], result: any) => { if (err) { // https://nodejs.org/api/stream.html#stream_errors_while_reading this.destroy(err) @@ -50,4 +63,4 @@ class PgQueryStream extends Readable { } } -module.exports = PgQueryStream +export default PgQueryStream diff --git a/packages/pg-query-stream/tsconfig.json b/packages/pg-query-stream/tsconfig.json new file mode 100644 index 000000000..8199f7ff7 --- /dev/null +++ b/packages/pg-query-stream/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": false, + "target": "es6", + "noImplicitAny": false, + "moduleResolution": "node", + "sourceMap": true, + "outDir": "dist", + "incremental": true, + "baseUrl": ".", + "declaration": true, + "types": [ + "node", + "pg" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..53fb70c6e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "strict": true, + "incremental": true, + "composite": true + }, + "include": [], + "references": [ + {"path": "./packages/pg-query-stream"}, + {"path": "./packages/pg-protocol"} + ] +} diff --git a/yarn.lock b/yarn.lock index 04b915afa..0cc3b0844 100644 --- a/yarn.lock +++ b/yarn.lock @@ -974,7 +974,7 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== -"@types/node@*", "@types/node@>= 8": +"@types/node@*", "@types/node@>= 8", "@types/node@^14.0.0": version "14.11.8" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.8.tgz#fe2012f2355e4ce08bca44aeb3abbb21cf88d33f" integrity sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw== @@ -989,6 +989,19 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/pg-types@*": + version "1.11.5" + resolved "https://registry.yarnpkg.com/@types/pg-types/-/pg-types-1.11.5.tgz#1eebbe62b6772fcc75c18957a90f933d155e005b" + integrity sha512-L8ogeT6vDzT1vxlW3KITTCt+BVXXVkLXfZ/XNm6UqbcJgxf+KPO7yjWx7dQQE8RW07KopL10x2gNMs41+IkMGQ== + +"@types/pg@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-7.14.5.tgz#07638c7aa69061abe4be31267028cc5c3fc35f98" + integrity sha512-wqTKZmqkqXd1YiVRBT2poRrMIojwEi2bKTAAjUX6nEbzr98jc3cfR/7o7ZtubhH5xT7YJ6LRdRr1GZOgs8OUjg== + dependencies: + "@types/node" "*" + "@types/pg-types" "*" + "@typescript-eslint/eslint-plugin@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.4.0.tgz#0321684dd2b902c89128405cf0385e9fe8561934" @@ -4921,10 +4934,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" - integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== +prettier@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.4.tgz#2d1bae173e355996ee355ec9830a7a1ee05457ef" + integrity sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w== process-nextick-args@~2.0.0: version "2.0.1" @@ -6096,10 +6109,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.7.3: - version "3.9.7" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" - integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== +typescript@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.3.tgz#153bbd468ef07725c1df9c77e8b453f8d36abba5" + integrity sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg== uglify-js@^3.1.4: version "3.11.1" From ad198761bfbf6f0a0712dbef6f6bf73806d2c451 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Sun, 11 Oct 2020 19:49:35 +0200 Subject: [PATCH 03/15] chore(): mocha with typescript --- packages/pg-query-stream/package.json | 8 ++++++-- packages/pg-query-stream/src/index.ts | 2 +- packages/pg-query-stream/test/async-iterator.es6 | 8 ++++---- .../test/{async-iterator.js => async-iterator.ts} | 0 .../test/{client-options.js => client-options.ts} | 0 packages/pg-query-stream/test/{close.js => close.ts} | 0 packages/pg-query-stream/test/{concat.js => concat.ts} | 0 packages/pg-query-stream/test/{config.js => config.ts} | 0 .../test/{empty-query.js => empty-query.ts} | 0 packages/pg-query-stream/test/{error.js => error.ts} | 0 .../test/{fast-reader.js => fast-reader.ts} | 0 packages/pg-query-stream/test/{helper.js => helper.ts} | 0 packages/pg-query-stream/test/{instant.js => instant.ts} | 0 packages/pg-query-stream/test/{issue-3.js => issue-3.ts} | 0 .../test/{passing-options.js => passing-options.ts} | 0 packages/pg-query-stream/test/{pauses.js => pauses.ts} | 0 .../test/{slow-reader.js => slow-reader.ts} | 0 ...eam-tester-timestamp.js => stream-tester-timestamp.ts} | 0 .../test/{stream-tester.js => stream-tester.ts} | 0 packages/pg-query-stream/tsconfig.json | 5 ++++- 20 files changed, 15 insertions(+), 8 deletions(-) rename packages/pg-query-stream/test/{async-iterator.js => async-iterator.ts} (100%) rename packages/pg-query-stream/test/{client-options.js => client-options.ts} (100%) rename packages/pg-query-stream/test/{close.js => close.ts} (100%) rename packages/pg-query-stream/test/{concat.js => concat.ts} (100%) rename packages/pg-query-stream/test/{config.js => config.ts} (100%) rename packages/pg-query-stream/test/{empty-query.js => empty-query.ts} (100%) rename packages/pg-query-stream/test/{error.js => error.ts} (100%) rename packages/pg-query-stream/test/{fast-reader.js => fast-reader.ts} (100%) rename packages/pg-query-stream/test/{helper.js => helper.ts} (100%) rename packages/pg-query-stream/test/{instant.js => instant.ts} (100%) rename packages/pg-query-stream/test/{issue-3.js => issue-3.ts} (100%) rename packages/pg-query-stream/test/{passing-options.js => passing-options.ts} (100%) rename packages/pg-query-stream/test/{pauses.js => pauses.ts} (100%) rename packages/pg-query-stream/test/{slow-reader.js => slow-reader.ts} (100%) rename packages/pg-query-stream/test/{stream-tester-timestamp.js => stream-tester-timestamp.ts} (100%) rename packages/pg-query-stream/test/{stream-tester.js => stream-tester.ts} (100%) diff --git a/packages/pg-query-stream/package.json b/packages/pg-query-stream/package.json index 9b6900517..a846bcc67 100644 --- a/packages/pg-query-stream/package.json +++ b/packages/pg-query-stream/package.json @@ -2,9 +2,10 @@ "name": "pg-query-stream", "version": "3.3.2", "description": "Postgres query result returned as readable stream", - "main": "index.js", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", "scripts": { - "test": "mocha" + "test": "mocha -r ts-node/register" }, "repository": { "type": "git", @@ -24,6 +25,8 @@ "devDependencies": { "@types/node": "^14.0.0", "@types/pg": "^7.14.5", + "@types/chai": "^4.2.13", + "@types/mocha": "^8.0.3", "JSONStream": "~0.7.1", "concat-stream": "~1.0.1", "eslint-plugin-promise": "^3.5.0", @@ -32,6 +35,7 @@ "stream-spec": "~0.3.5", "stream-tester": "0.0.5", "through": "~2.3.4", + "ts-node": "^9.0.0", "typescript": "^4.0.3" }, "dependencies": { diff --git a/packages/pg-query-stream/src/index.ts b/packages/pg-query-stream/src/index.ts index 7685a5fae..51a83c625 100644 --- a/packages/pg-query-stream/src/index.ts +++ b/packages/pg-query-stream/src/index.ts @@ -63,4 +63,4 @@ class PgQueryStream extends Readable implements Submittable { } } -export default PgQueryStream +module.exports = PgQueryStream diff --git a/packages/pg-query-stream/test/async-iterator.es6 b/packages/pg-query-stream/test/async-iterator.es6 index 47bda86d2..30b4c8138 100644 --- a/packages/pg-query-stream/test/async-iterator.es6 +++ b/packages/pg-query-stream/test/async-iterator.es6 @@ -61,15 +61,15 @@ describe('Async iterator', () => { const rows = [] for await (const row of client.query(new QueryStream(queryText, [], { batchSize: 1 }))) { rows.push(row) - break; + break } for await (const row of client.query(new QueryStream(queryText, []))) { rows.push(row) - break; + break } for await (const row of client.query(new QueryStream(queryText, []))) { rows.push(row) - break; + break } assert.strictEqual(rows.length, 3) client.release() @@ -83,7 +83,7 @@ describe('Async iterator', () => { const stream = client.query(new QueryStream(queryText, [])) for await (const row of stream) { rows.push(row) - break; + break } for await (const row of stream) { rows.push(row) diff --git a/packages/pg-query-stream/test/async-iterator.js b/packages/pg-query-stream/test/async-iterator.ts similarity index 100% rename from packages/pg-query-stream/test/async-iterator.js rename to packages/pg-query-stream/test/async-iterator.ts diff --git a/packages/pg-query-stream/test/client-options.js b/packages/pg-query-stream/test/client-options.ts similarity index 100% rename from packages/pg-query-stream/test/client-options.js rename to packages/pg-query-stream/test/client-options.ts diff --git a/packages/pg-query-stream/test/close.js b/packages/pg-query-stream/test/close.ts similarity index 100% rename from packages/pg-query-stream/test/close.js rename to packages/pg-query-stream/test/close.ts diff --git a/packages/pg-query-stream/test/concat.js b/packages/pg-query-stream/test/concat.ts similarity index 100% rename from packages/pg-query-stream/test/concat.js rename to packages/pg-query-stream/test/concat.ts diff --git a/packages/pg-query-stream/test/config.js b/packages/pg-query-stream/test/config.ts similarity index 100% rename from packages/pg-query-stream/test/config.js rename to packages/pg-query-stream/test/config.ts diff --git a/packages/pg-query-stream/test/empty-query.js b/packages/pg-query-stream/test/empty-query.ts similarity index 100% rename from packages/pg-query-stream/test/empty-query.js rename to packages/pg-query-stream/test/empty-query.ts diff --git a/packages/pg-query-stream/test/error.js b/packages/pg-query-stream/test/error.ts similarity index 100% rename from packages/pg-query-stream/test/error.js rename to packages/pg-query-stream/test/error.ts diff --git a/packages/pg-query-stream/test/fast-reader.js b/packages/pg-query-stream/test/fast-reader.ts similarity index 100% rename from packages/pg-query-stream/test/fast-reader.js rename to packages/pg-query-stream/test/fast-reader.ts diff --git a/packages/pg-query-stream/test/helper.js b/packages/pg-query-stream/test/helper.ts similarity index 100% rename from packages/pg-query-stream/test/helper.js rename to packages/pg-query-stream/test/helper.ts diff --git a/packages/pg-query-stream/test/instant.js b/packages/pg-query-stream/test/instant.ts similarity index 100% rename from packages/pg-query-stream/test/instant.js rename to packages/pg-query-stream/test/instant.ts diff --git a/packages/pg-query-stream/test/issue-3.js b/packages/pg-query-stream/test/issue-3.ts similarity index 100% rename from packages/pg-query-stream/test/issue-3.js rename to packages/pg-query-stream/test/issue-3.ts diff --git a/packages/pg-query-stream/test/passing-options.js b/packages/pg-query-stream/test/passing-options.ts similarity index 100% rename from packages/pg-query-stream/test/passing-options.js rename to packages/pg-query-stream/test/passing-options.ts diff --git a/packages/pg-query-stream/test/pauses.js b/packages/pg-query-stream/test/pauses.ts similarity index 100% rename from packages/pg-query-stream/test/pauses.js rename to packages/pg-query-stream/test/pauses.ts diff --git a/packages/pg-query-stream/test/slow-reader.js b/packages/pg-query-stream/test/slow-reader.ts similarity index 100% rename from packages/pg-query-stream/test/slow-reader.js rename to packages/pg-query-stream/test/slow-reader.ts diff --git a/packages/pg-query-stream/test/stream-tester-timestamp.js b/packages/pg-query-stream/test/stream-tester-timestamp.ts similarity index 100% rename from packages/pg-query-stream/test/stream-tester-timestamp.js rename to packages/pg-query-stream/test/stream-tester-timestamp.ts diff --git a/packages/pg-query-stream/test/stream-tester.js b/packages/pg-query-stream/test/stream-tester.ts similarity index 100% rename from packages/pg-query-stream/test/stream-tester.js rename to packages/pg-query-stream/test/stream-tester.ts diff --git a/packages/pg-query-stream/tsconfig.json b/packages/pg-query-stream/tsconfig.json index 8199f7ff7..15b962dd9 100644 --- a/packages/pg-query-stream/tsconfig.json +++ b/packages/pg-query-stream/tsconfig.json @@ -8,13 +8,16 @@ "noImplicitAny": false, "moduleResolution": "node", "sourceMap": true, + "pretty": true, "outDir": "dist", "incremental": true, "baseUrl": ".", "declaration": true, "types": [ "node", - "pg" + "pg", + "mocha", + "chai" ] }, "include": [ From ef1c5bfe6d79446b825aadd6386bb062fc1c3de1 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Sun, 11 Oct 2020 19:59:35 +0200 Subject: [PATCH 04/15] fix(): eslint ignore query stream dist --- .eslintrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc b/.eslintrc index e03680342..4766b9889 100644 --- a/.eslintrc +++ b/.eslintrc @@ -2,7 +2,7 @@ "plugins": ["prettier"], "parser": "@typescript-eslint/parser", "extends": ["plugin:prettier/recommended", "prettier/@typescript-eslint"], - "ignorePatterns": ["node_modules", "coverage", "packages/pg-protocol/dist/**/*"], + "ignorePatterns": ["node_modules", "coverage", "packages/pg-protocol/dist/**/*", "packages/pg-query-stream/dist/**/*"], "parserOptions": { "ecmaVersion": 2017, "sourceType": "module" From 38a8a7d78b6d2f4a9a1bea78d05af3dbe7de4d8e Mon Sep 17 00:00:00 2001 From: chyzwar Date: Sun, 11 Oct 2020 21:04:16 +0200 Subject: [PATCH 05/15] refactor(pg-query-stream): convert test to ts --- packages/pg-query-stream/package.json | 2 +- packages/pg-query-stream/src/index.ts | 6 +- .../pg-query-stream/test/async-iterator.es6 | 112 ----------------- .../pg-query-stream/test/async-iterator.ts | 116 +++++++++++++++++- .../pg-query-stream/test/client-options.ts | 14 +-- packages/pg-query-stream/test/close.ts | 31 ++--- packages/pg-query-stream/test/concat.ts | 16 +-- packages/pg-query-stream/test/config.ts | 18 +-- packages/pg-query-stream/test/empty-query.ts | 6 +- packages/pg-query-stream/test/error.ts | 11 +- packages/pg-query-stream/test/fast-reader.ts | 16 +-- packages/pg-query-stream/test/helper.ts | 7 +- packages/pg-query-stream/test/instant.ts | 14 +-- packages/pg-query-stream/test/issue-3.ts | 15 +-- .../pg-query-stream/test/passing-options.ts | 18 +-- packages/pg-query-stream/test/pauses.ts | 21 ++-- packages/pg-query-stream/test/slow-reader.ts | 12 +- .../test/stream-tester-timestamp.ts | 19 +-- .../pg-query-stream/test/stream-tester.ts | 12 +- 19 files changed, 236 insertions(+), 230 deletions(-) delete mode 100644 packages/pg-query-stream/test/async-iterator.es6 diff --git a/packages/pg-query-stream/package.json b/packages/pg-query-stream/package.json index a846bcc67..26af727b6 100644 --- a/packages/pg-query-stream/package.json +++ b/packages/pg-query-stream/package.json @@ -5,7 +5,7 @@ "main": "./dist/index.js", "types": "./dist/index.d.ts", "scripts": { - "test": "mocha -r ts-node/register" + "test": "mocha -r ts-node/register test/**/*.ts" }, "repository": { "type": "git", diff --git a/packages/pg-query-stream/src/index.ts b/packages/pg-query-stream/src/index.ts index 51a83c625..5e5130e7f 100644 --- a/packages/pg-query-stream/src/index.ts +++ b/packages/pg-query-stream/src/index.ts @@ -1,10 +1,12 @@ import { Readable } from 'stream' -import { Submittable, Connection } from 'pg' +import { Submittable, Connection, types } from 'pg' import Cursor from 'pg-cursor' interface PgQueryStreamConfig { batchSize?: number highWaterMark?: number + rowMode?: 'array' + types?: any } class PgQueryStream extends Readable implements Submittable { @@ -63,4 +65,4 @@ class PgQueryStream extends Readable implements Submittable { } } -module.exports = PgQueryStream +export = PgQueryStream diff --git a/packages/pg-query-stream/test/async-iterator.es6 b/packages/pg-query-stream/test/async-iterator.es6 deleted file mode 100644 index 30b4c8138..000000000 --- a/packages/pg-query-stream/test/async-iterator.es6 +++ /dev/null @@ -1,112 +0,0 @@ -const QueryStream = require('../') -const pg = require('pg') -const assert = require('assert') - -const queryText = 'SELECT * FROM generate_series(0, 200) num' -describe('Async iterator', () => { - it('works', async () => { - const stream = new QueryStream(queryText, []) - const client = new pg.Client() - await client.connect() - const query = client.query(stream) - const rows = [] - for await (const row of query) { - rows.push(row) - } - assert.equal(rows.length, 201) - await client.end() - }) - - it('can async iterate and then do a query afterwards', async () => { - const stream = new QueryStream(queryText, []) - const client = new pg.Client() - await client.connect() - const query = client.query(stream) - const iteratorRows = [] - for await (const row of query) { - iteratorRows.push(row) - } - assert.equal(iteratorRows.length, 201) - const { rows } = await client.query('SELECT NOW()') - assert.equal(rows.length, 1) - await client.end() - }) - - it('can async iterate multiple times with a pool', async () => { - const pool = new pg.Pool({ max: 1 }) - - const allRows = [] - const run = async () => { - // get the client - const client = await pool.connect() - // stream some rows - const stream = new QueryStream(queryText, []) - const iteratorRows = [] - client.query(stream) - for await (const row of stream) { - iteratorRows.push(row) - allRows.push(row) - } - assert.equal(iteratorRows.length, 201) - client.release() - } - await Promise.all([run(), run(), run()]) - assert.equal(allRows.length, 603) - await pool.end() - }) - - it('can break out of iteration early', async () => { - const pool = new pg.Pool({ max: 1 }) - const client = await pool.connect() - const rows = [] - for await (const row of client.query(new QueryStream(queryText, [], { batchSize: 1 }))) { - rows.push(row) - break - } - for await (const row of client.query(new QueryStream(queryText, []))) { - rows.push(row) - break - } - for await (const row of client.query(new QueryStream(queryText, []))) { - rows.push(row) - break - } - assert.strictEqual(rows.length, 3) - client.release() - await pool.end() - }) - - it('only returns rows on first iteration', async () => { - const pool = new pg.Pool({ max: 1 }) - const client = await pool.connect() - const rows = [] - const stream = client.query(new QueryStream(queryText, [])) - for await (const row of stream) { - rows.push(row) - break - } - for await (const row of stream) { - rows.push(row) - } - for await (const row of stream) { - rows.push(row) - } - assert.strictEqual(rows.length, 1) - client.release() - await pool.end() - }) - - it('can read with delays', async () => { - const pool = new pg.Pool({ max: 1 }) - const client = await pool.connect() - const rows = [] - const stream = client.query(new QueryStream(queryText, [], { batchSize: 1 })) - for await (const row of stream) { - rows.push(row) - await new Promise((resolve) => setTimeout(resolve, 1)) - } - assert.strictEqual(rows.length, 201) - client.release() - await pool.end() - }) -}) diff --git a/packages/pg-query-stream/test/async-iterator.ts b/packages/pg-query-stream/test/async-iterator.ts index 19718fe3b..c91f88e1e 100644 --- a/packages/pg-query-stream/test/async-iterator.ts +++ b/packages/pg-query-stream/test/async-iterator.ts @@ -1,4 +1,112 @@ -// only newer versions of node support async iterator -if (!process.version.startsWith('v8')) { - require('./async-iterator.es6') -} +import QueryStream from '../' +import pg from 'pg' +import assert from 'assert' + +const queryText = 'SELECT * FROM generate_series(0, 200) num' +describe('Async iterator', () => { + it('works', async () => { + const stream = new QueryStream(queryText, []) + const client = new pg.Client() + await client.connect() + const query = client.query(stream) + const rows = [] + for await (const row of query) { + rows.push(row) + } + assert.equal(rows.length, 201) + await client.end() + }) + + it('can async iterate and then do a query afterwards', async () => { + const stream = new QueryStream(queryText, []) + const client = new pg.Client() + await client.connect() + const query = client.query(stream) + const iteratorRows = [] + for await (const row of query) { + iteratorRows.push(row) + } + assert.equal(iteratorRows.length, 201) + const { rows } = await client.query('SELECT NOW()') + assert.equal(rows.length, 1) + await client.end() + }) + + it('can async iterate multiple times with a pool', async () => { + const pool = new pg.Pool({ max: 1 }) + + const allRows = [] + const run = async () => { + // get the client + const client = await pool.connect() + // stream some rows + const stream = new QueryStream(queryText, []) + const iteratorRows = [] + client.query(stream) + for await (const row of stream) { + iteratorRows.push(row) + allRows.push(row) + } + assert.equal(iteratorRows.length, 201) + client.release() + } + await Promise.all([run(), run(), run()]) + assert.equal(allRows.length, 603) + await pool.end() + }) + + it('can break out of iteration early', async () => { + const pool = new pg.Pool({ max: 1 }) + const client = await pool.connect() + const rows = [] + for await (const row of client.query(new QueryStream(queryText, [], { batchSize: 1 }))) { + rows.push(row) + break + } + for await (const row of client.query(new QueryStream(queryText, []))) { + rows.push(row) + break + } + for await (const row of client.query(new QueryStream(queryText, []))) { + rows.push(row) + break + } + assert.strictEqual(rows.length, 3) + client.release() + await pool.end() + }) + + it('only returns rows on first iteration', async () => { + const pool = new pg.Pool({ max: 1 }) + const client = await pool.connect() + const rows = [] + const stream = client.query(new QueryStream(queryText, [])) + for await (const row of stream) { + rows.push(row) + break + } + for await (const row of stream) { + rows.push(row) + } + for await (const row of stream) { + rows.push(row) + } + assert.strictEqual(rows.length, 1) + client.release() + await pool.end() + }) + + it('can read with delays', async () => { + const pool = new pg.Pool({ max: 1 }) + const client = await pool.connect() + const rows = [] + const stream = client.query(new QueryStream(queryText, [], { batchSize: 1 })) + for await (const row of stream) { + rows.push(row) + await new Promise((resolve) => setTimeout(resolve, 1)) + } + assert.strictEqual(rows.length, 201) + client.release() + await pool.end() + }) +}) diff --git a/packages/pg-query-stream/test/client-options.ts b/packages/pg-query-stream/test/client-options.ts index 3820d96b2..a91657577 100644 --- a/packages/pg-query-stream/test/client-options.ts +++ b/packages/pg-query-stream/test/client-options.ts @@ -1,17 +1,17 @@ -var pg = require('pg') -var assert = require('assert') -var QueryStream = require('../') +import pg from 'pg' +import assert from 'assert' +const QueryStream = require('../') describe('client options', function () { it('uses custom types from client config', function (done) { const types = { getTypeParser: () => (string) => string, } - var client = new pg.Client({ types }) + const client = new pg.Client({ types }) client.connect() - var stream = new QueryStream('SELECT * FROM generate_series(0, 10) num') - var query = client.query(stream) - var result = [] + const stream = new QueryStream('SELECT * FROM generate_series(0, 10) num') + const query = client.query(stream) + const result = [] query.on('data', (datum) => { result.push(datum) }) diff --git a/packages/pg-query-stream/test/close.ts b/packages/pg-query-stream/test/close.ts index 4a95464a7..7aed9899d 100644 --- a/packages/pg-query-stream/test/close.ts +++ b/packages/pg-query-stream/test/close.ts @@ -1,16 +1,19 @@ -var assert = require('assert') -var concat = require('concat-stream') +import assert from 'assert' +import concat from 'concat-stream' -var QueryStream = require('../') -var helper = require('./helper') +const QueryStream = require('../') +const helper = require('./helper') if (process.version.startsWith('v8.')) { console.error('warning! node less than 10lts stream closing semantics may not behave properly') } else { helper('close', function (client) { it('emits close', function (done) { - var stream = new QueryStream('SELECT * FROM generate_series(0, $1) num', [3], { batchSize: 2, highWaterMark: 2 }) - var query = client.query(stream) + const stream = new QueryStream('SELECT * FROM generate_series(0, $1) num', [3], { + batchSize: 2, + highWaterMark: 2, + }) + const query = client.query(stream) query.pipe(concat(function () {})) query.on('close', done) }) @@ -18,12 +21,12 @@ if (process.version.startsWith('v8.')) { helper('early close', function (client) { it('can be closed early', function (done) { - var stream = new QueryStream('SELECT * FROM generate_series(0, $1) num', [20000], { + const stream = new QueryStream('SELECT * FROM generate_series(0, $1) num', [20000], { batchSize: 2, highWaterMark: 2, }) - var query = client.query(stream) - var readCount = 0 + const query = client.query(stream) + let readCount = 0 query.on('readable', function () { readCount++ query.read() @@ -38,7 +41,7 @@ if (process.version.startsWith('v8.')) { }) it('can destroy stream while reading', function (done) { - var stream = new QueryStream('SELECT * FROM generate_series(0, 100), pg_sleep(1)') + const stream = new QueryStream('SELECT * FROM generate_series(0, 100), pg_sleep(1)') client.query(stream) stream.on('data', () => done(new Error('stream should not have returned rows'))) setTimeout(() => { @@ -48,7 +51,7 @@ if (process.version.startsWith('v8.')) { }) it('emits an error when calling destroy with an error', function (done) { - var stream = new QueryStream('SELECT * FROM generate_series(0, 100), pg_sleep(1)') + const stream = new QueryStream('SELECT * FROM generate_series(0, 100), pg_sleep(1)') client.query(stream) stream.on('data', () => done(new Error('stream should not have returned rows'))) setTimeout(() => { @@ -63,7 +66,7 @@ if (process.version.startsWith('v8.')) { }) it('can destroy stream while reading an error', function (done) { - var stream = new QueryStream('SELECT * from pg_sleep(1), basdfasdf;') + const stream = new QueryStream('SELECT * from pg_sleep(1), basdfasdf;') client.query(stream) stream.on('data', () => done(new Error('stream should not have returned rows'))) stream.once('error', () => { @@ -74,7 +77,7 @@ if (process.version.startsWith('v8.')) { }) it('does not crash when destroying the stream immediately after calling read', function (done) { - var stream = new QueryStream('SELECT * from generate_series(0, 100), pg_sleep(1);') + const stream = new QueryStream('SELECT * from generate_series(0, 100), pg_sleep(1);') client.query(stream) stream.on('data', () => done(new Error('stream should not have returned rows'))) stream.destroy() @@ -82,7 +85,7 @@ if (process.version.startsWith('v8.')) { }) it('does not crash when destroying the stream before its submitted', function (done) { - var stream = new QueryStream('SELECT * from generate_series(0, 100), pg_sleep(1);') + const stream = new QueryStream('SELECT * from generate_series(0, 100), pg_sleep(1);') stream.on('data', () => done(new Error('stream should not have returned rows'))) stream.destroy() stream.on('close', done) diff --git a/packages/pg-query-stream/test/concat.ts b/packages/pg-query-stream/test/concat.ts index 6ce17a28e..fe4cd6ddc 100644 --- a/packages/pg-query-stream/test/concat.ts +++ b/packages/pg-query-stream/test/concat.ts @@ -1,14 +1,14 @@ -var assert = require('assert') -var concat = require('concat-stream') -var through = require('through') -var helper = require('./helper') +import assert from 'assert' +import concat from 'concat-stream' +import through from 'through' +import helper from './helper' -var QueryStream = require('../') +const QueryStream = require('../') helper('concat', function (client) { it('concats correctly', function (done) { - var stream = new QueryStream('SELECT * FROM generate_series(0, 200) num', []) - var query = client.query(stream) + const stream = new QueryStream('SELECT * FROM generate_series(0, 200) num', []) + const query = client.query(stream) query .pipe( through(function (row) { @@ -17,7 +17,7 @@ helper('concat', function (client) { ) .pipe( concat(function (result) { - var total = result.reduce(function (prev, cur) { + const total = result.reduce(function (prev, cur) { return prev + cur }) assert.equal(total, 20100) diff --git a/packages/pg-query-stream/test/config.ts b/packages/pg-query-stream/test/config.ts index 061fb1153..73be7364b 100644 --- a/packages/pg-query-stream/test/config.ts +++ b/packages/pg-query-stream/test/config.ts @@ -1,26 +1,26 @@ -var assert = require('assert') -var QueryStream = require('../') +import assert from 'assert' +import QueryStream from '../' describe('stream config options', () => { - // this is mostly for backwards compatability. + // this is mostly for backwards compatibility. it('sets readable.highWaterMark based on batch size', () => { - var stream = new QueryStream('SELECT NOW()', [], { + const stream = new QueryStream('SELECT NOW()', [], { batchSize: 88, }) - assert.equal(stream._readableState.highWaterMark, 88) + assert.equal(stream.readableHighWaterMark, 88) }) it('sets readable.highWaterMark based on highWaterMark config', () => { - var stream = new QueryStream('SELECT NOW()', [], { + const stream = new QueryStream('SELECT NOW()', [], { highWaterMark: 88, }) - assert.equal(stream._readableState.highWaterMark, 88) + assert.equal(stream.readableHighWaterMark, 88) }) it('defaults to 100 for highWaterMark', () => { - var stream = new QueryStream('SELECT NOW()', []) + const stream = new QueryStream('SELECT NOW()', []) - assert.equal(stream._readableState.highWaterMark, 100) + assert.equal(stream.readableHighWaterMark, 100) }) }) diff --git a/packages/pg-query-stream/test/empty-query.ts b/packages/pg-query-stream/test/empty-query.ts index 25f7d6956..76c8d52b6 100644 --- a/packages/pg-query-stream/test/empty-query.ts +++ b/packages/pg-query-stream/test/empty-query.ts @@ -1,6 +1,6 @@ -const assert = require('assert') -const helper = require('./helper') -const QueryStream = require('../') +import assert from 'assert' +import helper from './helper' +import QueryStream from '../' helper('empty-query', function (client) { it('handles empty query', function (done) { diff --git a/packages/pg-query-stream/test/error.ts b/packages/pg-query-stream/test/error.ts index 0b732923d..d9dd8a86a 100644 --- a/packages/pg-query-stream/test/error.ts +++ b/packages/pg-query-stream/test/error.ts @@ -1,12 +1,11 @@ -var assert = require('assert') -var helper = require('./helper') - -var QueryStream = require('../') +import assert from 'assert' +import helper from './helper' +import QueryStream from '../' helper('error', function (client) { it('receives error on stream', function (done) { - var stream = new QueryStream('SELECT * FROM asdf num', []) - var query = client.query(stream) + const stream = new QueryStream('SELECT * FROM asdf num', []) + const query = client.query(stream) query .on('error', function (err) { assert(err) diff --git a/packages/pg-query-stream/test/fast-reader.ts b/packages/pg-query-stream/test/fast-reader.ts index 4c6f31f95..7f1a2ba0c 100644 --- a/packages/pg-query-stream/test/fast-reader.ts +++ b/packages/pg-query-stream/test/fast-reader.ts @@ -1,14 +1,14 @@ -var assert = require('assert') -var helper = require('./helper') -var QueryStream = require('../') +import assert from 'assert' +import helper from './helper' +import QueryStream from '../' helper('fast reader', function (client) { it('works', function (done) { - var stream = new QueryStream('SELECT * FROM generate_series(0, 200) num', []) - var query = client.query(stream) - var result = [] + const stream = new QueryStream('SELECT * FROM generate_series(0, 200) num', []) + const query = client.query(stream) + const result = [] stream.on('readable', function () { - var res = stream.read() + let res = stream.read() while (res) { if (result.length !== 201) { assert(res, 'should not return null on evented reader') @@ -24,7 +24,7 @@ helper('fast reader', function (client) { } }) stream.on('end', function () { - var total = result.reduce(function (prev, cur) { + const total = result.reduce(function (prev, cur) { return prev + cur }) assert.equal(total, 20100) diff --git a/packages/pg-query-stream/test/helper.ts b/packages/pg-query-stream/test/helper.ts index ad21d6ea2..9e9b63a94 100644 --- a/packages/pg-query-stream/test/helper.ts +++ b/packages/pg-query-stream/test/helper.ts @@ -1,7 +1,8 @@ -var pg = require('pg') -module.exports = function (name, cb) { +import pg from 'pg' + +export default function (name, cb) { describe(name, function () { - var client = new pg.Client() + const client = new pg.Client() before(function (done) { client.connect(done) diff --git a/packages/pg-query-stream/test/instant.ts b/packages/pg-query-stream/test/instant.ts index 0939753bb..d85771404 100644 --- a/packages/pg-query-stream/test/instant.ts +++ b/packages/pg-query-stream/test/instant.ts @@ -1,12 +1,12 @@ -var assert = require('assert') -var concat = require('concat-stream') +import helper from './helper' +import assert from 'assert' +import concat from 'concat-stream' +import QueryStream from '../' -var QueryStream = require('../') - -require('./helper')('instant', function (client) { +helper('instant', function (client) { it('instant', function (done) { - var query = new QueryStream('SELECT pg_sleep(1)', []) - var stream = client.query(query) + const query = new QueryStream('SELECT pg_sleep(1)', []) + const stream = client.query(query) stream.pipe( concat(function (res) { assert.equal(res.length, 1) diff --git a/packages/pg-query-stream/test/issue-3.ts b/packages/pg-query-stream/test/issue-3.ts index 7b467a3b3..9e1594619 100644 --- a/packages/pg-query-stream/test/issue-3.ts +++ b/packages/pg-query-stream/test/issue-3.ts @@ -1,8 +1,9 @@ -var pg = require('pg') -var QueryStream = require('../') +import pg from 'pg' +import QueryStream from '../' + describe('end semantics race condition', function () { before(function (done) { - var client = new pg.Client() + const client = new pg.Client() client.connect() client.on('drain', client.end.bind(client)) client.on('end', done) @@ -10,14 +11,14 @@ describe('end semantics race condition', function () { client.query('create table IF NOT EXISTS c(id int primary key references p)') }) it('works', function (done) { - var client1 = new pg.Client() + const client1 = new pg.Client() client1.connect() - var client2 = new pg.Client() + const client2 = new pg.Client() client2.connect() - var qr = new QueryStream('INSERT INTO p DEFAULT VALUES RETURNING id') + const qr = new QueryStream('INSERT INTO p DEFAULT VALUES RETURNING id') client1.query(qr) - var id = null + let id = null qr.on('data', function (row) { id = row.id }) diff --git a/packages/pg-query-stream/test/passing-options.ts b/packages/pg-query-stream/test/passing-options.ts index 858767de2..870cb62a6 100644 --- a/packages/pg-query-stream/test/passing-options.ts +++ b/packages/pg-query-stream/test/passing-options.ts @@ -1,12 +1,12 @@ -var assert = require('assert') -var helper = require('./helper') -var QueryStream = require('../') +import assert from 'assert' +import helper from './helper' +import QueryStream from '../' helper('passing options', function (client) { it('passes row mode array', function (done) { - var stream = new QueryStream('SELECT * FROM generate_series(0, 10) num', [], { rowMode: 'array' }) - var query = client.query(stream) - var result = [] + const stream = new QueryStream('SELECT * FROM generate_series(0, 10) num', [], { rowMode: 'array' }) + const query = client.query(stream) + const result = [] query.on('data', (datum) => { result.push(datum) }) @@ -21,9 +21,9 @@ helper('passing options', function (client) { const types = { getTypeParser: () => (string) => string, } - var stream = new QueryStream('SELECT * FROM generate_series(0, 10) num', [], { types }) - var query = client.query(stream) - var result = [] + const stream = new QueryStream('SELECT * FROM generate_series(0, 10) num', [], { types }) + const query = client.query(stream) + const result = [] query.on('data', (datum) => { result.push(datum) }) diff --git a/packages/pg-query-stream/test/pauses.ts b/packages/pg-query-stream/test/pauses.ts index 3da9a0b07..e67704293 100644 --- a/packages/pg-query-stream/test/pauses.ts +++ b/packages/pg-query-stream/test/pauses.ts @@ -1,15 +1,18 @@ -var concat = require('concat-stream') -var tester = require('stream-tester') -var JSONStream = require('JSONStream') +import helper from './helper' +import concat from 'concat-stream' +import tester from 'stream-tester' +import JSONStream from 'JSONStream' +import QueryStream from '../' -var QueryStream = require('../') - -require('./helper')('pauses', function (client) { +helper('pauses', function (client) { it('pauses', function (done) { this.timeout(5000) - var stream = new QueryStream('SELECT * FROM generate_series(0, $1) num', [200], { batchSize: 2, highWaterMark: 2 }) - var query = client.query(stream) - var pauser = tester.createPauseStream(0.1, 100) + const stream = new QueryStream('SELECT * FROM generate_series(0, $1) num', [200], { + batchSize: 2, + highWaterMark: 2, + }) + const query = client.query(stream) + const pauser = tester.createPauseStream(0.1, 100) query .pipe(JSONStream.stringify()) .pipe(pauser) diff --git a/packages/pg-query-stream/test/slow-reader.ts b/packages/pg-query-stream/test/slow-reader.ts index 3978f3004..962d55995 100644 --- a/packages/pg-query-stream/test/slow-reader.ts +++ b/packages/pg-query-stream/test/slow-reader.ts @@ -1,10 +1,10 @@ -var helper = require('./helper') -var QueryStream = require('../') -var concat = require('concat-stream') +import helper from './helper' +import QueryStream from '../' +import concat from 'concat-stream' -var Transform = require('stream').Transform +import { Transform } from 'stream' -var mapper = new Transform({ objectMode: true }) +const mapper = new Transform({ objectMode: true }) mapper._transform = function (obj, enc, cb) { this.push(obj) @@ -14,7 +14,7 @@ mapper._transform = function (obj, enc, cb) { helper('slow reader', function (client) { it('works', function (done) { this.timeout(50000) - var stream = new QueryStream('SELECT * FROM generate_series(0, 201) num', [], { + const stream = new QueryStream('SELECT * FROM generate_series(0, 201) num', [], { highWaterMark: 100, batchSize: 50, }) diff --git a/packages/pg-query-stream/test/stream-tester-timestamp.ts b/packages/pg-query-stream/test/stream-tester-timestamp.ts index ce989cc3f..a7a87b114 100644 --- a/packages/pg-query-stream/test/stream-tester-timestamp.ts +++ b/packages/pg-query-stream/test/stream-tester-timestamp.ts @@ -1,18 +1,19 @@ -var QueryStream = require('../') -var spec = require('stream-spec') -var assert = require('assert') +import helper from './helper' +import QueryStream from '../' +import spec from 'stream-spec' +import assert from 'assert' -require('./helper')('stream tester timestamp', function (client) { +helper('stream tester timestamp', function (client) { it('should not warn about max listeners', function (done) { - var sql = "SELECT * FROM generate_series('1983-12-30 00:00'::timestamp, '2013-12-30 00:00', '1 years')" - var stream = new QueryStream(sql, []) - var ended = false - var query = client.query(stream) + const sql = "SELECT * FROM generate_series('1983-12-30 00:00'::timestamp, '2013-12-30 00:00', '1 years')" + const stream = new QueryStream(sql, []) + let ended = false + const query = client.query(stream) query.on('end', function () { ended = true }) spec(query).readable().pausable({ strict: true }).validateOnExit() - var checkListeners = function () { + const checkListeners = function () { assert(stream.listeners('end').length < 10) if (!ended) { setImmediate(checkListeners) diff --git a/packages/pg-query-stream/test/stream-tester.ts b/packages/pg-query-stream/test/stream-tester.ts index f5ab2e372..ee67bd6ea 100644 --- a/packages/pg-query-stream/test/stream-tester.ts +++ b/packages/pg-query-stream/test/stream-tester.ts @@ -1,11 +1,11 @@ -var spec = require('stream-spec') +import spec from 'stream-spec' +import helper from './helper' +import QueryStream from '../' -var QueryStream = require('../') - -require('./helper')('stream tester', function (client) { +helper('stream tester', function (client) { it('passes stream spec', function (done) { - var stream = new QueryStream('SELECT * FROM generate_series(0, 200) num', []) - var query = client.query(stream) + const stream = new QueryStream('SELECT * FROM generate_series(0, 200) num', []) + const query = client.query(stream) spec(query).readable().pausable({ strict: true }).validateOnExit() stream.on('end', done) }) From 300fee09b7bbe0e43a9752e64eb07dda256ea5fa Mon Sep 17 00:00:00 2001 From: chyzwar Date: Sun, 11 Oct 2020 21:24:31 +0200 Subject: [PATCH 06/15] chore(): fixed type errors --- packages/pg-query-stream/src/index.ts | 2 +- packages/pg-query-stream/test/client-options.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/pg-query-stream/src/index.ts b/packages/pg-query-stream/src/index.ts index 5e5130e7f..7c23a501a 100644 --- a/packages/pg-query-stream/src/index.ts +++ b/packages/pg-query-stream/src/index.ts @@ -21,7 +21,7 @@ class PgQueryStream extends Readable implements Submittable { _result: any - constructor(text: string, values: any[], config: PgQueryStreamConfig = {}) { + constructor(text: string, values?: any[], config: PgQueryStreamConfig = {}) { const { batchSize, highWaterMark = 100 } = config // https://nodejs.org/api/stream.html#stream_new_stream_readable_options //@ts-expect-error diff --git a/packages/pg-query-stream/test/client-options.ts b/packages/pg-query-stream/test/client-options.ts index a91657577..75ce8d367 100644 --- a/packages/pg-query-stream/test/client-options.ts +++ b/packages/pg-query-stream/test/client-options.ts @@ -7,6 +7,7 @@ describe('client options', function () { const types = { getTypeParser: () => (string) => string, } + //@ts-expect-error const client = new pg.Client({ types }) client.connect() const stream = new QueryStream('SELECT * FROM generate_series(0, 10) num') From 46e2ae733936ee3d2f44c21bdbb06ceecee979f5 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Sun, 11 Oct 2020 21:32:00 +0200 Subject: [PATCH 07/15] chore(): fix helper usage --- packages/pg-query-stream/test/close.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/pg-query-stream/test/close.ts b/packages/pg-query-stream/test/close.ts index 7aed9899d..f197f604f 100644 --- a/packages/pg-query-stream/test/close.ts +++ b/packages/pg-query-stream/test/close.ts @@ -1,8 +1,7 @@ import assert from 'assert' import concat from 'concat-stream' - -const QueryStream = require('../') -const helper = require('./helper') +import QueryStream from '../' +import helper from './helper' if (process.version.startsWith('v8.')) { console.error('warning! node less than 10lts stream closing semantics may not behave properly') From f80c49b37dc65ec75d0b65c8b9ba20a42152eb18 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Sun, 11 Oct 2020 21:44:16 +0200 Subject: [PATCH 08/15] chore(): use ts-node compatibile with node v8 --- packages/pg-query-stream/package.json | 2 +- yarn.lock | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/pg-query-stream/package.json b/packages/pg-query-stream/package.json index 26af727b6..82b229615 100644 --- a/packages/pg-query-stream/package.json +++ b/packages/pg-query-stream/package.json @@ -35,7 +35,7 @@ "stream-spec": "~0.3.5", "stream-tester": "0.0.5", "through": "~2.3.4", - "ts-node": "^9.0.0", + "ts-node": "^8.5.4", "typescript": "^4.0.3" }, "dependencies": { diff --git a/yarn.lock b/yarn.lock index 0cc3b0844..b177a2cc3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -941,7 +941,7 @@ dependencies: "@types/node" ">= 8" -"@types/chai@^4.2.7": +"@types/chai@^4.2.13", "@types/chai@^4.2.7": version "4.2.13" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.13.tgz#8a3801f6655179d1803d81e94a2e4aaf317abd16" integrity sha512-o3SGYRlOpvLFpwJA6Sl1UPOwKFEvE4FxTEB/c9XHI2whdnd4kmPVkNLL8gY4vWGBxWWDumzLbKsAhEH5SKn37Q== @@ -974,16 +974,26 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== -"@types/node@*", "@types/node@>= 8", "@types/node@^14.0.0": - version "14.11.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.8.tgz#fe2012f2355e4ce08bca44aeb3abbb21cf88d33f" - integrity sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw== +"@types/mocha@^8.0.3": + version "8.0.3" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.0.3.tgz#51b21b6acb6d1b923bbdc7725c38f9f455166402" + integrity sha512-vyxR57nv8NfcU0GZu8EUXZLTbCMupIUwy95LJ6lllN+JRPG25CwMHoB1q5xKh8YKhQnHYRAn4yW2yuHbf/5xgg== + +"@types/node@*", "@types/node@>= 8": + version "12.12.21" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.21.tgz#aa44a6363291c7037111c47e4661ad210aded23f" + integrity sha512-8sRGhbpU+ck1n0PGAUgVrWrWdjSW2aqNeyC15W88GRsMpSwzv6RJGlLhE7s2RhVSOdyDmxbqlWSeThq4/7xqlA== "@types/node@^12.12.21": version "12.12.67" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.67.tgz#4f86badb292e822e3b13730a1f9713ed2377f789" integrity sha512-R48tgL2izApf+9rYNH+3RBMbRpPeW3N8f0I9HMhggeq4UXwBDqumJ14SDs4ctTMhG11pIOduZ4z3QWGOiMc9Vg== +"@types/node@^14.0.0": + version "14.11.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.8.tgz#fe2012f2355e4ce08bca44aeb3abbb21cf88d33f" + integrity sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw== + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" From 1849a6a0c2c92614c94ad884865a2659992f5623 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Mon, 12 Oct 2020 21:16:35 +0200 Subject: [PATCH 09/15] fix(): addd es extension --- packages/pg-query-stream/package.json | 4 ++++ .../test/{async-iterator.ts => async-iterator.es6.ts} | 0 2 files changed, 4 insertions(+) rename packages/pg-query-stream/test/{async-iterator.ts => async-iterator.es6.ts} (100%) diff --git a/packages/pg-query-stream/package.json b/packages/pg-query-stream/package.json index 82b229615..94f9f02d0 100644 --- a/packages/pg-query-stream/package.json +++ b/packages/pg-query-stream/package.json @@ -17,6 +17,10 @@ "query", "stream" ], + "files": [ + "/dist/*{js,ts,map}", + "/src" + ], "author": "Brian M. Carlson", "license": "MIT", "bugs": { diff --git a/packages/pg-query-stream/test/async-iterator.ts b/packages/pg-query-stream/test/async-iterator.es6.ts similarity index 100% rename from packages/pg-query-stream/test/async-iterator.ts rename to packages/pg-query-stream/test/async-iterator.es6.ts From b266b5df7298dcaddb6100a657e25c92a8ae78a4 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Tue, 13 Oct 2020 09:01:00 +0200 Subject: [PATCH 10/15] chore(): remove emitClose and added compilation for async iterators --- packages/pg-protocol/package.json | 6 +++++- packages/pg-query-stream/src/index.ts | 8 +++----- .../test/{async-iterator.es6.ts => async-iterator.ts} | 2 +- packages/pg-query-stream/tsconfig.json | 1 + 4 files changed, 10 insertions(+), 7 deletions(-) rename packages/pg-query-stream/test/{async-iterator.es6.ts => async-iterator.ts} (98%) diff --git a/packages/pg-protocol/package.json b/packages/pg-protocol/package.json index 7bd4c31ba..7fc1eb8ac 100644 --- a/packages/pg-protocol/package.json +++ b/packages/pg-protocol/package.json @@ -21,5 +21,9 @@ "build:watch": "tsc --watch", "prepublish": "yarn build", "pretest": "yarn build" - } + }, + "files": [ + "/dist/*{js,ts,map}", + "/src" + ] } diff --git a/packages/pg-query-stream/src/index.ts b/packages/pg-query-stream/src/index.ts index 7c23a501a..033c08af2 100644 --- a/packages/pg-query-stream/src/index.ts +++ b/packages/pg-query-stream/src/index.ts @@ -1,5 +1,5 @@ import { Readable } from 'stream' -import { Submittable, Connection, types } from 'pg' +import { Submittable, Connection } from 'pg' import Cursor from 'pg-cursor' interface PgQueryStreamConfig { @@ -23,9 +23,8 @@ class PgQueryStream extends Readable implements Submittable { constructor(text: string, values?: any[], config: PgQueryStreamConfig = {}) { const { batchSize, highWaterMark = 100 } = config - // https://nodejs.org/api/stream.html#stream_new_stream_readable_options - //@ts-expect-error - super({ objectMode: true, emitClose: true, autoDestroy: true, highWaterMark: batchSize || highWaterMark }) + + super({ objectMode: true, autoDestroy: true, highWaterMark: batchSize || highWaterMark }) this.cursor = new Cursor(text, values, config) // delegate Submittable callbacks to cursor @@ -55,7 +54,6 @@ class PgQueryStream extends Readable implements Submittable { _read(size: number) { this.cursor.read(size, (err: Error, rows: any[], result: any) => { if (err) { - // https://nodejs.org/api/stream.html#stream_errors_while_reading this.destroy(err) } else { for (const row of rows) this.push(row) diff --git a/packages/pg-query-stream/test/async-iterator.es6.ts b/packages/pg-query-stream/test/async-iterator.ts similarity index 98% rename from packages/pg-query-stream/test/async-iterator.es6.ts rename to packages/pg-query-stream/test/async-iterator.ts index c91f88e1e..d5ad10534 100644 --- a/packages/pg-query-stream/test/async-iterator.es6.ts +++ b/packages/pg-query-stream/test/async-iterator.ts @@ -1,4 +1,4 @@ -import QueryStream from '../' +import QueryStream from '../dist' import pg from 'pg' import assert from 'assert' diff --git a/packages/pg-query-stream/tsconfig.json b/packages/pg-query-stream/tsconfig.json index 15b962dd9..5af03b368 100644 --- a/packages/pg-query-stream/tsconfig.json +++ b/packages/pg-query-stream/tsconfig.json @@ -11,6 +11,7 @@ "pretty": true, "outDir": "dist", "incremental": true, + "downlevelIteration": true, "baseUrl": ".", "declaration": true, "types": [ From 66d4bb493086e3d7881bd833306e84e26d00682a Mon Sep 17 00:00:00 2001 From: chyzwar Date: Tue, 13 Oct 2020 09:36:00 +0200 Subject: [PATCH 11/15] chore(): condition for asyc iteration test --- .../pg-query-stream/test/async-iterator.ts | 196 +++++++++--------- packages/pg-query-stream/tsconfig.json | 1 - 2 files changed, 100 insertions(+), 97 deletions(-) diff --git a/packages/pg-query-stream/test/async-iterator.ts b/packages/pg-query-stream/test/async-iterator.ts index d5ad10534..ed8dbbfed 100644 --- a/packages/pg-query-stream/test/async-iterator.ts +++ b/packages/pg-query-stream/test/async-iterator.ts @@ -3,110 +3,114 @@ import pg from 'pg' import assert from 'assert' const queryText = 'SELECT * FROM generate_series(0, 200) num' -describe('Async iterator', () => { - it('works', async () => { - const stream = new QueryStream(queryText, []) - const client = new pg.Client() - await client.connect() - const query = client.query(stream) - const rows = [] - for await (const row of query) { - rows.push(row) - } - assert.equal(rows.length, 201) - await client.end() - }) - - it('can async iterate and then do a query afterwards', async () => { - const stream = new QueryStream(queryText, []) - const client = new pg.Client() - await client.connect() - const query = client.query(stream) - const iteratorRows = [] - for await (const row of query) { - iteratorRows.push(row) - } - assert.equal(iteratorRows.length, 201) - const { rows } = await client.query('SELECT NOW()') - assert.equal(rows.length, 1) - await client.end() - }) - it('can async iterate multiple times with a pool', async () => { - const pool = new pg.Pool({ max: 1 }) +// node v8 do not support async iteration +if (!process.version.startsWith('v8')) { + describe('Async iterator', () => { + it('works', async () => { + const stream = new QueryStream(queryText, []) + const client = new pg.Client() + await client.connect() + const query = client.query(stream) + const rows = [] + for await (const row of query) { + rows.push(row) + } + assert.equal(rows.length, 201) + await client.end() + }) - const allRows = [] - const run = async () => { - // get the client - const client = await pool.connect() - // stream some rows + it('can async iterate and then do a query afterwards', async () => { const stream = new QueryStream(queryText, []) + const client = new pg.Client() + await client.connect() + const query = client.query(stream) const iteratorRows = [] - client.query(stream) - for await (const row of stream) { + for await (const row of query) { iteratorRows.push(row) - allRows.push(row) } assert.equal(iteratorRows.length, 201) - client.release() - } - await Promise.all([run(), run(), run()]) - assert.equal(allRows.length, 603) - await pool.end() - }) + const { rows } = await client.query('SELECT NOW()') + assert.equal(rows.length, 1) + await client.end() + }) - it('can break out of iteration early', async () => { - const pool = new pg.Pool({ max: 1 }) - const client = await pool.connect() - const rows = [] - for await (const row of client.query(new QueryStream(queryText, [], { batchSize: 1 }))) { - rows.push(row) - break - } - for await (const row of client.query(new QueryStream(queryText, []))) { - rows.push(row) - break - } - for await (const row of client.query(new QueryStream(queryText, []))) { - rows.push(row) - break - } - assert.strictEqual(rows.length, 3) - client.release() - await pool.end() - }) + it('can async iterate multiple times with a pool', async () => { + const pool = new pg.Pool({ max: 1 }) - it('only returns rows on first iteration', async () => { - const pool = new pg.Pool({ max: 1 }) - const client = await pool.connect() - const rows = [] - const stream = client.query(new QueryStream(queryText, [])) - for await (const row of stream) { - rows.push(row) - break - } - for await (const row of stream) { - rows.push(row) - } - for await (const row of stream) { - rows.push(row) - } - assert.strictEqual(rows.length, 1) - client.release() - await pool.end() - }) + const allRows = [] + const run = async () => { + // get the client + const client = await pool.connect() + // stream some rows + const stream = new QueryStream(queryText, []) + const iteratorRows = [] + client.query(stream) + for await (const row of stream) { + iteratorRows.push(row) + allRows.push(row) + } + assert.equal(iteratorRows.length, 201) + client.release() + } + await Promise.all([run(), run(), run()]) + assert.equal(allRows.length, 603) + await pool.end() + }) - it('can read with delays', async () => { - const pool = new pg.Pool({ max: 1 }) - const client = await pool.connect() - const rows = [] - const stream = client.query(new QueryStream(queryText, [], { batchSize: 1 })) - for await (const row of stream) { - rows.push(row) - await new Promise((resolve) => setTimeout(resolve, 1)) - } - assert.strictEqual(rows.length, 201) - client.release() - await pool.end() + it('can break out of iteration early', async () => { + const pool = new pg.Pool({ max: 1 }) + const client = await pool.connect() + const rows = [] + for await (const row of client.query(new QueryStream(queryText, [], { batchSize: 1 }))) { + rows.push(row) + break + } + for await (const row of client.query(new QueryStream(queryText, []))) { + rows.push(row) + break + } + for await (const row of client.query(new QueryStream(queryText, []))) { + rows.push(row) + break + } + assert.strictEqual(rows.length, 3) + client.release() + await pool.end() + }) + + it('only returns rows on first iteration', async () => { + const pool = new pg.Pool({ max: 1 }) + const client = await pool.connect() + const rows = [] + const stream = client.query(new QueryStream(queryText, [])) + for await (const row of stream) { + rows.push(row) + break + } + for await (const row of stream) { + rows.push(row) + } + for await (const row of stream) { + rows.push(row) + } + assert.strictEqual(rows.length, 1) + client.release() + await pool.end() + }) + + it('can read with delays', async () => { + const pool = new pg.Pool({ max: 1 }) + const client = await pool.connect() + const rows = [] + const stream = client.query(new QueryStream(queryText, [], { batchSize: 1 })) + for await (const row of stream) { + rows.push(row) + await new Promise((resolve) => setTimeout(resolve, 1)) + } + assert.strictEqual(rows.length, 201) + client.release() + await pool.end() + }) }) -}) +} diff --git a/packages/pg-query-stream/tsconfig.json b/packages/pg-query-stream/tsconfig.json index 5af03b368..15b962dd9 100644 --- a/packages/pg-query-stream/tsconfig.json +++ b/packages/pg-query-stream/tsconfig.json @@ -11,7 +11,6 @@ "pretty": true, "outDir": "dist", "incremental": true, - "downlevelIteration": true, "baseUrl": ".", "declaration": true, "types": [ From 9935c924d5e2f4607eb8cc9cccc20ce327be033d Mon Sep 17 00:00:00 2001 From: chyzwar Date: Thu, 15 Oct 2020 08:52:39 +0200 Subject: [PATCH 12/15] chore(): rename class to match ts-defs --- packages/pg-query-stream/src/index.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/pg-query-stream/src/index.ts b/packages/pg-query-stream/src/index.ts index 033c08af2..c942b0441 100644 --- a/packages/pg-query-stream/src/index.ts +++ b/packages/pg-query-stream/src/index.ts @@ -2,15 +2,17 @@ import { Readable } from 'stream' import { Submittable, Connection } from 'pg' import Cursor from 'pg-cursor' -interface PgQueryStreamConfig { +interface QueryStreamConfig { batchSize?: number highWaterMark?: number rowMode?: 'array' types?: any } -class PgQueryStream extends Readable implements Submittable { +class QueryStream extends Readable implements Submittable { cursor: any + _result: any + handleRowDescription: Function handleDataRow: Function handlePortalSuspended: Function @@ -19,9 +21,7 @@ class PgQueryStream extends Readable implements Submittable { handleError: Function handleEmptyQuery: Function - _result: any - - constructor(text: string, values?: any[], config: PgQueryStreamConfig = {}) { + public constructor(text: string, values?: any[], config: QueryStreamConfig = {}) { const { batchSize, highWaterMark = 100 } = config super({ objectMode: true, autoDestroy: true, highWaterMark: batchSize || highWaterMark }) @@ -40,20 +40,21 @@ class PgQueryStream extends Readable implements Submittable { this._result = this.cursor._result } - submit(connection: Connection): void { + public submit(connection: Connection): void { this.cursor.submit(connection) } - _destroy(_err: Error, cb: Function) { + public _destroy(_err: Error, cb: Function) { this.cursor.close((err?: Error) => { cb(err || _err) }) } // https://nodejs.org/api/stream.html#stream_readable_read_size_1 - _read(size: number) { - this.cursor.read(size, (err: Error, rows: any[], result: any) => { + public _read(size: number) { + this.cursor.read(size, (err: Error, rows: any[]) => { if (err) { + // https://nodejs.org/api/stream.html#stream_errors_while_reading this.destroy(err) } else { for (const row of rows) this.push(row) @@ -63,4 +64,4 @@ class PgQueryStream extends Readable implements Submittable { } } -export = PgQueryStream +export = QueryStream From 76a5316c2ad40e49d4e9d22b1072ece999acf7f0 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Thu, 15 Oct 2020 09:20:07 +0200 Subject: [PATCH 13/15] chore(): tests to import from src instead of dist --- packages/pg-query-stream/test/async-iterator.ts | 2 +- packages/pg-query-stream/test/client-options.ts | 2 +- packages/pg-query-stream/test/close.ts | 2 +- packages/pg-query-stream/test/concat.ts | 3 +-- packages/pg-query-stream/test/config.ts | 2 +- packages/pg-query-stream/test/empty-query.ts | 3 +-- packages/pg-query-stream/test/error.ts | 2 +- packages/pg-query-stream/test/fast-reader.ts | 2 +- packages/pg-query-stream/test/instant.ts | 2 +- packages/pg-query-stream/test/issue-3.ts | 2 +- packages/pg-query-stream/test/passing-options.ts | 2 +- packages/pg-query-stream/test/pauses.ts | 2 +- packages/pg-query-stream/test/slow-reader.ts | 2 +- packages/pg-query-stream/test/stream-tester-timestamp.ts | 2 +- packages/pg-query-stream/test/stream-tester.ts | 2 +- 15 files changed, 15 insertions(+), 17 deletions(-) diff --git a/packages/pg-query-stream/test/async-iterator.ts b/packages/pg-query-stream/test/async-iterator.ts index ed8dbbfed..06539d124 100644 --- a/packages/pg-query-stream/test/async-iterator.ts +++ b/packages/pg-query-stream/test/async-iterator.ts @@ -1,4 +1,4 @@ -import QueryStream from '../dist' +import QueryStream from '../src' import pg from 'pg' import assert from 'assert' diff --git a/packages/pg-query-stream/test/client-options.ts b/packages/pg-query-stream/test/client-options.ts index 75ce8d367..6646347fb 100644 --- a/packages/pg-query-stream/test/client-options.ts +++ b/packages/pg-query-stream/test/client-options.ts @@ -1,6 +1,6 @@ import pg from 'pg' import assert from 'assert' -const QueryStream = require('../') +import QueryStream from '../src' describe('client options', function () { it('uses custom types from client config', function (done) { diff --git a/packages/pg-query-stream/test/close.ts b/packages/pg-query-stream/test/close.ts index f197f604f..97e4627d9 100644 --- a/packages/pg-query-stream/test/close.ts +++ b/packages/pg-query-stream/test/close.ts @@ -1,6 +1,6 @@ import assert from 'assert' import concat from 'concat-stream' -import QueryStream from '../' +import QueryStream from '../src' import helper from './helper' if (process.version.startsWith('v8.')) { diff --git a/packages/pg-query-stream/test/concat.ts b/packages/pg-query-stream/test/concat.ts index fe4cd6ddc..980038578 100644 --- a/packages/pg-query-stream/test/concat.ts +++ b/packages/pg-query-stream/test/concat.ts @@ -2,8 +2,7 @@ import assert from 'assert' import concat from 'concat-stream' import through from 'through' import helper from './helper' - -const QueryStream = require('../') +import QueryStream from '../src' helper('concat', function (client) { it('concats correctly', function (done) { diff --git a/packages/pg-query-stream/test/config.ts b/packages/pg-query-stream/test/config.ts index 73be7364b..024b3d129 100644 --- a/packages/pg-query-stream/test/config.ts +++ b/packages/pg-query-stream/test/config.ts @@ -1,5 +1,5 @@ import assert from 'assert' -import QueryStream from '../' +import QueryStream from '../src' describe('stream config options', () => { // this is mostly for backwards compatibility. diff --git a/packages/pg-query-stream/test/empty-query.ts b/packages/pg-query-stream/test/empty-query.ts index 76c8d52b6..68f137fe0 100644 --- a/packages/pg-query-stream/test/empty-query.ts +++ b/packages/pg-query-stream/test/empty-query.ts @@ -1,6 +1,5 @@ -import assert from 'assert' import helper from './helper' -import QueryStream from '../' +import QueryStream from '../src' helper('empty-query', function (client) { it('handles empty query', function (done) { diff --git a/packages/pg-query-stream/test/error.ts b/packages/pg-query-stream/test/error.ts index d9dd8a86a..c92cd0091 100644 --- a/packages/pg-query-stream/test/error.ts +++ b/packages/pg-query-stream/test/error.ts @@ -1,6 +1,6 @@ import assert from 'assert' import helper from './helper' -import QueryStream from '../' +import QueryStream from '../src' helper('error', function (client) { it('receives error on stream', function (done) { diff --git a/packages/pg-query-stream/test/fast-reader.ts b/packages/pg-query-stream/test/fast-reader.ts index 7f1a2ba0c..5c0c0214a 100644 --- a/packages/pg-query-stream/test/fast-reader.ts +++ b/packages/pg-query-stream/test/fast-reader.ts @@ -1,6 +1,6 @@ import assert from 'assert' import helper from './helper' -import QueryStream from '../' +import QueryStream from '../src' helper('fast reader', function (client) { it('works', function (done) { diff --git a/packages/pg-query-stream/test/instant.ts b/packages/pg-query-stream/test/instant.ts index d85771404..da4fcad9e 100644 --- a/packages/pg-query-stream/test/instant.ts +++ b/packages/pg-query-stream/test/instant.ts @@ -1,7 +1,7 @@ import helper from './helper' import assert from 'assert' import concat from 'concat-stream' -import QueryStream from '../' +import QueryStream from '../src' helper('instant', function (client) { it('instant', function (done) { diff --git a/packages/pg-query-stream/test/issue-3.ts b/packages/pg-query-stream/test/issue-3.ts index 9e1594619..8c2c04455 100644 --- a/packages/pg-query-stream/test/issue-3.ts +++ b/packages/pg-query-stream/test/issue-3.ts @@ -1,5 +1,5 @@ import pg from 'pg' -import QueryStream from '../' +import QueryStream from '../src' describe('end semantics race condition', function () { before(function (done) { diff --git a/packages/pg-query-stream/test/passing-options.ts b/packages/pg-query-stream/test/passing-options.ts index 870cb62a6..7aa924a04 100644 --- a/packages/pg-query-stream/test/passing-options.ts +++ b/packages/pg-query-stream/test/passing-options.ts @@ -1,6 +1,6 @@ import assert from 'assert' import helper from './helper' -import QueryStream from '../' +import QueryStream from '../src' helper('passing options', function (client) { it('passes row mode array', function (done) { diff --git a/packages/pg-query-stream/test/pauses.ts b/packages/pg-query-stream/test/pauses.ts index e67704293..daf8347af 100644 --- a/packages/pg-query-stream/test/pauses.ts +++ b/packages/pg-query-stream/test/pauses.ts @@ -2,7 +2,7 @@ import helper from './helper' import concat from 'concat-stream' import tester from 'stream-tester' import JSONStream from 'JSONStream' -import QueryStream from '../' +import QueryStream from '../src' helper('pauses', function (client) { it('pauses', function (done) { diff --git a/packages/pg-query-stream/test/slow-reader.ts b/packages/pg-query-stream/test/slow-reader.ts index 962d55995..a62c0c20c 100644 --- a/packages/pg-query-stream/test/slow-reader.ts +++ b/packages/pg-query-stream/test/slow-reader.ts @@ -1,5 +1,5 @@ import helper from './helper' -import QueryStream from '../' +import QueryStream from '../src' import concat from 'concat-stream' import { Transform } from 'stream' diff --git a/packages/pg-query-stream/test/stream-tester-timestamp.ts b/packages/pg-query-stream/test/stream-tester-timestamp.ts index a7a87b114..9819ba491 100644 --- a/packages/pg-query-stream/test/stream-tester-timestamp.ts +++ b/packages/pg-query-stream/test/stream-tester-timestamp.ts @@ -1,5 +1,5 @@ import helper from './helper' -import QueryStream from '../' +import QueryStream from '../src' import spec from 'stream-spec' import assert from 'assert' diff --git a/packages/pg-query-stream/test/stream-tester.ts b/packages/pg-query-stream/test/stream-tester.ts index ee67bd6ea..01c68275c 100644 --- a/packages/pg-query-stream/test/stream-tester.ts +++ b/packages/pg-query-stream/test/stream-tester.ts @@ -1,6 +1,6 @@ import spec from 'stream-spec' import helper from './helper' -import QueryStream from '../' +import QueryStream from '../src' helper('stream tester', function (client) { it('passes stream spec', function (done) { From 9463877fa843d90fec6a6a960e493284c5ae244a Mon Sep 17 00:00:00 2001 From: chyzwar Date: Mon, 2 Nov 2020 20:56:40 +0100 Subject: [PATCH 14/15] chore(): remove prettier from peer deps: --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 490ee1350..d87548d6d 100644 --- a/package.json +++ b/package.json @@ -27,9 +27,6 @@ "prettier": "2.1.2", "typescript": "^4.0.3" }, - "optionalDependencies": { - "prettier": "2.0.4" - }, "prettier": { "semi": false, "printWidth": 120, From 3b569f83fef1b87f74a38f4209fefdff1f939478 Mon Sep 17 00:00:00 2001 From: chyzwar Date: Tue, 3 Nov 2020 08:59:31 +0100 Subject: [PATCH 15/15] chore(): update lock file --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index b177a2cc3..a9273e00c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4944,10 +4944,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.4.tgz#2d1bae173e355996ee355ec9830a7a1ee05457ef" - integrity sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w== +prettier@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" + integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== process-nextick-args@~2.0.0: version "2.0.1"