diff --git a/.babelrc b/.babelrc index 16ab913..1f63e62 100644 --- a/.babelrc +++ b/.babelrc @@ -2,13 +2,45 @@ "plugins": [ "transform-object-rest-spread", "transform-flow-strip-types", - ["transform-runtime", { "polyfill": false }] - ], - "presets": [ - ["env", { - "targets": { - "node": 4 - }, - }] ], + "env": { + "cjs": { + "plugins": [ + "transform-class-properties", + ["transform-runtime", { "polyfill": false }] + ], + "presets": [ + ["env", { + "targets": { + "node": 4 + }, + }] + ], + }, + "mjs": { + "plugins": ["transform-class-properties"], + "presets": [ + [ + "env", + { + "targets": { + "node": "8.0.0" + }, + "loose": true, + "modules": false + } + ] + ] + }, + "test": { + "plugins": ["transform-class-properties"], + "presets": [ + ["env", { + "targets": { + "node": "current" + }, + }] + ] + } + } } diff --git a/.eslintignore b/.eslintignore index c3864d7..2d73a32 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ flow-typed lib +mjs diff --git a/.flowconfig b/.flowconfig index dc0eedd..dd3098b 100644 --- a/.flowconfig +++ b/.flowconfig @@ -2,7 +2,7 @@ .*/coverage/.* .*/resources/.* /lib/.* -/dist/.* +/mjs/.* .*/node_modules/ajv.* .*/node_modules/acorn.* .*/node_modules/async.* diff --git a/.gitignore b/.gitignore index 7eb80f0..47d2640 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,7 @@ node_modules # Transpiled code /es /lib +/mjs coverage .nyc_output diff --git a/package.json b/package.json index a3fc379..9ae083b 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,11 @@ "version": "0.0.0-semantically-released", "description": "AWS Cloud API via GraphQL", "files": [ - "lib" + "lib", + "mjs" ], "main": "lib/index.js", + "module": "mjs/index.mjs", "repository": { "type": "git", "url": "https://github.com/graphql-compose/graphql-compose-aws.git" @@ -33,6 +35,7 @@ "babel-cli": "^6.26.0", "babel-eslint": "^8.2.5", "babel-jest": "^23.2.0", + "babel-plugin-transform-class-properties": "^6.24.1", "babel-plugin-transform-flow-strip-types": "^6.22.0", "babel-plugin-transform-object-rest-spread": "^6.26.0", "babel-plugin-transform-runtime": "^6.23.0", @@ -51,7 +54,6 @@ "graphql-compose": "^4.4.1", "jest": "^23.2.0", "nodemon": "^1.17.5", - "npm-run-all": "^4.1.3", "prettier": "^1.13.6", "rimraf": "^2.6.2", "semantic-release": "^15.6.0" @@ -67,9 +69,11 @@ ] }, "scripts": { - "build": "npm-run-all build:*", - "build:lib": "rimraf lib && babel src --ignore __tests__,__mocks__ -d lib", - "build:flow": "find ./src -name '*.js' -not -path '*/__*' | while read filepath; do cp $filepath `echo $filepath | sed 's/\\/src\\//\\/lib\\//g'`.flow; done", + "build": "npm run build-cjs && npm run build-mjs", + "build-cjs": "rimraf lib && BABEL_ENV=cjs babel src --ignore __tests__,__mocks__ -d lib && COPY_TO_FOLDER=lib npm run build-flow", + "build-mjs": "rimraf mjs && BABEL_ENV=mjs babel src --ignore __tests__,__mocks__ -d mjs && yarn build-mjs-rename && COPY_TO_FOLDER=mjs npm run build-flow", + "build-mjs-rename": "find ./mjs -name \"*.js\" -exec bash -c 'mv \"$1\" \"${1%.js}\".mjs' - '{}' \\;", + "build-flow": "find ./src -name '*.js' -not -path '*/__*' | while read filepath; do cp $filepath `echo ./${COPY_TO_FOLDER:-lib}$filepath | sed 's/.\\/src\\//\\//g'`.flow; done", "demo": "npm run demo-fullApi", "demo-fullApi": "nodemon -e js --ignore *test* --exec ./node_modules/.bin/babel-node ./examples/fullApi/index.js", "demo-introspection": "./node_modules/.bin/babel-node ./examples/introspection/generate.js", diff --git a/yarn.lock b/yarn.lock index f9ca765..44e5028 100644 --- a/yarn.lock +++ b/yarn.lock @@ -374,10 +374,6 @@ array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -390,14 +386,6 @@ array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -743,6 +731,10 @@ babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" @@ -767,6 +759,15 @@ babel-plugin-transform-async-to-generator@^6.22.0: babel-plugin-syntax-async-functions "^6.8.0" babel-runtime "^6.22.0" +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" @@ -1704,7 +1705,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.0, cross-spawn@^6.0.4, cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" dependencies: @@ -1988,15 +1989,6 @@ es-abstract@^1.10.0, es-abstract@^1.6.1: is-callable "^1.1.3" is-regex "^1.0.4" -es-abstract@^1.4.3: - version "1.7.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.0" - is-callable "^1.1.3" - is-regex "^1.0.3" - es-abstract@^1.5.1: version "1.10.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" @@ -3401,7 +3393,7 @@ is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" -is-regex@^1.0.3, is-regex@^1.0.4: +is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" dependencies: @@ -4180,10 +4172,6 @@ mem@^1.1.0: dependencies: mimic-fn "^1.0.0" -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - meow@^3.3.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -4561,20 +4549,6 @@ normalize-url@^2.0.1: query-string "^5.0.1" sort-keys "^2.0.0" -npm-run-all@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.3.tgz#49f15b55a66bb4101664ce270cb18e7103f8f185" - dependencies: - ansi-styles "^3.2.0" - chalk "^2.1.0" - cross-spawn "^6.0.4" - memorystream "^0.3.1" - minimatch "^3.0.4" - ps-tree "^1.1.0" - read-pkg "^3.0.0" - shell-quote "^1.6.1" - string.prototype.padend "^3.0.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -5707,15 +5681,6 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" -shell-quote@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -5979,14 +5944,6 @@ string.prototype.matchall@^2.0.0: has-symbols "^1.0.0" regexp.prototype.flags "^1.2.0" -string.prototype.padend@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.4.3" - function-bind "^1.0.2" - string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"