From 2dac9bad7bc23285ca716bf498930223428f522d Mon Sep 17 00:00:00 2001 From: Joseph Frazier <1212jtraceur@gmail.com> Date: Wed, 21 Jun 2017 16:18:26 -0400 Subject: [PATCH 1/5] Add `prettier` transformer This makes it possible to use astexplorer like https://prettier.github.io/prettier, but with the ability to cross-reference the code with its AST. --- .../js/transformers/prettier/codeExample.txt | 12 ++++++++++ .../parsers/js/transformers/prettier/index.js | 23 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 website/src/parsers/js/transformers/prettier/codeExample.txt create mode 100644 website/src/parsers/js/transformers/prettier/index.js diff --git a/website/src/parsers/js/transformers/prettier/codeExample.txt b/website/src/parsers/js/transformers/prettier/codeExample.txt new file mode 100644 index 00000000..a77f8e6b --- /dev/null +++ b/website/src/parsers/js/transformers/prettier/codeExample.txt @@ -0,0 +1,12 @@ +export default { + "printWidth": 80, + "tabWidth": 2, + "useTabs": false, + "semi": false, + "singleQuote": false, + "trailingComma": "none", + "bracketSpacing": true, + "jsxBracketSameLine": false, + + "parser": "babylon" +} diff --git a/website/src/parsers/js/transformers/prettier/index.js b/website/src/parsers/js/transformers/prettier/index.js new file mode 100644 index 00000000..ac5b278a --- /dev/null +++ b/website/src/parsers/js/transformers/prettier/index.js @@ -0,0 +1,23 @@ +import compileModule from '../../../utils/compileModule'; +import pkg from 'prettier/package.json'; + +const ID = 'prettier'; +const name = 'prettier'; + +export default { + id: ID, + displayName: name, + version: pkg.version, + homepage: pkg.homepage, + + defaultParserID: 'babylon7', + + loadTransformer(callback) { + require(['prettier'], callback); + }, + + transform(prettier, transformCode, code) { + const options = compileModule(transformCode); + return prettier.format(code, options.default || options); + }, +}; From f4191c6f53e916bf3cd15bc27aefecae011ee140 Mon Sep 17 00:00:00 2001 From: Joseph Frazier <1212jtraceur@gmail.com> Date: Wed, 21 Jun 2017 16:54:33 -0400 Subject: [PATCH 2/5] Upgrade to prettier 1.4.4 --- website/package.json | 2 +- website/yarn.lock | 93 +++++++++----------------------------------- 2 files changed, 20 insertions(+), 75 deletions(-) diff --git a/website/package.json b/website/package.json index 6cc4c5bf..03621456 100644 --- a/website/package.json +++ b/website/package.json @@ -92,7 +92,7 @@ "postcss-less": "^1.0.1", "postcss-safe-parser": "^3.0.0", "postcss-scss": "^1.0.0", - "prettier": "^1.3.1", + "prettier": "^1.4.4", "prop-types": "^15.5.10", "pubsub-js": "^1.4.2", "query-string": "^4.3.4", diff --git a/website/yarn.lock b/website/yarn.lock index 3b245f49..0e922e00 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -134,12 +134,6 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.0.0.tgz#5404e93a544c4fec7f048262977bebfe3155e0c1" - dependencies: - color-convert "^1.0.0" - ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" @@ -252,10 +246,6 @@ ast-types@0.9.6: version "0.9.6" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" -ast-types@0.9.8: - version "0.9.8" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.8.tgz#6cb6a40beba31f49f20928e28439fc14a3dab078" - async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -308,14 +298,6 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-code-frame@6.22.0, babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - babel-code-frame@7.0.0-alpha.12: version "7.0.0-alpha.12" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-7.0.0-alpha.12.tgz#26fbb2eab1c20763271fecb6b04a108756fae61f" @@ -332,6 +314,14 @@ babel-code-frame@7.0.0-alpha.3: esutils "^2.0.2" js-tokens "^3.0.0" +babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + babel-core@7.0.0-alpha.12: version "7.0.0-alpha.12" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-alpha.12.tgz#fcc785e16a93f9d50933e8cdf025287f03a297a1" @@ -1557,7 +1547,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -1701,7 +1691,7 @@ collapse-white-space@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.2.tgz#9c463fb9c6d190d2dcae21a356a01bcae9eeef6d" -color-convert@^1.0.0, color-convert@^1.3.0: +color-convert@^1.3.0: version "1.9.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" dependencies: @@ -2679,14 +2669,14 @@ estraverse@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" -esutils@2.0.2, esutils@^2.0.0, esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - esutils@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" +esutils@^2.0.0, esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + event-emitter@~0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" @@ -2877,10 +2867,6 @@ flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" -flow-parser@0.45.0: - version "0.45.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.45.0.tgz#aa29d4ae27f06aa02817772bba0fcbefef7e62f0" - flow-parser@^0.*, flow-parser@^0.47.0: version "0.47.0" resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.47.0.tgz#c57d35ff19bb40fb0f07222298e58cd4afa8a59a" @@ -2978,10 +2964,6 @@ get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" -get-stdin@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" - get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" @@ -3022,7 +3004,7 @@ glob@5.0.x, glob@^5.0.14, glob@^5.0.15, glob@~5.0.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.1, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: @@ -3696,22 +3678,6 @@ iterall@^1.0.0, iterall@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.1.1.tgz#f7f0af11e9a04ec6426260f5019d9fcca4d50214" -jest-matcher-utils@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-19.0.0.tgz#5ecd9b63565d2b001f61fbf7ec4c7f537964564d" - dependencies: - chalk "^1.1.3" - pretty-format "^19.0.0" - -jest-validate@19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-19.0.0.tgz#8c6318a20ecfeaba0ba5378bfbb8277abded4173" - dependencies: - chalk "^1.1.1" - jest-matcher-utils "^19.0.0" - leven "^2.0.0" - pretty-format "^19.0.0" - jodid25519@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" @@ -3860,10 +3826,6 @@ leven@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/leven/-/leven-1.0.2.tgz#9144b6eebca5f1d0680169f1a6770dcea60b75c3" -leven@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -4309,7 +4271,7 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@1.2.0, minimist@^1.1.0, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -5083,20 +5045,9 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -prettier@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.3.1.tgz#fa0ea84b45ac0ba6de6a1e4cecdcff900d563151" - dependencies: - ast-types "0.9.8" - babel-code-frame "6.22.0" - babylon "7.0.0-beta.8" - chalk "1.1.3" - esutils "2.0.2" - flow-parser "0.45.0" - get-stdin "5.0.1" - glob "7.1.1" - jest-validate "19.0.0" - minimist "1.2.0" +prettier@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.4.4.tgz#a8d1447b14c9bf67e6d420dcadd10fb9a4fad65a" pretty-error@^2.0.2: version "2.1.0" @@ -5105,12 +5056,6 @@ pretty-error@^2.0.2: renderkid "^2.0.1" utila "~0.4" -pretty-format@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-19.0.0.tgz#56530d32acb98a3fa4851c4e2b9d37b420684c84" - dependencies: - ansi-styles "^3.0.0" - private@^0.1.6, private@~0.1.5: version "0.1.7" resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" From 0336fa937f35d900fe12647226d8b4b41f69afe5 Mon Sep 17 00:00:00 2001 From: Joseph Frazier <1212jtraceur@gmail.com> Date: Wed, 21 Jun 2017 16:55:19 -0400 Subject: [PATCH 3/5] Include typescript-eslint-parser and flow-parser in build Now that prettier is available as a transformer, we should make it possible to use these parsers. --- website/webpack.config.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/website/webpack.config.js b/website/webpack.config.js index 8c16128e..e9232a62 100644 --- a/website/webpack.config.js +++ b/website/webpack.config.js @@ -26,15 +26,6 @@ const plugins = [ // so that code patch will never be executed. new webpack.IgnorePlugin(/^eslint$/, /babel-eslint/), - // Prettier // - - // typescript-eslint-parser is a dev dependency of prettier, so it's not - // installed by default but prettier does still require it. See - // https://github.com/prettier/prettier/issues/986 - new webpack.IgnorePlugin(/typescript-eslint-parser/, /\/prettier/), - // We don't use the flow parser with prettier, so we don't need to include it - new webpack.IgnorePlugin(/^flow-parser/, /\/prettier/), - // eslint // // Shim ESLint stuff that's only relevant for Node.js From 69276968c80cdb4f1a7c9c2eb7562043a427b3ab Mon Sep 17 00:00:00 2001 From: Joseph Frazier <1212jtraceur@gmail.com> Date: Wed, 28 Jun 2017 00:14:58 -0400 Subject: [PATCH 4/5] Exclude irrelevant prettier parsers from bundle See https://github.com/fkling/astexplorer/pull/246#discussion_r123365805 --- website/webpack.config.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/website/webpack.config.js b/website/webpack.config.js index 62df9781..fe66eafd 100644 --- a/website/webpack.config.js +++ b/website/webpack.config.js @@ -26,6 +26,14 @@ const plugins = [ // so that code patch will never be executed. new webpack.IgnorePlugin(/^eslint$/, /babel-eslint/), + // Prettier // + + // We don't use these parsers with prettier, so we don't need to include them + new webpack.IgnorePlugin(/parser-graphql/, /\/prettier/), + new webpack.IgnorePlugin(/parser-json/, /\/prettier/), + new webpack.IgnorePlugin(/parser-parse5/, /\/prettier/), + new webpack.IgnorePlugin(/parser-postcss/, /\/prettier/), + // eslint // // Shim ESLint stuff that's only relevant for Node.js From c1c73df32fb89a497abaa610551d1201dda0f5d6 Mon Sep 17 00:00:00 2001 From: Joseph Frazier <1212jtraceur@gmail.com> Date: Wed, 28 Jun 2017 00:20:12 -0400 Subject: [PATCH 5/5] Upgrade prettier to v1.5.2 --- website/package.json | 2 +- website/yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/website/package.json b/website/package.json index 556bb8cc..f9e7d3ed 100644 --- a/website/package.json +++ b/website/package.json @@ -92,7 +92,7 @@ "postcss-less": "^1.0.1", "postcss-safe-parser": "^3.0.0", "postcss-scss": "^1.0.0", - "prettier": "^1.4.4", + "prettier": "^1.5.2", "prop-types": "^15.5.10", "pubsub-js": "^1.4.2", "query-string": "^4.3.4", diff --git a/website/yarn.lock b/website/yarn.lock index 9d84cadf..b365cbc3 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -5049,9 +5049,9 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -prettier@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.4.4.tgz#a8d1447b14c9bf67e6d420dcadd10fb9a4fad65a" +prettier@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.5.2.tgz#7ea0751da27b93bfb6cecfcec509994f52d83bb3" pretty-error@^2.0.2: version "2.1.0"