From c95556b62994b92777f5598f0abf51ff38ebf6a3 Mon Sep 17 00:00:00 2001 From: Marc-Antoine Ouimet Date: Wed, 26 Dec 2018 12:38:56 -0500 Subject: [PATCH] Revise README.md --- .markdownlint.json | 4 + README.md | 177 +++++++++++++++++++++++++++++---------------- package.json | 14 +++- yarn.lock | 125 +++++++++++++++++++++++++++++++- 4 files changed, 251 insertions(+), 69 deletions(-) create mode 100644 .markdownlint.json diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 0000000..f17e34c --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,4 @@ +{ + "MD004": false, + "MD033": false +} diff --git a/README.md b/README.md index 7752f8e..fa80242 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,8 @@ --- -Use the iteration protocol to find files upwards and downwards in the file system. +Use the iteration protocol to find files upwards and downwards in the file +system. --- @@ -21,9 +22,10 @@ Using npm: npm install find-files-by-patterns ``` -Assuming this file system, where the current working directory is `/Documents/project`: +Assuming this file system, where the current working directory is +`/Documents/project`: -``` +```txt / └── Documents ├── data.csv @@ -54,6 +56,7 @@ const { findFile, upwardDirectories, ``` ## Table of Contents +
@@ -93,55 +96,60 @@ const { findFile, upwardDirectories, ## API
+ Complete list of exported functions Finders: -* [`findFile` and `findFileSync`](#findFile-and-findFileSync) -* [`findAllFiles` and `findAllFilesSync`](#findAllFiles-and-findAllFilesSync) -* [`findOnlyFile` and `findOnlyFileSync`](#findOnlyFile-and-findOnlyFileSync) +- [`findFile` and `findFileSync`](#findFile-and-findFileSync) +- [`findAllFiles` and `findAllFilesSync`](#findAllFiles-and-findAllFilesSync) +- [`findOnlyFile` and `findOnlyFileSync`](#findOnlyFile-and-findOnlyFileSync) Files: -* [`downwardFiles` and `downwardFilesSync`](#downwardFiles-and-downwardFilesSync) -* [`upwardFiles` and `upwardFilesSync`](#upwardFiles-and-upwardFilesSync) +- [`downwardFiles` and `downwardFilesSync`](#downwardFiles-and-downwardFilesSync) +- [`upwardFiles` and `upwardFilesSync`](#upwardFiles-and-upwardFilesSync) Directories: -* [`downwardDirectories` and `downwardDirectoriesSync`](#downwardDirectories-and-downwardDirectoriesSync) -* [`upwardDirectories` and `upwardDirectoriesSync`](#upwardDirectories-and-upwardDirectoriesSync) +- [`downwardDirectories` and `downwardDirectoriesSync`](#downwardDirectories-and-downwardDirectoriesSync) +- [`upwardDirectories` and `upwardDirectoriesSync`](#upwardDirectories-and-upwardDirectoriesSync) Filters: -* [`ofBasename`, `ofDirname` and `ofExtname`](#ofBasename-ofDirname-and-ofExtname) -* [`hasPathSegments`](#hasPathSegments) -* [`isFile` and `isFileSync`](#isFile-and-isFileSync) -* [`isDirectory` and `isDirectorySync`](#isDirectory-and-isDirectorySync) -* [`hasFile` and `hasFileSync`](#hasFile-and-hasFileSync) -* [`conjunction` and `conjunctionSync`](#conjunction-and-conjunctionSync) -* [`disjunction` and `disjunctionSync`](#disjunction-and-disjunctionSync) +- [`ofBasename`, `ofDirname` and `ofExtname`](#ofBasename-ofDirname-and-ofExtname) +- [`hasPathSegments`](#hasPathSegments) +- [`isFile` and `isFileSync`](#isFile-and-isFileSync) +- [`isDirectory` and `isDirectorySync`](#isDirectory-and-isDirectorySync) +- [`hasFile` and `hasFileSync`](#hasFile-and-hasFileSync) +- [`conjunction` and `conjunctionSync`](#conjunction-and-conjunctionSync) +- [`disjunction` and `disjunctionSync`](#disjunction-and-disjunctionSync) Iterable `readdir`: -* [`readdir` and `readdirSync`](#readdir-and-readdirSync) -* [`readdirs` and `readdirsSync`](#readdirs-and-readdirsSync) +- [`readdir` and `readdirSync`](#readdir-and-readdirSync) +- [`readdirs` and `readdirsSync`](#readdirs-and-readdirsSync) Iterable utilities: -* [`filter` and `filterSync`](#filter-and-filterSync) -* [`allElements` and `allElementsSync`](#allElements-and-allElementsSync) -* [`firstElement` and `firstElementSync`](#firstElement-and-firstElementSync) -* [`onlyElement` and `onlyElementSync`](#onlyElement-and-onlyElementSync) +- [`filter` and `filterSync`](#filter-and-filterSync) +- [`allElements` and `allElementsSync`](#allElements-and-allElementsSync) +- [`firstElement` and `firstElementSync`](#firstElement-and-firstElementSync) +- [`onlyElement` and `onlyElementSync`](#onlyElement-and-onlyElementSync) +
### `findFile` and `findFileSync` -Finds the first file that matches all of the given filters in the given directories or current working. -If no directory is supplied, then the current directory is read. +Finds the first file that matches all of the given filters in the given +directories. +If no directory is supplied, then the current working directory is read. > Specifications ```ts +type Filter = (element: T) => Promise; +type FilterSync = (element: T) => boolean; findFile(...tests: Array | FilterSync>): Promise< string | null >; @@ -149,22 +157,26 @@ findFile( directories: string | AsyncIterable | Iterable, ...tests: Array | FilterSync> ): Promise; +findFileSync(...tests: Array>): string | null; findFileSync( directories: string | Iterable, ...tests: Array> ): string | null; -findFileSync(...tests: Array>): string | null; ``` ### `findAllFiles` and `findAllFilesSync` -Finds all the files that match all of the given filters in the given directories. -If no directory is supplied, then the current directory is read. +Finds all the files that match all of the given filters in the given +directories. +If no directory is supplied, then the current working directory is read. > Specifications ```ts -findAllFiles(...tests: Array | FilterSync>): Promise; +type Filter = (element: T) => Promise; +type FilterSync = (element: T) => boolean; +findAllFiles(...tests: Array + | FilterSync>): Promise; findAllFiles( directories: string | AsyncIterable | Iterable, ...tests: Array | FilterSync> @@ -178,12 +190,15 @@ findAllFilesSync( ### `findOnlyFile` and `findOnlyFileSync` -Finds the first and only file in its directory that matches all of the given filters. -If no directory is supplied, then the current directory is read. +Finds the first and only file in its directory that matches all of the given +filters. +If no directory is supplied, then the current working directory is read. > Specifications ```ts +type Filter = (element: T) => Promise; +type FilterSync = (element: T) => boolean; findOnlyFile(...tests: Array | FilterSync>): Promise< string | null >; @@ -200,7 +215,8 @@ findOnlyFileSync( ### `downwardDirectories` and `downwardDirectoriesSync` -Returns an iterable ocer the existing downward files from a start path. Symbolic links are followed and handled such that no directory is traversed twice. +Returns an iterable ocer the existing downward files from a start path. Symbolic +links are followed and handled such that no directory is traversed twice. > Specifications @@ -208,18 +224,20 @@ Returns an iterable ocer the existing downward files from a start path. Symbolic downwardDirectories(): AsyncIterable; downwardDirectories(maximumDepth: number): AsyncIterable; downwardDirectories(startDirectory: string): AsyncIterable; -downwardDirectories(startDirectory: string, maximumDepth: number): AsyncIterable; +downwardDirectories(startDirectory: string, + maximumDepth: number): AsyncIterable; downwardDirectoriesSync(): Iterable; downwardDirectoriesSync(maximumDepth: number): Iterable; downwardDirectoriesSync(startDirectory: string): Iterable; -downwardDirectoriesSync(startDirectory: string, maximumDepth: number): Iterable; +downwardDirectoriesSync(startDirectory: string, + maximumDepth: number): Iterable; ``` > Example Assuming this file system, where the current working directory is `/Documents`: -``` +```txt / └── Documents ├── Images @@ -234,8 +252,11 @@ const { downwardDirectoriesSync } = require("find-files-by-patterns"); [ ...downwardDirectoriesSync() -]; //=> `[ '/Documents/Images', '/Documents/project', '/Documents/project/node_modules' ]` -[...downwardDirectoriesSync(1)]; //=> `[ '/Documents/Images', '/Documents/project' ]` +]; /*=> `[ '/Documents/Images', + '/Documents/project', + '/Documents/project/node_modules' ]`*/ +[...downwardDirectoriesSync(1)]; /*=> `[ '/Documents/Images', + '/Documents/project' ]`*/ [...downwardDirectoriesSync( "/Documents/project" )]; //=> `[ '/Documents/project/node_modules' ]` @@ -253,19 +274,22 @@ Returns an iterable over the existing directories upwards from a start path. ```ts upwardDirectories(): AsyncIterable; upwardDirectories(startPath: string): AsyncIterable; -upwardDirectories(startPath: string, maximumHeight: number): AsyncIterable; +upwardDirectories(startPath: string, + maximumHeight: number): AsyncIterable; upwardDirectories(startPath: string, endPath: string): AsyncIterable; upwardDirectoriesSync(): Iterable; upwardDirectoriesSync(startPath: string): Iterable; -upwardDirectoriesSync(startPath: string, maximumHeight: number): Iterable; +upwardDirectoriesSync(startPath: string, + maximumHeight: number): Iterable; upwardDirectoriesSync(startPath: string, endPath: string): Iterable; ``` > Example -Assuming this file system, where the current working directory is `/Documents/project`: +Assuming this file system, where the current working directory is +`/Documents/project`: -``` +```txt / └── Documents ├── Images @@ -293,7 +317,8 @@ const { upwardDirectoriesSync } = require("find-files-by-patterns"); ### `downwardFiles` and `downwardFilesSync` -Returns and iterable over the files in each downward directory yielded by `downwardDirectories` or `downwardDirectoriesSync`. +Returns and iterable over the files in each downward directory yielded by +`downwardDirectories` or `downwardDirectoriesSync`. > Specifications @@ -301,16 +326,19 @@ Returns and iterable over the files in each downward directory yielded by `downw downwardFiles(): AsyncIterable; downwardFiles(maximumDepth: number): AsyncIterable; downwardFiles(startDirectory: string): AsyncIterable; -downwardFiles(startDirectory: string, maximumDepth: number): AsyncIterable; +downwardFiles(startDirectory: string, + maximumDepth: number): AsyncIterable; downwardFilesSync(): Iterable; downwardFilesSync(maximumDepth: number): Iterable; downwardFilesSync(startDirectory: string): Iterable; -downwardFilesSync(startDirectory: string, maximumDepth: number): Iterable; +downwardFilesSync(startDirectory: string, + maximumDepth: number): Iterable; ``` ### `upwardFiles` and `upwardFilesSync` -Returns and iterable over the files in each upward directory yielded by `upwardDirectories` or `upwardDirectoriesSync`. +Returns and iterable over the files in each upward directory yielded by +`upwardDirectories` or `upwardDirectoriesSync`. > Specifications @@ -327,11 +355,16 @@ upwardFilesSync(startPath: string, endPath: string): Iterable; ### `ofBasename`, `ofDirname` and `ofExtname` -Determines whether or not a path's `basename`, `dirname` or `extname` matches any of a sequence of segment testers. +Determines whether or not a path's `basename`, `dirname` or `extname` matches +any of a sequence of segment testers. A segment tester can be a string, a regular expression or a function. -* If it is a string, then the segment must correspond to it for the path to match. -* If it is a regular expression, then the segment must test against it for the path to match. -* If it is a function, then the segment must make it return `true` for the path to match. + +- If it is a string, then the segment must correspond to it for the path to + match. +- If it is a regular expression, then the segment must test against it for the + path to match. +- If it is a function, then the segment must make it return `true` for the path + to match. > Specifications @@ -360,11 +393,16 @@ isInDocuments("/Documents/src/index.js"); //=> `false` ### `hasPathSegments` -Determines whether or not all the paths segments of a path match a sequence of segment testers. +Determines whether or not all the paths segments of a path match a sequence of +segment testers. A segment tester can be a string, a regular expression or a function. -* If it is a string, then the segment must correspond to it for the path to match. -* If it is a regular expression, then the segment must test against it for the path to match. -* If it is a function, then the segment must make it return `true` for the path to match. + +- If it is a string, then the segment must correspond to it for the path to + match. +- If it is a regular expression, then the segment must test against it for the + path to match. +- If it is a function, then the segment must make it return `true` for the path + to match. > Specifications @@ -408,7 +446,8 @@ isDirectorySync(path: string): boolean; ### `hasFile` and `hasFileSync` -Returns a filter which determines whether or not a path is a directory that has a file which matches a filter. +Returns a filter which determines whether or not a path is a directory that has +a file which matches a filter. > Specifications @@ -419,9 +458,10 @@ hasFileSync(test: FilterSync): FilterSync; > Example -Assuming this file system, where the current working directory is `/Documents/project`: +Assuming this file system, where the current working directory is +`/Documents/project`: -``` +```txt / └── Documents ├── Images @@ -454,7 +494,8 @@ readdirSync(directory: string): Iterable; ### `readdirs` and `readdirsSync` -Returns an iterable over the fully qualified file names in the given sequence of directories. +Returns an iterable over the fully qualified file names in the given sequence of +directories. > Specifications @@ -463,15 +504,17 @@ readdirs(directory: string): AsyncIterable; readdirsSync(directory: string): Iterable; ``` - ### `filter` and `filterSync` -Filters out the iterated elements of an iterable for which the filter function returns `false`. +Filters out the iterated elements of an iterable for which the filter function +returns `false`. This is analogous to the array filter method. > Specifications ```ts +type Filter = (element: T) => Promise; +type FilterSync = (element: T) => boolean; filter(iterable: Iterable | AsyncIterable, filter: Filter | FilterSync): AsyncIterable; filterSync(iterable: Iterable, @@ -500,6 +543,8 @@ Compounds a sequence of filters using logical conjunction. > Specifications ```ts +type Filter = (element: T) => Promise; +type FilterSync = (element: T) => boolean; conjunction(filters: Array | FilterSync>): Filter; conjunctionSync(filters: Array>): FilterSync; ``` @@ -528,6 +573,8 @@ Compounds a sequence of filters using logical disjunction. > Specifications ```ts +type Filter = (element: T) => Promise; +type FilterSync = (element: T) => boolean; disjunction(filters: Array | FilterSync>): Filter; disjunctionSync(filters: Array>): FilterSync; ``` @@ -568,11 +615,12 @@ Returns the first element of an iterable. firstElement(iterable: AsyncIterable): Promise; firstElementSync(iterable: Iterable): T | null; ``` - + ### `onlyElement` and `onlyElementSync` Returns the only yielded element of an iterable. -If there is more than one element yielded by the iterable, then an error is thrown. +If there is more than one element yielded by the iterable, then an error is +thrown. > Specifications @@ -580,7 +628,7 @@ If there is more than one element yielded by the iterable, then an error is thro onlyElement(iterable: AsyncIterable): Promise; onlyElementSync(iterable: Iterable): T | null; ``` - + ## About ### Building the documentation @@ -603,8 +651,9 @@ npm run build ### Authors -* **Marc-Antoine Ouimet** - [MartyO256](https://github.com/MartyO256) +- **Marc-Antoine Ouimet** - [MartyO256](https://github.com/MartyO256) ### License -This project is licensed under the MIT License. See the [LICENSE.md](LICENSE.md) file for details. +This project is licensed under the MIT License. See the [LICENSE.md](LICENSE.md) +file for details. diff --git a/package.json b/package.json index 015b5ae..6e624d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "find-files-by-patterns", - "version": "1.0.0", + "version": "1.0.1", "description": "Find files by patterns in directories, upwards or downwards from other paths.", "license": "MIT", "author": "Marc-Antoine Ouimet ", @@ -37,8 +37,15 @@ } }, "lint-staged": { - "*.ts": ["tslint --force --format verbose", "git add"], - "*.md": ["markdown-toc -i", "git add"] + "*.ts": [ + "tslint --force --format verbose", + "git add" + ], + "*.md": [ + "markdown-toc -i", + "markdownlint", + "git add" + ] }, "keywords": [ "find-files", @@ -62,6 +69,7 @@ "husky": "^1.2.1", "lint-staged": "^8.1.0", "markdown-toc": "^1.2.0", + "markdownlint-cli": "^0.13.0", "mocha": "^5.2.0", "mock-fs": "^4.7.0", "nyc": "^13.1.0", diff --git a/yarn.lock b/yarn.lock index 7952f59..5500cfb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -658,6 +658,13 @@ commander@^2.14.1, commander@^2.9.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== +commander@~2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q= + dependencies: + graceful-readlink ">= 1.0.0" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -826,6 +833,16 @@ deep-eql@^3.0.1: dependencies: type-detect "^4.0.0" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-extend@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" + integrity sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w== + default-require-extensions@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" @@ -902,6 +919,11 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -1170,6 +1192,11 @@ get-stdin@^6.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== +get-stdin@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g= + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -1206,7 +1233,7 @@ glob@7.1.2, glob@^7.0.0, glob@^7.0.5, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3, glob@^7.1.3: +glob@^7.0.3, glob@^7.1.3, glob@~7.1.2: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -1239,6 +1266,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + gray-matter@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-2.1.1.tgz#3042d9adec2a1ded6a7707a9ed2380f8a17a430e" @@ -1393,6 +1425,11 @@ inherits@2, inherits@^2.0.3, inherits@~2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + interpret@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" @@ -1708,6 +1745,14 @@ js-yaml@^3.11.0, js-yaml@^3.7.0, js-yaml@^3.8.1, js-yaml@^3.9.0: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@~3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" + integrity sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -1808,6 +1853,13 @@ leven@^2.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= +linkify-it@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.1.0.tgz#c4caf38a6cd7ac2212ef3c7d2bde30a91561f9db" + integrity sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg== + dependencies: + uc.micro "^1.0.1" + lint-staged@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.0.tgz#dbc3ae2565366d8f20efb9f9799d076da64863f2" @@ -1919,6 +1971,16 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +lodash.differencewith@~4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz#bafafbc918b55154e179176a00bb0aefaac854b7" + integrity sha1-uvr7yRi1UVTheRdqALsK76rIVLc= + +lodash.flatten@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" @@ -1999,6 +2061,17 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-it@8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" + integrity sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ== + dependencies: + argparse "^1.0.7" + entities "~1.1.1" + linkify-it "^2.0.0" + mdurl "^1.0.1" + uc.micro "^1.0.5" + markdown-link@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/markdown-link/-/markdown-link-0.1.1.tgz#32c5c65199a6457316322d1e4229d13407c8c7cf" @@ -2022,6 +2095,29 @@ markdown-toc@^1.2.0: repeat-string "^1.6.1" strip-color "^0.1.0" +markdownlint-cli@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/markdownlint-cli/-/markdownlint-cli-0.13.0.tgz#af1d29e5d8b434256c451c81b87dff1c218844cb" + integrity sha512-DCjhAIb4EDny6xdjOcu2Rckp1sOSktQU9PjRN2pK9p0Azby7YYBqZXO8I+vhv5XKd2Pk0IbbOhyZ/+zjfH4oww== + dependencies: + commander "~2.9.0" + deep-extend "~0.5.1" + get-stdin "~5.0.1" + glob "~7.1.2" + js-yaml "~3.11.0" + lodash.differencewith "~4.5.0" + lodash.flatten "~4.4.0" + markdownlint "~0.11.0" + minimatch "~3.0.4" + rc "~1.2.7" + +markdownlint@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.11.0.tgz#3858bbdbc1ab78abf0c098d841c72b63dd3206a0" + integrity sha512-wE5WdKD6zW2DQaPQ5TFBTXh5j76DnWd/IFffnDQgHmi6Y61DJXBDfLftZ/suJHuv6cwPjM6gKw2GaRLJMOR+Mg== + dependencies: + markdown-it "8.4.2" + marked@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/marked/-/marked-0.4.0.tgz#9ad2c2a7a1791f10a852e0112f77b571dce10c66" @@ -2051,6 +2147,11 @@ md5-o-matic@^0.1.1: resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" integrity sha1-givM1l4RfFFPqxdrJZRdVBAKA8M= +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" @@ -2101,7 +2202,7 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.4, minimatch@~3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -2549,6 +2650,16 @@ randomatic@^3.0.0: kind-of "^6.0.0" math-random "^1.0.1" +rc@~1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + read-pkg-up@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" @@ -3044,6 +3155,11 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + supports-color@5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" @@ -3235,6 +3351,11 @@ typescript@^3.2.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5" integrity sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg== +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376" + integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg== + uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"