diff --git a/.gitignore b/.gitignore index 1f603b21..7b72ec14 100644 --- a/.gitignore +++ b/.gitignore @@ -77,5 +77,4 @@ typings/ userdata.json # build output -lib umd \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index a53bfca6..9c76ff82 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: -- '8' + - '8' dist: trusty before_install: | set -e @@ -10,19 +10,20 @@ before_install: | install: | set -e date - npm install + npm install -g lerna@^3.15.0 + lerna bootstrap 2>&1 date -script: npm run build && npm run test 2>&1 +script: npm run test 2>&1 deploy: - provider: script - script: - - if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then bash ./.travis/deploy.sh; fi - skip_cleanup: true - on: - all_branches: true - repo: accordproject/markdown-transform + provider: script + script: + - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then bash ./.travis/deploy.sh; fi' + skip_cleanup: true + on: + all_branches: true + repo: accordproject/markdown-transform after_failure: tail -n +1 -- /home/travis/.npm/_logs/*-debug.log -after_success: +after_success: cache: directories: - node_modules diff --git a/.travis/deploy.sh b/.travis/deploy.sh index d25a5fce..75fc4c9c 100755 --- a/.travis/deploy.sh +++ b/.travis/deploy.sh @@ -87,7 +87,7 @@ export VERSION=$(node -e "console.log(require('${DIR}/package.json').version)") # Publish with tag echo "Pushing with tag ${TAG}" -npm publish --tag="${TAG}" 2>&1 +lerna exec -- npm publish --tag="${TAG}" 2>&1 # Check that all required modules have been published to npm and are retrievable for j in ${NPM_MODULES}; do diff --git a/.travis/stable.sh b/.travis/stable.sh index 9e4804c9..a74b2ee5 100755 --- a/.travis/stable.sh +++ b/.travis/stable.sh @@ -22,5 +22,5 @@ echo "NPM_TOKEN " ${NPM_TOKEN} npm config set registry https://registry.npmjs.org/ npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN} -npm publish --tag="${NPM_TAG}" 2>&1 -echo "Published to npm." +lerna publish --yes --conventional-commits -m "chore(release): publish %s" --force-publish=* +echo "Published to npm using lerna." diff --git a/.travis/unstable.sh b/.travis/unstable.sh index 9e4804c9..079e155b 100755 --- a/.travis/unstable.sh +++ b/.travis/unstable.sh @@ -22,5 +22,5 @@ echo "NPM_TOKEN " ${NPM_TOKEN} npm config set registry https://registry.npmjs.org/ npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN} -npm publish --tag="${NPM_TAG}" 2>&1 -echo "Published to npm." +lerna publish --yes --canary --conventional-commits -m "chore(release): publish %s" +echo "Published to npm using lerna." diff --git a/header.txt b/HEADER similarity index 100% rename from header.txt rename to HEADER diff --git a/lerna.json b/lerna.json index a1654a95..a70bbd53 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "lerna": "2.11.0", + "lerna": "3.15.0", "packages": [ "packages/*" ], diff --git a/package-lock.json b/package-lock.json index 5bb1d917..566bd400 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,6 +60,11 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -682,6 +687,13 @@ "invariant": "^2.2.2", "js-levenshtein": "^1.1.3", "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "@babel/register": { @@ -815,6 +827,11 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -896,6 +913,11 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, "yallist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", @@ -1122,6 +1144,13 @@ "npm-package-arg": "^6.1.0", "p-map": "^1.2.0", "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "@lerna/batch-packages": { @@ -1162,6 +1191,13 @@ "p-waterfall": "^1.0.0", "read-package-tree": "^5.1.6", "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "@lerna/changed": { @@ -1305,6 +1341,11 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -1338,6 +1379,11 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -1482,6 +1528,13 @@ "requires": { "@lerna/child-process": "3.14.2", "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "@lerna/import": { @@ -1757,6 +1810,13 @@ "npm-package-arg": "^6.1.0", "npmlog": "^4.1.2", "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "@lerna/prerelease-id-from-version": { @@ -1765,6 +1825,13 @@ "integrity": "sha512-Ap3Z/dNhqQuSrKmK+JmzYvQYI2vowxHvUVxZJiDVilW8dyNnxkCsYFmkuZytk5sxVz4VeGLNPS2RSsU5eeSS+Q==", "requires": { "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "@lerna/project": { @@ -1949,6 +2016,11 @@ "ssri": "^6.0.0" } }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, "yallist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", @@ -2108,6 +2180,11 @@ "temp-write": "^3.4.0" }, "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -3455,6 +3532,11 @@ "caniuse-lite": "^1.0.30000844", "electron-to-chromium": "^1.3.47" } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -3808,9 +3890,9 @@ "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=" }, "buffer": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", - "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" @@ -4850,6 +4932,13 @@ "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "crypto-browserify": { @@ -5254,9 +5343,9 @@ } }, "electron-to-chromium": { - "version": "1.3.255", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.255.tgz", - "integrity": "sha512-SZ6NlaNw3h4WR5kA1BK8XltdJCax02P+lW+z78RYoLDqmpyYuDQ5bS+/O6MCJ/j761qoZIFox2qYYt+UwqGA5w==" + "version": "1.3.256", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.256.tgz", + "integrity": "sha512-GHY1r2mO56BRMng6rkxxJvsWKtqy9k/IlSBrAV/VKwZKpTydVUJnOwajTNnl5uutJpthHgZy+HeofK5K6PqEgQ==" }, "elliptic": { "version": "6.5.1", @@ -5524,6 +5613,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -5596,9 +5690,9 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "event-stream": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.5.tgz", - "integrity": "sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", + "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", "requires": { "duplexer": "^0.1.1", "from": "^0.1.7", @@ -5941,6 +6035,37 @@ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" }, + "fileset": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.2.1.tgz", + "integrity": "sha1-WI74lzxmI7KnbfRlEFaWuWqsgGc=", + "requires": { + "glob": "5.x", + "minimatch": "2.x" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "requires": { + "brace-expansion": "^1.0.0" + } + } + } + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -6065,6 +6190,11 @@ "for-in": "^1.0.1" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, "foreground-child": { "version": "1.5.6", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", @@ -7282,6 +7412,22 @@ "gulp-util": "^3.0.7", "through2": "^2.0.1", "vinyl-file": "^2.0.0" + }, + "dependencies": { + "event-stream": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.5.tgz", + "integrity": "sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==", + "requires": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + } + } } }, "gulp-sourcemaps": { @@ -7757,6 +7903,13 @@ "semver": "2.x || 3.x || 4 || 5", "validate-npm-package-license": "^3.0.1", "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "inquirer": { @@ -8193,6 +8346,157 @@ } } }, + "istanbul-combine": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/istanbul-combine/-/istanbul-combine-0.3.0.tgz", + "integrity": "sha1-VrLV5joiBZi23ErIrVcucV6ZV3M=", + "requires": { + "glob": "^5.0.3", + "istanbul": "0.3.x", + "minimist": "^1.1.1", + "q": "^1.2.0" + }, + "dependencies": { + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=" + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "escodegen": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.7.1.tgz", + "integrity": "sha1-MOz89mypjcZ80v0WKr626vqM5vw=", + "requires": { + "esprima": "^1.2.2", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.5.0", + "source-map": "~0.2.0" + }, + "dependencies": { + "esprima": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha1-CZNQL+r2aBODJXVvMPmlH+7sEek=" + } + } + }, + "esprima": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.5.0.tgz", + "integrity": "sha1-84ekb9NEwbGjm6+MIL+0O20AWMw=" + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=" + }, + "fast-levenshtein": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz", + "integrity": "sha1-AXjc3uAjuSkFGTrwlZ6KdjnP3Lk=" + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "istanbul": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.3.22.tgz", + "integrity": "sha1-PhZNhQIf4ZyYXR8OfvDD4i0BLrY=", + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.7.x", + "esprima": "2.5.x", + "fileset": "0.2.x", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + } + }, + "levn": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.2.5.tgz", + "integrity": "sha1-uo0znQykphDjo/FFucr0iAcVUFQ=", + "requires": { + "prelude-ls": "~1.1.0", + "type-check": "~0.3.1" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "optionator": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.5.0.tgz", + "integrity": "sha1-t1qJlaLUF98ltuTjhi9QqohlE2g=", + "requires": { + "deep-is": "~0.1.2", + "fast-levenshtein": "~1.0.0", + "levn": "~0.2.5", + "prelude-ls": "~1.1.1", + "type-check": "~0.3.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + } + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, "istanbul-lib-coverage": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", @@ -8279,6 +8583,203 @@ } } }, + "istanbul-merge": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-merge/-/istanbul-merge-1.1.1.tgz", + "integrity": "sha1-db5kNDbU3nI+A6lNHKX1+ZSwvXI=", + "requires": { + "foreach": "^2.0.5", + "glob": "^7.0.5", + "istanbul-lib-coverage": "^1.0.0", + "mkdirp": "^0.5.1", + "yargs": "^4.8.1" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "requires": { + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "lodash.assign": "^4.0.3", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.1", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^2.4.1" + } + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "requires": { + "camelcase": "^3.0.0", + "lodash.assign": "^4.0.6" + } + } + } + }, "istanbul-reports": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", @@ -9361,6 +9862,33 @@ "vinyl-fs": "^2.4.3" } }, + "license-check-and-add": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/license-check-and-add/-/license-check-and-add-2.3.6.tgz", + "integrity": "sha512-fTSOoJL12YhsTOS+xqutJ7uwIcN4kPcmhCk39FWTjc1Zllyc62JGT1i+NqTfyTh38wzLQDzfLDjqsI4jSzMnfg==", + "requires": { + "pkg-conf": "^1.1.2" + } + }, + "licensecheck": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/licensecheck/-/licensecheck-1.3.0.tgz", + "integrity": "sha1-ouuJ7fqZ0ndBZ1LWp9Mp+p+wz9Q=", + "requires": { + "colors": "1.1.2", + "markdown": "0.5.0", + "spdx-license-list": "2.1.0", + "strip-json-comments": "2.0.1", + "treeify": "1.0.1" + }, + "dependencies": { + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + } + } + }, "linkify-it": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", @@ -9476,6 +10004,11 @@ "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=" }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -9621,6 +10154,11 @@ "triple-beam": "^1.3.0" }, "dependencies": { + "colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -9681,6 +10219,13 @@ "requires": { "pify": "^4.0.1", "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "make-fetch-happen": { @@ -9760,6 +10305,24 @@ "object-visit": "^1.0.0" } }, + "markdown": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", + "integrity": "sha1-KCBbVlqK51kt4gdGPWY33BgnIrI=", + "requires": { + "nopt": "~2.1.1" + }, + "dependencies": { + "nopt": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", + "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=", + "requires": { + "abbrev": "1" + } + } + } + }, "markdown-it": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", @@ -10297,6 +10860,13 @@ "requires": { "object.getownpropertydescriptors": "^2.0.3", "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "node-fetch": { @@ -10406,6 +10976,13 @@ "semver": "^5.5.0", "shellwords": "^0.1.1", "which": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "node-releases": { @@ -10414,6 +10991,13 @@ "integrity": "sha512-BHcr1g6NeUH12IL+X3Flvs4IOnl1TL0JczUhEZjDE+FXXPQcVCNr8NEPb01zqGxzhTpdyJL5GXemaCW7aw6Khw==", "requires": { "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "nopt": { @@ -10433,6 +11017,13 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "normalize-path": { @@ -10481,6 +11072,13 @@ "osenv": "^0.1.5", "semver": "^5.6.0", "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "npm-packlist": { @@ -10500,6 +11098,13 @@ "figgy-pudding": "^3.5.1", "npm-package-arg": "^6.0.0", "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "npm-run-path": { @@ -11993,9 +12598,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", + "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==" }, "serialize-javascript": { "version": "1.9.1", @@ -12090,6 +12695,11 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" }, + "sleep-promise": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/sleep-promise/-/sleep-promise-8.0.1.tgz", + "integrity": "sha1-jXlaJ+ojlT32tSuRCB5eImZZk8U=" + }, "slice-ansi": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", @@ -12264,9 +12874,9 @@ } }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -12335,6 +12945,11 @@ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" }, + "spdx-license-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-license-list/-/spdx-license-list-2.1.0.tgz", + "integrity": "sha1-N4j/tcgLJK++goOTTp5mhOpqIY0=" + }, "split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", @@ -12984,6 +13599,11 @@ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==" }, + "treeify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.0.1.tgz", + "integrity": "sha1-abPNAiAioWhCTnz6HO1EyTnT6y8=" + }, "trim-newlines": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", @@ -13721,6 +14341,11 @@ "string-width": "^1.0.2 || 2" } }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" + }, "windows-release": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", diff --git a/package.json b/package.json index 25cdc10e..59645ada 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,20 @@ { "devDependencies": { - "chai": "4.2.0", - "chai-as-promised": "7.1.1", - "chai-things": "0.2.0", + "colors": "1.3.3", "concurrently": "4.1.1", "coveralls": "3.0.4", - "eslint": "4.19.1", + "istanbul-combine": "0.3.0", + "istanbul-merge": "1.1.1", "jsdoc": "^3.6.3", "jsdoc-sphinx": "0.0.6", "lerna": "3.15.0", "license-check": "1.1.5", - "mocha": "6.1.4", - "tsd-jsdoc": "^2.3.0" + "semver": "6.2.0", + "sleep-promise": "8.0.1", + "source-map-support": "0.5.12", + "licensecheck": "1.3.0", + "license-check-and-add": "2.3.6", + "event-stream": "4.0.1" }, "engines": { "node": ">=8", @@ -29,7 +32,7 @@ "pretest": "npm run licchk", "test": "lerna run test", "repoclean": "lerna clean", - "licchk": "license-check", + "licchk": "license-check-and-add", "pkgcheck": "node ./scripts/pkgcheck.js", "pkgstamp": "node ./scripts/pkgstamp.js", "pkgbump": "node ./scripts/pkgbump.js && node ./scripts/pkgcheck.js --fix", @@ -40,9 +43,6 @@ "type": "git", "url": "https://github.com/accordproject/markdown-transform.git" }, - "publishConfig": { - "access": "public" - }, "keywords": [ "accord", "markdown", @@ -53,46 +53,78 @@ "bugs": { "url": "https://github.com/accordproject/markdown-transform/issues" }, - "license-check-config": { - "src": [ - "**/*.js", - "!./scripts/**/*", - "!./.travis/**/*", - "!./test/**/*", - "!./coverage/**/*", - "!./node_modules/**/*", - "!./out/**/*", - "!./lib/**/*", - "!./umd/**/*", - "!./bin/index.js" - ], - "path": "header.txt", - "blocking": true, - "logInfo": false, - "logError": true - }, - "nyc": { - "produce-source-map": "true", - "sourceMap": "inline", - "reporter": [ - "lcov", - "text", - "text-summary", - "html", - "json" - ], - "include": [ - "src/**/*.js" + "license-check-and-add-config": { + "folder": ".", + "license": "HEADER", + "exact_paths_method": "EXCLUDE", + "exact_paths": [ + ".git", + ".github", + "node_modules", + "packages", + "softhsm", + "build.cfg", + "README.md", + "CONTRIBUTING.md", + "DEVELOPERS.md", + "NOTICES.md", + "CHARTER.md", + "LICENSE", + "HEADER", + "docs/", + "scripts/", + ".travis", + "coverage", + ".gitignore", + ".DS_Store" ], - "exclude": [ - "scripts/**/*.js" + "file_type_method": "EXCLUDE", + "file_types": [ + ".yml", + ".log", + ".enc", + ".xmind", + ".deb", + ".vo", + ".glob", + ".aux", + ".v.d", + ".ctoj", + ".depends", + ".annot", + ".byte", + ".cmi", + ".cmo", + ".tem", + ".txt", + ".config", + ".coq_modules" ], - "all": true, - "check-coverage": true, - "statements": 88, - "branches": 76, - "functions": 84, - "lines": 88 + "insert_license": false, + "license_formats": { + "js|ergo|cto": { + "prepend": "/*", + "append": " */", + "eachLine": { + "prepend": " * " + } + }, + "v|atd|mll|mly": { + "prepend": "*", + "append": " *)", + "eachLine": { + "prepend": " * " + } + }, + "gitattributes|cfg|ocp-indent": { + "eachLine": { + "prepend": "# " + } + }, + "md": { + "file": "HEADER" + } + } }, "dependencies": {} } \ No newline at end of file diff --git a/packages/markdown-cicero/.gitignore b/packages/markdown-cicero/.gitignore new file mode 100644 index 00000000..4bd86293 --- /dev/null +++ b/packages/markdown-cicero/.gitignore @@ -0,0 +1,68 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# output directory +/out +/dist +/umd +/lib + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +!test/data/with-node_modules/node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# dynamically created archives +test/data/archives/ diff --git a/packages/markdown-cli/lib/Commands.js b/packages/markdown-cli/lib/Commands.js new file mode 100644 index 00000000..447f9c1a --- /dev/null +++ b/packages/markdown-cli/lib/Commands.js @@ -0,0 +1,120 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const Fs = require('fs'); +const Logger = require('@accordproject/markdown-common').Logger; + +const CommonMark = require('@accordproject/markdown-common').CommonMark; +const CiceroMark = require('@accordproject/markdown-cicero').CiceroMark; + +/** + * Utility class that implements the commands exposed by the CLI. + * @class + */ +class Commands { + /** + * Set a default for a file argument + * + * @param {object} argv the inbound argument values object + * @param {string} argName the argument name + * @param {string} argDefaultName the argument default name + * @param {Function} argDefaultFun how to compute the argument default + * @param {object} argDefaultValue an optional default value if all else fails + * @returns {object} a modified argument object + */ + static setDefaultFileArg(argv, argName, argDefaultName, argDefaultFun) { + if(!argv[argName]){ + Logger.info(`Loading a default ${argDefaultName} file.`); + argv[argName] = argDefaultFun(argv, argDefaultName); + } + + let argExists = true; + if (Array.isArray(argv[argName])) { + // All files should exist + for (let i = 0; i < argv[argName].length; i++) { + if (Fs.existsSync(argv[argName][i]) && argExists) { + argExists = true; + } else { + argExists = false; + } + } + } else { + // This file should exist + argExists = Fs.existsSync(argv[argName]); + } + + if (!argExists){ + throw new Error(`A ${argDefaultName} file is required. Try the --${argName} flag or create a ${argDefaultName} in the root folder of your template.`); + } else { + return argv; + } + } + + /** + * Set default params before we parse a sample text using a template + * + * @param {object} argv the inbound argument values object + * @returns {object} a modfied argument object + */ + static validateParseArgs(argv) { + argv = Commands.setDefaultFileArg(argv, 'sample', 'sample.md', ((argv, argDefaultName) => { return argDefaultName; })); + + if(argv.verbose) { + Logger.info(`parse sample ${argv.sample} using a template ${argv.template}`); + } + + return argv; + } + + /** + * Parse a sample markdown + * + * @param {string} samplePath to the sample file + * @param {string} outPath to an output file + * @param {boolean} generateMarkdown whether to transform back to markdown + * @param {boolean} withCicero whether to further transform for Cicero + * @param {boolean} noWrap whether to avoid wrapping Cicero variables in XML tags + * @returns {object} Promise to the result of parsing + */ + static parse(samplePath, outPath, generateMarkdown, withCicero, noWrap) { + const commonMark = new CommonMark(); + const ciceroMark = new CiceroMark(); + const markdownText = Fs.readFileSync(samplePath, 'utf8'); + let concertoObject = commonMark.fromString(markdownText); + if (withCicero) { + concertoObject = ciceroMark.fromCommonMark(concertoObject); + } + let result; + if (generateMarkdown) { + if (withCicero) { + const options = noWrap ? { wrapVariables: false } : null; + concertoObject = ciceroMark.toCommonMark(concertoObject, options); + } + result = commonMark.toString(concertoObject); + } else { + const json = ciceroMark.getSerializer().toJSON(concertoObject); + result = JSON.stringify(json); + } + if (outPath) { + Logger.info('Creating file: ' + outPath); + Fs.writeFileSync(outPath, result); + } + return Promise.resolve(result); + } + +} + +module.exports = Commands; diff --git a/packages/markdown-common/.gitignore b/packages/markdown-common/.gitignore new file mode 100644 index 00000000..4bd86293 --- /dev/null +++ b/packages/markdown-common/.gitignore @@ -0,0 +1,68 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# output directory +/out +/dist +/umd +/lib + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +!test/data/with-node_modules/node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# dynamically created archives +test/data/archives/ diff --git a/scripts/depcheck.js b/scripts/depcheck.js index 7887b92f..5050d6ac 100755 --- a/scripts/depcheck.js +++ b/scripts/depcheck.js @@ -21,9 +21,59 @@ const path = require('path'); const packages = {}; -const npmDirectory = path.resolve('.'); +const lernaDirectory = path.resolve('.'); -const masterPackageFile = path.resolve(npmDirectory, 'package.json'); +const masterPackageFile = path.resolve(lernaDirectory, 'package.json'); const masterPackage = require(masterPackageFile); packages['package.json'] = masterPackage; +const packagesDirectory = path.resolve(lernaDirectory, 'packages'); +const packageNames = fs.readdirSync(packagesDirectory); +packageNames.forEach((packageName) => { + const packageFile = path.resolve(packagesDirectory, packageName, 'package.json'); + const thisPackage = require(packageFile); + packages[packageName] = thisPackage; +}); + +// Not going to catch ranges but unlikely to see those anyway +const badDependencies = {}; +const checkValue = function checkValue(packageIndex, dependency, currentValue) { + if (isNaN(currentValue.slice(0,1))) { + if (!badDependencies[packageIndex]) { + badDependencies[packageIndex] = []; + } + badDependencies[packageIndex].push({ dependency: dependency, currentValue: currentValue }); + } +}; + +for (const packageIndex in packages) { + const currentPackage = packages[packageIndex]; + for (const dependency in currentPackage.dependencies) { + checkValue(packageIndex, dependency, currentPackage.dependencies[dependency]); + } + for (const dependency in currentPackage.devDependencies) { + checkValue(packageIndex, dependency, currentPackage.devDependencies[dependency]); + } + for (const dependency in currentPackage.peerDependencies) { + checkValue(packageIndex, dependency, currentPackage.peerDependencies[dependency]); + } +} + +if (Object.keys(badDependencies).length > 0) { + console.error('Error: there is a mismatch between the versions of the packages in this repository!\n'); + for (const i in packages) { + if (badDependencies[i]) { + const currentPackage = packages[i]; + console.error(` ${i} ${currentPackage.version.green}`); + if (badDependencies[i]) { + badDependencies[i].forEach((badDependency) => { + console.error(` ${badDependency.dependency}@${badDependency.currentValue.red} (should be exact)`); + }); + } + } + } + console.error('\n'); + process.exit(1); +} else { + console.log('Status: no problems detected!'); +} \ No newline at end of file diff --git a/scripts/manualrelease.sh b/scripts/manualrelease.sh index ac1d3007..c49424c4 100755 --- a/scripts/manualrelease.sh +++ b/scripts/manualrelease.sh @@ -28,12 +28,12 @@ git pull origin master # Increase the version number npm run pkgbump -TARGET_VERSION=$( jq -r '.version' package.json ) +TARGET_VERSION=$( jq -r '.version' lerna.json ) git add package.json -git commit -m "chore(release): Bump Markdown Editor source version" -s +git commit -m "chore(release): Bump Markdown Transform source version" -s # Publish each package to NPM registry. Generate changelog and update package.json files -npm publish --tag="${TARGET_VERSION}" 2>&1 +lerna publish --conventional-commits -m 'chore(release): publish %s' --force-publish=* --repo-version ${TARGET_VERSION} --yes # Fix DCO sign-off git commit --amend -s --no-edit diff --git a/scripts/pkgbump.js b/scripts/pkgbump.js index 979b3baa..910725d4 100755 --- a/scripts/pkgbump.js +++ b/scripts/pkgbump.js @@ -19,9 +19,9 @@ const fs = require('fs'); const path = require('path'); const semver = require('semver'); -const npmDirectory = path.resolve('.'); -const npmConfigFile = path.resolve(npmDirectory, 'package.json'); -const npmConfig = require(npmConfigFile); -const targetVersion = semver.inc(npmConfig.version, 'patch'); -npmConfig.version = targetVersion; -fs.writeFileSync(npmConfigFile, JSON.stringify(npmConfig, null, 2), 'utf8'); \ No newline at end of file +const lernaDirectory = path.resolve('.'); +const lernaConfigFile = path.resolve(lernaDirectory, 'lerna.json'); +const lernaConfig = require(lernaConfigFile); +const targetVersion = semver.inc(lernaConfig.version, 'patch'); +lernaConfig.version = targetVersion; +fs.writeFileSync(lernaConfigFile, JSON.stringify(lernaConfig, null, 2), 'utf8'); \ No newline at end of file diff --git a/scripts/pkgcheck.js b/scripts/pkgcheck.js index fc446361..3662ee6e 100755 --- a/scripts/pkgcheck.js +++ b/scripts/pkgcheck.js @@ -24,19 +24,108 @@ const semver = require('semver') const packages = {}; const fix = (process.argv.indexOf('--fix') !== -1); -const npmDirectory = path.resolve('.'); -const npmConfigFile = path.resolve(npmDirectory, 'package.json'); -const npmConfig = require(npmConfigFile); -const targetVersion = npmConfig.version; +const lernaDirectory = path.resolve('.'); +const lernaConfigFile = path.resolve(lernaDirectory, 'lerna.json'); +const lernaConfig = require(lernaConfigFile); +const targetVersion = lernaConfig.version; const targetDependency = `${targetVersion}`; -packages['package.json'] = npmConfig; +packages['lerna.json'] = lernaConfig; if (!semver.valid(targetVersion)) { - console.error(`Error: the version "${targetVersion}" in "${npmConfigFile}" is invalid!`); + console.error(`Error: the version "${targetVersion}" in "${lernaConfigFile}" is invalid!`); process.exit(1); } -const masterPackageFile = path.resolve(npmDirectory, 'package.json'); +const masterPackageFile = path.resolve(lernaDirectory, 'package.json'); const masterPackage = require(masterPackageFile); packages['package.json'] = masterPackage; +const packagesDirectory = path.resolve(lernaDirectory, 'packages'); +const packageNames = fs.readdirSync(packagesDirectory); +packageNames.forEach((packageName) => { + const packageFile = path.resolve(packagesDirectory, packageName, 'package.json'); + const thisPackage = require(packageFile); + packages[packageName] = thisPackage; +}); + +let mismatch = false; +const badDependencies = {}; +for (const i in packages) { + const currentPackage = packages[i]; + if (targetVersion !== currentPackage.version) { + mismatch = true; + break; + } +} + +for (const i in packages) { + const currentPackage = packages[i]; + for (const j in packages) { + const otherPackage = packages[j]; + for (const dependency in currentPackage.dependencies) { + const currentValue = currentPackage.dependencies[dependency]; + if (dependency === otherPackage.name) { + if (currentValue !== targetDependency) { + if (!badDependencies[i]) { + badDependencies[i] = []; + } + badDependencies[i].push({ dependency: dependency, currentValue: currentValue }); + mismatch = true; + } + } + } + for (const dependency in currentPackage.devDependencies) { + const currentValue = currentPackage.devDependencies[dependency]; + if (dependency === otherPackage.name) { + if (currentValue !== targetDependency) { + if (!badDependencies[i]) { + badDependencies[i] = []; + } + badDependencies[i].push({ dependency: dependency, currentValue: currentValue }); + mismatch = true; + } + } + } + for (const dependency in currentPackage.peerDependencies) { + const currentValue = currentPackage.peerDependencies[dependency]; + if (dependency === otherPackage.name) { + if (currentValue !== targetDependency) { + if (!badDependencies[i]) { + badDependencies[i] = []; + } + badDependencies[i].push({ dependency: dependency, currentValue: currentValue }); + mismatch = true; + } + } + } + } +} + +if (mismatch && !fix) { + console.error('Error: there is a mismatch between the versions of the packages in this repository!\n'); + for (const i in packages) { + const currentPackage = packages[i]; + if (targetVersion !== currentPackage.version) { + console.error(` ${i} ${currentPackage.version.red} (should be ${targetVersion})`); + } else { + console.error(` ${i} ${currentPackage.version.green}`); + } + if (badDependencies[i]) { + badDependencies[i].forEach((badDependency) => { + console.error(` ${badDependency.dependency}@${badDependency.currentValue.red} (should be ${targetDependency})`); + }); + } + } + console.error('\n'); + console.error(`Run "scripts/pkgcheck.js --fix" inside the directory "${lernaDirectory}" to resolve this problem and change the version to "${targetVersion}"`); + process.exit(1); +} else if (mismatch && fix) { + const command = `lerna publish --skip-git --skip-npm --yes --repo-version ${targetVersion} --force-publish '*' --exact`; + console.warn(`Status: running command ${command} to fix problems ...`) + child_process.execSync(command); + console.warn(`Status: modifying "${masterPackageFile} to fix problems ...`); + masterPackage.version = targetVersion; + fs.writeFileSync(masterPackageFile, JSON.stringify(masterPackage, null, 2), 'utf8'); +} else { + console.log('Status: no problems detected!'); +} \ No newline at end of file diff --git a/scripts/pkgset.js b/scripts/pkgset.js index 069120f8..5b1a1505 100644 --- a/scripts/pkgset.js +++ b/scripts/pkgset.js @@ -19,11 +19,52 @@ const fs = require('fs'); const path = require('path'); const semver = require('semver') -const npmDirectory = path.resolve('.'); -const npmConfigFile = path.resolve(npmDirectory, 'package.json'); -const npmConfig = require(npmConfigFile); -npmConfig.version.replace(/-.*/, ''); +const lernaDirectory = path.resolve('.'); +const lernaConfigFile = path.resolve(lernaDirectory, 'lerna.json'); +const lernaConfig = require(lernaConfigFile); +lernaConfig.version.replace(/-.*/, ''); const targetVersion = semver.clean(process.argv[2]); -npmConfig.version = targetVersion; -fs.writeFileSync(npmConfigFile, JSON.stringify(npmConfig, null, 2), 'utf8'); +lernaConfig.version = targetVersion; +fs.writeFileSync(lernaConfigFile, JSON.stringify(lernaConfig, null, 2), 'utf8'); +const masterPackageFile = path.resolve(lernaDirectory, 'package.json'); +const masterPackage = require(masterPackageFile); +masterPackage.version = targetVersion; +fs.writeFileSync(masterPackageFile, JSON.stringify(masterPackage, null, 2), 'utf8'); + +const packagesDirectory = path.resolve(lernaDirectory, 'packages'); +const packageNames = fs.readdirSync(packagesDirectory); +const packages = {}; +packageNames.forEach((packageName) => { + const packageFile = path.resolve(packagesDirectory, packageName, 'package.json'); + const thisPackage = require(packageFile); + thisPackage.version = targetVersion; + packages[packageName] = thisPackage; +}); + +for (const i in packages) { + const currentPackage = packages[i]; + for (const j in packages) { + const otherPackage = packages[j]; + for (const dependency in currentPackage.dependencies) { + const currentValue = currentPackage.dependencies[dependency]; + if (dependency === otherPackage.name) { + currentPackage.dependencies[dependency] = targetVersion; + } + } + for (const dependency in currentPackage.devDependencies) { + const currentValue = currentPackage.devDependencies[dependency]; + if (dependency === otherPackage.name) { + currentPackage.devDependencies[dependency] = targetVersion; + } + } + for (const dependency in currentPackage.peerDependencies) { + const currentValue = currentPackage.peerDependencies[dependency]; + if (dependency === otherPackage.name) { + currentPackage.peerDependencies[dependency] = targetVersion; + } + } + } + const packageFile = path.resolve(packagesDirectory, i, 'package.json'); + fs.writeFileSync(packageFile, JSON.stringify(currentPackage, null, 2), 'utf8'); +} diff --git a/scripts/pkgstamp.js b/scripts/pkgstamp.js index 8b8a409d..0c0e48ed 100755 --- a/scripts/pkgstamp.js +++ b/scripts/pkgstamp.js @@ -22,11 +22,52 @@ const semver = require('semver'); const timestamp = moment().format('YYYYMMDDHHmmss'); -const npmDirectory = path.resolve('.'); -const npmConfigFile = path.resolve(npmDirectory, 'package.json'); -const npmConfig = require(npmConfigFile); -npmConfig.version.replace(/-.*/, ''); -const targetVersion = semver.inc(npmConfig.version, 'patch') + '-' + timestamp; -npmConfig.version = targetVersion; -fs.writeFileSync(npmConfigFile, JSON.stringify(npmConfig, null, 2), 'utf8'); +const lernaDirectory = path.resolve('.'); +const lernaConfigFile = path.resolve(lernaDirectory, 'lerna.json'); +const lernaConfig = require(lernaConfigFile); +lernaConfig.version.replace(/-.*/, ''); +const targetVersion = semver.inc(lernaConfig.version, 'patch') + '-' + timestamp; +lernaConfig.version = targetVersion; +fs.writeFileSync(lernaConfigFile, JSON.stringify(lernaConfig, null, 2), 'utf8'); +const masterPackageFile = path.resolve(lernaDirectory, 'package.json'); +const masterPackage = require(masterPackageFile); +masterPackage.version = targetVersion; +fs.writeFileSync(masterPackageFile, JSON.stringify(masterPackage, null, 2), 'utf8'); + +const packagesDirectory = path.resolve(lernaDirectory, 'packages'); +const packageNames = fs.readdirSync(packagesDirectory); +const packages = {}; +packageNames.forEach((packageName) => { + const packageFile = path.resolve(packagesDirectory, packageName, 'package.json'); + const thisPackage = require(packageFile); + thisPackage.version = targetVersion; + packages[packageName] = thisPackage; +}); + +for (const i in packages) { + const currentPackage = packages[i]; + for (const j in packages) { + const otherPackage = packages[j]; + for (const dependency in currentPackage.dependencies) { + const currentValue = currentPackage.dependencies[dependency]; + if (dependency === otherPackage.name) { + currentPackage.dependencies[dependency] = targetVersion; + } + } + for (const dependency in currentPackage.devDependencies) { + const currentValue = currentPackage.devDependencies[dependency]; + if (dependency === otherPackage.name) { + currentPackage.devDependencies[dependency] = targetVersion; + } + } + for (const dependency in currentPackage.peerDependencies) { + const currentValue = currentPackage.peerDependencies[dependency]; + if (dependency === otherPackage.name) { + currentPackage.peerDependencies[dependency] = targetVersion; + } + } + } + const packageFile = path.resolve(packagesDirectory, i, 'package.json'); + fs.writeFileSync(packageFile, JSON.stringify(currentPackage, null, 2), 'utf8'); +}