From 7bf390abda320868902ca14c6b4ed5780bc04cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Mon, 13 Apr 2020 09:48:11 +0200 Subject: [PATCH] add markdown linting using remark (#2181) * build: add markdown linting * build: support markdown front matter * build: fail remark lint on warnings * Fix markdown lint warnings * changelog: fix markdown errors, allow literal URLs * ci: add markdown lint step * website: regenerate contributing.md * build: properly ignore vendor and built files from remark-lint * build: add private packages to lerna config --- .github/CONTRIBUTING.md | 4 +- .gitignore | 1 + .travis.yml | 9 +- CHANGELOG.md | 12 +- lerna.json | 3 +- package-lock.json | 1071 ++++++++++++++++- package.json | 11 +- packages/@uppy/companion/ARCHITECTURE.md | 10 +- packages/@uppy/companion/KUBERNETES.md | 27 +- .../@uppy/utils/src/getDroppedFiles/README.md | 8 +- private/README.md | 2 + private/remark-lint-uppy/README.md | 14 + private/remark-lint-uppy/index.js | 23 + private/remark-lint-uppy/package.json | 22 + website/src/_posts/2016-08-0.8.0.md | 2 +- website/src/_posts/2016-08-0.9.0.md | 12 +- website/src/_posts/2016-09-0.10.md | 14 +- website/src/_posts/2016-11-0.11.md | 2 +- website/src/_posts/2016-12-0.12.md | 6 +- website/src/_posts/2017-02-0.14.md | 4 +- website/src/_posts/2017-03-0.15.md | 4 +- website/src/_posts/2017-05-0.16.md | 10 +- website/src/_posts/2017-05-0.17.md | 18 +- website/src/_posts/2017-08-0.18.md | 2 +- website/src/_posts/2018-02-0.23.md | 11 +- website/src/_posts/2018-10-0.28.md | 2 +- website/src/_posts/2019-03-0.30.md | 4 +- website/src/_posts/2019-03-liftoff-01.md | 10 +- website/src/_posts/2019-03-liftoff-02.md | 10 +- website/src/_posts/2019-04-liftoff-09.md | 4 +- website/src/_posts/2019-10-1.5.md | 2 +- website/src/_posts/2020-04-1.10.md | 2 +- website/src/_template/contributing.md | 4 +- website/src/docs/companion.md | 5 +- website/src/docs/index.md | 2 +- website/src/docs/robodog-form.md | 1 - website/src/docs/thumbnail-generator.md | 2 +- website/src/docs/uppy.md | 4 +- website/src/privacy.md | 6 +- 39 files changed, 1239 insertions(+), 121 deletions(-) create mode 100644 private/README.md create mode 100644 private/remark-lint-uppy/README.md create mode 100644 private/remark-lint-uppy/index.js create mode 100644 private/remark-lint-uppy/package.json diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 7562c2eeaa..24b0aadcea 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -145,7 +145,7 @@ To quickly summarize: #### Utilities -Syntax: u-[sm-|md-|lg-] +Syntax: `u-[sm-|md-|lg-]` ```css .u-utilityName @@ -155,7 +155,7 @@ Syntax: u-[sm-|md-|lg-] #### Components -Syntax: [-][-descendentName][--modifierName] +Syntax: `[-][-descendentName][--modifierName]` ```css .twt-Button /* Namespaced component */ diff --git a/.gitignore b/.gitignore index dd964e184f..b3f7f73470 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ dist/ lib/ coverage/ examples/dev/bundle.js +examples/aws-presigned-url/vendor/* test/endtoend/create-react-app/build/ test/endtoend/create-react-app/coverage/ uppy-*.tgz diff --git a/.travis.yml b/.travis.yml index 9bf891e02a..15624f1814 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,10 +37,17 @@ jobs: - name: 'Run unit tests on Node.js 10' node_js: 10 script: npm run test:unit - - name: 'Run Linting and type tests' + - name: 'Run Linting' node_js: 10 script: - npm run lint + - name: 'Run Markdown Linting' + node_js: 10 + script: + - npm run lint:markdown + - name: 'Run type tests' + node_js: 10 + script: # Need to do a bunch of work to generate the locale typings 🙃 - npm run build:lib - npm run build:companion diff --git a/CHANGELOG.md b/CHANGELOG.md index 5856b80362..653d25ea28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# Changelog + + + Our combined changelog and roadmap. It contains todos as well as dones. Items can be optionally be tagged tagged by GitHub owner issue if discussion @@ -319,7 +323,7 @@ This release adds `@uppy/onedrive` to `uppy`’s `package.json`, fixing the bug - build: Actually check types. Use tsd so our typings test files can actually assert that types are correct (#1918 / @goto-bus-stop ) - @uppy/companion: Only set cookies for providers that need it (#2055 / @ifedapoolarewaju) - docs: Add Content-Type header to presigned url example (#2061 / @scherroman) -- uppy: Add onedrive to uppy package.json ([349247607513bc6b33bf2a90ab0b82f8f2e81d78](https://github.com/transloadit/uppy/commit/349247607513bc6b33bf2a90ab0b82f8f2e81d78 / @arturi)) +- uppy: Add onedrive to uppy package.json ([349247607513bc6b33bf2a90ab0b82f8f2e81d78](https://github.com/transloadit/uppy/commit/349247607513bc6b33bf2a90ab0b82f8f2e81d78) / @arturi) ## 1.9.1 @@ -1269,7 +1273,7 @@ New versions in this release: Changes: -- build: Add initial version table script [skip ci] (@goto-bus-stop) +- build: Add initial version table script (@goto-bus-stop) - build: Add more checks to release script (#1050 / @goto-bus-stop) - build: start companion once in tests (#1052 / @ifedapoolarewaju) - buid: set companion config values when running test (@ifedapoolarewaju) @@ -1524,7 +1528,7 @@ Changed strings: Released: 2018-05-14. -- core: Pass `allowedFileTypes` and `maxNumberOfFiles` to input[type=file] in UI components: Dashboard, DragDrop, FileInput (#814 / @arturi) +- core: Pass `allowedFileTypes` and `maxNumberOfFiles` to `input[type=file]` in UI components: Dashboard, DragDrop, FileInput (#814 / @arturi) - transloadit: Update Transloadit plugin's Uppy Server handling (#804 / @goto-bus-stop) - tus: respect `limit` option for upload parameter requests (#817 / @ap--) - docs: Explain name `metadata` vs. `$_FILES[]["name"]` (#1c1bf2e / @goto-bus-stop) @@ -1987,7 +1991,7 @@ Favorite Uppy Server version: 0.5.0. - website: try on a Github ribbon http://tholman.com/github-corners/ (@arturi / #150) - website: different meta description for pages and post (@arturi) - server: well documented README (@ifedapoolarewaju) -- react: [WIP] High-level React Components (@goto-bus-stop / #170) +- react: High-level React Components (@goto-bus-stop / #170) - core: add `uppy.close()` for tearing down an Uppy instance (@goto-bus-stop / #182) - core: replace `babel-preset-es2015-loose` by standard es2015 preset with `loose` option (@goto-bus-stop / #174) diff --git a/lerna.json b/lerna.json index bec19ad40e..66d3f20cb9 100644 --- a/lerna.json +++ b/lerna.json @@ -4,6 +4,7 @@ "website", "examples/*", "packages/*", - "packages/@uppy/*" + "packages/@uppy/*", + "private/*" ] } diff --git a/package-lock.json b/package-lock.json index 4667233e69..6a99beb9e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7730,6 +7730,11 @@ "resolved": "https://registry.npmjs.org/@types/tus-js-client/-/tus-js-client-1.8.0.tgz", "integrity": "sha512-lWxu5+6qfyfwsW99GzUeJ9y9JeOSSLduKxgYMvaYM7sGTDKZsrIIHTUbHI2P016xhXtu9NxmUM3GrB4i14ie4A==" }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", + "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==" + }, "@types/uuid": { "version": "3.4.7", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.7.tgz", @@ -11676,6 +11681,12 @@ "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -13357,6 +13368,12 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, + "ccount": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz", + "integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==", + "dev": true + }, "center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", @@ -13448,6 +13465,30 @@ } } }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", @@ -13751,6 +13792,11 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==" + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -19111,6 +19157,14 @@ "reusify": "^1.0.0" } }, + "fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "requires": { + "format": "^0.2.0" + } + }, "fb-watchman": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", @@ -19509,6 +19563,11 @@ } } }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=" + }, "formidable": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", @@ -22622,6 +22681,28 @@ } } }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", @@ -22702,6 +22783,12 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -22729,6 +22816,12 @@ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" }, + "is-empty": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", + "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=", + "dev": true + }, "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", @@ -22800,6 +22893,12 @@ "is-extglob": "^2.1.1" } }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, "is-html": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", @@ -23116,11 +23215,23 @@ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "dev": true + }, "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", @@ -24901,6 +25012,17 @@ "type-check": "~0.3.2" } }, + "libnpmconfig": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", + "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" + } + }, "light-server": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/light-server/-/light-server-2.6.4.tgz", @@ -25339,6 +25461,24 @@ "strip-bom": "^3.0.0" } }, + "load-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-3.0.0.tgz", + "integrity": "sha512-od7eKCCZ62ITvFf8nHHrIiYmgOHb4xVNDRDqxBWSaao5FZyyZVX8OmRCbwjDGPrSrgIulwPNyBsWCGnhiDC0oQ==", + "dev": true, + "requires": { + "libnpmconfig": "^1.0.0", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -26012,6 +26152,12 @@ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -26234,6 +26380,27 @@ "nopt": "~2.1.1" } }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "dev": true + }, + "markdown-extensions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", + "dev": true + }, + "markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "requires": { + "repeat-string": "^1.0.0" + } + }, "marked": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.3.tgz", @@ -26291,6 +26458,25 @@ "safe-buffer": "^5.1.2" } }, + "mdast-comment-marker": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-1.1.2.tgz", + "integrity": "sha512-vTFXtmbbF3rgnTh3Zl3irso4LtvwUq/jaDvT2D1JqTGAwaipcS7RpTxzi6KjoRqI9n2yuAhzLDAC8xVTF3XYVQ==" + }, + "mdast-util-compact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", + "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "mdast-util-heading-style": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-1.0.6.tgz", + "integrity": "sha512-8ZuuegRqS0KESgjAGW8zTx4tJ3VNIiIaGFNEzFpRSAQBavVc7AvOo9I4g3crcZBfYisHs4seYh0rAVimO6HyOw==" + }, "mdast-util-inject": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mdast-util-inject/-/mdast-util-inject-1.1.0.tgz", @@ -29499,6 +29685,20 @@ "safe-buffer": "^5.1.1" } }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, "parse-github-repo-url": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", @@ -29925,6 +30125,11 @@ "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=" }, + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==" + }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -32149,6 +32354,262 @@ "query-string": "^4.2.3" } }, + "remark": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.0.tgz", + "integrity": "sha512-oX4lMIS0csgk8AEbzY0h2jdR0ngiCHOpwwpxjmRa5TqAkeknY+tkhjRJGZqnCmvyuWh55/0SW5WY3R3nn3PH9A==", + "dev": true, + "requires": { + "remark-parse": "^8.0.0", + "remark-stringify": "^8.0.0", + "unified": "^9.0.0" + } + }, + "remark-cli": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-8.0.0.tgz", + "integrity": "sha512-5iRrk8ad+dU4espDl60H7ANhXqoaEXYsIyL8Mau0lDN6pP7QMAZsZTCX2XdoCfKfKEpiOggA7CHv43HkyVEppA==", + "dev": true, + "requires": { + "markdown-extensions": "^1.1.0", + "remark": "^12.0.0", + "unified-args": "^8.0.0" + } + }, + "remark-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-2.0.0.tgz", + "integrity": "sha512-uNOQt4tO14qBFWXenF0MLC4cqo3dv8qiHPGyjCl1rwOT0LomSHpcElbjjVh5CwzElInB38HD8aSRVugKQjeyHA==", + "requires": { + "fault": "^1.0.1" + } + }, + "remark-lint": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-7.0.0.tgz", + "integrity": "sha512-OLrWPYy0MUcGLa/2rjuy1kQILTRRK+JiRtyUzqe4XRoHboGuvFDcy/W2e7sq5hu/0xmD+Eh7cEa1Coiqp7LeaA==", + "requires": { + "remark-message-control": "^6.0.0" + } + }, + "remark-lint-final-newline": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/remark-lint-final-newline/-/remark-lint-final-newline-1.0.4.tgz", + "integrity": "sha512-pUwqX8TVTTfqX5arMnu9Dr2ufg6wZ6Pk1VeqlnWfK92PBXLG8Zc3yrLpYXOJy1fHdWpqUECRRowG0H/OkZIEbw==", + "requires": { + "unified-lint-rule": "^1.0.0" + } + }, + "remark-lint-hard-break-spaces": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-2.0.0.tgz", + "integrity": "sha512-dmB8GucOSDtEctwa+Y8JlSAWF4q8HcquvLr+OpFOSE1QCrpFoZdb2mcSY+rZuTtfeg4S60orhhzArd2aiHvUPQ==", + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + } + }, + "remark-lint-no-auto-link-without-protocol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-2.0.0.tgz", + "integrity": "sha512-pIntUa+zNiyRxIt2Wvp1soktDbVnk1SEiJXsjcLYYn9GapgXqOQG5ZfFwR6zxTkGV5mZKo9927EvHQkvIV6cLQ==", + "requires": { + "mdast-util-to-string": "^1.0.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + } + }, + "remark-lint-no-blockquote-without-marker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-3.0.0.tgz", + "integrity": "sha512-auyAxMVDuhvGw29VilqUfUIUnBT7qmByG/kBPqV/GwM1a5rn4fIUJ7p9Je9BlWMRCBMTNQUMsm3ce0dawouVew==", + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0", + "vfile-location": "^3.0.0" + } + }, + "remark-lint-no-duplicate-definitions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-definitions/-/remark-lint-no-duplicate-definitions-2.0.0.tgz", + "integrity": "sha512-Z5DkYKbmS+r4D0ZhaXgK6L72EWzhiklpXNF/TS+KCsffAFgfy5aJfSA3A8GpVNj1wYMP35STXBGBCLW5TckvGw==", + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-stringify-position": "^2.0.0", + "unist-util-visit": "^2.0.0" + } + }, + "remark-lint-no-heading-content-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-heading-content-indent/-/remark-lint-no-heading-content-indent-2.0.0.tgz", + "integrity": "sha512-Zqg0WXG60Nan8j7HZtnBXidMxXhlhc7Q5JrB54I3n7H3vSPCyaqhZJ2/obYVLalEVGND8NOJGvfA1rtchaZyYg==", + "requires": { + "mdast-util-heading-style": "^1.0.2", + "pluralize": "^8.0.0", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + } + }, + "remark-lint-no-inline-padding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-2.0.0.tgz", + "integrity": "sha512-0YueQ3SBA8zFQYCN0/afRc6ZuSbM4Azx4sPVeVpAfMT0MrYgmi6msswyhUDXaeN2RwVO6bx/ZW6di8dVqRr7UA==", + "requires": { + "mdast-util-to-string": "^1.0.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^2.0.0" + } + }, + "remark-lint-no-literal-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-2.0.0.tgz", + "integrity": "sha512-bZAxr65ftz9joszDkSs2LBeJB2cRE8GydUtxYdA1WRHYmVW1AfM5ilcqLnWhiOmu+XMPH7J0eRvUzbtvu+xerw==", + "requires": { + "mdast-util-to-string": "^1.0.2", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + } + }, + "remark-lint-no-shortcut-reference-image": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-2.0.0.tgz", + "integrity": "sha512-kgGCQBHibJ0IFVhWjnfjbqkKC0VeL5+cvyjjwfMJlgZrHEXNOYb2FJE2nvF/l6PSXQ17goRZpznTBfP4mQieUA==", + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^2.0.0" + } + }, + "remark-lint-no-shortcut-reference-link": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-2.0.0.tgz", + "integrity": "sha512-rSdGLWpEsHa4b2doUch+B7QtUHH9XuC8Hndb4rAYf8U0d48KfGAIoiicxUho8qZJ4VA3RIaDo4kA/iQ15Al+Vg==", + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^2.0.0" + } + }, + "remark-lint-no-undefined-references": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-undefined-references/-/remark-lint-no-undefined-references-2.0.0.tgz", + "integrity": "sha512-K4k05pmlMRqEMUDYewitRUx8zM+ntJWbG61dILmL7to7uy0JoSbzuDtz1cxC+kKBKzkulPnyE3WOgRZG8RX2Jg==", + "requires": { + "collapse-white-space": "^1.0.4", + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^2.0.0" + } + }, + "remark-lint-no-unused-definitions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-unused-definitions/-/remark-lint-no-unused-definitions-2.0.0.tgz", + "integrity": "sha512-Y8zrulwaf7z6WR1ICfEGjW92iq2SPEN7Zhrs0nloNITHOg22tIPf28TurUz9HSQ3sEd52d9bZCfW9RkdfMq1xw==", + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-visit": "^2.0.0" + } + }, + "remark-lint-ordered-list-marker-style": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-2.0.0.tgz", + "integrity": "sha512-zYMZA8tQD/slJYKqsstZv0/Q34Hkdlf4DjC8SOr92PSA60R/xr7JdVd/AHHisbMsFvdnHZrxaB8oIOtbAUJCSw==", + "requires": { + "unified-lint-rule": "^1.0.0", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + } + }, + "remark-lint-uppy": { + "version": "file:private/remark-lint-uppy", + "requires": { + "remark-frontmatter": "^2.0.0", + "remark-lint": "^7.0.0", + "remark-lint-final-newline": "^1.0.4", + "remark-lint-hard-break-spaces": "^2.0.0", + "remark-lint-no-auto-link-without-protocol": "^2.0.0", + "remark-lint-no-blockquote-without-marker": "^3.0.0", + "remark-lint-no-duplicate-definitions": "^2.0.0", + "remark-lint-no-heading-content-indent": "^2.0.0", + "remark-lint-no-inline-padding": "^2.0.0", + "remark-lint-no-literal-urls": "^2.0.0", + "remark-lint-no-shortcut-reference-image": "^2.0.0", + "remark-lint-no-shortcut-reference-link": "^2.0.0", + "remark-lint-no-undefined-references": "^2.0.0", + "remark-lint-no-unused-definitions": "^2.0.0", + "remark-lint-ordered-list-marker-style": "^2.0.0" + } + }, + "remark-message-control": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-6.0.0.tgz", + "integrity": "sha512-k9bt7BYc3G7YBdmeAhvd3VavrPa/XlKWR3CyHjr4sLO9xJyly8WHHT3Sp+8HPR8lEUv+/sZaffL7IjMLV0f6BA==", + "requires": { + "mdast-comment-marker": "^1.0.0", + "unified-message-control": "^3.0.0" + } + }, + "remark-parse": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.0.tgz", + "integrity": "sha512-Ck14G1Ns/GEPXhSw6m1Uv28kMtVk63e59NyL+QlhBBwBdIUXROM6MPfBehPhW6TW2d73batMdZsKwuxl5i3tEA==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + } + }, + "remark-stringify": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.0.0.tgz", + "integrity": "sha512-cABVYVloFH+2ZI5bdqzoOmemcz/ZuhQSH6W6ZNYnLojAUUn3xtX7u+6BpnYp35qHoGr2NFBsERV14t4vCIeW8w==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^2.0.0", + "mdast-util-compact": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^3.0.0", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -32183,6 +32644,12 @@ "to-string-x": "^2.1.1" } }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, "replace-x": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/replace-x/-/replace-x-1.7.2.tgz", @@ -33711,6 +34178,11 @@ "is-fullwidth-code-point": "^2.0.0" } }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, "slide": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", @@ -34339,6 +34811,12 @@ "type-fest": "^0.7.1" } }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "dev": true + }, "static-eval": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.3.tgz", @@ -34795,6 +35273,19 @@ } } }, + "stringify-entities": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.0.0.tgz", + "integrity": "sha512-h7NJJIssprqlyjHT2eQt2W1F+MCcNmwPGlKb0bWEdET/3N44QN3QbUF/ueKCgAssyKRZ3Br9rQ7FcXjHr0qLHw==", + "dev": true, + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.2", + "is-hexadecimal": "^1.0.0" + } + }, "stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -35719,6 +36210,24 @@ "is-symbol": "^1.0.2" } }, + "to-vfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-6.1.0.tgz", + "integrity": "sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==", + "dev": true, + "requires": { + "is-buffer": "^2.0.0", + "vfile": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } + } + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -35822,6 +36331,12 @@ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, "trim-left-x": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/trim-left-x/-/trim-left-x-4.1.2.tgz", @@ -35860,6 +36375,12 @@ "white-space-x": "^4.1.1" } }, + "trim-trailing-lines": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz", + "integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==", + "dev": true + }, "trim-x": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/trim-x/-/trim-x-4.1.2.tgz", @@ -35870,6 +36391,12 @@ "trim-right-x": "^4.1.2" } }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true + }, "true-case-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", @@ -36498,6 +37025,16 @@ } } }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dev": true, + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -36538,37 +37075,332 @@ } } }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "unified": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.0.0.tgz", + "integrity": "sha512-ssFo33gljU3PdlWLjNp15Inqb77d6JnJSfyplGJPT/a+fNRNyCBeveBAYJdO5khKdF6WVHa/yYCC7Xl6BDwZUQ==", + "dev": true, "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + } } }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "unified-args": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-8.0.0.tgz", + "integrity": "sha512-224jfXOL0Xu0e52fJTfxmAaNTuW1zopPmnXh/5GDAxx4Z6NbcZpjgQPBmo1xoLAhGih0rWVG2+a2kodzrEHfHw==", "dev": true, "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { + "camelcase": "^5.0.0", + "chalk": "^3.0.0", + "chokidar": "^3.0.0", + "fault": "^1.0.2", + "json5": "^2.0.0", + "minimist": "^1.2.0", + "text-table": "^0.2.0", + "unified-engine": "^8.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "readdirp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.7" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "unified-engine": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-8.0.0.tgz", + "integrity": "sha512-vLUezxCnjzz+ya4pYouRQVMT8k82Rk4fIj406UidRnSFJdGXFaQyQklAnalsQHJrLqAlaYPkXPUa1upfVSHGCA==", + "dev": true, + "requires": { + "concat-stream": "^2.0.0", + "debug": "^4.0.0", + "fault": "^1.0.0", + "figures": "^3.0.0", + "glob": "^7.0.3", + "ignore": "^5.0.0", + "is-buffer": "^2.0.0", + "is-empty": "^1.0.0", + "is-plain-obj": "^2.0.0", + "js-yaml": "^3.6.1", + "load-plugin": "^3.0.0", + "parse-json": "^5.0.0", + "to-vfile": "^6.0.0", + "trough": "^1.0.0", + "unist-util-inspect": "^5.0.0", + "vfile-reporter": "^6.0.0", + "vfile-statistics": "^1.1.0" + }, + "dependencies": { + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "unified-lint-rule": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.5.tgz", + "integrity": "sha512-jOPr/fx8lTzqszEfh46p99jUMqgPlIZ8rNKllEepumISvgfj9lUq1c7BSpVihr0L1df3lkjVHAThRPS7dIyjYg==", + "requires": { + "wrapped": "^1.0.1" + } + }, + "unified-message-control": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-3.0.1.tgz", + "integrity": "sha512-K2Kvvp1DBzeuxYLLsumZh/gDWUTl4e2z/P3VReFirC78cfHKtQifbhnfRrSBtKtd1Uc6cvYTW0/SZIUaMAEcTg==", + "requires": { + "unist-util-visit": "^2.0.0", + "vfile-location": "^3.0.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", @@ -36586,6 +37418,66 @@ "crypto-random-string": "^1.0.0" } }, + "unist-util-generated": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.5.tgz", + "integrity": "sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw==" + }, + "unist-util-inspect": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-5.0.1.tgz", + "integrity": "sha512-fPNWewS593JSmg49HbnE86BJKuBi1/nMWhDSccBvbARfxezEuJV85EaARR9/VplveiwCoLm2kWq+DhP8TBaDpw==", + "dev": true, + "requires": { + "is-empty": "^1.0.0" + } + }, + "unist-util-is": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz", + "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==" + }, + "unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" + }, + "unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz", + "integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz", + "integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + }, "universal-user-agent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz", @@ -37385,6 +38277,117 @@ "extsprintf": "^1.2.0" } }, + "vfile": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.0.tgz", + "integrity": "sha512-BaTPalregj++64xbGK6uIlsurN3BCRNM/P2Pg8HezlGzKd1O9PrwIac6bd9Pdx2uTb0QHoioZ+rXKolbVXEgJg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } + } + }, + "vfile-location": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.0.1.tgz", + "integrity": "sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ==" + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vfile-reporter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-6.0.1.tgz", + "integrity": "sha512-0OppK9mo8G2XUpv+hIKLVSDsoxJrXnOy73+vIm0jQUOUFYRduqpFHX+QqAQfvRHyX9B0UFiRuNJnBOjQCIsw1g==", + "dev": true, + "requires": { + "repeat-string": "^1.5.0", + "string-width": "^4.0.0", + "supports-color": "^6.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-sort": "^2.1.2", + "vfile-statistics": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "vfile-sort": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-2.2.2.tgz", + "integrity": "sha512-tAyUqD2R1l/7Rn7ixdGkhXLD3zsg+XLAeUDUhXearjfIcpL1Hcsj5hHpCoy/gvfK/Ws61+e972fm0F7up7hfYA==", + "dev": true + }, + "vfile-statistics": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.4.tgz", + "integrity": "sha512-lXhElVO0Rq3frgPvFBwahmed3X03vjPF8OcjKMy8+F1xU/3Q3QU3tKEDp743SFtb74PdF0UWpxPvtOP0GCLheA==", + "dev": true + }, "vlq": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", @@ -37859,6 +38862,22 @@ "integrity": "sha512-APccrMwl/ont0RHFTXNAQfM647duYYEfs6cngrIyTByTI0xbWnDnPSptFZhS68L4WCjt2ZxuhCFwuY6Pe88KZQ==", "dev": true }, + "wrapped": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz", + "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=", + "requires": { + "co": "3.1.0", + "sliced": "^1.0.1" + }, + "dependencies": { + "co": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", + "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=" + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index fc0628ce92..83f61058f4 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,13 @@ "version": "0.0.0", "description": "Extensible JavaScript file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Instagram, Dropbox, Google Drive, S3 and more :dog:", "lint-staged": { - "*.js": "eslint" + "*.js": "eslint", + "*.md": "remark -f -q -i .gitignore" + }, + "remarkConfig": { + "plugins": [ + "remark-lint-uppy" + ] }, "size-limit": [ { @@ -65,6 +71,7 @@ "@uppy/utils": "file:packages/@uppy/utils", "@uppy/webcam": "file:packages/@uppy/webcam", "@uppy/xhr-upload": "file:packages/@uppy/xhr-upload", + "remark-lint-uppy": "file:private/remark-lint-uppy", "uppy": "file:packages/uppy", "uppy.io": "file:website" }, @@ -169,6 +176,7 @@ "react": "16.12.0", "react-dom": "16.12.0", "redux": "4.0.5", + "remark-cli": "^8.0.0", "replace-x": "1.7.2", "rimraf": "2.7.1", "stringify-object": "3.3.0", @@ -204,6 +212,7 @@ "dev": "npm-run-all --parallel dev:watch-sandbox watch:js:lib watch:css dev:browsersync", "example": "node bin/run-example", "lint:fix": "npm run lint -- --fix", + "lint:markdown": "remark -f -q . -i .gitignore", "lint:staged": "lint-staged", "lint": "eslint . --cache", "release": "./bin/release", diff --git a/packages/@uppy/companion/ARCHITECTURE.md b/packages/@uppy/companion/ARCHITECTURE.md index 6ef319161f..624f78a4df 100644 --- a/packages/@uppy/companion/ARCHITECTURE.md +++ b/packages/@uppy/companion/ARCHITECTURE.md @@ -5,7 +5,7 @@ The purpose of Companion is to interface with third party APIs and handle remote ## oAuth with Grant, Sessions Companion uses an oAuth middleware library called `Grant` to simplify oAuth authentication. -Inside of `config/grant.js`, you configure the oAuth providers you wish to use, providing things like client key, +Inside of `config/grant.js`, you configure the oAuth providers you wish to use, providing things like client key, client secret, scopes, and the callback URL you wish to use. For example: ``` @@ -20,11 +20,11 @@ client secret, scopes, and the callback URL you wish to use. For example: } ``` -Once this `google` config is added to `config/grant.js`, Grant automatically creates a route `/connect/google` that +Once this `google` config is added to `config/grant.js`, Grant automatically creates a route `/connect/google` that redirects to Google's oAuth page. So on the client side, you just need to link the user to `https://your-server/connect/google`. After the user completes the oAuth flow, they should always be redirected to `https://your-server/:provider/callback`. -The `/:provider/callback` routes are handled by the `callback` controller at `server/controllers/callback.js`. +The `/:provider/callback` routes are handled by the `callback` controller at `server/controllers/callback.js`. This controller receives the oAuth token, generates a json web token with it, and sends the generated json web token to the client by adding it to the cookies. This way companion doesn't have to save users' oAuth tokens (which is good from the security perspective). This json web token would be sent to companion in subsequent requests and the oAuth token can be read from it. @@ -61,10 +61,10 @@ Since each API works differently, we need to describe how to `download` and `lis **Note:** As of right now, you only need to implement `YourProvider.prototype.list` and `YourProvider.prototype.download` for each provider, I believe. `stats` seems to be used by Dropbox to get a list of files, so that's required there, but `upload` is optional unless you all decide to allow uploading to third parties. I got that code from an example. -This whole approach was inspired by an example from `purest 2.x`. Keep in mind that we're using `3.x`, so the API is different, but here is the example for reference: https://github.com/simov/purest/tree/2.x/examples/storage +This whole approach was inspired by an example from `purest 2.x`. Keep in mind that we're using `3.x`, so the API is different, but here is the example for reference: ## WebSockets -Companion uses WebSockets to transfer `progress` events to the client during file transfers. It's currently only set up to transfer progress during Tus uploads to the target server. +Companion uses WebSockets to transfer `progress` events to the client during file transfers. It's currently only set up to transfer progress during Tus uploads to the target server. When a request is made to `/:provider/get` to start a transfer, a token is generated and sent back to the client in response. The client then connects to `wss://your-server/whatever-their-token-is`. Any events that are emitted using the token as the name (i.e. `emitter.emit('whatever-their-token-is', progressData)`) are sent back to the client. diff --git a/packages/@uppy/companion/KUBERNETES.md b/packages/@uppy/companion/KUBERNETES.md index e5058e0c94..ab0e0cf7b0 100644 --- a/packages/@uppy/companion/KUBERNETES.md +++ b/packages/@uppy/companion/KUBERNETES.md @@ -1,10 +1,12 @@ ### Run companion on kuberenetes You can use our docker container to run companion on kubernetes with the following configuration. + ```bash kubectl create ns uppy ``` -We will need a Redis container that we can get through [helm](https://github.com/kubernetes/helm) + +We will need a Redis container that we can get through [helm](https://github.com/kubernetes/helm): ```bash helm install --name redis \ @@ -13,7 +15,9 @@ We will need a Redis container that we can get through [helm](https://github.com stable/redis ``` -> companion-env.yml + +#### `companion-env.yml` + ```yaml apiVersion: v1 data: @@ -43,7 +47,8 @@ metadata: type: Opaque ``` -> companion-deployment.yml +#### `companion-deployment.yml` + ```yaml apiVersion: extensions/v1beta1 kind: Deployment @@ -66,7 +71,7 @@ spec: containers: - image: docker.io/transloadit/companion:latest imagePullPolicy: ifNotPresent - name: companion + name: companion resources: limits: memory: 150Mi @@ -85,9 +90,11 @@ spec: emptyDir: {} ``` -`kubectl apply -f companion-deployment.yml` +```bash +kubectl apply -f companion-deployment.yml +``` -> companion-service.yml +#### `companion-service.yml` ```yaml apiVersion: v1 @@ -104,12 +111,14 @@ spec: app: companion ``` -`kubectl apply -f companion-service.yml` +```bash +kubectl apply -f companion-service.yml +``` ## Logging -You can check the production logs for the production pod using: +You can check the production logs for the production pod using: ```bash -kubectl logs my-pod-name +kubectl logs my-pod-name ``` diff --git a/packages/@uppy/utils/src/getDroppedFiles/README.md b/packages/@uppy/utils/src/getDroppedFiles/README.md index 66d8aebfc1..b869f3d65d 100644 --- a/packages/@uppy/utils/src/getDroppedFiles/README.md +++ b/packages/@uppy/utils/src/getDroppedFiles/README.md @@ -1,10 +1,10 @@ Influenced by: - - https://github.com/leonadler/drag-and-drop-across-browsers - - https://github.com/silverwind/uppie/blob/master/uppie.js - - https://stackoverflow.com/a/50030399/3192470 + - + - + - ### Why do we not use `getFilesAndDirectories()` api? It's a proposed spec that seems to be barely implemented anywhere. Supposed to work in Firefox and Edge, but it doesn't work in Firefox, and both Firefox and Edge support `.webkitGetAsEntry()` api anyway. -This page e.g. shows how this spec is supposed to function: https://wicg.github.io/directory-upload/, but it only works because of the polyfill.js that uses `.webkitGetAsEntry()` internally. +This page e.g. shows how this spec is supposed to function: , but it only works because of the polyfill.js that uses `.webkitGetAsEntry()` internally. diff --git a/private/README.md b/private/README.md new file mode 100644 index 0000000000..ab4a3f0704 --- /dev/null +++ b/private/README.md @@ -0,0 +1,2 @@ +# Private packages +Node.js packages for internal use by Uppy, like build tooling. These are not published to npm. diff --git a/private/remark-lint-uppy/README.md b/private/remark-lint-uppy/README.md new file mode 100644 index 0000000000..774ab70103 --- /dev/null +++ b/private/remark-lint-uppy/README.md @@ -0,0 +1,14 @@ +# remark-lint-uppy +remark-lint preset derived from [`remark-preset-lint-recommended`][remark-preset-lint-recommended]. + +Differences: +- The `list-item-bullet-indent` rule is disabled. +- The `list-item-indent` rule is disabled. + +The reason for the differences is that these "wrong" patterns are ubiquitous in our markdown files and we don't want to do these huge changes after adding the linter. + +## License +[MIT][]. + +[remark-preset-lint-recommended]: https://github.com/remarkjs/remark-lint/blob/master/packages/remark-preset-lint-recommended +[MIT]: ./LICENSE diff --git a/private/remark-lint-uppy/index.js b/private/remark-lint-uppy/index.js new file mode 100644 index 0000000000..dd74b75a8c --- /dev/null +++ b/private/remark-lint-uppy/index.js @@ -0,0 +1,23 @@ +'use strict' + +exports.plugins = [ + require('remark-frontmatter'), + // Do a lint. + require('remark-lint'), + // Unix compatibility. + require('remark-lint-final-newline'), + // Differs or unsupported across vendors. + require('remark-lint-no-auto-link-without-protocol'), + require('remark-lint-no-blockquote-without-marker'), + require('remark-lint-no-literal-urls'), + [require('remark-lint-ordered-list-marker-style'), '.'], + // Mistakes. + require('remark-lint-hard-break-spaces'), + require('remark-lint-no-duplicate-definitions'), + require('remark-lint-no-heading-content-indent'), + require('remark-lint-no-inline-padding'), + require('remark-lint-no-shortcut-reference-image'), + require('remark-lint-no-shortcut-reference-link'), + require('remark-lint-no-undefined-references'), + require('remark-lint-no-unused-definitions') +] diff --git a/private/remark-lint-uppy/package.json b/private/remark-lint-uppy/package.json new file mode 100644 index 0000000000..912603567a --- /dev/null +++ b/private/remark-lint-uppy/package.json @@ -0,0 +1,22 @@ +{ + "name": "remark-lint-uppy", + "version": "0.0.0", + "dependencies": { + "remark-frontmatter": "^2.0.0", + "remark-lint": "^7.0.0", + "remark-lint-final-newline": "^1.0.4", + "remark-lint-hard-break-spaces": "^2.0.0", + "remark-lint-no-auto-link-without-protocol": "^2.0.0", + "remark-lint-no-blockquote-without-marker": "^3.0.0", + "remark-lint-no-duplicate-definitions": "^2.0.0", + "remark-lint-no-heading-content-indent": "^2.0.0", + "remark-lint-no-inline-padding": "^2.0.0", + "remark-lint-no-literal-urls": "^2.0.0", + "remark-lint-no-shortcut-reference-image": "^2.0.0", + "remark-lint-no-shortcut-reference-link": "^2.0.0", + "remark-lint-no-undefined-references": "^2.0.0", + "remark-lint-no-unused-definitions": "^2.0.0", + "remark-lint-ordered-list-marker-style": "^2.0.0" + }, + "private": true +} diff --git a/website/src/_posts/2016-08-0.8.0.md b/website/src/_posts/2016-08-0.8.0.md index 8ef1346a5d..37a491e33c 100644 --- a/website/src/_posts/2016-08-0.8.0.md +++ b/website/src/_posts/2016-08-0.8.0.md @@ -72,7 +72,7 @@ Here is the full list of changes for version 0.8.0. - meta: release “Uppy Begins” post ([@arturi](https://github.com/arturi) [@kvz](https://github.com/kvz)) - meta: better readme on GitHub and NPM ([@arturi](https://github.com/arturi)) - test: add pre-commit & lint-staged ([@arturi](https://github.com/arturi)) -- test: add next-update https://www.npmjs.com/package/next-update to check if packages we use can be safely updated ([@arturi](https://github.com/arturi)) +- test: add next-update to check if packages we use can be safely updated ([@arturi](https://github.com/arturi)) - website: blog polish — add post authors and their gravatars ([@arturi](https://github.com/arturi)) - dashboard: UI revamp, more prototypes, background image, make dashboard nicer ([@arturi](https://github.com/arturi)) - dashboard: try a workflow where import from external service slides over and takes up the whole dashboard screen ([@arturi](https://github.com/arturi)) diff --git a/website/src/_posts/2016-08-0.9.0.md b/website/src/_posts/2016-08-0.9.0.md index 4f8a108b27..184b89d3ca 100644 --- a/website/src/_posts/2016-08-0.9.0.md +++ b/website/src/_posts/2016-08-0.9.0.md @@ -46,17 +46,17 @@ Under the hood, we have made some changes to how the UI is structured. We are t Here is the full list of changes for version 0.9.0.: - dashboard: informer interface: message when all uploads are "done" ([@arturi](https://github.com/arturi)) -- dashboard: improve file paste — not really possible — no file names, weird API, Chrome-only http://stackoverflow.com/a/22940020 ([@arturi](https://github.com/arturi)) +- dashboard: improve file paste — not really possible — no file names, weird API, Chrome-only ([@arturi](https://github.com/arturi)) - meta: add google demo account [@kvz](https://github.com/kvz)) - meta: Set up a Google testing account that people can use to try the demo ([@hedgerh](https://github.com/hedgerh)) - meta: write 0.9 release blog post ([@hedgerh](https://github.com/hedgerh)) - webcam: a barely working webcam snapshot & upload ([@hedgerh](https://github.com/hedgerh)) -- metadata: Uppy + tus empty metadata value issue in Safari https://github.com/tus/tus-js-client/issues/41 --> tus issue — nailed down, passed to @account (@arturi, @account) +- metadata: Uppy + tus empty metadata value issue in Safari --> tus issue — nailed down, passed to @account (@arturi, @account) - core: experiment with switching to `virtual-dom` in a separate branch; experiment with rollup again ([@arturi](https://github.com/arturi)) -- core: figure out race conditions (animations not completing because file div gets re-added to the dom each time) with `yo-yo`/`morphdom` https://github.com/shama/bel/issues/26#issuecomment-238004130 ([@arturi](https://github.com/arturi)) -- core: switch to https://github.com/sethvincent/namespace-emitter — smaller, allows for `on('*')` ([@arturi](https://github.com/arturi)) +- core: figure out race conditions (animations not completing because file div gets re-added to the dom each time) with `yo-yo`/`morphdom` ([@arturi](https://github.com/arturi)) +- core: switch to — smaller, allows for `on('*')` ([@arturi](https://github.com/arturi)) - dashboard: add aria-labels and titles everywhere to improve accessibility #114 ([@arturi](https://github.com/arturi)) -- dashboard: file name + extension should fit on two lines, truncate in the middle (maybe https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/measureText) ([@arturi](https://github.com/arturi)) +- dashboard: file name + extension should fit on two lines, truncate in the middle (maybe ) ([@arturi](https://github.com/arturi)) - dashboard: implement a circular progress indicator on top of the fileItem with play/pause ([@arturi](https://github.com/arturi)) - dashboard: refactor to smaller components, as discussed in #110 ([@arturi](https://github.com/arturi)) - google drive: refactor to smaller components, as discussed in #110 ([@hedgerh](https://github.com/hedgerh)) @@ -65,7 +65,7 @@ Here is the full list of changes for version 0.9.0.: - metadata: the aftermath — better UI ([@arturi](https://github.com/arturi)) - test: Get IE6 on Win XP to run Uppy and see it fall back to regular form upload #108 ([@arturi](https://github.com/arturi)) - test: refactor tests, add DragDrop back ([@arturi](https://github.com/arturi)) -- tus: update uppy to tus-js-client@1.2.1, test on requirebin ([@arturi](https://github.com/arturi)) +- tus: update uppy to `tus-js-client@1.2.1`, test on requirebin ([@arturi](https://github.com/arturi)) - tus: add ability to pause/resume all uploads at once ([@arturi](https://github.com/arturi)) - tus: add ability to pause/resume upload ([@arturi](https://github.com/arturi)) diff --git a/website/src/_posts/2016-09-0.10.md b/website/src/_posts/2016-09-0.10.md index 4f9f1fb352..38d25341d5 100644 --- a/website/src/_posts/2016-09-0.10.md +++ b/website/src/_posts/2016-09-0.10.md @@ -75,23 +75,23 @@ Here is the full list of changes for version 0.10.0: - core: expose some events/APIs/callbacks to the user: `onFileUploaded`, `onFileSelected`, `onAllUploaded`, `addFile` (or `parseFile`), open modal... (@arturi, @hedgerh) - core: how would Uppy work without the UI, if one wants to Uppy to just add files and upload, while rendering preview and UI by themselves #116 — discussion Part 1 (@arturi, @hedgerh) -- core: refactor towards react compatibility as discussed in https://github.com/transloadit/uppy/issues/110 (@hedgerh) -- core: CSS modules? allow bundling of CSS in JS for simple use in NPM? See #120#issuecomment-242455042, try https://github.com/rtsao/csjs — verdict: not yet, try again later (@arturi, @hedgerh) +- core: refactor towards react compatibility as discussed in (@hedgerh) +- core: CSS modules? allow bundling of CSS in JS for simple use in NPM? See , try — verdict: not yet, try again later (@arturi, @hedgerh) - core: try Web Workers and FileReaderSync for image resizing again — still slow, probably message payload between webworker and regular thread is huge (@arturi) -- core: i18n strings should extend default en_US dictionary — if a certain string in not available in German, English should be displayed (@arturi) +- core: i18n strings should extend default `en_US` dictionary — if a certain string in not available in German, English should be displayed (@arturi) - dashboard: refactor to smaller components, pass props down (@arturi) - dashboard: option to render Dashboard inline instead of a modal dialog (@arturi) - dashboard: global circular progress bar, try out different designs for total upload speed and ETA (@arturi) - dashboard: show total upload speed and ETA, for all files (@arturi) -- dashboard: copy link to uploaded file button, cross-browser (@arturi) (http://i.imgur.com/b1Io34n.png) (@arturi) +- dashboard: copy link to uploaded file button, cross-browser (@arturi) () (@arturi) - dashobard: refreshed design and grand refactor (@arturi) -- dashboard: improve file paste the best we can http://stackoverflow.com/a/22940020 (@arturi) +- dashboard: improve file paste the best we can (@arturi) - provider: abstract google drive into provider plugin for reuse (@hedgerh) - google drive: improve UI (@hedgerh) - tus: add `resumable` capability flag (@arturi) - tus: start fixing pause/resume issues and race conditions (@arturi) -- test: working Uppy example on Require Bin — latest version straight from NPM http://requirebin.com/?gist=54e076cccc929cc567cb0aba38815105 (@arturi @account) -- meta: update readme docs, add unpkg CDN links (https://unpkg.com/uppy/dist/uppy.min.css) (@arturi) +- test: working Uppy example on Require Bin — latest version straight from NPM (@arturi @account) +- meta: update readme docs, add unpkg CDN links () (@arturi) - meta: write 0.10 release blog post (@arturi) We’ll see you in about a month! diff --git a/website/src/_posts/2016-11-0.11.md b/website/src/_posts/2016-11-0.11.md index b8622d3771..11d37e1222 100644 --- a/website/src/_posts/2016-11-0.11.md +++ b/website/src/_posts/2016-11-0.11.md @@ -56,7 +56,7 @@ Here is the full list of changes for version 0.11: - core: log method should have an option to throw error in addition to just logging (@arturi) - experimental: PersistentState plugin that saves state to localStorage — useful for development (@arturi) -- dashboard: implement new StatusBar with progress and pause/resume buttons https://github.com/transloadit/uppy/issues/96#issuecomment-249401532 (@arturi) +- dashboard: implement new StatusBar with progress and pause/resume buttons (@arturi) - dashboard: attempt to throttle StatusBar, so it doesn’t re-render too often (@arturi) - dashboard: refactor — only load one acquire panel at a time (activeAcquirer or empty), change focus behavior, utilize onload/onunload - experimental: create a Dashboard UI for Redux refactor (@hedgerh) diff --git a/website/src/_posts/2016-12-0.12.md b/website/src/_posts/2016-12-0.12.md index 445eb1d20d..4e36f2096a 100644 --- a/website/src/_posts/2016-12-0.12.md +++ b/website/src/_posts/2016-12-0.12.md @@ -31,7 +31,7 @@ Uppy server has undergone a quite a few changes, including the build setup: ## And -- The website now features a video demo of Uppy in action, check it out: http://uppy.io. +- The website now features a video demo of Uppy in action, check it out: . - Fixed a bug where the Webcam would continue to be active (green light on) even after the picture was taken — all good now. - Improved import/require support for ES2015 and CommonJS modules. Basically, we don’t recommend ES2015 spread imports as a default option just yet — no tree shaking in Browserify and Webpack 1. Both `import DragDrop from 'uppy/lib/plugin/DragDrop'` and `const DragDrop = require('uppy/lib/plugin/DragDrop')` are now supported. We’ve added `add-module-exports` babel plugin that replaces `export default` with `module.exports` for backwards compatibility. - Optimized dependencies a little: removed the ones we don’t use, upgraded some that we do. @@ -42,12 +42,12 @@ Here is the full list of changes for version 0.12: - meta: write 0.12 release blog post (@arturi) - core: figure out import/require for core and plugins — just don’t use spread for plugins (@arturi) -- meta: create a demo GIF, showcasing Uppy Dashboard for the main page, like https://zeit.co/blog/next (@arturi) +- meta: create a demo GIF, showcasing Uppy Dashboard for the main page, like (@arturi) - meta: update Readme, update screenshot (@arturi) - server: add pre-commit and lint-staged (@arturi) - server: re-do build setup: building at `deploy` and `prepublish` when typing `npm run release:patch` 0.0.1 -> 0.0.2 (@ifedapoolarewaju) - server: re-do build setup: es6 `src` -> es5 `lib` (use plugin packs from Uppy) -- server: re-do build setup: `eslint --fix ./src` via http://standardjs.com (@ifedapoolarewaju) +- server: re-do build setup: `eslint --fix ./src` via (@ifedapoolarewaju) - server: re-do build setup: `babel-node` or `babel-require` could do realtime transpiling for development (how does that hook in with e.g. `nodemon`?) (@ifedapoolarewaju) - server: refacor: remove/reduce file redundancy (@ifedapoolarewaju) - server: error handling: 404 and 401 error handler (@ifedapoolarewaju) diff --git a/website/src/_posts/2017-02-0.14.md b/website/src/_posts/2017-02-0.14.md index db1672807b..34bdb7d607 100644 --- a/website/src/_posts/2017-02-0.14.md +++ b/website/src/_posts/2017-02-0.14.md @@ -24,7 +24,7 @@ We’ve switched to Express from Koa. It’s more widely adopted and supported, Uppy Server can now be plugged into your existing Express/Koa server app, but you can also still run it as a standalone server. [See here](https://github.com/transloadit/uppy-server#run-as-standalone-server) for further instructions. **Smooth authentication** -It used to be the case that when you clicked that stylish “authenticate” [with Google Drive] button, you were taken away from the page, and things tended to get lost. That has now all been made silky smooth: upon clicking the button, a fresh tab will open in your browser, which will take you to the authentication page – be it on Google Drive, Dropbox, or somewhere else. When you are done, this tab is automagically closed, and you are back where you were, authenticated, with all your remote files at hand. +It used to be the case that when you clicked that stylish “authenticate” \[with Google Drive] button, you were taken away from the page, and things tended to get lost. That has now all been made silky smooth: upon clicking the button, a fresh tab will open in your browser, which will take you to the authentication page – be it on Google Drive, Dropbox, or somewhere else. When you are done, this tab is automagically closed, and you are back where you were, authenticated, with all your remote files at hand. @@ -99,7 +99,7 @@ Here is the full list of changes for version 0.14: - dashboard: more icons for file types (@arturi) - dashboard: add totalSize and totalUploadedSize to StatusBar (@arturi) - dashboard: figure out where to place Informer, accounting for StatusBar — over the StatusBar for now (@arturi) -- dashboard: add `` element for progress bar, like here https://overcast.fm/+BtuxMygVg/. Added hidden for now, for semantics/accessibility (@arturi) +- dashboard: add `` element for progress bar, like here . Added hidden for now, for semantics/accessibility (@arturi) - dragdrop: show number of selected files, remove upload btn (@arturi) - build: exclude locales from build (@arturi) - core: i18n for each plugin in options — local instead of global (@arturi) diff --git a/website/src/_posts/2017-03-0.15.md b/website/src/_posts/2017-03-0.15.md index 8f38bfc681..89f4763a78 100644 --- a/website/src/_posts/2017-03-0.15.md +++ b/website/src/_posts/2017-03-0.15.md @@ -13,7 +13,7 @@ Spring is in the air and Uppy is feeling particularly full of life. In this post In [`0.14`](http://localhost:4000/blog/2017/02/0.14/), we added `yo-yoify` transform to give Uppy some extra speed and eliminate `Function.caller` issues. As it turned out, we [forgot](https://github.com/transloadit/uppy/issues/158) about our Babel-transpiled `lib` version of Uppy that gets published to NPM 🙀. We then spent some time creating a standalone version of `yo-yoify` that would be able to parse `yo-yo` template strings before Babel-transpilation, only to discover that there already is a [`babel-plugin-yo-yoify`](https://www.npmjs.com/package/babel-plugin-yo-yoify) that not only does precisely that, but also frees us from jumping through a lot of unnecessary hoops. It did [have](https://github.com/goto-bus-stop/babel-plugin-yo-yoify/issues/9) [a few](https://github.com/goto-bus-stop/babel-plugin-yo-yoify/pull/8) [issues](https://github.com/goto-bus-stop/babel-plugin-yo-yoify/issues/11) at first, but luckily our friend [Renée](https://github.com/goto-bus-stop) was available to colaborate with us on this. Renée has also agreed to join Uppy for a while to help us with other pressing issues. So, silver linings — bugs can sometimes lead to new friends and wonderful beginnings. We are very excited about what this all means for Uppy in the months to come. -Uppy from NPM is now good to go and the issue has been completely resolved. You can update at: https://www.npmjs.com/package/uppy. And yeah, if you use `yo-yo`, give [`babel-plugin-yo-yoify`](https://www.npmjs.com/package/babel-plugin-yo-yoify) a try. +Uppy from NPM is now good to go and the issue has been completely resolved. You can update at: . And yeah, if you use `yo-yo`, give [`babel-plugin-yo-yoify`](https://www.npmjs.com/package/babel-plugin-yo-yoify) a try. ## Pause & Resume Remote Uploads @@ -53,7 +53,7 @@ Here is the full list of changes for version 0.15: - build: update dependencies and eslint-plugin-standard, nodemon --> onchange, because simpler and better options (@arturi) - build: fix `Function.caller` issue in `lib` which gets published to NPM package, add babel-plugin-yo-yoify (@arturi #158 #163) -- provider: show error view for things like not being able to connect to uppy server, should this be happening when uppy-server is unavailable http://i.imgur.com/cYJakc9.png (@arturi, @ifedapoolarewaju) +- provider: show error view for things like not being able to connect to uppy server, should this be happening when uppy-server is unavailable (@arturi, @ifedapoolarewaju) - provider: loading indicator while files from GoogleDrive / Dropbox are loading (@arturi, @ifedapoolarewaju) - provider: logout link/button (@arturi, @ifedapoolarewaju) - provider: fix breadcrumbs (@ifedapoolarewaju) diff --git a/website/src/_posts/2017-05-0.16.md b/website/src/_posts/2017-05-0.16.md index f96ceff243..343a893e79 100644 --- a/website/src/_posts/2017-05-0.16.md +++ b/website/src/_posts/2017-05-0.16.md @@ -35,7 +35,7 @@ The new `.close()` method on the Uppy instance cleans up all of Uppy's event han We got everything covered - front-to-back-end - so you can be sure we also got some things going on the server side. -- parallelizing downloading/uploading remote files: start uploading chunks right away, while still downloading the file on disk. Even though the server may download files relatively faster, it is good to know that you don't have to wait out the download before the upload begins. +- parallelizing downloading/uploading remote files: start uploading chunks right away, while still downloading the file on disk. Even though the server may download files relatively faster, it is good to know that you don't have to wait out the download before the upload begins. - Image thumbnails are now also shown for remote files. - Automated tests have been added using the test library, [jest](https://facebook.github.io/jest/). - Remote files are now deleted from local disk immediately after a successful upload. @@ -54,7 +54,7 @@ Multiple necessary chores (the kind you don’t like to talk about at parties), ## Release Notes Here is the full list of changes for version 0.16: -- uploaders: make sure uploads retry/resume if started when offline or disconnected, retry when back online / failed https://github.com/transloadit/uppy/pull/135 (@arturi, @ifedapoolarewaju) +- uploaders: make sure uploads retry/resume if started when offline or disconnected, retry when back online / failed (@arturi, @ifedapoolarewaju) - transloadit: add basic (beta) version of Transloadit plugin (@goto-bus-stop, @kvz, @tim-kos / #28) - transloadit: emit an upload event w/ tl data when a file upload is complete (#191 @goto-bus-stop) - webcam: implement reading audio+video from webcam (@goto-bus-stop / #175) @@ -67,14 +67,14 @@ Here is the full list of changes for version 0.16: - core: Remove the last few potentially buggy uses of `document.querySelector` (@goto-bus-stop) - dashboard: Fix dashboard width when multiple instances exist (@goto-bus-stop / #184) - dashboard: add service logo / name to the selected file in file list (@arturi) -- server: begin adding automated tests, maybe try https://facebook.github.io/jest (@ifedapoolarewaju) +- server: begin adding automated tests, maybe try (@ifedapoolarewaju) - server: add image preview / thumbnail for remote files, if its in the API of services (@ifedapoolarewaju) - server: research parallelizing downloading/uploading remote files: start uploading chunks right away, while still storing the file on disk (@ifedapoolarewaju) - server: delete file from local disk after upload is successful (@ifedapoolarewaju) -- website: try on a Github ribbon http://tholman.com/github-corners/ (@arturi / #150) +- website: try on a Github ribbon (@arturi / #150) - website: different meta description for pages and post (@arturi) - server: well-documented README (@ifedapoolarewaju) -- react: [WIP] High-level React Components (@goto-bus-stop / #170) +- react: \[WIP] High-level React Components (@goto-bus-stop / #170) - core: add `uppy.close()` for tearing down an Uppy instance (@goto-bus-stop / #182) - core: replace `babel-preset-es2015-loose` by standard es2015 preset with `loose` option (@goto-bus-stop / #174) diff --git a/website/src/_posts/2017-05-0.17.md b/website/src/_posts/2017-05-0.17.md index 372f944735..fe77a95345 100644 --- a/website/src/_posts/2017-05-0.17.md +++ b/website/src/_posts/2017-05-0.17.md @@ -9,7 +9,7 @@ Hi! We are back with yet another Uppy release that contains some often requested -## ⚠️ File Restrictions +## ⚠️ File Restrictions Something that a few of our biggest fans were asking for, is finally here! Here's the gist of it: @@ -95,7 +95,7 @@ Details: [#217](https://github.com/transloadit/uppy/pull/217) ## Better file type detection -We’ve added a [`file-type`](https://github.com/sindresorhus/file-type) module that helps with figuring out the file type by reading the first magic bytes of the file. If that doesn’t work, we try to use the mime-type provided by the system/browser, and if that is still a dead end, we attempt to figure it out by extension. All in all, this leads to a more robust file type detecting experience. Personally, I’m just happy my Sex and the City 🍸 `.avi` files are now recognized as `video` on a Mac! +We’ve added a [`file-type`](https://github.com/sindresorhus/file-type) module that helps with figuring out the file type by reading the first magic bytes of the file. If that doesn’t work, we try to use the mime-type provided by the system/browser, and if that is still a dead end, we attempt to figure it out by extension. All in all, this leads to a more robust file type detecting experience. Personally, I’m just happy my Sex and the City 🍸 `.avi` files are now recognized as `video` on a Mac! Further details can be found here: [#219](https://github.com/transloadit/uppy/pull/219) @@ -105,7 +105,7 @@ If a plugin’s `target` is a `form` element, we are going to try to extract all Uppy’s core options have received a new `meta` property, where you can define some metadata from the start, as well as a new `setMeta` method that can be called at any time. -See here for more details: [#238](https://github.com/transloadit/uppy/pull/238) +See here for more details: [#238](https://github.com/transloadit/uppy/pull/238) ## More @@ -121,9 +121,9 @@ Here is the full list of changes for version 0.17: - provider: improved UI: improve overall look, breadcrumbs, more responsive (@arturi) - core: css-in-js demos, try template-css (@arturi @goto-bus-stop #239) - core: added `uppy.reset()` as discussed in #179 (@arturi) -- core: added nanoraf https://github.com/yoshuawuyts/choo/pull/135/files?diff=unified (@goto-bus-stop, @arturi) -- core: file type detection: archives, markdown (possible modules: file-type, identify-filetype) example: http://requirebin.com/?gist=f9bea9602030f1320a227cf7f140c45f, http://stackoverflow.com/a/29672957 (@arturi) -- dashboard: made file icons prettier: https://uppy.io/images/blog/0.16/service-logos.png (@arturi, @nqst / #215) +- core: added nanoraf (@goto-bus-stop, @arturi) +- core: file type detection: archives, markdown (possible modules: file-type, identify-filetype) example: , (@arturi) +- dashboard: made file icons prettier: (@arturi, @nqst / #215) - fileinput: allow retrieving fields/options from form (@arturi #153) - server: configurable server port (@ifedapoolarewaju) - server: added support for custom providers (@ifedapoolarewaju) @@ -137,14 +137,14 @@ Here is the full list of changes for version 0.17: - uppy/uppy-server: allow google drive/dropbox non-tus (i.e multipart) remote uploads (@arturi, @ifedapoolarewaju / #205) - uppy/uppy-server: do not show files that cannot be downloaded from Google Drive (@ifedapoolarewaju) - uppy: fixed Google Drive uploads on mobile (double click issue) (@arturi) -- core: updated prettier-bytes to fix the IE support issue https://github.com/Flet/prettier-bytes/issues/3 (@arturi) +- core: updated prettier-bytes to fix the IE support issue (@arturi) - core: use URL.createObjectURL instead of resizing thumbnails (@arturi, @goto-bus-stop / #199) - dashboard: fixed ETA when multiple files are being uploaded (@goto-bus-stop, #197) - transloadit: fixed receiving assembly results that are not related to an input file (@arturi, @goto-bus-stop / #201) - transloadit: use the `tus_upload_url` to reliably link assembly results with their input files (@goto-bus-stop / #207) -- transloadit: moved user-facing strings into locale option (@goto-bus-stop / https://github.com/transloadit/uppy/commit/87a22e7ee37b6fa3754fa34868516a6700306b60) +- transloadit: moved user-facing strings into locale option (@goto-bus-stop / ) - webcam: mute audio in realtime playback (@goto-bus-stop / #196) -- temporarily downgrade yo-yoify, until shama/yo-yoify#45 is resolved (@arturi / https://github.com/transloadit/uppy/commit/6292b96) +- temporarily downgrade yo-yoify, until shama/yo-yoify#45 is resolved (@arturi / ) Enjoy! diff --git a/website/src/_posts/2017-08-0.18.md b/website/src/_posts/2017-08-0.18.md index a6e7cd34c3..67d955d03a 100644 --- a/website/src/_posts/2017-08-0.18.md +++ b/website/src/_posts/2017-08-0.18.md @@ -12,7 +12,7 @@ Hi! Another month — a new Uppy release 🎉 ## New documentation -Documentation for Uppy has been re-written, and now features chapters on Uppy’s settings and API, using various plugins, and running Uppy Server. Check it out: https://uppy.io/docs/. More chapters to come! +Documentation for Uppy has been re-written, and now features chapters on Uppy’s settings and API, using various plugins, and running Uppy Server. Check it out: . More chapters to come! ## The GoldenRetriever diff --git a/website/src/_posts/2018-02-0.23.md b/website/src/_posts/2018-02-0.23.md index 20622969b0..36b83d6e1f 100644 --- a/website/src/_posts/2018-02-0.23.md +++ b/website/src/_posts/2018-02-0.23.md @@ -105,18 +105,25 @@ On how to set up Uppy with [Shrine](http://shrinerb.com/), a file attachment too > There are many popular JavaScript file upload libraries out there – jQuery-File-Upload, Dropzone.js, FineUploader etc. – but the one you should use with Shrine is definitely Uppy 🐶. Uppy is a modular library that knows how to upload files to a custom endpoint on your app, to Amazon S3, or even to a resumable endpoint, providing progress bars, drag & drop functionality, image previews, file validations etc, all while making as few assumptions as possible. 2\. **Featured [in Javascript Daily](https://twitter.com/JavaScriptDaily/status/950348390268919809)**: + > Uppy: A Powerful, Modular JavaScript File Uploader + — JavaScript Daily 3\. **[#1 Trending on GitHub](https://twitter.com/uppy_io/status/946485101541683201) accross all languages**: + > Today our open source efforts are outpacing those of MSFT GOOG FB combined :D + — kvz, transloadit 4\. **[#2 Product of the Week](https://www.producthunt.com/posts/uppy-io) on ProductHunt**: -> You literally solved my biggest problem, thank you for developing such a great project. + +> You literally solved my biggest problem, thank you for developing such a great project. + — Chetan Menaria > Writing file upload functionality is always a pain in the arse. I’ll be checking this out today and integrating into SongBox if it’s good. + — Mick 5\. **[#2 New Tool of The Year](https://stackshare.io/posts/top-developer-tools-2017) on Stackshare**: @@ -132,7 +139,7 @@ Here is the full list of changes for version `0.23.0` (and patches `0.22.1`—`0 - core: Allow chanining after .on() and .off() to improve ergonomics (#597 / @arturi) - core: Allow user to override sass variables (#555 / @chao) - core: Move preview generation to separate plugin, add queuing (#431 / @richardwillars) -- core: Third-party extension, uppy-store-ngrx https://github.com/rimlin/uppy-store-ngrx/ (#532 / @rimlin) +- core: Third-party extension, uppy-store-ngrx (#532 / @rimlin) - core: Warn, not error, when file cannot be added due to restrictions? (#604, #492 / @goto-bus-stop) - dashboard: Add more i18n strings (#565 / @arturi) - dashboard: Fix modal and page scroll (#564 / @arturi) diff --git a/website/src/_posts/2018-10-0.28.md b/website/src/_posts/2018-10-0.28.md index 04949823bd..f91e76bf53 100644 --- a/website/src/_posts/2018-10-0.28.md +++ b/website/src/_posts/2018-10-0.28.md @@ -26,7 +26,7 @@ Speaking of the Dashboard, it now also shows more statuses in the title bar: “ ## Status Bar improvements -- ⚠️ **breaking** We’ve added separate options for hiding pause/resume and cancel buttons. So now there are several options for buttons: `hideUploadButton`, `hideRetryButton`, `hidePauseResumeButton` and `hideCancelButton`. These options can be passed from the Dashboard, if you are not using Status Bar separately (most common case). See the docs for more info: https://uppy.io/docs/status-bar/. +- ⚠️ **breaking** We’ve added separate options for hiding pause/resume and cancel buttons. So now there are several options for buttons: `hideUploadButton`, `hideRetryButton`, `hidePauseResumeButton` and `hideCancelButton`. These options can be passed from the Dashboard, if you are not using Status Bar separately (most common case). See the docs for more info: . - The Status Bar now features a spinner animation when upload is in progress. - Encoding (with the Transloadit plugin, for example) and uploading progress now get different colors, so it’s easier to tell what’s happening, visually. diff --git a/website/src/_posts/2019-03-0.30.md b/website/src/_posts/2019-03-0.30.md index 41cfcd9111..1e7cb02a84 100644 --- a/website/src/_posts/2019-03-0.30.md +++ b/website/src/_posts/2019-03-0.30.md @@ -38,7 +38,7 @@ Here’s a demo: You can install Robodog from NPM: ```sh -npm install @uppy/robodog --save +npm install @uppy/robodog --save ``` Or import it by using an HTML script tag: @@ -104,5 +104,5 @@ uppy.on('upload-error', (file, responseObject) => { - @uppy/react: Allow changing instance in `uppy` prop (#1247 / @goto-bus-stop) - @uppy/react: Typescript: Make DashboardModal.target prop optional (#1254 / @mattes3) - @uppy/aws-s3: Use user-provided filename / type for uploaded object, fixes #1238 (#1257 / @goto-bus-stop) -- @uppy/tus: Update to tus-js-client@1.6.0 with React Native support (#1250 / @arturi) +- @uppy/tus: Update to `tus-js-client@1.6.0` with React Native support (#1250 / @arturi) - build: Improve dev npm script: use Parcel for bundled example, re-build lib automatically, don’t open browser and no ghosts mode, start companion when developing (but there’s optional npm run dev:no-companion) (#1280 / @arturi) diff --git a/website/src/_posts/2019-03-liftoff-01.md b/website/src/_posts/2019-03-liftoff-01.md index ae1a14b2da..1f9291fea9 100644 --- a/website/src/_posts/2019-03-liftoff-01.md +++ b/website/src/_posts/2019-03-liftoff-01.md @@ -8,13 +8,13 @@ seriesSuffix: 'of 30' alias: '/blog/2019/03/26-30daystoliftoff-day1/' --- -When we [started working on Uppy](/blog/2016/07/uppy-begins/) back in early 2016, all we had was an idea and the shared desire to launch file uploading into a new age. We had already been laying the groundwork with the development of [tus.io](https://tus.io/) and felt that its robust back-end deserved a front-end just as robust, modern and user-friendly. +When we [started working on Uppy](/blog/2016/07/uppy-begins/) back in early 2016, all we had was an idea and the shared desire to launch file uploading into a new age. We had already been laying the groundwork with the development of [tus.io](https://tus.io/) and felt that its robust back-end deserved a front-end just as robust, modern and user-friendly. -But what about open? We initially thought about building a proprietary uploader that would work exclusively with Transloadit's commercial service, but we quickly turned around on it. We knew this could have a real impact. So, just like we did with Tus, we decided to make our new project open source. Three years, [16.000 stargazers](https://github.com/transloadit/uppy/stargazers) and a thriving community later — and we could not be happier. Well, apart from one thing: **getting Uppy 1.0 out the door** has proven harder than expected. Issues keep piling up, which led us down countless sidetracks and hurt our capacity to hammer out those final design goals. +But what about open? We initially thought about building a proprietary uploader that would work exclusively with Transloadit's commercial service, but we quickly turned around on it. We knew this could have a real impact. So, just like we did with Tus, we decided to make our new project open source. Three years, [16.000 stargazers](https://github.com/transloadit/uppy/stargazers) and a thriving community later — and we could not be happier. Well, apart from one thing: **getting Uppy 1.0 out the door** has proven harder than expected. Issues keep piling up, which led us down countless sidetracks and hurt our capacity to hammer out those final design goals. -But now it's time for all that to change. That's why, starting today, we are allocating all of Transloadit's resources into making a big final push and getting Uppy ready for liftoff. Our goal is to launch on **April 25**, exactly thirty days from now. +But now it's time for all that to change. That's why, starting today, we are allocating all of Transloadit's resources into making a big final push and getting Uppy ready for liftoff. Our goal is to launch on **April 25**, exactly thirty days from now.


@@ -28,7 +28,7 @@ A post each day may prove hard to do, but we think it's worth a try. It really f ## What's Uppy with you? -We'd love to hear what you think. Whether it is about Uppy in general, or specific issues you feel cannot be forgotten before 1.0, or maybe even about this blog post challenge itself — leave a comment here, use our [forum](https://community.transloadit.com/c/uppy) directly (it also hosts the comments), or let us know on Twitter via [@uppy_io](http://twitter.com/uppy_io/) or [@transloadit](http://twitter.com/transloadit/). +We'd love to hear what you think. Whether it is about Uppy in general, or specific issues you feel cannot be forgotten before 1.0, or maybe even about this blog post challenge itself — leave a comment here, use our [forum](https://community.transloadit.com/c/uppy) directly (it also hosts the comments), or let us know on Twitter via [@uppy_io](http://twitter.com/uppy_io/) or [@transloadit](http://twitter.com/transloadit/).


@@ -38,4 +38,4 @@ We can use your help! As we've said, we're looking to spread the word so any ret See you tomorrow for the first progress update on [Day 2](/blog/2019/03/liftoff-02/) of our 30 Days to Liftoff! -PS If you don't want to miss an update, consider [good ol' RSS](https://uppy.io/atom.xml) :) \ No newline at end of file +PS If you don't want to miss an update, consider [good ol' RSS](https://uppy.io/atom.xml) :) diff --git a/website/src/_posts/2019-03-liftoff-02.md b/website/src/_posts/2019-03-liftoff-02.md index 3c1f78965d..958d017800 100644 --- a/website/src/_posts/2019-03-liftoff-02.md +++ b/website/src/_posts/2019-03-liftoff-02.md @@ -8,8 +8,8 @@ seriesSuffix: 'of 30' alias: /blog/2019/03/27-30daystoliftoff-day2/ --- -Yesterday, marked the beginning of our thirty-day blog post challenge to keep you updated on our preparations for **releasing Uppy 1.0 on April 25**. So here we are again already! - +Yesterday, marked the beginning of our thirty-day blog post challenge to keep you updated on our preparations for **releasing Uppy 1.0 on April 25**. So here we are again already! + Our big coding speedrun towards for 1.0 starts April 1, so we are mostly busy with tying up loose ends, busting issues, and planning our work ahead. @@ -18,11 +18,11 @@ Our big coding speedrun towards for 1.0 starts April 1, so we are mostly busy wi ## Our roadmap for 1.0 -With so much still to do before Uppy 1.0 is ready go, it's important that we keep track of all the various tasks. We are doing this with help of an Uppy 1.0 project dashboard that we created in [Asana](https://asana.com). This lets us see in an instant what everyone is working on and what the current status is on specific tasks. +With so much still to do before Uppy 1.0 is ready go, it's important that we keep track of all the various tasks. We are doing this with help of an Uppy 1.0 project dashboard that we created in [Asana](https://asana.com). This lets us see in an instant what everyone is working on and what the current status is on specific tasks. We currently have our tasks divided into five sections, which are: *Nice To Have*, *To Do*, *In Progress* and *Done*. The tasks in the *To Do* and *In Progress* lanes (and of course those that are *Done*) are planned to make the 1.0 release. And if we have time on our side before the launch date, we'll also try to get as many of the *Nice To Have* tasks checked off as well. -We've discussed our [Changelog](https://github.com/transloadit/uppy/blob/master/CHANGELOG.md#10-goals)'s 1.0 goals and tried to re-prioritize and assign work. +We've discussed our [Changelog](https://github.com/transloadit/uppy/blob/master/CHANGELOG.md#10-goals)'s 1.0 goals and tried to re-prioritize and assign work. We didn't manage to fit all of those *To Do*s in the picture, but here is a screenshot of what our board looks like at the moment: @@ -34,4 +34,4 @@ And tomorrow, we'll look at the *To Do*s in more detail, so we can get a clearer That's all the updates I have for you today. See you tomorrow for [Day 3](/blog/2019/03/liftoff-03/) of our 30 Days to Liftoff! -PS If you don't want to miss an update, consider [good ol' RSS](https://uppy.io/atom.xml) :) \ No newline at end of file +PS If you don't want to miss an update, consider [good ol' RSS](https://uppy.io/atom.xml) :) diff --git a/website/src/_posts/2019-04-liftoff-09.md b/website/src/_posts/2019-04-liftoff-09.md index 420c7354b6..44a3ddef92 100644 --- a/website/src/_posts/2019-04-liftoff-09.md +++ b/website/src/_posts/2019-04-liftoff-09.md @@ -22,7 +22,7 @@ Tasks completed by the team since yesterday's update include: - Our React Native team (that's [Artur](https://github.com/arturi), [Ife](https://github.com/ifedapoolarewaju), and [Kevin](https://github.com/kvz)) has been working together most of the day and gave an update on the current completed features for implementing Uppy support. Here's a list of completed tasks directly from the team: - [x] Make the 'Import from URL' example work in RN - [x] Give it its own UI, (re)written for RN - - [x] Make websocket progress from Companion work (see: https://facebook.github.io/react-native/docs/network#websocket-support) + - [x] Make websocket progress from Companion work (see: ) - [x] Have an example with buttons for resumability and a progress bar - [x] Have 20 min resumability support, proof that fingerprinting works for different local file uploads, fix it if not @@ -36,7 +36,7 @@ Meanwhile, on the progress side of things: - Renée is going to spend the day on getting Transloadit Assemblies to actually cancel when the Cancel button in the UI is pressed. As it stands, the upload cancels, but the Assembly keeps running until it eventually times out by itself. -- [Tim](https://github.com/tim-kos) has started working on fixing an API problem that caused one of our end-to-end tests to intermittently fail and eventually turn off entirely. +- [Tim](https://github.com/tim-kos) has started working on fixing an API problem that caused one of our end-to-end tests to intermittently fail and eventually turn off entirely. - Finally, the React Native team has already completed an impressive amount of tasks, but they aren't slowing down anytime soon. Development marches on as the team begins tackling the following tasks: - [ ] Add basic file preview to react native example. Can use `file.uri` for images, can use icons for `file.type===video/audio/document` (Artur Paikin) diff --git a/website/src/_posts/2019-10-1.5.md b/website/src/_posts/2019-10-1.5.md index d7e8c9795e..54d47801b4 100644 --- a/website/src/_posts/2019-10-1.5.md +++ b/website/src/_posts/2019-10-1.5.md @@ -144,7 +144,7 @@ See [#1843](https://github.com/transloadit/uppy/pull/1843) for details. - @uppy/locales: improve Swedish translation (@marcusforberg, #1859) - @uppy/thumbnail-generator: add waitForThumbnailsBeforeUpload option, false by default (@arturi, #1803) - @uppy/transloadit: add limit option, warn about using limit when it’s set to 0. In Uppy 2.0 we’ll set the limit to something sensible (like 10 files) by default. (#1789 / @arturi) -- @uppy/transloadit: pin socket.io version to ES5 compatible one (@goto-bus-stop, https://github.com/transloadit/uppy/commit/5839b655f093edaa778d49b719f7dda063ef79cb) +- @uppy/transloadit: pin socket.io version to ES5 compatible one (@goto-bus-stop, ) - @uppy/xhr-upload: Throw an error when trying to upload a remote file with `bundle: true` (#1769 / @arturi) - build: Fix statefulset update: statefulsets image only should be updated. (#1821 / @kiloreux) - build: Update eslint to v6 (#1777 / @goto-bus-stop) diff --git a/website/src/_posts/2020-04-1.10.md b/website/src/_posts/2020-04-1.10.md index 2452dc39a2..ff198726cb 100644 --- a/website/src/_posts/2020-04-1.10.md +++ b/website/src/_posts/2020-04-1.10.md @@ -26,7 +26,7 @@ Try the live demos on [Transloadit.com](https://transloadit.com): import your fi (Uppy demos are below the description and steps, under “Live Demo. See for yourself” ;-) -You can also play with an interactive demo, enabling different Uppy options and providers on the fly: https://uppy.io/examples/dashboard +You can also play with an interactive demo, enabling different Uppy options and providers on the fly: OneDrive: diff --git a/website/src/_template/contributing.md b/website/src/_template/contributing.md index 6b532f7144..5bf14f3616 100644 --- a/website/src/_template/contributing.md +++ b/website/src/_template/contributing.md @@ -147,7 +147,7 @@ To quickly summarize: #### Utilities -Syntax: u-[sm-|md-|lg-] +Syntax: `u-[sm-|md-|lg-]` ```css .u-utilityName @@ -157,7 +157,7 @@ Syntax: u-[sm-|md-|lg-] #### Components -Syntax: [-][-descendentName][--modifierName] +Syntax: `[-][-descendentName][--modifierName]` ```css .twt-Button /* Namespaced component */ diff --git a/website/src/docs/companion.md b/website/src/docs/companion.md index 5df4beae02..359f02a6eb 100644 --- a/website/src/docs/companion.md +++ b/website/src/docs/companion.md @@ -99,6 +99,7 @@ This takes your `server` instance and your Uppy [Options](#Options) as parameter ### Running as a standalone server > Please ensure that the required environment variables are set before running/using Companion as a standalone server. See [Configure Standalone](#Configuring-a-standalone-server) for the variables required. + Set environment variables first: ```bash @@ -354,7 +355,7 @@ The default implementation returns the `filename`, so all files will be uploaded ### Running in Kubernetes -We have [a detailed guide on running Companion in Kubernetes](https://github.com/transloadit/uppy/blob/master/packages/%40uppy/companion/KUBERNETES.md) for you, that’s how we currently run our example server at https://companion.uppy.io. +We have [a detailed guide on running Companion in Kubernetes](https://github.com/transloadit/uppy/blob/master/packages/%40uppy/companion/KUBERNETES.md) for you, that’s how we currently run our example server at . ### Adding custom providers @@ -422,7 +423,7 @@ This would get the Companion instance running on `http://localhost:3020`. It use ## Live example -An example server is running at https://companion.uppy.io, which is deployed with [Kubernetes](https://github.com/transloadit/uppy/blob/master/packages/%40uppy/companion/KUBERNETES.md) +An example server is running at , which is deployed with [Kubernetes](https://github.com/transloadit/uppy/blob/master/packages/%40uppy/companion/KUBERNETES.md) ## How the Authentication and Token mechanism works diff --git a/website/src/docs/index.md b/website/src/docs/index.md index 2221d47578..5b7e89645e 100644 --- a/website/src/docs/index.md +++ b/website/src/docs/index.md @@ -137,7 +137,7 @@ You can also use a pre-built bundle from Transloadit's CDN: Edgly. `Uppy` will a - [Plugins](/docs/plugins/) — list of Uppy plugins and their options. - [Server](/docs/companion/) — setting up and running a Companion instance, which adds support for Instagram, Dropbox, Google Drive, direct links, and other remote sources. - [React](/docs/react/) — components to integrate Uppy UI plugins with React apps. -- [Writing Plugins](/docs/writing-plugins) — how to write a plugin for Uppy [documentation in progress]. +- [Writing Plugins](/docs/writing-plugins) — how to write a plugin for Uppy (documentation in progress). ## Browser Support diff --git a/website/src/docs/robodog-form.md b/website/src/docs/robodog-form.md index ac1023c84d..137bff9c16 100644 --- a/website/src/docs/robodog-form.md +++ b/website/src/docs/robodog-form.md @@ -263,5 +263,4 @@ There are no `on*()` _options_ anymore, but `.on('...')` methods are provided in | `onDisconnect` | Currently unavailable, use something like [`is-offline`](https://www.npmjs.com/package/is-offline) | | `onReconnect` | Currently unavailable, use something like [`is-offline`](https://www.npmjs.com/package/is-offline) | -[transloadit]: https://transloadit.com [transloadit plugin]: https://uppy.io/docs/transloadit/ diff --git a/website/src/docs/thumbnail-generator.md b/website/src/docs/thumbnail-generator.md index 3747edf8dc..badf49a63c 100644 --- a/website/src/docs/thumbnail-generator.md +++ b/website/src/docs/thumbnail-generator.md @@ -75,7 +75,7 @@ If both width and height are given, only width is taken into account. > > uppy.use(ThumbnailGenerator, { thumbnailWidth: 300, thumbnailHeight: 300 }) will produce a 300px width thumbnail with calculated height to match ratio (and ignore the given height). > -> See https://github.com/transloadit/uppy/issues/979 and https://github.com/transloadit/uppy/pull/1096 for details on this feature. +> See issue [#979](https://github.com/transloadit/uppy/issues/979) and [#1096](https://github.com/transloadit/uppy/pull/1096) for details on this feature. ### `waitForThumbnailsBeforeUpload: false` diff --git a/website/src/docs/uppy.md b/website/src/docs/uppy.md index 5d195e19d5..cb8b8a3714 100644 --- a/website/src/docs/uppy.md +++ b/website/src/docs/uppy.md @@ -615,8 +615,8 @@ uppy.log('[Dashboard] adding files...') #### Parameters - **message** *{(string|object)}* — `'info message'` or `{ message: 'Oh no!', details: 'File couldn’t be uploaded' }` -- **type** *{string} [type='info']* — `info`, `warning`, `success` or `error` -- **duration** *{number} [duration = 3000]* — in milliseconds +- **type** *{string} \[type='info']* — `info`, `warning`, `success` or `error` +- **duration** *{number} \[duration = 3000]* — in milliseconds Sets a message in state, with optional details, that can be shown by notification UI plugins. Currently, that means just the [Informer](/docs/informer/) plugin, included by default in Dashboard. diff --git a/website/src/privacy.md b/website/src/privacy.md index e15d5b5f30..d3c519bf2d 100644 --- a/website/src/privacy.md +++ b/website/src/privacy.md @@ -23,7 +23,7 @@ We receive the following **data** from you: 3. Data entered on our website 4. The browser session (identified through a cookie) 5. Information used to analyze usage of our platform (through cookies from Google Analytics. More on cookies is explained below) -6. Files you can optionally upload in example demos. Those files are stored temporarily for 24–72 hours, on uppy.io, tus.io or transloadit.com servers, and then deleted. See also Transloadit’s Privacy Policy: https://transloadit.com/legal/privacy/. +6. Files you can optionally upload in example demos. Those files are stored temporarily for 24–72 hours, on uppy.io, tus.io or transloadit.com servers, and then deleted. See also Transloadit’s Privacy Policy: . All data that passes through demos is only used for demo purposes, and never sold or otherwise given away. @@ -89,10 +89,10 @@ Our platform uses Google Analytics, which uses cookies. The information created Google will use this information to analyze your usage of our platform and to create reports about the activities on our platform. The IP address that will be sent to Google as a result of Google Analytics will not be connected to any other data on Google. -You can avoid any cookies being saved by changing the settings in your browser accordingly. Please be aware that if you choose to do so, you might not be able to make full use of our website and all of its features. You can also prevent the analysis of your browsing behavior on our platform through Google Analytics by installing the following browser plugin: http://tools.google.com/dlpage/gaoptout. +You can avoid any cookies being saved by changing the settings in your browser accordingly. Please be aware that if you choose to do so, you might not be able to make full use of our website and all of its features. You can also prevent the analysis of your browsing behavior on our platform through Google Analytics by installing the following browser plugin: . Google, Inc. (“Google”) head quarters are located at "1600 Amphitheatre Parkway Mountain View, California 94043, USA". -Their privacy policy is located here: https://policies.google.com/privacy. +Their privacy policy is located here: . ## How to disable cookies