diff --git a/extensions/npm/src/npmView.ts b/extensions/npm/src/npmView.ts index 2df1e9a8b168fda9a07851c55dbbca76a2fe5654..3e3c3743cbd40baa8b55559bf83b8621e77da5f7 100644 --- a/extensions/npm/src/npmView.ts +++ b/extensions/npm/src/npmView.ts @@ -90,8 +90,15 @@ class NpmScript extends TreeItem { } } +class NoScripts extends TreeItem { + constructor() { + super(localize('noScripts', 'No scripts found'), TreeItemCollapsibleState.None); + this.contextValue = 'noscripts'; + } +} + export class NpmScriptsTreeDataProvider implements TreeDataProvider { - private taskTree: Folder[] | PackageJSON[] | null = null; + private taskTree: Folder[] | PackageJSON[] | NoScripts[] | null = null; private extensionContext: ExtensionContext; private _onDidChangeTreeData: EventEmitter = new EventEmitter(); readonly onDidChangeTreeData: Event = this._onDidChangeTreeData.event; @@ -263,6 +270,9 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider { if (element instanceof NpmScript) { return element.package; } + if (element instanceof NoScripts) { + return null; + } return null; } @@ -271,6 +281,9 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider { let tasks = await workspace.fetchTasks({ type: 'npm' }); if (tasks) { this.taskTree = this.buildTaskTree(tasks); + if (this.taskTree.length === 0) { + this.taskTree = [new NoScripts()]; + } } } if (element instanceof Folder) { @@ -282,6 +295,9 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider { if (element instanceof NpmScript) { return []; } + if (element instanceof NoScripts) { + return []; + } if (!element) { if (this.taskTree) { return this.taskTree; @@ -290,7 +306,7 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider { return []; } - private buildTaskTree(tasks: Task[]): Folder[] | PackageJSON[] { + private buildTaskTree(tasks: Task[]): Folder[] | PackageJSON[] | NoScripts[] { let folders: Map = new Map(); let packages: Map = new Map(); diff --git a/extensions/npm/src/tasks.ts b/extensions/npm/src/tasks.ts index 9256d54579c2a632d25cc8b102ecb692c80d38f5..7c730addbfe372dd4c373c5278ccae0baa3156dd 100644 --- a/extensions/npm/src/tasks.ts +++ b/extensions/npm/src/tasks.ts @@ -245,7 +245,7 @@ async function findAllScripts(buffer: string): Promise { let visitor: JSONVisitor = { onError(_error: ParseErrorCode, _offset: number, _length: number) { - // TODO inform user about the parse error + // TODO: inform user about the parse error }, onObjectEnd() { if (inScripts) {