diff --git a/package-lock.json b/package-lock.json index 47cc6891..169a55bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -83,6 +83,7 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", @@ -231,6 +232,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -240,6 +242,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -258,6 +261,7 @@ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.28.6" @@ -294,6 +298,7 @@ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", @@ -326,6 +331,7 @@ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" @@ -1458,6 +1464,7 @@ "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } @@ -1466,6 +1473,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", "engines": { "node": ">=0.8" } @@ -1566,6 +1574,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } @@ -2195,6 +2204,7 @@ "resolved": "https://registry.npmjs.org/coveralls-next/-/coveralls-next-4.2.2.tgz", "integrity": "sha512-Tw1TKXV0+aEfOgRYBN97RtEZlrLxBiZKFkngsupONkJwy0uYQNbB6VfAEnGnOUa5WkW5sBhjGB2tWha6ULrYkw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "form-data": "4.0.4", "js-yaml": "4.1.0", @@ -2214,6 +2224,7 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -2254,6 +2265,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -2541,6 +2553,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -2902,7 +2915,8 @@ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "engines": [ "node >=0.6.0" - ] + ], + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -3314,6 +3328,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } @@ -3415,6 +3430,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3551,7 +3567,8 @@ "sshpk": "^1.18.0" }, "engines": { - "node": ">=0.10" + "node": ">=0.8", + "npm": ">=1.3.7" } }, "node_modules/ieee754": { @@ -3964,6 +3981,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -3974,7 +3992,8 @@ "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "license": "MIT" }, "node_modules/jsesc": { "version": "3.1.0", @@ -3997,7 +4016,8 @@ "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -5220,16 +5240,27 @@ "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", - "mime-types": "^2.1.35", + "mime-types": "~2.1.19", "oauth-sign": "~0.9.0", "qs": "~6.14.1", "safe-buffer": "^5.1.2", "socks-proxy-agent": "^8.0.5", "stream-length": "^1.0.2", - "uuid": "^8.3.2" + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" }, "engines": { - "node": ">= 16" + "node": ">= 6" + } + }, + "node_modules/postman-request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" } }, "node_modules/prelude-ls": { @@ -5262,6 +5293,7 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", "dependencies": { "punycode": "^2.3.1" }, @@ -5710,7 +5742,8 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/sax": { "version": "1.4.4", @@ -6050,6 +6083,7 @@ "version": "1.18.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -6322,6 +6356,19 @@ "node": ">=8.0" } }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/traverse-chain": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz", @@ -6375,6 +6422,7 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -6406,10 +6454,22 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "license": "Unlicense" }, "node_modules/type-check": { "version": "0.4.0", @@ -6564,6 +6624,7 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -6593,6 +6654,7 @@ "engines": [ "node >=0.6.0" ], + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -6602,7 +6664,8 @@ "node_modules/verror/node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" }, "node_modules/vscode-jsonrpc": { "version": "8.2.0", diff --git a/src/FileUtils.spec.ts b/src/FileUtils.spec.ts index fad9acef..11bf646c 100644 --- a/src/FileUtils.spec.ts +++ b/src/FileUtils.spec.ts @@ -6,6 +6,7 @@ import * as sinonActual from 'sinon'; import { SourceNode } from 'source-map'; import { fileUtils, standardizePath as s } from './FileUtils'; import { SourceMapManager } from './managers/SourceMapManager'; +import { logger } from './logging'; let sinon = sinonActual.createSandbox(); const rootDir = path.normalize(path.dirname(__dirname)); @@ -78,7 +79,7 @@ describe('FileUtils', () => { }); it('returns first result when multiple matches are found', async () => { - let stub = sinon.stub(console, 'warn').returns(undefined); + let stub = sinon.stub(logger, 'warn').returns(undefined); expect(await fileUtils.findPartialFileInDirectory('...lib.brs', 'SomeAppDir')).to.equal('source/lib1/lib.brs'); diff --git a/src/FileUtils.ts b/src/FileUtils.ts index 3a04d1f9..09c02abb 100644 --- a/src/FileUtils.ts +++ b/src/FileUtils.ts @@ -4,6 +4,7 @@ import * as glob from 'glob'; import * as path from 'path'; import { promisify } from 'util'; import { util as rokuDeployUtil } from 'roku-deploy'; +import { logger } from './logging'; const globp = promisify(glob); export class FileUtils { @@ -89,7 +90,7 @@ export class FileUtils { //TODO is there something more we should do about finding multiple matches? if (results.length > 1) { - console.warn( + logger.warn( `Found multiple paths in '${directoryPath}' that match '${partialFilePath}'. Returning the first result, but you should consider renaming files in longer file paths to something unique` ); } diff --git a/src/RendezvousTracker.ts b/src/RendezvousTracker.ts index 80a2dca9..273e9aa9 100644 --- a/src/RendezvousTracker.ts +++ b/src/RendezvousTracker.ts @@ -129,7 +129,7 @@ export class RendezvousTracker { } } catch (e) { //if there was an error pinging rendezvous, log the error but don't bring down the app - console.error('There was an error fetching rendezvous data', e?.stack); + this.logger.error('There was an error fetching rendezvous data', e?.stack); } } diff --git a/src/SceneGraphDebugCommandController.ts b/src/SceneGraphDebugCommandController.ts index b8dc90d6..00d6f937 100644 --- a/src/SceneGraphDebugCommandController.ts +++ b/src/SceneGraphDebugCommandController.ts @@ -292,7 +292,7 @@ export class SceneGraphDebugCommandController { this.removeConnection(); } catch (error) { this.removeConnection(); - console.log(error, this.connection); + this.logger.error(error, this.connection); } } } diff --git a/src/adapters/DebugProtocolAdapter.ts b/src/adapters/DebugProtocolAdapter.ts index b1f9fdc2..b14ee8b8 100644 --- a/src/adapters/DebugProtocolAdapter.ts +++ b/src/adapters/DebugProtocolAdapter.ts @@ -323,7 +323,7 @@ export class DebugProtocolAdapter { }); this.client.on('runtime-error', (data) => { - console.debug('hasRuntimeError!!', data); + this.logger.debug('hasRuntimeError!!', data); this.emit('runtime-error', { message: data.data.stopReasonDetail, errorCode: data.data.stopReason diff --git a/src/adapters/TelnetRequestPipeline.ts b/src/adapters/TelnetRequestPipeline.ts index 992b0b3e..28635905 100644 --- a/src/adapters/TelnetRequestPipeline.ts +++ b/src/adapters/TelnetRequestPipeline.ts @@ -302,9 +302,6 @@ export class TelnetCommand { public handleData(pipeline: TelnetRequestPipeline) { - if (this.deferred.isCompleted) { - console.log('stop here'); - } //get the first response const match = /Brightscript Debugger>\s*/is.exec(pipeline.unhandledText); if (match) { diff --git a/src/bsc/threading/WorkerPool.ts b/src/bsc/threading/WorkerPool.ts index 58e770e8..9895b239 100644 --- a/src/bsc/threading/WorkerPool.ts +++ b/src/bsc/threading/WorkerPool.ts @@ -73,9 +73,9 @@ export class WorkerPool { public dispose() { for (const worker of this.allWorkers) { try { - void worker.terminate().catch((e) => console.error(e)); + void worker.terminate().catch((e) => this.logger.error(e)); } catch (e) { - console.error(e); + this.logger.error(e); } } this.allWorkers = []; diff --git a/src/cli.ts b/src/cli.ts index 766b4394..c29eecd0 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,6 +1,8 @@ #!/usr/bin/env node import * as yargs from 'yargs'; import { BrightScriptDebugSession } from './debugSession/BrightScriptDebugSession'; +import defaultLogger from '@rokucommunity/logger'; +import { logger, removeConsoleLogger } from './logging'; let options = yargs .usage('$0', 'roku-debug, support for debugging Roku devices via telnet or debug protocol') @@ -10,6 +12,15 @@ let options = yargs (function main() { if (options.dap) { + removeConsoleLogger() + //pipe all log messages to stderror when in DAP mode, since stdout is used for DAP communication + defaultLogger.transports.unshift({ + pipe(message) { + const text = message.logger.formatMessage(message); + process.stderr.write(text + '\n'); + } + }); + BrightScriptDebugSession.run(BrightScriptDebugSession); } else { throw new Error('Not supported'); diff --git a/src/debugProtocol/DebugProtocolClientReplaySession.ts b/src/debugProtocol/DebugProtocolClientReplaySession.ts index 54d8c6ea..595df9cf 100644 --- a/src/debugProtocol/DebugProtocolClientReplaySession.ts +++ b/src/debugProtocol/DebugProtocolClientReplaySession.ts @@ -5,6 +5,7 @@ import { DebugProtocolServer } from './server/DebugProtocolServer'; import * as Net from 'net'; import { ActionQueue } from '../managers/ActionQueue'; import { IOPortOpenedUpdate, isIOPortOpenedUpdate } from './events/updates/IOPortOpenedUpdate'; +import { logger } from '../logging'; export class DebugProtocolClientReplaySession { constructor(options: { @@ -98,7 +99,7 @@ export class DebugProtocolClientReplaySession { }); this.client.on('io-output', (data) => { - console.log(data); + logger.log(data); void this.clientProcess(); }); @@ -129,7 +130,7 @@ export class DebugProtocolClientReplaySession { } private openIOPort() { - console.log(`Spinning up mock IO socket on port ${this.ioPort}`); + logger.log(`Spinning up mock IO socket on port ${this.ioPort}`); return new Promise((resolve) => { const server = new Net.Server({}); @@ -206,7 +207,7 @@ export class DebugProtocolClientReplaySession { this.server = client; //anytime we receive incoming data from the client client.on('data', (data) => { - console.log('server got:', JSON.stringify(data.toJSON().data)); + logger.log('server got:', JSON.stringify(data.toJSON().data)); void this.serverProcess(data); }); }); @@ -235,7 +236,7 @@ export class DebugProtocolClientReplaySession { let serverProcesIdx = this.serverProcessIdx++; await this.serverActionQueue.run(async () => { try { - console.log(serverProcesIdx); + logger.log(serverProcesIdx); this.serverSync.pushActual(data); if (this.serverSync.areInSync) { this.serverSync.clear(); @@ -250,7 +251,7 @@ export class DebugProtocolClientReplaySession { } this.finalizeIfDone(); } catch (e) { - console.error('serverProcess failed to handle buffer', e); + logger.error('serverProcess failed to handle buffer', e); } return true; }); diff --git a/src/logging.ts b/src/logging.ts index 4bb0f426..e47256f5 100644 --- a/src/logging.ts +++ b/src/logging.ts @@ -1,4 +1,4 @@ -import { default as defaultLogger } from '@rokucommunity/logger'; +import { ConsoleTransport, default as defaultLogger } from '@rokucommunity/logger'; import type { Logger } from '@rokucommunity/logger'; import { QueuedTransport } from '@rokucommunity/logger/dist/transports/QueuedTransport'; import { FileTransport } from '@rokucommunity/logger/dist/transports/FileTransport'; @@ -26,6 +26,11 @@ logger.addTransport(debugServerLogOutputEventTransport); logger.addTransport(fileTransport); logger.logLevel = 'log'; + +//disconnect the ConsoleLogger transport when requested (used primarily when in --dap mode in the CLI) +export function removeConsoleLogger() { + logger.transports = logger.transports.filter(transport => !(transport?.constructor?.name === ConsoleTransport.name)); +} const createLogger = logger.createLogger.bind(logger) as typeof Logger.prototype.createLogger; export { logger, createLogger }; diff --git a/src/managers/ProjectManager.ts b/src/managers/ProjectManager.ts index 71928eaa..43e2a453 100644 --- a/src/managers/ProjectManager.ts +++ b/src/managers/ProjectManager.ts @@ -523,10 +523,10 @@ export class Project { .map(result => result.file); if (injectedFiles.length === 0) { - console.error(`WARNING: Unable to find an entry point for Tracker Task.\nPlease make sure that you have the following comment in your BrightScript project: "\' ${Project.RALE_TRACKER_ENTRY}"`); + this.logger.error(`WARNING: Unable to find an entry point for Tracker Task.\nPlease make sure that you have the following comment in your BrightScript project: "\' ${Project.RALE_TRACKER_ENTRY}"`); } } catch (err) { - console.error(err); + this.logger.error(err); } } @@ -578,10 +578,10 @@ export class Project { .map(result => result.file); if (injectedFiles.length === 0) { - console.error(`WARNING: Unable to find an entry point for RDB.\nPlease make sure that you have the following comment in your BrightScript project: "\' ${Project.RDB_ODC_ENTRY}"`); + this.logger.error(`WARNING: Unable to find an entry point for RDB.\nPlease make sure that you have the following comment in your BrightScript project: "\' ${Project.RDB_ODC_ENTRY}"`); } } catch (err) { - console.error(err); + this.logger.error(err); } } diff --git a/src/util.ts b/src/util.ts index b0101371..a233302c 100644 --- a/src/util.ts +++ b/src/util.ts @@ -16,6 +16,7 @@ import { OutputEvent } from '@vscode/debugadapter'; import * as xml2js from 'xml2js'; import { isPromise } from 'util/types'; import type { Logger } from '@rokucommunity/logger'; +import { logger } from './logging'; const request = r as typeof requestType; class Util { @@ -519,7 +520,7 @@ class Util { //if this value is a promise, add a .catch to it so we don't bring down the app if (isPromise(value)) { value.catch(e => { - console.error('Unhandled promise during dispose', e); + logger.error('Unhandled promise during dispose', e); }); } }