vscode-todo-plus
Version:
Manage todo lists with ease. Powerful, easy to use and customizable.
997 lines (996 loc) • 30.1 kB
JSON
{
"name": "vscode-todo-plus",
"displayName": "Todo+",
"description": "Manage todo lists with ease. Powerful, easy to use and customizable.",
"icon": "resources/logo/logo-128x128.png",
"version": "4.11.4",
"license": "MIT",
"main": "out/extension.js",
"publisher": "fabiospampinato",
"activationEvents": [
"*"
],
"contributes": {
"languages": [
{
"id": "todo",
"aliases": [
"Todo",
"Todos",
"Task",
"Tasks"
],
"extensions": [
"TODO",
"todolist.txt",
".todo",
".todos",
".task",
".tasks",
".taskpaper"
]
}
],
"grammars": [
{
"language": "todo",
"scopeName": "text.todo",
"path": "./syntax/grammar.tmLanguage"
}
],
"configurationDefaults": {
"[todo]": {
"editor.quickSuggestions": false
}
},
"configuration": {
"type": "object",
"title": "Todo - Configuration",
"properties": {
"todo.file.name": {
"type": "string",
"description": "Todo file name. Other supported names are: `*.todo`, `*.todos`, `*.task`, `*.tasks`, `*.taskpaper` and `todolist.txt`",
"default": "TODO"
},
"todo.file.defaultContent": {
"type": "string",
"description": "New todo files default content",
"default": "\nTodo:\n ☐ Item\n"
},
"todo.file.include": {
"type": "array",
"items": {
"type": "string"
},
"description": "Globs to use for including files",
"default": [
"**/TODO",
"**/*.todo",
"**/*.todos",
"**/*.task",
"**/*.tasks",
"**/*.taskpaper",
"**/todolist.txt"
]
},
"todo.file.exclude": {
"type": "array",
"items": {
"type": "string"
},
"description": "Globs to use for excluding files",
"default": [
"**/.!(todo|todos|task|tasks)/**",
"**/_output/**",
"**/bower_components/**",
"**/build/**",
"**/dist/**",
"**/node_modules/**",
"**/out/**",
"**/output/**",
"**/release/**",
"**/releases/**",
"**/static/**",
"**/target/**",
"**/third_party/**",
"**/vendor/**"
]
},
"todo.file.view.expanded": {
"type": "boolean",
"description": "Start the tree in an expanded state",
"default": true
},
"todo.indentation": {
"type": "string",
"description": "String used for indentation",
"default": " "
},
"todo.symbols.box": {
"type": "string",
"description": "Todo box string",
"default": "☐"
},
"todo.symbols.done": {
"type": "string",
"description": "Todo done string",
"default": "✔"
},
"todo.symbols.cancelled": {
"type": "string",
"description": "Todo cancelled string",
"default": "✘"
},
"todo.colors.done": {
"type": "string",
"description": "Done todo color",
"default": "#a6e22e"
},
"todo.colors.cancelled": {
"type": "string",
"description": "Cancelled todo color",
"default": "#f92672"
},
"todo.colors.code": {
"type": "string",
"description": "Code color",
"default": "#fd971f"
},
"todo.colors.comment": {
"type": "string",
"description": "Comment color",
"default": "#75715e"
},
"todo.colors.project": {
"type": "string",
"description": "Project color",
"default": "#66d9ef"
},
"todo.colors.projectStatistics": {
"type": "string",
"description": "Project statistics color",
"default": "#4694a3"
},
"todo.colors.tag": {
"type": "string",
"description": "Tag color",
"default": "#e6db74"
},
"todo.colors.tags.background": {
"type": "array",
"items": {
"type": "string"
},
"description": "Special tags' background colors",
"default": [
"#e54545",
"#e59f45",
"#e5d145",
"#ae81ff"
]
},
"todo.colors.tags.foreground": {
"type": "array",
"items": {
"type": "string"
},
"description": "Special tags' foreground colors",
"default": [
"#000000",
"#000000",
"#000000",
"#000000"
]
},
"todo.colors.types": {
"type": "object",
"description": "Object mapping todo types to their color",
"default": {
"TODO": "#ffcc00",
"FIXME": "#cc0000",
"FIX": "#cc0000",
"BUG": "#cc0000",
"UGLY": "#cc0000",
"DEBUG": "#cc0000",
"HACK": "#cc0000",
"REVIEW": "#00ccff",
"OPTIMIZE": "#00ccff",
"TSC": "#00ccff",
"NOTE": "#cc00cc",
"IDEA": "#cc00cc"
}
},
"todo.colors.dark": {
"type": "object",
"description": "Colors for dark themes",
"properties": {
"done": {
"type": "string"
},
"cancelled": {
"type": "string"
},
"code": {
"type": "string"
},
"comment": {
"type": "string"
},
"project": {
"type": "string"
},
"projectStatistics": {
"type": "string"
},
"tag": {
"type": "string"
},
"tags": {
"type": "object",
"properties": {
"background": {
"type": "array"
},
"foreground": {
"type": "array"
}
}
},
"types": {
"type": "object"
}
},
"default": {}
},
"todo.colors.light": {
"type": "object",
"description": "Colors for light themes",
"properties": {
"done": {
"type": "string"
},
"cancelled": {
"type": "string"
},
"code": {
"type": "string"
},
"comment": {
"type": "string"
},
"project": {
"type": "string"
},
"projectStatistics": {
"type": "string"
},
"tag": {
"type": "string"
},
"tags": {
"type": "object",
"properties": {
"background": {
"type": "array"
},
"foreground": {
"type": "array"
}
}
},
"types": {
"type": "object"
}
},
"default": {}
},
"todo.tags.names": {
"type": "array",
"items": {
"type": "string"
},
"description": "Special tags' names",
"default": [
"critical",
"high",
"low",
"today"
]
},
"todo.tags.namesInference": {
"type": "boolean",
"description": "Infer commonly used tags' names",
"default": true
},
"todo.archive.name": {
"type": "string",
"description": "Name of the special \"Archive\" project",
"default": "Archive"
},
"todo.archive.remove.emptyProjects": {
"type": "boolean",
"description": "Remove projects without todos",
"default": true
},
"todo.archive.remove.emptyLines": {
"type": "number",
"description": "Remove extra empty lines, keeping no more than `emptyLinesThreshold` consecutive empty lines",
"default": 1
},
"todo.archive.project.enabled": {
"type": "boolean",
"description": "Enable the @project tag",
"default": true
},
"todo.archive.project.separator": {
"type": "string",
"description": "String used for joining multiple projects",
"default": "."
},
"todo.archive.sortByDate": {
"type": "boolean",
"description": "Sort lines by finished date",
"default": false
},
"todo.formatting.enabled": {
"type": "boolean",
"description": "Enable markdown-like formatting",
"default": true
},
"todo.timekeeping.created.enabled": {
"type": "boolean",
"description": "Enable the @created tag",
"default": false
},
"todo.timekeeping.created.time": {
"type": "boolean",
"description": "Insert the time inside the @created tag",
"default": true
},
"todo.timekeeping.created.format": {
"type": "string",
"description": "Format used for displaying time inside @created",
"default": "YY-MM-DD HH:mm"
},
"todo.timekeeping.started.time": {
"type": "boolean",
"description": "Insert the time inside the @started tag",
"default": true
},
"todo.timekeeping.started.format": {
"type": "string",
"description": "Format used for displaying time inside @started",
"default": "YY-MM-DD HH:mm"
},
"todo.timekeeping.finished.enabled": {
"type": "boolean",
"description": "Enable the @done/cancelled tag. It's always enabled if you explicitly start a todo or if you use only 1 symbol",
"default": true
},
"todo.timekeeping.finished.time": {
"type": "boolean",
"description": "Insert the time inside the @done/cancelled tag",
"default": true
},
"todo.timekeeping.finished.format": {
"type": "string",
"description": "Format used for displaying time inside @done/cancelled",
"default": "YY-MM-DD HH:mm"
},
"todo.timekeeping.elapsed.enabled": {
"type": "boolean",
"description": "Enable the @lasted/wasted tag",
"default": true
},
"todo.timekeeping.elapsed.format": {
"type": "string",
"enum": [
"long",
"short",
"short-compact",
"clock"
],
"description": "Format used for displaying time diff inside @lasted/wasted",
"default": "short-compact"
},
"todo.timekeeping.estimate.format": {
"type": "string",
"enum": [
"long",
"short",
"short-compact",
"clock"
],
"description": "Format used for the `[est]` token",
"default": "short-compact"
},
"todo.timer.statusbar.enabled": {
"type": [
"boolean",
"string"
],
"enum": [
"estimate"
],
"description": "Show a timer for started todos in the statusbar",
"default": true
},
"todo.timer.statusbar.alignment": {
"type": "string",
"description": "Should the item be placed to the left or right?",
"default": "left"
},
"todo.timer.statusbar.color": {
"type": "string",
"description": "The foreground color for this item",
"default": ""
},
"todo.timer.statusbar.priority": {
"type": "boolean",
"description": "The priority of this item. Higher value means the item should be shown more to the left",
"default": -10
},
"todo.statistics.project.enabled": {
"type": [
"boolean",
"string"
],
"description": "Show statistics next to a project, boolean or JS expression",
"default": "global.projects < 100 && project.pending > 0"
},
"todo.statistics.project.text": {
"type": "string",
"description": "Template used for rendering the text",
"default": "([pending]) [est]"
},
"todo.statistics.statusbar.enabled": {
"type": [
"boolean",
"string"
],
"description": "Show statistics in the statusbar, boolean or JS expression",
"default": "global.all > 0"
},
"todo.statistics.statusbar.ignoreArchive": {
"type": "boolean",
"description": "Ignore the archive when rendering statistics in the statusbar",
"default": true
},
"todo.statistics.statusbar.alignment": {
"type": "string",
"description": "Should the item be placed to the left or right?",
"default": "left"
},
"todo.statistics.statusbar.color": {
"type": "string",
"description": "The foreground color for this item",
"default": ""
},
"todo.statistics.statusbar.command": {
"type": "string",
"description": "Command to execute on click",
"default": ""
},
"todo.statistics.statusbar.priority": {
"type": "number",
"description": "The priority of this item. Higher value means the item should be shown more to the left",
"default": -1
},
"todo.statistics.statusbar.text": {
"type": "string",
"description": "Template used for rendering the text",
"default": "$(check) [finished]/[all] ([percentage]%)"
},
"todo.statistics.statusbar.tooltip": {
"type": "string",
"description": "Template used for rendering the tooltip",
"default": "[pending] Pending - [done] Done - [cancelled] Cancelled"
},
"todo.embedded.regex": {
"type": "string",
"description": "Regex used for finding embedded todos, requires double escaping",
"default": "(?:<!-- *)?(?:#|//|/\\*+|<!--|--|\\* @|\\{!|\\{\\{!--|\\{\\{!) *(TODO|FIXME|FIX|BUG|UGLY|HACK|NOTE|IDEA|REVIEW|DEBUG|OPTIMIZE)(?:\\s*\\([^)]+\\))?:?(?!\\w)(?: *-->| *\\*/| *!}| *--}}| *}}|(?= *(?:[^:]//|/\\*+|<!--|@|--|\\{!|\\{\\{!--|\\{\\{!))|((?: +[^\\n@]*?)(?= *(?:[^:]//|/\\*+|<!--|@|--(?!>)|\\{!|\\{\\{!--|\\{\\{!))|(?: +[^@\\n]+)?))"
},
"todo.embedded.regexFlags": {
"type": "string",
"description": "Regex flags to use",
"default": "gi"
},
"todo.embedded.include": {
"type": "array",
"description": "Globs to use for including files",
"default": [
"**/*"
]
},
"todo.embedded.exclude": {
"type": "array",
"description": "Globs to use for excluding files",
"default": [
"**/.*",
"**/.*/**",
"**/_output/**",
"**/bower_components/**",
"**/build/**",
"**/dist/**",
"**/node_modules/**",
"**/out/**",
"**/output/**",
"**/release/**",
"**/releases/**",
"**/static/**",
"**/target/**",
"**/third_party/**",
"**/vendor/**",
"**/*.min.*",
"**/*.map",
"**/*.{3ds,3g2,3gp,7z,a,aac,adp,ai,aif,aiff,alz,ape,apk,ar,arj,asf,au,avi,bak,baml,bh,bin,bk,bmp,btif,bz2,bzip2,cab,caf,cgm,class,cmx,cpio,cr2,csv,cur,dat,dcm,deb,dex,djvu,dll,dmg,dng,doc,docm,docx,dot,dotm,dra,DS_Store,dsk,dts,dtshd,dvb,dwg,dxf,ecelp4800,ecelp7470,ecelp9600,egg,eol,eot,epub,exe,f4v,fbs,fh,fla,flac,fli,flv,fpx,fst,fvt,g3,gif,graffle,gz,gzip,h261,h263,h264,icns,ico,ief,img,ipa,iso,jar,jpeg,jpg,jpgv,jpm,jxr,key,ktx,lha,lib,lvp,lz,lzh,lzma,lzo,m3u,m4a,m4v,mar,mdi,mht,mid,midi,mj2,mka,mkv,mmr,mng,mobi,mov,movie,mp3,mp4,mp4a,mpeg,mpg,mpga,mxu,nef,npx,numbers,o,oga,ogg,ogv,otf,pages,pbm,pcx,pdb,pdf,pea,pgm,pic,png,pnm,pot,potm,potx,ppa,ppam,ppm,pps,ppsm,ppsx,ppt,pptm,pptx,psd,pya,pyc,pyo,pyv,qt,rar,ras,raw,resources,rgb,rip,rlc,rmf,rmvb,rtf,rz,s3m,s7z,scpt,sgi,shar,sil,sketch,slk,smv,so,sub,swf,tar,tbz,tbz2,tga,tgz,thmx,tif,tiff,tlz,ttc,ttf,txz,udf,uvh,uvi,uvm,uvp,uvs,uvu,viv,vob,war,wav,wax,wbmp,wdp,weba,webm,webp,whl,wim,wm,wma,wmv,wmx,woff,woff2,wvx,xbm,xif,xla,xlam,xls,xlsb,xlsm,xlsx,xlt,xltm,xltx,xm,xmind,xpi,xpm,xwd,xz,z,zip,zipx}"
]
},
"todo.embedded.provider": {
"type": "string",
"enum": [
"javascript",
"ag",
"rg"
],
"description": "The provider to use when searching for embedded todos",
"default": ""
},
"todo.embedded.providers.ag.regex": {
"type": "string",
"description": "Regex used by ag, requires double escaping",
"default": "(?:#|//|/\\*+|<!--|--|\\* @|\\{!|\\{\\{!--|\\{\\{!) *(TODO|FIXME|FIX|BUG|UGLY|HACK|NOTE|IDEA|REVIEW|DEBUG|OPTIMIZE)"
},
"todo.embedded.providers.ag.args": {
"type": "string",
"description": "Extra arguments to pass to ag",
"default": [
"--ignore-case"
]
},
"todo.embedded.providers.rg.regex": {
"type": "string",
"description": "Regex used by rg, requires double escaping",
"default": "(?:#|//|/\\*+|<!--|--|\\* @|\\{!|\\{\\{!--|\\{\\{!) *(TODO|FIXME|FIX|BUG|UGLY|HACK|NOTE|IDEA|REVIEW|DEBUG|OPTIMIZE)"
},
"todo.embedded.providers.rg.args": {
"type": "string",
"description": "Extra arguments to pass to rg",
"default": [
"--ignore-case"
]
},
"todo.embedded.file.wholeLine": {
"type": "boolean",
"description": "Show the whole line",
"default": true
},
"todo.embedded.file.groupByRoot": {
"type": "boolean",
"description": "Group embedded todos by workspace root",
"default": true
},
"todo.embedded.file.groupByType": {
"type": "boolean",
"description": "Group embedded todos by type",
"default": true
},
"todo.embedded.file.groupByFile": {
"type": "boolean",
"description": "Group embedded todos by file",
"default": true
},
"todo.embedded.view.wholeLine": {
"type": "boolean",
"description": "Show the whole line",
"default": false
},
"todo.embedded.view.groupByRoot": {
"type": "boolean",
"description": "Group embedded todos by workspace root",
"default": true
},
"todo.embedded.view.groupByType": {
"type": "boolean",
"description": "Group embedded todos by type",
"default": true
},
"todo.embedded.view.groupByFile": {
"type": "boolean",
"description": "Group embedded todos by file",
"default": true
},
"todo.embedded.view.expanded": {
"type": "boolean",
"description": "Start the tree in an expanded state",
"default": true
},
"todo.embedded.view.icons": {
"type": "boolean",
"description": "Show icons next to todos and types",
"default": true
}
}
},
"commands": [
{
"command": "todo.open",
"title": "Todo: Open"
},
{
"command": "todo.openEmbedded",
"title": "Todo: Open Embedded"
},
{
"command": "todo.toggleBox",
"title": "Todo: Toggle Box"
},
{
"command": "todo.toggleDone",
"title": "Todo: Toggle Done"
},
{
"command": "todo.toggleCancelled",
"title": "Todo: Toggle Cancelled"
},
{
"command": "todo.toggleStart",
"title": "Todo: Toggle Start"
},
{
"command": "todo.toggleTimer",
"title": "Todo: Toggle Timer"
},
{
"command": "todo.archive",
"title": "Todo: Archive"
},
{
"command": "todo.viewFilesOpen",
"title": "Open",
"icon": {
"light": "resources/icons/open_file_light.svg",
"dark": "resources/icons/open_file_dark.svg"
}
},
{
"command": "todo.viewFilesCollapse",
"title": "Collapse",
"icon": {
"light": "resources/icons/collapse_light.svg",
"dark": "resources/icons/collapse_dark.svg"
}
},
{
"command": "todo.viewFilesExpand",
"title": "Expand",
"icon": {
"light": "resources/icons/expand_light.svg",
"dark": "resources/icons/expand_dark.svg"
}
},
{
"command": "todo.viewEmbeddedCollapse",
"title": "Collapse",
"icon": {
"light": "resources/icons/collapse_light.svg",
"dark": "resources/icons/collapse_dark.svg"
}
},
{
"command": "todo.viewEmbeddedExpand",
"title": "Expand",
"icon": {
"light": "resources/icons/expand_light.svg",
"dark": "resources/icons/expand_dark.svg"
}
},
{
"command": "todo.viewEmbeddedFilter",
"title": "Filter",
"icon": {
"light": "resources/icons/filter_light.svg",
"dark": "resources/icons/filter_dark.svg"
}
},
{
"command": "todo.viewEmbeddedClearFilter",
"title": "Clear Filter",
"icon": {
"light": "resources/icons/clear_filter_light.svg",
"dark": "resources/icons/clear_filter_dark.svg"
}
},
{
"command": "todo.viewOpenFile",
"title": "Open"
},
{
"command": "todo.viewRevealTodo",
"title": "Open"
},
{
"command": "todo.editorToggleBox",
"title": "Toggle Box"
},
{
"command": "todo.editorToggleDone",
"title": "Toggle Done"
},
{
"command": "todo.editorToggleCancelled",
"title": "Toggle Cancelled"
},
{
"command": "todo.editorToggleStart",
"title": "Toggle Start"
},
{
"command": "todo.editorArchive",
"title": "Archive"
}
],
"keybindings": [
{
"command": "todo.toggleBox",
"key": "Ctrl+Enter",
"mac": "Cmd+Enter",
"when": "editorTextFocus && editorLangId == todo"
},
{
"command": "todo.toggleDone",
"key": "Alt+d",
"when": "editorTextFocus && editorLangId == todo"
},
{
"command": "todo.toggleCancelled",
"key": "Alt+c",
"when": "editorTextFocus && editorLangId == todo"
},
{
"command": "todo.toggleStart",
"key": "Alt+s",
"when": "editorTextFocus && editorLangId == todo"
},
{
"command": "todo.archive",
"key": "Shift+Ctrl+a",
"mac": "Shift+Cmd+a",
"when": "editorTextFocus && editorLangId == todo"
}
],
"views": {
"todo": [
{
"id": "todo.views.1files",
"name": "Files"
},
{
"id": "todo.views.2embedded",
"name": "Embedded"
}
]
},
"viewsContainers": {
"activitybar": [
{
"id": "todo",
"title": "Todo",
"icon": "resources/icons/activity_bar_logo.svg"
}
]
},
"menus": {
"commandPalette": [
{
"command": "todo.toggleBox",
"when": "editorLangId == todo"
},
{
"command": "todo.toggleCancelled",
"when": "editorLangId == todo"
},
{
"command": "todo.toggleDone",
"when": "editorLangId == todo"
},
{
"command": "todo.toggleStart",
"when": "editorLangId == todo"
},
{
"command": "todo.archive",
"when": "editorLangId == todo"
},
{
"command": "todo.viewFilesOpen",
"when": "false"
},
{
"command": "todo.viewFilesCollapse",
"when": "false"
},
{
"command": "todo.viewFilesExpand",
"when": "false"
},
{
"command": "todo.viewEmbeddedCollapse",
"when": "false"
},
{
"command": "todo.viewEmbeddedExpand",
"when": "false"
},
{
"command": "todo.viewEmbeddedFilter",
"when": "false"
},
{
"command": "todo.viewEmbeddedClearFilter",
"when": "false"
},
{
"command": "todo.viewOpenFile",
"when": "false"
},
{
"command": "todo.viewRevealTodo",
"when": "false"
},
{
"command": "todo.editorToggleBox",
"when": "false"
},
{
"command": "todo.editorToggleDone",
"when": "false"
},
{
"command": "todo.editorToggleCancelled",
"when": "false"
},
{
"command": "todo.editorToggleStart",
"when": "false"
},
{
"command": "todo.editorArchive",
"when": "false"
}
],
"editor/context": [
{
"command": "todo.editorToggleBox",
"group": "todo@1",
"when": "editorTextFocus && editorLangId == todo"
},
{
"command": "todo.editorToggleDone",
"group": "todo@2",
"when": "editorTextFocus && editorLangId == todo"
},
{
"command": "todo.editorToggleCancelled",
"group": "todo@3",
"when": "editorTextFocus && editorLangId == todo"
},
{
"command": "todo.editorToggleStart",
"group": "todo@4",
"when": "editorTextFocus && editorLangId == todo"
},
{
"command": "todo.editorArchive",
"group": "todo@5",
"when": "editorTextFocus && editorLangId == todo"
}
],
"view/title": [
{
"command": "todo.viewFilesOpen",
"when": "view == todo.views.1files && todo-files-open-button == true",
"group": "navigation@1"
},
{
"command": "todo.viewFilesCollapse",
"when": "view == todo.views.1files && todo-files-expanded == true",
"group": "navigation@2"
},
{
"command": "todo.viewFilesExpand",
"when": "view == todo.views.1files && todo-files-expanded == false",
"group": "navigation@2"
},
{
"command": "todo.viewEmbeddedCollapse",
"when": "view == todo.views.2embedded && todo-embedded-expanded == true",
"group": "navigation@2"
},
{
"command": "todo.viewEmbeddedExpand",
"when": "view == todo.views.2embedded && todo-embedded-expanded == false",
"group": "navigation@2"
},
{
"command": "todo.viewEmbeddedFilter",
"when": "view == todo.views.2embedded && todo-embedded-filtered == false",
"group": "navigation@1"
},
{
"command": "todo.viewEmbeddedClearFilter",
"when": "view == todo.views.2embedded && todo-embedded-filtered == true",
"group": "navigation@1"
}
],
"view/item/context": [
{
"command": "todo.viewOpenFile",
"when": "view =~ /todo\\.views/ && viewItem == file"
}
]
}
},
"scripts": {
"vscode:prepublish": "rm -rf out && webpack --mode production",
"publish": "vsce publish && npm publish",
"compile": "webpack --mode development",
"compile:watch": "webpack --mode development --watch",
"postinstall": "node ./node_modules/vscode/bin/install",
"test": "node ./node_modules/vscode/bin/test"
},
"bugs": {
"url": "https://github.com/fabiospampinato/vscode-todo-plus/issues"
},
"author": {
"name": "Fabio Spampinato",
"email": "spampinabio@gmail.com"
},
"repository": {
"type": "git",
"url": "https://github.com/fabiospampinato/vscode-todo-plus.git"
},
"engines": {
"vscode": "^1.25.0"
},
"keywords": [
"vscode",
"extension",
"todo",
"task",
"taskpaper",
"todos",
"tasks"
],
"categories": [
"Other"
],
"dependencies": {
"@types/node": "^10.12.8",
"absolute": "0.0.1",
"detect-indent": "^5.0.0",
"diff": "^3.5.0",
"execa": "^0.10.0",
"find-up": "^2.1.0",
"globby": "^8.0.1",
"lodash": "^4.17.11",
"memoize-decorator": "^1.0.2",
"micromatch": "^3.1.10",
"mkdirp": "^0.5.1",
"moment": "^2.22.2",
"moment-precise-range-plugin": "^1.2.4",
"pify": "^3.0.0",
"sha1": "^1.1.1",
"string-matches": "^1.0.2",
"sugar-date": "^2.0.4",
"to-time": "^1.0.2"
},
"devDependencies": {
"ts-loader": "^5.2.1",
"typescript": "^2.8.0",
"vscode": "^1.1.21",
"webpack": "^4.20.2",
"webpack-cli": "^3.1.2"
}
}