[
  {
    "path": ".gitignore",
    "content": ".DS_Store\nnode_modules/\n/theme/\n"
  },
  {
    "path": ".vscode/launch.json",
    "content": "// A launch configuration that launches the extension inside a new window\n// Use IntelliSense to learn about possible attributes.\n// Hover to view descriptions of existing attributes.\n// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n{\n\t\"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"name\": \"Extension\",\n            \"type\": \"extensionHost\",\n            \"request\": \"launch\",\n            \"runtimeExecutable\": \"${execPath}\",\n            \"args\": [\n                \"--extensionDevelopmentPath=${workspaceFolder}\"\n            ]\n        }\n    ]\n}"
  },
  {
    "path": ".vscodeignore",
    "content": ".vscode/**\n.vscode-test/**\n.gitignore\nnode_modules/**\npackage-lock.json\nsrc/**\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [Unreleased]\n\n## [2.4.3] - 2021-07-06\n- Bundle size fix.\n\n## [2.4.2] - 2021-07-06\n- Fix Monochrome Dark Cool Gray theme uiTheme setting.\n\n## [2.4.1] - 2021-07-05\n- Fix focusBorder.\n\n## [2.4.0] - 2021-07-05\n- focusBorder, sash.hoverBorder, list.activeSelectionBackground, menubar.selectionBackground improved.\n- Monochrome Dark Cool Gray theme created.\n- Monochrome Light Cool Gray theme created.\n\n## [2.3.0] - 2020-07-21\n\n- editorHoverWidget.statusBarBackground value changed.\n- Monochrome Dark Amplified theme created.\n- Monochrome Light Amplified theme created.\n\n## [2.2.4] - 2020-07-19\n\n- Object transformation functionality improved.\n- Scheme generation steps improved.\n- Output of the warning scheme improved.\n\n## [2.2.3] - 2020-07-17\n\n### Added\n\n- Allowed transparency exceptions added.\n- Focus border transparency value changed.\n\n## [2.1.1] - 2020-07-15\n\n### Added\n\n- Monochrome build script created.\n- Monochrome Dark theme created.\n- Monochrome Light theme created.\n- Monochrome Dark Subtle theme created.\n- Monochrome Light Subtle theme created.\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 Ali Can YILDIZ\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n  <img src=\"./icon.png\" width=\"128\"/>\n</p>\n\n# Monochrome\n\nMonochrome is a monochromatic<sup>[1]</sup> theme collection for **Visual Studio Code**.\n\n1. Except for warning and error colors in the explorer panel, since it would be hard to tell the difference between them. They also helps to improve the productivity by annoying you when the colors disturbs the visual integrity of the monochromatic screen, so you can feel accomplishment and relief when you get rid of the problems.\n\n### Table of Content\n\n1. [Previews](#previews)\n2. [Base Colors](#base-colors)\n3. [Fine Tunings](#fine-tunings)\n4. [Suggested Settings](#suggested-settings)\n\n## Previews\n\nClick to enlarge the previews.\n\n|                       Name | Preview                                                                                                      |\n| -------------------------: | ------------------------------------------------------------------------------------------------------------ |\n|            Monochrome Dark | [<img src=\"./preview/monochrome-dark.png\" width=\"128\">](./preview/monochrome-dark.png)                       |\n|           Monochrome Light | [<img src=\"./preview/monochrome-light.png\" width=\"128\">](./preview/monochrome-light.png)                     |\n|     Monochrome Dark Subtle | [<img src=\"./preview/monochrome-dark-subtle.png\" width=\"128\">](./preview/monochrome-dark-subtle.png)         |\n|    Monochrome Light Subtle | [<img src=\"./preview/monochrome-light-subtle.png\" width=\"128\">](./preview/monochrome-light-subtle.png)       |\n|  Monochrome Dark Amplified | [<img src=\"./preview/monochrome-dark-amplified.png\" width=\"128\">](./preview/monochrome-dark-amplified.png)   |\n| Monochrome Light Amplified | [<img src=\"./preview/monochrome-light-amplified.png\" width=\"128\">](./preview/monochrome-light-amplified.png) |\n|  Monochrome Dark Cool Gray | [<img src=\"./preview/monochrome-dark-cool-gray.png\" width=\"128\">](./preview/monochrome-dark-cool-gray.png)   |\n| Monochrome Light Cool Gray | [<img src=\"./preview/monochrome-light-cool-gray.png\" width=\"128\">](./preview/monochrome-light-cool-gray.png) |\n\n## Base Colors\n\nAs one should be expecting from a _monochromatic_ color scheme, there isn't much of them. There is just **Background** and **Foreground**, rest of the color scheme generated by tweaking the alpha channel of the **Foreground**.\n\n|            Name | Foreground | Background |\n| --------------: | :--------: | :--------: |\n|            Dark |  #EBEBEB   |  #101010   |\n|           Light |  #101010   |  #EBEBEB   |\n|     Dark Subtle |  #F1F5F9   |  #0A1219   |\n|    Light Subtle |  #0A1219   |  #F1F5F9   |\n|  Dark Amplified |  #FFFFFF   |  #000000   |\n| Light Amplified |  #000000   |  #FFFFFF   |\n|  Dark Cool Gray |  #111827   |  #F9FAFB   |\n| Light Cool Gray |  #F9FAFB   |  #111827   |\n\n## Fine Tunings\n\nWith the help of the new generator script, you can easily modify an existing color scheme or create a new one.\n\nAs an example, let's say you want to increase the overall readability of the `monochrome-dark`, in order to do that, head over the `src/themes.js` file and find the theme definition of the scheme that you want to modify, then append the `amplifier: factor` line to the theme definition like in the example below, this will modify the **foreground multipliers** by the given amount.\n\n```javascript\n  theme({\n    name: \"monochrome-dark\",\n    background: \"#101010\",\n    foreground: \"#EBEBEB\",\n    amplifier: 1.5,\n  }),\n```\n\nYou can also override theme definitions either with a **foreground multiplier** or a color like in the example below.\n\n```javascript\n  theme({\n    name: \"monochrome-dark\",\n    background: \"#101010\",\n    foreground: \"#EBEBEB\",\n    override: {\n      color: {\n        \"badge.background\": 1,\n        \"badge.foreground\": 0,\n        \"editorLineNumber.foreground\": 0.10196078431372549,\n        \"button.background\": \"#FF0000\",\n      }\n    }\n  }),\n```\n\nRun the script below to automatically generate the themes on file modifications.\n\n```shell\n$ pnpm run start\n```\n\nRun the script below to build themes.\n\n```shell\n$ pnpm run build\n```\n\n## Suggested Settings\n\nYou can apply the settings below for a minimalist layout that fits well into the monochromatic screen.\n\n```json\n{\n  \"breadcrumbs.enabled\": false,\n  \"breadcrumbs.icons\": false,\n  \"editor.colorDecorators\": false,\n  \"editor.cursorBlinking\": \"solid\",\n  \"editor.cursorStyle\": \"block\",\n  \"editor.find.addExtraSpaceOnTop\": false,\n  \"editor.fontFamily\": \"'IBM Plex Mono', monospace\",\n  \"editor.fontSize\": 16,\n  \"editor.links\": false,\n  \"editor.minimap.enabled\": false,\n  \"editor.occurrencesHighlight\": false,\n  \"editor.renderLineHighlight\": \"all\",\n  \"editor.renderWhitespace\": \"none\",\n  \"editor.roundedSelection\": false,\n  \"editor.scrollbar.horizontal\": \"visible\",\n  \"editor.scrollbar.vertical\": \"visible\",\n  \"editor.selectionHighlight\": false,\n  \"editor.showFoldingControls\": \"always\",\n  \"terminal.integrated.fontFamily\": \"'IBM Plex Mono', monospace\",\n  \"terminal.integrated.fontWeight\": \"300\",\n  \"workbench.editor.showIcons\": false,\n  \"workbench.editor.tabCloseButton\": \"off\",\n  \"workbench.iconTheme\": null,\n  \"workbench.tree.indent\": 14,\n  \"workbench.tree.renderIndentGuides\": \"none\"\n}\n```\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"monochrome\",\n  \"displayName\": \"Monochrome\",\n  \"description\": \"Monochromatic theme collection, for those who seeks.\",\n  \"publisher\": \"anotherglitchinthematrix\",\n  \"version\": \"2.4.3\",\n  \"license\": \"MIT\",\n  \"icon\": \"icon.png\",\n  \"galleryBanner\": {\n    \"color\": \"#1a1a1a\",\n    \"theme\": \"dark\"\n  },\n  \"author\": {\n    \"name\": \"Ali Can YILDIZ\",\n    \"email\": \"anotherglitchinthematrix@gmail.com\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/anotherglitchinthematrix/monochrome.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/anotherglitchinthematrix/monochrome/issues\"\n  },\n  \"engines\": {\n    \"vscode\": \"^1.43.0\"\n  },\n  \"categories\": [\n    \"Themes\"\n  ],\n  \"keywords\": [\n    \"theme\",\n    \"light\",\n    \"dark\",\n    \"monochrome\",\n    \"minimal\",\n    \"minimalist\",\n    \"subtle\"\n  ],\n  \"contributes\": {\n    \"themes\": [\n      {\n        \"label\": \"Monochrome Dark\",\n        \"uiTheme\": \"vs-dark\",\n        \"path\": \"./theme/monochrome-dark.json\"\n      },\n      {\n        \"label\": \"Monochrome Light\",\n        \"uiTheme\": \"vs\",\n        \"path\": \"./theme/monochrome-light.json\"\n      },\n      {\n        \"label\": \"Monochrome Dark Subtle\",\n        \"uiTheme\": \"vs-dark\",\n        \"path\": \"./theme/monochrome-dark-subtle.json\"\n      },\n      {\n        \"label\": \"Monochrome Light Subtle\",\n        \"uiTheme\": \"vs\",\n        \"path\": \"./theme/monochrome-light-subtle.json\"\n      },\n      {\n        \"label\": \"Monochrome Dark Amplified\",\n        \"uiTheme\": \"vs-dark\",\n        \"path\": \"./theme/monochrome-dark-amplified.json\"\n      },\n      {\n        \"label\": \"Monochrome Light Amplified\",\n        \"uiTheme\": \"vs\",\n        \"path\": \"./theme/monochrome-light-amplified.json\"\n      },\n      {\n        \"label\": \"Monochrome Dark Cool Gray\",\n        \"uiTheme\": \"vs-dark\",\n        \"path\": \"./theme/monochrome-dark-cool-gray.json\"\n      },\n      {\n        \"label\": \"Monochrome Light Cool Gray\",\n        \"uiTheme\": \"vs\",\n        \"path\": \"./theme/monochrome-light-cool-gray.json\"\n      }\n    ]\n  },\n  \"devDependencies\": {\n    \"chroma-js\": \"^2.1.0\",\n    \"lodash.merge\": \"^4.6.2\",\n    \"nodemon\": \"^2.0.9\"\n  },\n  \"scripts\": {\n    \"start\": \"nodemon --watch src src/index.js\",\n    \"build\": \"node src/index.js\"\n  }\n}\n"
  },
  {
    "path": "preview/.gitkeep",
    "content": ""
  },
  {
    "path": "src/base.js",
    "content": "/**\n * Defines the base color scheme.\n *\n * @return {*} Copy of the base color scheme.\n */\nconst base = () => {\n  return {\n    colors: {\n      'activityBar.activeBorder': 0,\n      'activityBar.background': 0,\n      'activityBar.border': 0.0392156862745098,\n      'activityBar.foreground': 0.7490196078431373,\n      'activityBar.inactiveForeground': 0.23921568627450981,\n      'activityBarBadge.background': 0.3764705882352941,\n      'badge.background': 0.10196078431372549,\n      'badge.foreground': 0.7490196078431373,\n      'button.background': 0.09411764705882353,\n      'button.hoverBackground': 0.12156862745098039,\n      'checkbox.border': 0.0392156862745098,\n      'dart.closingLabels': 0.0784313725490196,\n      'debugIcon.breakpointCurrentStackframeForeground': 0.5686274509803921,\n      'debugIcon.breakpointDisabledForeground': 0.5686274509803921,\n      'debugIcon.breakpointForeground': 0.5686274509803921,\n      'debugIcon.breakpointStackframeForeground': 0.5686274509803921,\n      'debugIcon.breakpointUnverifiedForeground': 0.5686274509803921,\n      'debugIcon.continueForeground': 0.5686274509803921,\n      'debugIcon.disconnectForeground': 0.5686274509803921,\n      'debugIcon.pauseForeground': 0.5686274509803921,\n      'debugIcon.restartForeground': 0.5686274509803921,\n      'debugIcon.startForeground': 0.5686274509803921,\n      'debugIcon.stepBackForeground': 0.5686274509803921,\n      'debugIcon.stepIntoForeground': 0.5686274509803921,\n      'debugIcon.stepOutForeground': 0.5686274509803921,\n      'debugIcon.stepOverForeground': 0.5686274509803921,\n      'debugIcon.stopForeground': 0.5686274509803921,\n      'debugToolBar.background': 0,\n      'dropdown.background': 0,\n      'dropdown.foreground': 0.5686274509803921,\n      'editor.background': 0,\n      'editor.findMatchBackground': 0,\n      'editor.findMatchBorder': 0.5019607843137255,\n      'editor.findMatchHighlightBackground': 0,\n      'editor.findMatchHighlightBorder': 0.23921568627450981,\n      'editor.foldBackground': 0,\n      'editor.foreground': 0.7019607843137254,\n      'editor.hoverHighlightBackground': 0.058823529411764705,\n      'editor.lineHighlightBackground': 0.025,\n      'editor.selectionBackground': 0.058823529411764705,\n      'editorBracketMatch.background': 0,\n      'editorBracketMatch.border': 0.23921568627450981,\n      'editorCursor.foreground': 0.7019607843137254,\n      'editorError.foreground': 0.3607843137254902,\n      'editorGroup.border': 0.0392156862745098,\n      'editorGroupHeader.tabsBackground': 0,\n      'editorGroupHeader.tabsBorder': 0.0392156862745098,\n      'editorIndentGuide.activeBackground': 0.24,\n      'editorIndentGuide.background': 0.08,\n      'editorInfo.foreground': 0.3607843137254902,\n      'editorLightBulb.foreground': 0.5686274509803921,\n      'editorLineNumber.activeForeground': 0.25882352941176473,\n      'editorLineNumber.foreground': 0.10196078431372549,\n      'editorLink.activeForeground': 0.7490196078431373,\n      'editorOverviewRuler.border': 0.0392156862745098,\n      'editorRuler.foreground': 0.08,\n      'editorSuggestWidget.foreground': 0.3764705882352941,\n      'editorSuggestWidget.highlightForeground': 0.7490196078431373,\n      'editorWarning.foreground': 0.3607843137254902,\n      'editorWhitespace.foreground': 0.10196078431372549,\n      'editorWidget.background': 0,\n      'editorHoverWidget.statusBarBackground': 0,\n      'focusBorder': 0,\n      'gitDecoration.ignoredResourceForeground': 0.154,\n      'gitDecoration.addedResourceForeground': 0.752,\n      'gitDecoration.modifiedResourceForeground': 0.752,\n      'gitDecoration.deletedResourceForeground': 0.3764705882352941,\n      'gitDecoration.untrackedResourceForeground': 0.752,\n      'gitDecoration.conflictingResourceForeground': 0.752,\n      'gitDecoration.submoduleResourceForeground': 0.3764705882352941,\n      'icon.foreground': 0.2196078431372549,\n      'input.background': 0,\n      'input.border': 0,\n      'input.foreground': 0.5686274509803921,\n      'list.activeSelectionBackground': 0.0392156862745098,\n      'list.activeSelectionForeground': 0.7490196078431373,\n      'list.filterMatchBackground': 0.10196078431372549,\n      'list.filterMatchBorder': 0,\n      'list.focusBackground': 0.0392156862745098,\n      'list.highlightForeground': 0.6,\n      'list.hoverBackground': 0,\n      'list.inactiveSelectionBackground': 0,\n      'list.inactiveSelectionForeground': 0.7490196078431373,\n      'listFilterWidget.background': 0,\n      'listFilterWidget.outline': 0.23921568627450981,\n      'menu.background': 0,\n      'menu.foreground': 0.5686274509803921,\n      'menubar.selectionBackground': 0.0392156862745098,\n      'panel.border': 0.0392156862745098,\n      'panelTitle.activeBorder': 0,\n      'panelTitle.activeForeground': 0.7490196078431373,\n      'panelTitle.inactiveForeground': 0.23921568627450981,\n      'peekView.border': 0.2196078431372549,\n      'peekViewEditor.background': 0,\n      'peekViewEditor.matchHighlightBackground': 0,\n      'peekViewEditor.matchHighlightBorder': 0.23921568627450981,\n      'peekViewEditorGutter.background': 0,\n      'peekViewResult.background': 0.023529411764705882,\n      'peekViewResult.fileForeground': 0.6,\n      'peekViewResult.lineForeground': 0.23921568627450981,\n      'peekViewResult.matchHighlightBackground': 0.058823529411764705,\n      'peekViewResult.selectionBackground': 0,\n      'peekViewResult.selectionForeground': 0.7490196078431373,\n      'pickerGroup.foreground': 0.615686274509804,\n      \"sash.hoverBorder\": 0.058823529411764705,\n      'scrollbar.shadow': 0,\n      'scrollbarSlider.activeBackground': 0.058823529411764705,\n      'scrollbarSlider.background': 0.058823529411764705,\n      'scrollbarSlider.hoverBackground': 0.058823529411764705,\n      'settings.checkboxBorder': 0.0392156862745098,\n      'settings.dropdownBorder': 0.0392156862745098,\n      'settings.modifiedItemIndicator': 0.2196078431372549,\n      'settings.textInputBorder': 0.0392156862745098,\n      'sideBar.background': 0,\n      'sideBar.border': 0.0392156862745098,\n      'sideBar.foreground': 0.3764705882352941,\n      'sideBarSectionHeader.background': 0,\n      'sideBarSectionHeader.border': 0.0392156862745098,\n      'statusBar.background': 0,\n      'statusBar.border': 0.0392156862745098,\n      'statusBar.debuggingBackground': 0,\n      'statusBar.debuggingBorder': 0.0392156862745098,\n      'statusBar.debuggingForeground': 0.5686274509803921,\n      'statusBar.foreground': 0.5686274509803921,\n      'statusBar.noFolderBackground': 0,\n      'statusBar.noFolderBorder': 0.0392156862745098,\n      'statusBar.noFolderForeground': 0.5686274509803921,\n      'statusBarItem.activeBackground': 0,\n      'statusBarItem.hoverBackground': 0,\n      'symbolIcon.arrayForeground': 0.5686274509803921,\n      'symbolIcon.booleanForeground': 0.5686274509803921,\n      'symbolIcon.classForeground': 0.5686274509803921,\n      'symbolIcon.colorForeground': 0.5686274509803921,\n      'symbolIcon.constantForeground': 0.5686274509803921,\n      'symbolIcon.constructorForeground': 0.5686274509803921,\n      'symbolIcon.enumeratorForeground': 0.5686274509803921,\n      'symbolIcon.enumeratorMemberForeground': 0.5686274509803921,\n      'symbolIcon.eventForeground': 0.5686274509803921,\n      'symbolIcon.fieldForeground': 0.5686274509803921,\n      'symbolIcon.fileForeground': 0.5686274509803921,\n      'symbolIcon.folderForeground': 0.5686274509803921,\n      'symbolIcon.functionForeground': 0.5686274509803921,\n      'symbolIcon.interfaceForeground': 0.5686274509803921,\n      'symbolIcon.keyForeground': 0.5686274509803921,\n      'symbolIcon.keywordForeground': 0.5686274509803921,\n      'symbolIcon.methodForeground': 0.5686274509803921,\n      'symbolIcon.moduleForeground': 0.5686274509803921,\n      'symbolIcon.namespaceForeground': 0.5686274509803921,\n      'symbolIcon.nullForeground': 0.5686274509803921,\n      'symbolIcon.numberForeground': 0.5686274509803921,\n      'symbolIcon.objectForeground': 0.5686274509803921,\n      'symbolIcon.operatorForeground': 0.5686274509803921,\n      'symbolIcon.packageForeground': 0.5686274509803921,\n      'symbolIcon.propertyForeground': 0.5686274509803921,\n      'symbolIcon.referenceForeground': 0.5686274509803921,\n      'symbolIcon.snippetForeground': 0.5686274509803921,\n      'symbolIcon.stringForeground': 0.5686274509803921,\n      'symbolIcon.structForeground': 0.5686274509803921,\n      'symbolIcon.textForeground': 0.5686274509803921,\n      'symbolIcon.typeParameterForeground': 0.5686274509803921,\n      'symbolIcon.unitForeground': 0.5686274509803921,\n      'symbolIcon.variableForeground': 0.5686274509803921,\n      'tab.activeForeground': 0.7490196078431373,\n      'tab.border': 0,\n      'tab.inactiveBackground': 0,\n      'tab.inactiveForeground': 0.23921568627450981,\n      'terminal.ansiBrightBlack': 0.1,\n      'terminal.ansiBrightBlue': 0.2,\n      'terminal.ansiBrightGreen': 0.3,\n      'terminal.ansiBrightCyan': 0.4,\n      'terminal.ansiBrightRed': 0.5,\n      'terminal.ansiBrightMagenta': 0.6,\n      'terminal.ansiBrightYellow': 0.7,\n      'terminal.ansiBrightWhite': 1,\n      'terminal.ansiBlack': 0,\n      'terminal.ansiBlue': 0.2,\n      'terminal.ansiGreen': 0.3,\n      'terminal.ansiCyan': 0.4,\n      'terminal.ansiRed': 0.5,\n      'terminal.ansiMagenta': 0.6,\n      'terminal.ansiYellow': 0.7,\n      'terminal.ansiWhite': 0.8,\n      'terminal.background': 0,\n      'terminal.foreground': 0.6,\n      'terminalCursor.background': 0,\n      'terminalCursor.foreground': 0.7019607843137254,\n      'textLink.activeForeground': 1,\n      'textLink.foreground': 1,\n      'textPreformat.foreground': 0.5686274509803921,\n      'titleBar.activeBackground': 0,\n      'titleBar.activeForeground': 0.5686274509803921,\n      'titleBar.border': 0.0392156862745098,\n      'titleBar.inactiveBackground': 0,\n      'tree.indentGuidesStroke': 0.0784313725490196,\n      'window.activeBorder': 0.0392156862745098,\n    },\n    tokenColors: [\n      {\n        scope: 'variable.parameter.function',\n        settings: {\n          foreground: 0.7019607843137254,\n        },\n      },\n      {\n        scope: 'comment, punctuation.definition.comment',\n        settings: {\n          foreground: 0.1803921568627451,\n        },\n      },\n      {\n        scope:\n          'punctuation.definition.string, punctuation.definition.variable, punctuation.definition.parameters, punctuation.definition.array',\n        settings: {\n          foreground: 0.7019607843137254,\n        },\n      },\n      {\n        scope: 'none',\n        settings: {\n          foreground: 0.7019607843137254,\n        },\n      },\n      {\n        scope: 'keyword.operator',\n        settings: {\n          foreground: 0.7019607843137254,\n        },\n      },\n      {\n        scope: 'keyword',\n        settings: {\n          foreground: 0.4196078431372549,\n        },\n      },\n      {\n        scope: 'variable',\n        settings: {\n          foreground: 0.4392156862745098,\n        },\n      },\n      {\n        scope:\n          'entity.name.function, meta.require, support.function.any-method',\n        settings: {\n          foreground: 0.3764705882352941,\n        },\n      },\n      {\n        scope: 'support.class, entity.name.class, entity.name.type.class',\n        settings: {\n          foreground: 0.6,\n        },\n      },\n      {\n        scope: 'meta.class',\n        settings: {\n          foreground: 0.9607843137254902,\n        },\n      },\n      {\n        scope: 'keyword.other.special-method',\n        settings: {\n          foreground: 0.3764705882352941,\n        },\n      },\n      {\n        scope: 'storage',\n        settings: {\n          foreground: 0.4196078431372549,\n        },\n      },\n      {\n        scope: 'support.function',\n        settings: {\n          foreground: 0.5019607843137255,\n        },\n      },\n      {\n        scope: 'string, constant.other.symbol, entity.other.inherited-class',\n        settings: {\n          foreground: 0.5411764705882353,\n        },\n      },\n      {\n        scope: 'constant.numeric',\n        settings: {\n          foreground: 0.5686274509803921,\n        },\n      },\n      {\n        scope: 'none',\n        settings: {\n          foreground: 0.5686274509803921,\n        },\n      },\n      {\n        scope: 'none',\n        settings: {\n          foreground: 0.5686274509803921,\n        },\n      },\n      {\n        scope: 'constant',\n        settings: {\n          foreground: 0.5686274509803921,\n        },\n      },\n      {\n        scope: 'entity.name.tag',\n        settings: {\n          foreground: 0.4392156862745098,\n        },\n      },\n      {\n        scope: 'entity.other.attribute-name',\n        settings: {\n          foreground: 0.5686274509803921,\n        },\n      },\n      {\n        scope: 'entity.other.attribute-name.id, punctuation.definition.entity',\n        settings: {\n          foreground: 0.3764705882352941,\n        },\n      },\n      {\n        scope: 'meta.selector',\n        settings: {\n          foreground: 0.4196078431372549,\n        },\n      },\n      {\n        scope: 'none',\n        settings: {\n          foreground: 0.5686274509803921,\n        },\n      },\n      {\n        scope:\n          'markup.heading punctuation.definition.heading, entity.name.section',\n        settings: {\n          foreground: 0.3764705882352941,\n          fontStyle: '',\n        },\n      },\n      {\n        scope: 'keyword.other.unit',\n        settings: {\n          foreground: 0.5686274509803921,\n        },\n      },\n      {\n        scope: 'markup.bold, punctuation.definition.bold',\n        settings: {\n          foreground: 0.6,\n          fontStyle: 'bold',\n        },\n      },\n      {\n        scope: 'markup.italic, punctuation.definition.italic',\n        settings: {\n          foreground: 0.4196078431372549,\n          fontStyle: 'italic',\n        },\n      },\n      {\n        scope: 'markup.raw.inline',\n        settings: {\n          foreground: 0.5411764705882353,\n        },\n      },\n      {\n        scope: 'string.other.link, punctuation.definition.string.end.markdown',\n        settings: {\n          foreground: 0.4392156862745098,\n        },\n      },\n      {\n        scope: 'meta.link',\n        settings: {\n          foreground: 0.5686274509803921,\n        },\n      },\n      {\n        scope: 'markup.list',\n        settings: {\n          foreground: 0.4392156862745098,\n        },\n      },\n      {\n        scope: 'markup.quote',\n        settings: {\n          foreground: 0.5686274509803921,\n        },\n      },\n      {\n        scope: 'meta.separator',\n        settings: {\n          foreground: 0.7019607843137254,\n        },\n      },\n      {\n        scope: 'markup.inserted',\n        settings: {\n          foreground: 0.5411764705882353,\n        },\n      },\n      {\n        scope: 'markup.deleted',\n        settings: {\n          foreground: 0.4392156862745098,\n        },\n      },\n      {\n        scope: 'markup.changed',\n        settings: {\n          foreground: 0.4196078431372549,\n        },\n      },\n      {\n        scope: 'constant.other.color',\n        settings: {\n          foreground: 0.5019607843137255,\n        },\n      },\n      {\n        scope: 'string.regexp',\n        settings: {\n          foreground: 0.5019607843137255,\n        },\n      },\n      {\n        scope: 'constant.character.escape',\n        settings: {\n          foreground: 0.5019607843137255,\n        },\n      },\n      {\n        scope: 'punctuation.section.embedded, variable.interpolation',\n        settings: {\n          foreground: 0.4196078431372549,\n        },\n      },\n      {\n        scope: 'invalid.illegal',\n        settings: {\n          foreground: 0.9607843137254902,\n        },\n      },\n      {\n        scope: 'invalid.broken',\n        settings: {\n          foreground: 0,\n        },\n      },\n      {\n        scope: 'invalid.deprecated',\n        settings: {\n          foreground: 0.9607843137254902,\n        },\n      },\n      {\n        scope: 'invalid.unimplemented',\n        settings: {\n          foreground: 0.9607843137254902,\n        },\n      },\n    ],\n  };\n};\n\nmodule.exports = base;\n"
  },
  {
    "path": "src/exceptions.js",
    "content": "// Exception list to preserve transparency of the scheme properties.\nconst exceptions = [\n  'scrollbarSlider.activeBackground',\n  'scrollbarSlider.background',\n  'scrollbarSlider.hoverBackground',\n];\n\nmodule.exports = exceptions;\n"
  },
  {
    "path": "src/index.js",
    "content": "const fs = require('fs').promises;\nconst themes = require('./themes');\n\n/**\n * Theme builder.\n *\n * Generates the given theme and puts it's content into the theme file.\n *\n * @param {*} t Generated theme data.\n */\nconst builder = (t) => fs.writeFile(file(t.name), JSON.stringify(t));\n\n/**\n * Pipes the defined themes into builder.\n */\nconst build = () => Promise.all(themes.map(builder));\n\n/**\n * Error handler.\n */\nconst error = () => process.exit(1);\n\n/**\n * File name utility.\n *\n * @param {*} n File name.\n */\nconst file = (n) => `./theme/${n}.json`;\n\n// Create the output folder and build the defined themes.\nfs.mkdir('./theme', { recursive: true }).then(build).catch(error);\n"
  },
  {
    "path": "src/scheme.js",
    "content": "const merge = require('lodash.merge');\nconst chroma = require('chroma-js');\nconst transform = require('./transform');\nconst base = require('./base');\nconst exceptions = require('./exceptions');\n\n/**\n * Generates a monochrome color scheme.\n *\n * @param background Background color of the theme.\n * @param foreground Foreground color of the theme.\n * @param override Overrides for default scheme values.\n * @param amplifier Overall transparency multiplier.\n * @return {*} Created color scheme.\n */\nconst scheme = ({ background, foreground, override, amplifier }) => {\n  // Construct the base values.\n  const draft = Object.assign(\n    {\n      background: background,\n      foreground: foreground,\n    },\n    base()\n  );\n\n  // Merge with the generated warning scheme;\n  merge(draft, warningScheme(foreground));\n\n  // Apply overrides.\n  if (override != null) merge(draft, override);\n\n  // Amplify the transparency multipliers.\n  if (amplifier != 1) transform(draft, test, (_, v) => amplify(v, amplifier));\n\n  // Apply color transformation.\n  transform(draft, test, (k, v) => colorize(k, v, background, foreground));\n\n  // Return the generated scheme.\n  return draft;\n};\n\n/**\n * Defines a test for the transform functions.\n *\n * Any value that satisfies the test will be processed.\n *\n * @param {*} _ Discarded key.\n * @param {*} v Value.\n */\nconst test = (_, v) => typeof v === 'number';\n\n/**\n * Modifies the transparency value by the given factor.\n *\n * @param {*} t Transparency value.\n * @param {*} a Amplifier value.\n */\nconst amplify = (t, a) => Math.min(Math.max(0, t * a), 1);\n\n/**\n * Colorization transformation.\n *\n * Determinates the color generation strategy and applies it.\n *\n * @param {*} k Key.\n * @param {*} v Value.\n * @param {*} b Background color.\n * @param {*} f Foreground color.\n * @returns RRGGBBAA | RRGGBB color in the hex format.\n */\nconst colorize = (k, v, b, f) => colorant(k).call(this, b, f, v).hex();\n\n/**\n * Determinates the color generation strategy by looking into exceptions list.\n *\n * @param {*} k Key of the property to be checked.\n */\nconst colorant = (k) => (exceptions.some((e) => e === k) ? RGBA : RGB);\n\n/**\n * RRGGBBAA Color generation strategy.\n *\n * @param {*} _ Discarded background color.\n * @param {*} f Foreground color.\n * @param {*} v Transparency value.\n * @returns RRGGBBAA color.\n */\nconst RGBA = (_, f, v) => chroma(f).alpha(v);\n\n/**\n * RRGGBB Color generation strategy.\n *\n * @param {*} b Background color.\n * @param {*} f Foreground color.\n * @param {*} v Blend value.\n * @returns RRGGBB color.\n */\nconst RGB = (b, f, v) => chroma.scale([b, f])(v);\n\n/**\n * Defines the warning colors.\n *\n * @param {*} color The primary color to calculate the warning colors.\n * @return {*} Warning theme data.\n */\nconst warningScheme = (color) => {\n  // Calculate the error color.\n  const error = chroma.scale([color, 'red']).mode('lab')(0.75).hex();\n\n  // Calculate the warning color.\n  const warning = chroma.scale([color, 'orange']).mode('lab')(0.75).hex();\n\n  return {\n    colors: {\n      'listFilterWidget.noMatchesOutline': error,\n      'list.errorForeground': error,\n      'list.warningForeground': warning,\n    },\n  };\n};\n\nmodule.exports = scheme;\n"
  },
  {
    "path": "src/theme.js",
    "content": "const scheme = require('./scheme');\nconst chroma = require('chroma-js');\n\n/**\n * Generates a monochrome theme.\n *\n * @param background Background color of the theme.\n * @param foreground Foreground color of the theme.\n * @param override Overrides for default scheme values.\n * @param amplifier Overall transparency multiplier.\n * @return {*} Created theme.\n */\nconst theme = ({ name, background, foreground, override, amplifier }) => {\n  return Object.assign(\n    { name: name, type: type(background) },\n    scheme({\n      background: background,\n      foreground: foreground,\n      override: override,\n      amplifier: amplifier,\n    })\n  );\n};\n\n/**\n * Determinates the type of the theme according to background color.\n *\n * @param {*} color background color.\n */\nconst type = (color) => (chroma(color).luminance() > 0.5 ? 'light' : 'dark');\n\nmodule.exports = theme;\n"
  },
  {
    "path": "src/themes.js",
    "content": "const theme = require('./theme');\n\n// Pre-defined monochrome themes.\nconst themes = [\n  theme({\n    name: 'monochrome-dark',\n    background: '#101010',\n    foreground: '#EBEBEB',\n  }),\n  theme({\n    name: 'monochrome-light',\n    background: '#EBEBEB',\n    foreground: '#101010',\n  }),\n  theme({\n    name: 'monochrome-dark-subtle',\n    background: '#0A1219',\n    foreground: '#F1F5F9',\n  }),\n  theme({\n    name: 'monochrome-light-subtle',\n    background: '#F1F5F9',\n    foreground: '#0A1219',\n  }),\n  theme({\n    name: 'monochrome-dark-amplified',\n    background: '#000000',\n    foreground: '#FFFFFF',\n  }),\n  theme({\n    name: 'monochrome-light-amplified',\n    background: '#FFFFFF',\n    foreground: '#000000',\n  }),\n  theme({\n    name: 'monochrome-dark-cool-gray',\n    background: '#111827',\n    foreground: '#F9FAFB',\n  }),\n  theme({\n    name: 'monochrome-light-cool-gray',\n    background: '#F9FAFB',\n    foreground: '#111827',\n  }),\n];\n\nmodule.exports = themes;\n"
  },
  {
    "path": "src/transform.js",
    "content": "/**\n * Deep object transformer.\n *\n * @param {*} o The object that the transformation function will be applied.\n * @param {*} t The test function for the property, takes key and value.\n * @param {*} f The transformation function to be applied.\n * @return {*} Transform applied object.\n */\nconst transform = function (o, t, f) {\n  for (var k in o) {\n\n    if (o[k] !== null && typeof o[k] === 'object') {\n      o[k] = transform(o[k], t, f);\n      continue;\n    }\n\n    if (typeof t === 'function' && !t.call(this, k, o[k])) continue;\n\n    o[k] = f.apply(this, [k, o[k]]) || o[k];\n  }\n  return o;\n};\n\nmodule.exports = transform;\n"
  }
]