diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..f4fb8b6 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +**/rules.ts +**/vsCodeThemeGenerator.ts diff --git a/demo/generate.ts b/demo/generate.ts index cf23c04..04b6d88 100644 --- a/demo/generate.ts +++ b/demo/generate.ts @@ -1,124 +1,121 @@ -import * as path from 'path'; -import { generateTheme, IColorSet } from '../dist'; +import * as path from "path"; +import { generateTheme, IColorSet } from "../dist"; -const sapphireColors = { - red: '#DA6771', - redLight: '#e5949b', - green: '#4EB071', - greenDim: '#275839', - yellow: '#fff099', - blue: '#399EF4', - blueLight: '#9fcff9', - pink: '#B168DF', - teal: '#21C5C7', - grey: '#4A5160' +// Australis Color List +// Black 222531 - 373b46 +// White a9bcc3 - c7e7f9 +// Red ff491a - ff854f +// Green 16B866 - 51e08a +// Blue 6388D8 - a4c4ff +// Yellow e1c631 - FFE14E +// Magenta 9d78ff - d8adff +// Cyan 00b1a8 - 42dcd1 + +// Dark 30 - 414751 +// Dark 40 - 565f69 +// Dark 50 - 6e7882 +// Dark 60 - 86929d + +// Bright 70 - 9daeb6 +// Bright 80 - b3cbcf +// Bright 90 - cce7ec + +const australisColors = { + black: "#222531", + blackLight: "#373b46", + white: "#a9bcc3", + whiteLight: "#c7e7f9", + red: "#ff491a", + redLight: "#ff854f", + green: "#16B866", + greenLight: "#51e08a", + blue: "#6388D8", + blueLight: "#a4c4ff", + yellow: "#e1c631", + yellowLight: "#FFE14E", + magenta: "#9d78ff", + magentaLight: "#d8adff", + cyan: "#00b1a8", + cyanLight: "#42dcd1", + dark_30: "#414751", + dark_40: "#565f69", + dark_50: "#6e7882", + dark_60: "#86929d", + bright_70: "#9daeb6", + bright_80: "#b3cbcf", + bright_90: "#cce7ec", }; -const sapphireColorSet: IColorSet = { - type: 'dark', +const australisColorSet: IColorSet = { + type: "dark", base: { - background: '#12171f', - foreground: '#efefef', - color1: sapphireColors.blue, - color2: sapphireColors.red, - color3: sapphireColors.green, - color4: sapphireColors.yellow + background: australisColors.black, + foreground: australisColors.white, + color1: australisColors.blueLight, + color2: australisColors.yellowLight, + color3: australisColors.greenLight, + color4: australisColors.magentaLight, }, syntax: { - identifier: sapphireColors.blueLight, - string: sapphireColors.red, - number: sapphireColors.redLight, - keyword: sapphireColors.blue, - boolean: sapphireColors.blue, - function: sapphireColors.teal, - functionCall: sapphireColors.yellow, - storage: sapphireColors.blue, - comment: sapphireColors.grey, - class: sapphireColors.teal, - classMember: sapphireColors.teal, - type: sapphireColors.green, - cssClass: sapphireColors.blue, - cssId: sapphireColors.red, - cssTag: sapphireColors.teal, - markdownQuote: '#c0c0c0' + identifier: australisColors.blueLight, + string: australisColors.cyanLight, + stringEscape: australisColors.yellowLight, + number: australisColors.cyanLight, + keyword: australisColors.greenLight, + boolean: australisColors.blueLight, + function: australisColors.magentaLight, + functionCall: australisColors.blueLight, + storage: australisColors.blueLight, + comment: australisColors.dark_40, + class: australisColors.greenLight, + classMember: australisColors.green, + type: australisColors.whiteLight, + cssClass: australisColors.blueLight, + cssId: australisColors.blue, + cssTag: australisColors.greenLight, + markdownQuote: australisColors.dark_40, + constants: australisColors.blue, }, ui: { - cursor: '#ffffff', - guide: '#263040', - invisibles: '#263040', - rangeHighlight: '#263040', - // Bright red 50% opacity - findMatchHighlight: '#cb606080', - // Brighter red 50% opacity - currentFindMatchHighlight: '#ff777780', - selection: '#153958', - // Blue 50% opacity - selectionHighlight: '#2b74b380', - // White with ~10% opacity - wordHighlight: '#ffffff18', - wordHighlightStrong: '#ffffff18', - activeLinkForeground: sapphireColors.blue + cursor: australisColors.whiteLight, + guide: australisColors.blackLight, + invisibles: australisColors.blackLight, + lineHighlight: australisColors.dark_30 + "80", + rangeHighlight: australisColors.dark_30 + "80", + findMatchHighlight: australisColors.green + "40", + findRangeHighlight: australisColors.dark_30 + "40", + currentFindMatchHighlight: australisColors.green + "80", + selection: australisColors.blue + "40", + selectionHighlight: australisColors.blue + "20", + wordHighlight: australisColors.magenta + "18", + wordHighlightStrong: australisColors.magenta + "18", + activeLinkForeground: australisColors.blue, }, terminal: { - black: '#666666', - red: sapphireColors.red, - green: sapphireColors.green, - yellow: sapphireColors.yellow, - blue: sapphireColors.blue, - magenta: sapphireColors.pink, - cyan: sapphireColors.teal, - white: '#efefef', - brightBlack: '#666666', - brightRed: sapphireColors.red, - brightGreen: sapphireColors.green, - brightYellow: sapphireColors.yellow, - brightBlue: sapphireColors.blue, - brightMagenta: sapphireColors.pink, - brightCyan: sapphireColors.teal, - brightWhite: '#efefef' + black: australisColors.black, + red: australisColors.red, + green: australisColors.green, + yellow: australisColors.yellow, + blue: australisColors.blue, + magenta: australisColors.magenta, + cyan: australisColors.cyan, + white: australisColors.white, + brightBlack: australisColors.dark_40, + brightRed: australisColors.redLight, + brightGreen: australisColors.greenLight, + brightYellow: australisColors.yellowLight, + brightBlue: australisColors.blueLight, + brightMagenta: australisColors.magentaLight, + brightCyan: australisColors.cyanLight, + brightWhite: australisColors.whiteLight, }, overrides: { - 'editorError.foreground': '#ff0000' - } + "editorError.foreground": australisColors.red, + }, }; -const minimalDarkColorSet: IColorSet = { - type: 'dark', - base: { - background: '#22272f', - foreground: '#efefef', - color1: sapphireColors.blue, - color2: sapphireColors.red, - color3: sapphireColors.green, - color4: sapphireColors.yellow - } -}; - -const minimalLightColorSet: IColorSet = { - type: 'light', - base: { - background: '#efefff', - foreground: '#000011', - color1: sapphireColors.blue, - color2: sapphireColors.red, - color3: sapphireColors.green, - color4: sapphireColors.yellow - } -}; - -const minimalCoverageColorSet: IColorSet = { - type: 'dark', - base: { - background: '#FF0000', - foreground: '#0000FF', - color1: '#00FF00', - color2: '#00FF00', - color3: '#00FF00', - color4: '#00FF00' - } -}; - -generateTheme('Generated Theme', sapphireColorSet, path.join(__dirname, 'theme.json')); -generateTheme('Generated Theme (minimal, dark)', minimalDarkColorSet, path.join(__dirname, 'theme-minimal-dark.json')); -generateTheme('Generated Theme (minimal, light)', minimalLightColorSet, path.join(__dirname, 'theme-minimal-light.json')); -generateTheme('Generated Theme (minimal, coverage)', minimalCoverageColorSet, path.join(__dirname, 'theme-minimal-coverage.json')); +generateTheme( + "Australis Dark", + australisColorSet, + path.join(__dirname, "theme.json") +); diff --git a/demo/package.json b/demo/package.json index a468887..bf11b47 100644 --- a/demo/package.json +++ b/demo/package.json @@ -1,6 +1,6 @@ { - "name": "generated-theme", - "displayName": "Generated Theme", + "name": "australis-theme", + "displayName": "Australis", "description": "...", "categories": [ "Themes" ], "version": "0.0.1", @@ -9,7 +9,7 @@ "contributes": { "themes": [ { - "label": "Generated Theme", + "label": "Australis (Dark)", "uiTheme": "vs-dark", "path": "./theme.json" }, diff --git a/package-lock.json b/package-lock.json index 7d8518b..cb8a0d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,359 +1,445 @@ { "name": "vscode-theme-generator", "version": "0.2.1", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@babel/code-frame": { + "packages": { + "": { + "name": "vscode-theme-generator", + "version": "0.2.1", + "license": "MIT", + "devDependencies": { + "@types/node": "^14.14.21", + "tslint": "^5.9.1", + "tslint-consistent-codestyle": "^1.13.0", + "typescript": "^4.9.5" + } + }, + "node_modules/@babel/code-frame": { "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, - "requires": { + "dependencies": { "@babel/highlight": "^7.10.4" } }, - "@babel/helper-validator-identifier": { + "node_modules/@babel/helper-validator-identifier": { "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, - "@babel/highlight": { + "node_modules/@babel/highlight": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, - "@fimbul/bifrost": { + "node_modules/@fimbul/bifrost": { "version": "0.21.0", "resolved": "https://registry.npmjs.org/@fimbul/bifrost/-/bifrost-0.21.0.tgz", "integrity": "sha512-ou8VU+nTmOW1jeg+FT+sn+an/M0Xb9G16RucrfhjXGWv1Q97kCoM5CG9Qj7GYOSdu7km72k7nY83Eyr53Bkakg==", "dev": true, - "requires": { + "dependencies": { "@fimbul/ymir": "^0.21.0", "get-caller-file": "^2.0.0", "tslib": "^1.8.1", "tsutils": "^3.5.0" }, - "dependencies": { - "tsutils": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.19.1.tgz", - "integrity": "sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - } + "peerDependencies": { + "tslint": "^5.0.0", + "typescript": ">= 3.3.0 || >= 3.6.0-dev || >= 3.7.0-dev" } }, - "@fimbul/ymir": { + "node_modules/@fimbul/bifrost/node_modules/tsutils": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.19.1.tgz", + "integrity": "sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/@fimbul/ymir": { "version": "0.21.0", "resolved": "https://registry.npmjs.org/@fimbul/ymir/-/ymir-0.21.0.tgz", "integrity": "sha512-T/y7WqPsm4n3zhT08EpB5sfdm2Kvw3gurAxr2Lr5dQeLi8ZsMlNT/Jby+ZmuuAAd1PnXYzKp+2SXgIkQIIMCUg==", "dev": true, - "requires": { + "dependencies": { "inversify": "^5.0.0", "reflect-metadata": "^0.1.12", "tslib": "^1.8.1" + }, + "peerDependencies": { + "tsutils": ">=2.29.0", + "typescript": ">= 3.3.0 || >= 3.6.0-dev || >= 3.7.0-dev" } }, - "@types/node": { + "node_modules/@types/node": { "version": "14.14.21", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.21.tgz", "integrity": "sha512-cHYfKsnwllYhjOzuC5q1VpguABBeecUp24yFluHpn/BQaVxB1CuQ1FSRZCzrPxrkIfWISXV2LbeoBthLWg0+0A==", "dev": true }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "requires": { + "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "argparse": { + "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "requires": { + "dependencies": { "sprintf-js": "~1.0.2" } }, - "balanced-match": { + "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "brace-expansion": { + "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "builtin-modules": { + "node_modules/builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "chalk": { + "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "color-convert": { + "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "requires": { + "dependencies": { "color-name": "1.1.3" } }, - "color-name": { + "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "commander": { + "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "diff": { + "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.3.1" + } }, - "escape-string-regexp": { + "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "esprima": { + "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "function-bind": { + "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "get-caller-file": { + "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "glob": { + "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "requires": { + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "has": { + "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "requires": { + "dependencies": { "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" } }, - "has-flag": { + "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, - "requires": { + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "inversify": { + "node_modules/inversify": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/inversify/-/inversify-5.0.5.tgz", "integrity": "sha512-60QsfPz8NAU/GZqXu8hJ+BhNf/C/c+Hp0eDc6XMIJTxBiP36AQyyQKpBkOVTLWBFDQWYVHpbbEuIsHu9dLuJDA==", "dev": true }, - "is-core-module": { + "node_modules/is-core-module": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "dev": true, - "requires": { + "dependencies": { "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "js-tokens": { + "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "js-yaml": { + "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "requires": { + "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "minimatch": { + "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, - "mkdirp": { + "node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, - "requires": { + "dependencies": { "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "requires": { + "dependencies": { "wrappy": "1" } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "path-parse": { + "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "reflect-metadata": { + "node_modules/reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", "dev": true }, - "resolve": { + "node_modules/resolve": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", "dev": true, - "requires": { + "dependencies": { "is-core-module": "^2.1.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "semver": { + "node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver" + } }, - "sprintf-js": { + "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "supports-color": { + "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "requires": { + "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "tslib": { + "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "tslint": { + "node_modules/tslint": { "version": "5.20.1", "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.0.0", "builtin-modules": "^1.1.1", "chalk": "^2.3.0", @@ -367,35 +453,58 @@ "semver": "^5.3.0", "tslib": "^1.8.0", "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev" } }, - "tslint-consistent-codestyle": { + "node_modules/tslint-consistent-codestyle": { "version": "1.16.0", "resolved": "https://registry.npmjs.org/tslint-consistent-codestyle/-/tslint-consistent-codestyle-1.16.0.tgz", "integrity": "sha512-ebR/xHyMEuU36hGNOgCfjGBNYxBPixf0yU1Yoo6s3BrpBRFccjPOmIVaVvQsWAUAMdmfzHOCihVkcaMfimqvHw==", "dev": true, - "requires": { + "dependencies": { "@fimbul/bifrost": "^0.21.0", "tslib": "^1.7.1", "tsutils": "^2.29.0" + }, + "peerDependencies": { + "tslint": "^5.0.0", + "typescript": ">=2.1.4 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >=3.1.0-dev || >=3.2.0-dev || >=3.3.0-dev || >=3.4.0-dev" } }, - "tsutils": { + "node_modules/tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", "dev": true, - "requires": { + "dependencies": { "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" } }, - "typescript": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", - "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", - "dev": true + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", diff --git a/package.json b/package.json index c91c27a..2882acd 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,6 @@ "@types/node": "^14.14.21", "tslint": "^5.9.1", "tslint-consistent-codestyle": "^1.13.0", - "typescript": "^4.1.3" + "typescript": "^4.9.5" } } diff --git a/src/interfaces.ts b/src/interfaces.ts index e0f7d51..e64cab7 100644 --- a/src/interfaces.ts +++ b/src/interfaces.ts @@ -2,7 +2,7 @@ export interface IThemeGenerator { generateTheme(name: string, colorSet: IColorSet): string; } -export interface IBaseColorSet { +export interface IBaseColorSet { /** The default background color */ background: string; /** The default foreground color */ @@ -14,7 +14,7 @@ export interface IBaseColorSet { } export interface IColorSet { - type?: 'light' | 'dark'; + type?: "light" | "dark"; base: IBaseColorSet; syntax?: { boolean?: string; @@ -35,6 +35,7 @@ export interface IColorSet { cssId?: string; cssTag?: string; markdownQuote?: string; + constants?: string; }; ui?: { /** The color of the editor cursor/caret */ diff --git a/src/rules.ts b/src/rules.ts index cf85368..7c029b0 100644 --- a/src/rules.ts +++ b/src/rules.ts @@ -70,24 +70,29 @@ export const tokenRules: IRuleGenerator[] = [ // string: It's important that string is put first so that other scopes can override strings // within template expressions { color: s => s.syntax.string, generate: getSimpleColorGenerator('String', 'string') }, - { color: s => s.syntax.stringEscape, generate: getSimpleColorGenerator('String Escape', 'constant.character.escape, text.html constant.character.entity.named, punctuation.definition.entity.html') }, + { color: s => s.syntax.stringEscape, generate: getSimpleColorGenerator('String Escape', 'constant.character.escape, text.html constant.character.entity.named, punctuation.definition.entity.html, constant.character.string.escape, constant.regexp') }, { color: s => s.syntax.boolean, generate: getSimpleColorGenerator('Boolean', 'constant.language.boolean') }, { color: s => s.syntax.number, generate: getSimpleColorGenerator('Number', 'constant.numeric') }, - { color: s => s.syntax.identifier, generate: getSimpleColorGenerator('Identifier', 'variable, support.variable, support.class, support.constant, meta.definition.variable entity.name.function') }, + // { color: s => s.syntax.identifier, generate: getSimpleColorGenerator('Identifier', 'variable, support.variable, support.class, meta.definition.variable entity.name.function') }, + // { color: s => s.syntax.constants, generate: getSimpleColorGenerator('Constants', 'constant, variable.other.constant, support.constant') }, + { color: s => s.syntax.identifier, generate: getSimpleColorGenerator('Identifier', 'support.variable, support.class, meta.definition.variable entity.name.function, variable.other') }, + { color: s => s.syntax.constants, generate: getSimpleColorGenerator('Constants', 'constant, variable.other.constant, support.constant, variable.other.property') }, + // support.type.object: module.exports (ts) { color: s => s.syntax.keyword, generate: getSimpleColorGenerator('Keyword', 'keyword, modifier, variable.language.this, support.type.object, constant.language') }, // support.function: eg. join in path.join in TypeScript - { color: s => s.syntax.functionCall, generate: getSimpleColorGenerator('Function call', 'entity.name.function, support.function') }, + { color: s => s.syntax.functionCall, generate: getSimpleColorGenerator('Function call', 'entity.name.function, support.function, meta.function-call, meta.function-call.object, meta.function-call.php, meta.function-call.static, meta.method-call.java meta.method, meta.method.groovy, support.function.any-method.lua, keyword.operator.function.infix') }, + { color: s => s.syntax.constants, generate: getSimpleColorGenerator('Function Parameters', 'meta.function-call.arguments, entity.name.variable.parameter, meta.at-rule.function variable, meta.at-rule.mixin variable, meta.function.arguments variable.other.php, meta.selectionset.graphql meta.arguments.graphql variable.arguments.graphql, variable.parameter') }, + { color: s => s.base.color4, generate: getSimpleColorGenerator('Separators', 'constant.other.symbol.hashkey punctuation.definition.constant.ruby, entity.other.attribute-name.placeholder punctuation, entity.other.attribute-name.pseudo-class punctuation, entity.other.attribute-name.pseudo-element punctuation, meta.group.double.toml, meta.group.toml, meta.object-binding-pattern-variable punctuation.destructuring, punctuation.colon.graphql, punctuation.definition.block.scalar.folded.yaml, punctuation.definition.block.scalar.literal.yaml, punctuation.definition.block.sequence.item.yaml, punctuation.definition.entity.other.inherited-class, punctuation.function.swift, punctuation.separator.dictionary.key-value, punctuation.separator.hash, punctuation.separator.inheritance, punctuation.separator.key-value, punctuation.separator.key-value.mapping.yaml, punctuation.separator.namespace, punctuation.separator.pointer-access, punctuation.separator.slice, string.unquoted.heredoc punctuation.definition.string, support.other.chomping-indicator.yaml, punctuation.separator.annotation') }, // storage.type: var (ts) // storage.modifier: private (ts) { color: s => s.syntax.storage, generate: getSimpleColorGenerator('Storage', 'storage.type, storage.modifier') }, // module.support: imported modules in TypeScript { color: s => s.syntax.identifier, generate: getSimpleColorGenerator('Modules', 'support.module, support.node', FontStyle.ITALIC) }, // support.type: `boolean` (ts) - { color: s => s.syntax.type, generate: getSimpleColorGenerator('Type', 'support.type') }, // entity.name.type: `: SomeType` (ts) - { color: s => s.syntax.type, generate: getSimpleColorGenerator('Type', 'entity.name.type, entity.other.inherited-class') }, - { color: s => s.syntax.comment, generate: getSimpleColorGenerator('Comment', 'comment', FontStyle.ITALIC) }, + { color: s => s.syntax.type, generate: getSimpleColorGenerator('Type', 'support.type, entity.name.type, entity.other.inherited-class, entity.name.type, keyword.primitive-datatypes.swift, keyword.type.cs, meta.protocol-list.objc, meta.return-type.objc, source.go storage.type, source.groovy storage.type, source.java storage.type, source.powershell entity.other.attribute-name, storage.class.std.rust, storage.type.attribute.swift, storage.type.c, storage.type.core.rust, storage.type.cs, storage.type.groovy, storage.type.objc, storage.type.php, storage.type.haskell, storage.type.ocaml') }, + { color: s => s.syntax.comment, generate: getSimpleColorGenerator('Comment', 'comment, wildcard.comment, unused.comment, punctuation.definition.comment', FontStyle.ITALIC) }, { color: s => s.syntax.class, generate: getSimpleColorGenerator('Class', 'entity.name.type.class', FontStyle.UNDERLINE) }, // variable.object.property: `class A { meth = 0; }` (ts) // meta.field.declaration entity.name.function: `class A { meth = () => 0; }` (ts) @@ -104,8 +109,9 @@ export const tokenRules: IRuleGenerator[] = [ /** * JSON */ - { color: s => s.syntax.identifier, generate: getSimpleColorGenerator('JSON key', 'meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json') }, - { color: s => s.syntax.keyword, generate: getSimpleColorGenerator('JSON constant', 'constant.language.json') }, + //{ color: s => s.syntax.identifier, generate: getSimpleColorGenerator('JSON key', 'meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json') }, + { color: s => s.syntax.type, generate: getSimpleColorGenerator('JSON key', 'meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json') }, + { color: s => s.syntax.constants, generate: getSimpleColorGenerator('JSON constant', 'constant.language.json') }, /** * CSS */ diff --git a/src/vscodeThemeGenerator.ts b/src/vscodeThemeGenerator.ts index 7c27670..e38e9fa 100644 --- a/src/vscodeThemeGenerator.ts +++ b/src/vscodeThemeGenerator.ts @@ -189,7 +189,7 @@ export class VscodeThemeGenerator implements IThemeGenerator { // editor.findMatchBackground: Color of the current search match. if (colorSet.ui.currentFindMatchHighlight) theme.colors['editor.findMatchBackground'] = colorSet.ui.currentFindMatchHighlight; // editor.findMatchHighlightBackground: Color of the other search matches. - if (colorSet.ui.findMatchHighlight) theme.colors['editor.findMatchHighlight'] = colorSet.ui.findMatchHighlight; + if (colorSet.ui.findMatchHighlight) theme.colors['editor.findMatchHighlightBackground'] = colorSet.ui.findMatchHighlight; // editor.findRangeHighlightBackground: Color the range limiting the search. if (colorSet.ui.findRangeHighlight) theme.colors['editor.findRangeHighlightBackground'] = colorSet.ui.findRangeHighlight; // editor.hoverHighlightBackground: Highlight below the word for which a hover is shown.