commit
60dcc7e874
@ -0,0 +1,132 @@ |
|||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/node,linux |
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=node,linux |
||||||
|
|
||||||
|
### Linux ### |
||||||
|
*~ |
||||||
|
|
||||||
|
# temporary files which can be created if a process still has a handle open of a deleted file |
||||||
|
.fuse_hidden* |
||||||
|
|
||||||
|
# KDE directory preferences |
||||||
|
.directory |
||||||
|
|
||||||
|
# Linux trash folder which might appear on any partition or disk |
||||||
|
.Trash-* |
||||||
|
|
||||||
|
# .nfs files are created when an open file is removed but is still being accessed |
||||||
|
.nfs* |
||||||
|
|
||||||
|
### Node ### |
||||||
|
# Logs |
||||||
|
logs |
||||||
|
*.log |
||||||
|
npm-debug.log* |
||||||
|
yarn-debug.log* |
||||||
|
yarn-error.log* |
||||||
|
lerna-debug.log* |
||||||
|
|
||||||
|
# Diagnostic reports (https://nodejs.org/api/report.html) |
||||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json |
||||||
|
|
||||||
|
# Runtime data |
||||||
|
pids |
||||||
|
*.pid |
||||||
|
*.seed |
||||||
|
*.pid.lock |
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover |
||||||
|
lib-cov |
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul |
||||||
|
coverage |
||||||
|
*.lcov |
||||||
|
|
||||||
|
# nyc test coverage |
||||||
|
.nyc_output |
||||||
|
|
||||||
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) |
||||||
|
.grunt |
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/) |
||||||
|
bower_components |
||||||
|
|
||||||
|
# node-waf configuration |
||||||
|
.lock-wscript |
||||||
|
|
||||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html) |
||||||
|
build/Release |
||||||
|
|
||||||
|
# Dependency directories |
||||||
|
node_modules/ |
||||||
|
jspm_packages/ |
||||||
|
|
||||||
|
# TypeScript v1 declaration files |
||||||
|
typings/ |
||||||
|
|
||||||
|
# TypeScript cache |
||||||
|
*.tsbuildinfo |
||||||
|
|
||||||
|
# Optional npm cache directory |
||||||
|
.npm |
||||||
|
|
||||||
|
# Optional eslint cache |
||||||
|
.eslintcache |
||||||
|
|
||||||
|
# Microbundle cache |
||||||
|
.rpt2_cache/ |
||||||
|
.rts2_cache_cjs/ |
||||||
|
.rts2_cache_es/ |
||||||
|
.rts2_cache_umd/ |
||||||
|
|
||||||
|
# Optional REPL history |
||||||
|
.node_repl_history |
||||||
|
|
||||||
|
# Output of 'npm pack' |
||||||
|
*.tgz |
||||||
|
|
||||||
|
# Yarn Integrity file |
||||||
|
.yarn-integrity |
||||||
|
|
||||||
|
# dotenv environment variables file |
||||||
|
.env |
||||||
|
.env.test |
||||||
|
.env*.local |
||||||
|
|
||||||
|
# parcel-bundler cache (https://parceljs.org/) |
||||||
|
.cache |
||||||
|
.parcel-cache |
||||||
|
|
||||||
|
# Next.js build output |
||||||
|
.next |
||||||
|
|
||||||
|
# Nuxt.js build / generate output |
||||||
|
.nuxt |
||||||
|
dist |
||||||
|
|
||||||
|
# Gatsby files |
||||||
|
.cache/ |
||||||
|
# Comment in the public line in if your project uses Gatsby and not Next.js |
||||||
|
# https://nextjs.org/blog/next-9-1#public-directory-support |
||||||
|
# public |
||||||
|
|
||||||
|
# vuepress build output |
||||||
|
.vuepress/dist |
||||||
|
|
||||||
|
# Serverless directories |
||||||
|
.serverless/ |
||||||
|
|
||||||
|
# FuseBox cache |
||||||
|
.fusebox/ |
||||||
|
|
||||||
|
# DynamoDB Local files |
||||||
|
.dynamodb/ |
||||||
|
|
||||||
|
# TernJS port file |
||||||
|
.tern-port |
||||||
|
|
||||||
|
# Stores VSCode versions used for testing VSCode extensions |
||||||
|
.vscode-test |
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/node,linux |
||||||
|
|
@ -0,0 +1,99 @@ |
|||||||
|
# Following renames in gitlog |
||||||
|
|
||||||
|
This demo serves as a minimal working example for the blog post |
||||||
|
|
||||||
|
<https://peterbabic.dev/blog/following-renames-in-gitlog> |
||||||
|
|
||||||
|
The method outlined here is curently used in my blog to determine when the |
||||||
|
markdown blog post file was published and also when it was last edited. |
||||||
|
|
||||||
|
## Setup |
||||||
|
|
||||||
|
```bash |
||||||
|
git clone https://git.peterbabic.dev/demo/following-renames-gitlog.git |
||||||
|
cd following-renames-gitlog |
||||||
|
npm install |
||||||
|
npm run dev |
||||||
|
``` |
||||||
|
|
||||||
|
This should produce the following output: |
||||||
|
|
||||||
|
```js |
||||||
|
{ |
||||||
|
status: [ 'M' ], |
||||||
|
files: [ 'renamed-blog-post.md' ], |
||||||
|
subject: 'add additional sentence to to blog post', |
||||||
|
authorName: 'Peter Babič', |
||||||
|
authorDate: '2020-12-03 22:07:31 +0100' |
||||||
|
} |
||||||
|
{ |
||||||
|
status: [ 'M' ], |
||||||
|
files: [ 'renamed-blog-post.md' ], |
||||||
|
subject: 'insert a chapter into post', |
||||||
|
authorName: 'Peter Babič', |
||||||
|
authorDate: '2020-12-03 21:51:19 +0100' |
||||||
|
} |
||||||
|
{ |
||||||
|
status: [ 'R100', 'D' ], |
||||||
|
files: [ 'renamed-blog-post.md', 'blog-post.md' ], |
||||||
|
subject: 'rename blog post', |
||||||
|
authorName: 'Peter Babič', |
||||||
|
authorDate: '2020-12-03 21:49:27 +0100' |
||||||
|
} |
||||||
|
{ |
||||||
|
status: [ 'A' ], |
||||||
|
files: [ 'blog-post.md' ], |
||||||
|
subject: 'insert blog post file to track', |
||||||
|
authorName: 'Peter Babič', |
||||||
|
authorDate: '2020-12-03 20:54:27 +0100' |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
Which is equivalent to the command |
||||||
|
|
||||||
|
```bash |
||||||
|
git log --follow --name-status renamed-blog-post.md |
||||||
|
``` |
||||||
|
|
||||||
|
Producing the output |
||||||
|
|
||||||
|
``` |
||||||
|
commit 48831b93a453f7c88838620509ccae6f9feaf851 |
||||||
|
Author: Peter Babič <peter@peterbabic.dev> |
||||||
|
Date: Thu Dec 3 22:07:31 2020 +0100 |
||||||
|
|
||||||
|
add additional sentence to to blog post |
||||||
|
|
||||||
|
M renamed-blog-post.md |
||||||
|
|
||||||
|
commit f6732cbfb7d787f62190b983f73901dd05f749e5 |
||||||
|
Author: Peter Babič <peter@peterbabic.dev> |
||||||
|
Date: Thu Dec 3 21:51:19 2020 +0100 |
||||||
|
|
||||||
|
insert a chapter into post |
||||||
|
|
||||||
|
M renamed-blog-post.md |
||||||
|
|
||||||
|
commit 70955f7c2ecdec469226f8226a10ad313497972e |
||||||
|
Author: Peter Babič <peter@peterbabic.dev> |
||||||
|
Date: Thu Dec 3 21:49:27 2020 +0100 |
||||||
|
|
||||||
|
rename blog post |
||||||
|
|
||||||
|
R100 blog-post.md renamed-blog-post.md |
||||||
|
|
||||||
|
commit 86b45b4a5a7aee4726834e70f0ede60ac961abc5 |
||||||
|
Author: Peter Babič <peter@peterbabic.dev> |
||||||
|
Date: Thu Dec 3 20:54:27 2020 +0100 |
||||||
|
|
||||||
|
insert blog post file to track |
||||||
|
|
||||||
|
A blog-post.md |
||||||
|
``` |
||||||
|
|
||||||
|
With the difference that the former is already parsed and ready to use in a |
||||||
|
script. |
||||||
|
|
||||||
|
## License |
||||||
|
|
||||||
|
MIT |
@ -0,0 +1,809 @@ |
|||||||
|
{ |
||||||
|
"name": "gitlog-published", |
||||||
|
"version": "1.0.0", |
||||||
|
"lockfileVersion": 1, |
||||||
|
"requires": true, |
||||||
|
"dependencies": { |
||||||
|
"@types/strip-bom": { |
||||||
|
"version": "3.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", |
||||||
|
"integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"@types/strip-json-comments": { |
||||||
|
"version": "0.0.30", |
||||||
|
"resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", |
||||||
|
"integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"arg": { |
||||||
|
"version": "4.1.3", |
||||||
|
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", |
||||||
|
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"array-find-index": { |
||||||
|
"version": "1.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", |
||||||
|
"integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"balanced-match": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", |
||||||
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"binary-extensions": { |
||||||
|
"version": "2.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", |
||||||
|
"integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"brace-expansion": { |
||||||
|
"version": "1.1.11", |
||||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", |
||||||
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"balanced-match": "^1.0.0", |
||||||
|
"concat-map": "0.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"buffer-from": { |
||||||
|
"version": "1.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", |
||||||
|
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"camelcase": { |
||||||
|
"version": "2.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", |
||||||
|
"integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"camelcase-keys": { |
||||||
|
"version": "2.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", |
||||||
|
"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"camelcase": "^2.0.0", |
||||||
|
"map-obj": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"chokidar": { |
||||||
|
"version": "3.4.3", |
||||||
|
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", |
||||||
|
"integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", |
||||||
|
"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.5.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"concat-map": { |
||||||
|
"version": "0.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |
||||||
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"create-require": { |
||||||
|
"version": "1.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", |
||||||
|
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"currently-unhandled": { |
||||||
|
"version": "0.4.1", |
||||||
|
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", |
||||||
|
"integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"array-find-index": "^1.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"date-fns": { |
||||||
|
"version": "2.16.1", |
||||||
|
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz", |
||||||
|
"integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==" |
||||||
|
}, |
||||||
|
"dateformat": { |
||||||
|
"version": "1.0.12", |
||||||
|
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", |
||||||
|
"integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"get-stdin": "^4.0.1", |
||||||
|
"meow": "^3.3.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"debug": { |
||||||
|
"version": "4.3.1", |
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", |
||||||
|
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", |
||||||
|
"requires": { |
||||||
|
"ms": "2.1.2" |
||||||
|
} |
||||||
|
}, |
||||||
|
"decamelize": { |
||||||
|
"version": "1.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", |
||||||
|
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"diff": { |
||||||
|
"version": "4.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", |
||||||
|
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"dynamic-dedupe": { |
||||||
|
"version": "0.3.0", |
||||||
|
"resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", |
||||||
|
"integrity": "sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"xtend": "^4.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"error-ex": { |
||||||
|
"version": "1.3.2", |
||||||
|
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", |
||||||
|
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"is-arrayish": "^0.2.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"find-up": { |
||||||
|
"version": "1.1.2", |
||||||
|
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", |
||||||
|
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"path-exists": "^2.0.0", |
||||||
|
"pinkie-promise": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"fs.realpath": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", |
||||||
|
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"fsevents": { |
||||||
|
"version": "2.1.3", |
||||||
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", |
||||||
|
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", |
||||||
|
"dev": true, |
||||||
|
"optional": true |
||||||
|
}, |
||||||
|
"function-bind": { |
||||||
|
"version": "1.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", |
||||||
|
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"get-stdin": { |
||||||
|
"version": "4.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", |
||||||
|
"integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"gitlog": { |
||||||
|
"version": "4.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/gitlog/-/gitlog-4.0.3.tgz", |
||||||
|
"integrity": "sha512-rWejI3r/UXo2egYMJRwI3w/lTVNjP8yT9oz29hkv69qlatKj3Y0PmUYU1x+3fILx+qJJBKjEEHgYTFygOV3a+Q==", |
||||||
|
"requires": { |
||||||
|
"debug": "^4.1.1", |
||||||
|
"tslib": "^1.11.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"glob": { |
||||||
|
"version": "7.1.6", |
||||||
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", |
||||||
|
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"fs.realpath": "^1.0.0", |
||||||
|
"inflight": "^1.0.4", |
||||||
|
"inherits": "2", |
||||||
|
"minimatch": "^3.0.4", |
||||||
|
"once": "^1.3.0", |
||||||
|
"path-is-absolute": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"graceful-fs": { |
||||||
|
"version": "4.2.4", |
||||||
|
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", |
||||||
|
"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"has": { |
||||||
|
"version": "1.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", |
||||||
|
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"function-bind": "^1.1.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"hosted-git-info": { |
||||||
|
"version": "2.8.8", |
||||||
|
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", |
||||||
|
"integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"indent-string": { |
||||||
|
"version": "2.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", |
||||||
|
"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"repeating": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"inflight": { |
||||||
|
"version": "1.0.6", |
||||||
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", |
||||||
|
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"once": "^1.3.0", |
||||||
|
"wrappy": "1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"inherits": { |
||||||
|
"version": "2.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", |
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-arrayish": { |
||||||
|
"version": "0.2.1", |
||||||
|
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", |
||||||
|
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", |
||||||
|
"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-core-module": { |
||||||
|
"version": "2.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", |
||||||
|
"integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"has": "^1.0.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"is-extglob": { |
||||||
|
"version": "2.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", |
||||||
|
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-finite": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", |
||||||
|
"integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-glob": { |
||||||
|
"version": "4.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", |
||||||
|
"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"is-extglob": "^2.1.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"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 |
||||||
|
}, |
||||||
|
"is-utf8": { |
||||||
|
"version": "0.2.1", |
||||||
|
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", |
||||||
|
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"load-json-file": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", |
||||||
|
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"graceful-fs": "^4.1.2", |
||||||
|
"parse-json": "^2.2.0", |
||||||
|
"pify": "^2.0.0", |
||||||
|
"pinkie-promise": "^2.0.0", |
||||||
|
"strip-bom": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"loud-rejection": { |
||||||
|
"version": "1.6.0", |
||||||
|
"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", |
||||||
|
"integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"currently-unhandled": "^0.4.1", |
||||||
|
"signal-exit": "^3.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"make-error": { |
||||||
|
"version": "1.3.6", |
||||||
|
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", |
||||||
|
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"map-obj": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", |
||||||
|
"integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"meow": { |
||||||
|
"version": "3.7.0", |
||||||
|
"resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", |
||||||
|
"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"camelcase-keys": "^2.0.0", |
||||||
|
"decamelize": "^1.1.2", |
||||||
|
"loud-rejection": "^1.0.0", |
||||||
|
"map-obj": "^1.0.1", |
||||||
|
"minimist": "^1.1.3", |
||||||
|
"normalize-package-data": "^2.3.4", |
||||||
|
"object-assign": "^4.0.1", |
||||||
|
"read-pkg-up": "^1.0.1", |
||||||
|
"redent": "^1.0.0", |
||||||
|
"trim-newlines": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"minimatch": { |
||||||
|
"version": "3.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", |
||||||
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"brace-expansion": "^1.1.7" |
||||||
|
} |
||||||
|
}, |
||||||
|
"minimist": { |
||||||
|
"version": "1.2.5", |
||||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", |
||||||
|
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"mkdirp": { |
||||||
|
"version": "1.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", |
||||||
|
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"ms": { |
||||||
|
"version": "2.1.2", |
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", |
||||||
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" |
||||||
|
}, |
||||||
|
"normalize-package-data": { |
||||||
|
"version": "2.5.0", |
||||||
|
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", |
||||||
|
"integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"hosted-git-info": "^2.1.4", |
||||||
|
"resolve": "^1.10.0", |
||||||
|
"semver": "2 || 3 || 4 || 5", |
||||||
|
"validate-npm-package-license": "^3.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"normalize-path": { |
||||||
|
"version": "3.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", |
||||||
|
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"object-assign": { |
||||||
|
"version": "4.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", |
||||||
|
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"once": { |
||||||
|
"version": "1.4.0", |
||||||
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", |
||||||
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"wrappy": "1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"parse-json": { |
||||||
|
"version": "2.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", |
||||||
|
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"error-ex": "^1.2.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"path-exists": { |
||||||
|
"version": "2.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", |
||||||
|
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"pinkie-promise": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"path-is-absolute": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", |
||||||
|
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"path-parse": { |
||||||
|
"version": "1.0.6", |
||||||
|
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", |
||||||
|
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"path-type": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", |
||||||
|
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"graceful-fs": "^4.1.2", |
||||||
|
"pify": "^2.0.0", |
||||||
|
"pinkie-promise": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"picomatch": { |
||||||
|
"version": "2.2.2", |
||||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", |
||||||
|
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"pify": { |
||||||
|
"version": "2.3.0", |
||||||
|
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", |
||||||
|
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"pinkie": { |
||||||
|
"version": "2.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", |
||||||
|
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"pinkie-promise": { |
||||||
|
"version": "2.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", |
||||||
|
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"pinkie": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"read-pkg": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", |
||||||
|
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"load-json-file": "^1.0.0", |
||||||
|
"normalize-package-data": "^2.3.2", |
||||||
|
"path-type": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"read-pkg-up": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", |
||||||
|
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"find-up": "^1.0.0", |
||||||
|
"read-pkg": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"readdirp": { |
||||||
|
"version": "3.5.0", |
||||||
|
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", |
||||||
|
"integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"picomatch": "^2.2.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"redent": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", |
||||||
|
"integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"indent-string": "^2.1.0", |
||||||
|
"strip-indent": "^1.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"repeating": { |
||||||
|
"version": "2.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", |
||||||
|
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"is-finite": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"resolve": { |
||||||
|
"version": "1.19.0", |
||||||
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", |
||||||
|
"integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"is-core-module": "^2.1.0", |
||||||
|
"path-parse": "^1.0.6" |
||||||
|
} |
||||||
|
}, |
||||||
|
"rimraf": { |
||||||
|
"version": "2.7.1", |
||||||
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", |
||||||
|
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"glob": "^7.1.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"semver": { |
||||||
|
"version": "5.7.1", |
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", |
||||||
|
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"signal-exit": { |
||||||
|
"version": "3.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", |
||||||
|
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"source-map": { |
||||||
|
"version": "0.6.1", |
||||||
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", |
||||||
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"source-map-support": { |
||||||
|
"version": "0.5.19", |
||||||
|
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", |
||||||
|
"integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"buffer-from": "^1.0.0", |
||||||
|
"source-map": "^0.6.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"spdx-correct": { |
||||||
|
"version": "3.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", |
||||||
|
"integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"spdx-expression-parse": "^3.0.0", |
||||||
|
"spdx-license-ids": "^3.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"spdx-exceptions": { |
||||||
|
"version": "2.3.0", |
||||||
|
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", |
||||||
|
"integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"spdx-expression-parse": { |
||||||
|
"version": "3.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", |
||||||
|
"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"spdx-exceptions": "^2.1.0", |
||||||
|
"spdx-license-ids": "^3.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"spdx-license-ids": { |
||||||
|
"version": "3.0.7", |
||||||
|
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", |
||||||
|
"integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"strip-bom": { |
||||||
|
"version": "2.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", |
||||||
|
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"is-utf8": "^0.2.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"strip-indent": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", |
||||||
|
"integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"get-stdin": "^4.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"strip-json-comments": { |
||||||
|
"version": "2.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", |
||||||
|
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"tree-kill": { |
||||||
|
"version": "1.2.2", |
||||||
|
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", |
||||||
|
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"trim-newlines": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", |
||||||
|
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"ts-node": { |
||||||
|
"version": "9.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.0.tgz", |
||||||
|
"integrity": "sha512-0yqcL4sgruCvM+w64LiAfNJo6+lHfCYc5Ajj4yiLNkJ9oZ2HWaa+Kso7htYOOxVQ7+csAjdUjffOe9PIqC4pMg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"arg": "^4.1.0", |
||||||
|
"create-require": "^1.1.0", |
||||||
|
"diff": "^4.0.1", |
||||||
|
"make-error": "^1.1.1", |
||||||
|
"source-map-support": "^0.5.17", |
||||||
|
"yn": "3.1.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"ts-node-dev": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-1.0.0.tgz", |
||||||
|
"integrity": "sha512-leA/3TgGtnVU77fGngBwVZztqyDRXirytR7dMtMWZS5b2hGpLl+VDnB0F/gf3A+HEPSzS/KwxgXFP7/LtgX4MQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"chokidar": "^3.4.0", |
||||||
|
"dateformat": "~1.0.4-1.2.3", |
||||||
|
"dynamic-dedupe": "^0.3.0", |
||||||
|
"minimist": "^1.2.5", |
||||||
|
"mkdirp": "^1.0.4", |
||||||
|
"resolve": "^1.0.0", |
||||||
|
"rimraf": "^2.6.1", |
||||||
|
"source-map-support": "^0.5.12", |
||||||
|
"tree-kill": "^1.2.2", |
||||||
|
"ts-node": "^9.0.0", |
||||||
|
"tsconfig": "^7.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"tsconfig": { |
||||||
|
"version": "7.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", |
||||||
|
"integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"@types/strip-bom": "^3.0.0", |
||||||
|
"@types/strip-json-comments": "0.0.30", |
||||||
|
"strip-bom": "^3.0.0", |
||||||
|
"strip-json-comments": "^2.0.0" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"strip-bom": { |
||||||
|
"version": "3.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", |
||||||
|
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", |
||||||
|
"dev": true |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"tslib": { |
||||||
|
"version": "1.14.1", |
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", |
||||||
|
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" |
||||||
|
}, |
||||||
|
"typescript": { |
||||||
|
"version": "4.1.2", |
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", |
||||||
|
"integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"validate-npm-package-license": { |
||||||
|
"version": "3.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", |
||||||
|
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"spdx-correct": "^3.0.0", |
||||||
|
"spdx-expression-parse": "^3.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"wrappy": { |
||||||
|
"version": "1.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", |
||||||
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"xtend": { |
||||||
|
"version": "4.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", |
||||||
|
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"yn": { |
||||||
|
"version": "3.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", |
||||||
|
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", |
||||||
|
"dev": true |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,19 @@ |
|||||||
|
{ |
||||||
|
"name": "gitlog-published", |
||||||
|
"version": "1.0.0", |
||||||
|
"description": "", |
||||||
|
"main": "server.ts", |
||||||
|
"scripts": { |
||||||
|
"dev": "ts-node-dev --respawn server.ts" |
||||||
|
}, |
||||||
|
"author": "peter.babic", |
||||||
|
"license": "MIT", |
||||||
|
"devDependencies": { |
||||||
|
"ts-node-dev": "^1.0.0", |
||||||
|
"typescript": "^4.1.2" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"date-fns": "^2.16.1", |
||||||
|
"gitlog": "^4.0.3" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
# Example post |
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet ... |
||||||
|
|
||||||
|
## Next chapter |
||||||
|
|
||||||
|
Chapter and a new sentence. |
@ -0,0 +1,10 @@ |
|||||||
|
import gitlog, { GitlogOptions } from "gitlog" |
||||||
|
|
||||||
|
const options: GitlogOptions = { |
||||||
|
repo: ".", |
||||||
|
fields: ["subject", "authorName", "authorDate"] as const, |
||||||
|
branch: "--follow", |
||||||
|
file: "renamed-blog-post.md", |
||||||
|
} |
||||||
|
|
||||||
|
gitlog(options).forEach(entry => console.log(entry)) |
@ -0,0 +1,7 @@ |
|||||||
|
{ |
||||||
|
"compilerOptions": { |
||||||
|
"target": "es6", |
||||||
|
"module": "commonjs", |
||||||
|
"lib": ["ES2017", "DOM"] |
||||||
|
} |
||||||
|
} |
@ -0,0 +1 @@ |
|||||||
|
node_modules/ |
@ -0,0 +1,105 @@ |
|||||||
|
# Introduction |
||||||
|
|
||||||
|
This repository serves as a proof-of-concept and starting point for using |
||||||
|
[nodegit](https://github.com/nodegit/nodegit) to figure out when a file was |
||||||
|
created and when it was last updated, not based on timestamps (atime, |
||||||
|
ctime, mtime) but based solely on commit history. |
||||||
|
|
||||||
|
## Motivation |
||||||
|
|
||||||
|
The way how timestamps are set is distribution dependent. Or in other |
||||||
|
words, they depend on `atime` option set in `/etc/fstab/`. You can read |
||||||
|
about different options in an Arch |
||||||
|
[wiki](https://wiki.archlinux.org/index.php/Fstab#atime_options). |
||||||
|
|
||||||
|
The way how timestamps are read also depends on access to the filesystem, |
||||||
|
which may or may not be avaiable. Overall, for the purpose of tracking when |
||||||
|
a markdown file was created and updated, this is not a universal, nor a |
||||||
|
portable solution. |
||||||
|
|
||||||
|
## Alternatives |
||||||
|
|
||||||
|
A common solution to this problem is to store this timestamps in a database |
||||||
|
of some kind. But setting up a database just for the purpose of storing a |
||||||
|
filename and it's timestamps might not be desirable. This also adds a |
||||||
|
complexity in a form of synchronizing the filenames in the filesystem and a |
||||||
|
database. |
||||||
|
|
||||||
|
Of course, when the database with the timestamps is already there, one |
||||||
|
could just store the entire markdown content in itm instead of just the |
||||||
|
filename, but then again, you cold not write the markdown file easily with |
||||||
|
your editor. |
||||||
|
|
||||||
|
## Solution |
||||||
|
|
||||||
|
In a git based workflow, the required timestamps are already stored in a |
||||||
|
repository. According to a StackOverflow |
||||||
|
[question](https://stackoverflow.com/questions/11533199/git-find-commit-where-file-was-added) |
||||||
|
this can be done like this: |
||||||
|
|
||||||
|
```bash |
||||||
|
# get a commit where a file foo.js was created |
||||||
|
git log --diff-filter=A -- foo.js |
||||||
|
``` |
||||||
|
|
||||||
|
Using a `git-diff` |
||||||
|
[documentation](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203) |
||||||
|
we can elaborate further: |
||||||
|
|
||||||
|
```bash |
||||||
|
# get a commit where a file foo.js was modified |
||||||
|
git log --diff-filter=M -- foo.js |
||||||
|
``` |
||||||
|
|
||||||
|
This proves that the task can be done. However, ideally we need to do it |
||||||
|
programatically, without the need for running `bash`, which could also be |
||||||
|
OS dependent, but natively in javascript. A layer of abstraction that |
||||||
|
servers as a wrapper of git commands would suffice, because it would |
||||||
|
presumably be less OS dependent. |
||||||
|
|
||||||
|
## Solution |
||||||
|
|
||||||
|
As with the most things in a javascript world, not one, but multiple such |
||||||
|
abstraction layers / wrappers already exists. I would not list them all |
||||||
|
here. Instead, without any research, somehow `nodegit` appealed to me as a |
||||||
|
best tool for the job. |
||||||
|
|
||||||
|
Running `npm run dev` shows the dates when file `added.ts` was created and |
||||||
|
modified based on the commit history. |
||||||
|
|
||||||
|
## Caveat |
||||||
|
|
||||||
|
One problem that I have found with this approach is renaming the file. We |
||||||
|
use [fileHistoryWalk](https://www.nodegit.org/api/revwalk/#fileHistoryWalk) |
||||||
|
for walking the commit history. It returns an array of objects of type |
||||||
|
`<HistoryEntry>`, which looks like it is not documented in an API as of |
||||||
|
time of writing. Each object contains a _commit_, a _date_ and a _status_ |
||||||
|
entry. The first two are easy to work with but, since it is not documented, |
||||||
|
at first I could not find out what that _status_ means. Experimentally I |
||||||
|
have found it correlates to the |
||||||
|
[diff delta](https://www.nodegit.org/api/diff/#DELTA) enum. |
||||||
|
|
||||||
|
We can see, that value 4 stands for `RENAMED`, but since, we walk the |
||||||
|
history of just one file, and renaming actually creates two filenames in a |
||||||
|
commit history, this results in lost data. However, when not renaming |
||||||
|
files, it works like a charm. |
||||||
|
|
||||||
|
## Notes |
||||||
|
|
||||||
|
- typescript is used here instead of javascript |
||||||
|
- [date-fns](https://github.com/date-fns/date-fns) is used for formatting |
||||||
|
the timestamps |
||||||
|
|
||||||
|
## Further reading |
||||||
|
|
||||||
|
- https://github.community/t/show-file-history-for-renamed-files/1740 |
||||||
|
- https://stackoverflow.com/questions/40957424/using-nodegit-how-can-i-find-the-date-a-given-file-was-last-updated-in-a-git-re |
||||||
|
- https://github.com/nodegit/nodegit/issues/1116 |
||||||
|
- https://github.com/nodegit/nodegit/issues/1228 |
||||||
|
- https://github.com/nodegit/nodegit/blob/master/examples/walk-history-for-file.js |
||||||
|
- https://stackoverflow.com/questions/51609682/nodegit-filehistorywalk-doesnt-show-merge-commit |
||||||
|
- https://stackoverflow.com/questions/40957424/using-nodegit-how-can-i-find-the-date-a-given-file-was-last-updated-in-a-git-re:w |
||||||
|
|
||||||
|
## License |
||||||
|
|
||||||
|
MIT |
@ -0,0 +1,41 @@ |
|||||||
|
import { Repository, Commit, Diff, ConvenientPatch } from "nodegit" |
||||||
|
;(async () => { |
||||||
|
const repo = await Repository.open(".") |
||||||
|
const master = await repo.getMasterCommit() |
||||||
|
const history = master.history() |
||||||
|
|
||||||
|
history.on("commit", async (commit: Commit) => { |
||||||
|
const commitDiff = await commit.getDiff() |
||||||
|
commitDiff.forEach(async (diff: Diff) => { |
||||||
|
console.log( |
||||||
|
"--- COMMIT ---\n", |
||||||
|
commit.sha(), |
||||||
|
commit.author().email(), |
||||||
|
commit.date(), |
||||||
|
commit.message(), |
||||||
|
"deltas: ", |
||||||
|
diff.numDeltas(), |
||||||
|
diff?.getDelta(1)?.oldFile()?.path() |
||||||
|
) |
||||||
|
|
||||||
|
const patches = await diff.patches() |
||||||
|
patches.forEach(async (patch: ConvenientPatch) => { |
||||||
|
//const hunks = await patch.hunks()
|
||||||
|
/*hunks.forEach(async (hunk: ConvenientHunk) => { |
||||||
|
console.log("diff: ", patch.oldFile().path(), patch.newFile().path()) |
||||||
|
console.log(hunk.header().trim()) |
||||||
|
|
||||||
|
const lines = await hunk.lines() |
||||||
|
lines.forEach(async (line: DiffLine) => { |
||||||
|
console.log( |
||||||
|
String.fromCharCode(line.origin()) + line.content().trim() |
||||||
|
) |
||||||
|
|
||||||
|
}) |
||||||
|
})*/ |
||||||
|
}) |
||||||
|
}) |
||||||
|
}) |
||||||
|
|
||||||
|
history.start() |
||||||
|
})() |
@ -0,0 +1,44 @@ |
|||||||
|
var nodegit = require("nodegit") |
||||||
|
var path = require("path") |
||||||
|
|
||||||
|
// This code examines the diffs between a particular commit and all of its
|
||||||
|
// parents. Since this commit is not a merge, it only has one parent. This is
|
||||||
|
// similar to doing `git show`.
|
||||||
|
|
||||||
|
nodegit.Repository.open(path.resolve(__dirname, ".git")) |
||||||
|
.then(function (repo) { |
||||||
|
return repo.getMasterCommit() |
||||||
|
}) |
||||||
|
.then(function (commit) { |
||||||
|
console.log("commit " + commit.sha()) |
||||||
|
console.log( |
||||||
|
"Author:", |
||||||
|
commit.author().name() + " <" + commit.author().email() + ">" |
||||||
|
) |
||||||
|
console.log("Date:", commit.date()) |
||||||
|
console.log("\n " + commit.message()) |
||||||
|
|
||||||
|
return commit.getDiff() |
||||||
|
}) |
||||||
|
.done(function (diffList) { |
||||||
|
diffList.forEach(function (diff) { |
||||||
|
diff.patches().then(function (patches) { |
||||||
|
patches.forEach(function (patch) { |
||||||
|
patch.hunks().then(function (hunks) { |
||||||
|
hunks.forEach(function (hunk) { |
||||||
|
hunk.lines().then(function (lines) { |
||||||
|
console.log(lines) |
||||||
|
//console.log("diff", patch.oldFile().path(),
|
||||||
|
//patch.newFile().path());
|
||||||
|
//console.log(hunk.header().trim());
|
||||||
|
//lines.forEach(function(line) {
|
||||||
|
//console.log(String.fromCharCode(line.origin()) +
|
||||||
|
//line.content().trim());
|
||||||
|
//});
|
||||||
|
}) |
||||||
|
}) |
||||||
|
}) |
||||||
|
}) |
||||||
|
}) |
||||||
|
}) |
||||||
|
}) |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,20 @@ |
|||||||
|
{ |
||||||
|
"name": "nodegit-test", |
||||||
|
"version": "1.0.0", |
||||||
|
"description": "", |
||||||
|
"main": "index.js", |
||||||
|
"scripts": { |
||||||
|
"dev": "npx ts-node-dev --respawn revvalk.ts" |
||||||
|
}, |
||||||
|
"author": "", |
||||||
|
"license": "ISC", |
||||||
|
"dependencies": { |
||||||
|
"date-fns": "^2.14.0", |
||||||
|
"nodegit": "^0.26.5" |
||||||
|
}, |
||||||
|
"devDependencies": { |
||||||
|
"@types/nodegit": "^0.26.6", |
||||||
|
"ts-node-dev": "^1.0.0-pre.50", |
||||||
|
"typescript": "^3.9.6" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,61 @@ |
|||||||
|
import { Repository, Revwalk, Commit } from "nodegit" |
||||||
|
import { format } from "date-fns" |
||||||
|
|
||||||
|
enum STATUS { |
||||||
|
"UNMODIFIED", |
||||||
|
"ADDED", |
||||||
|
"DELETED", |
||||||
|
"MODIFIED", |
||||||
|
} |
||||||
|
|
||||||
|
const fileName = "added.ts" |
||||||
|
const maxCount = 500 |
||||||
|
|
||||||
|
;(async () => { |
||||||
|
const repo = await Repository.open(".") |
||||||
|
const master = await repo.getMasterCommit() |
||||||
|
const walker = repo.createRevWalk() |
||||||
|
walker.push(master.id()) |
||||||
|
walker.sorting(Revwalk.SORT.REVERSE) |
||||||
|
const fileHistory = await walker.fileHistoryWalk(fileName, maxCount) |
||||||
|
|
||||||
|
let created: Date = new Date() |
||||||
|
let modified: Date = new Date() |
||||||
|
created.setTime(0) |
||||||
|
modified.setTime(0) |
||||||
|
|
||||||
|
fileHistory.forEach(file => { |
||||||
|
const commit: Commit = file?.commit |
||||||
|
const date = commit.date() |
||||||
|
const status = file?.status |
||||||
|
|
||||||
|
if (status === STATUS.ADDED && date.getTime() > created.getTime()) { |
||||||
|
created = date |
||||||
|
} |
||||||
|
|
||||||
|
if ( |
||||||
|
status === STATUS.MODIFIED && |
||||||
|
date.getTime() > modified.getTime() |
||||||
|
) { |
||||||
|
modified = date |
||||||
|
} |
||||||
|
|
||||||
|
/*console.log( |
||||||
|
commit.sha(), |
||||||
|
commit.date(), |
||||||
|
commit.author().email(), |
||||||
|
"status: ", |
||||||
|
STATUS[status] |
||||||
|
)*/ |
||||||
|
}) |
||||||
|
|
||||||
|
const formatDate = (date: Date) => format(date, "dd-MM-yyyy") |
||||||
|
|
||||||
|
console.log( |
||||||
|
fileName, |
||||||
|
"created:", |
||||||
|
formatDate(created), |
||||||
|
"modified:", |
||||||
|
formatDate(modified) |
||||||
|
) |
||||||
|
})() |
@ -0,0 +1,44 @@ |
|||||||
|
const Git = require("nodegit") |
||||||
|
|
||||||
|
// Open the repository directory.
|
||||||
|
Git.Repository.open(".") |
||||||
|
// Open the master branch.
|
||||||
|
.then(function (repo) { |
||||||
|
return repo.getMasterCommit() |
||||||
|
}) |
||||||
|
// Display information about commits on master.
|
||||||
|
.then(function (firstCommitOnMaster) { |
||||||
|
// Create a new history event emitter.
|
||||||
|
var history = firstCommitOnMaster.history() |
||||||
|
|
||||||
|
// Create a counter to only show up to 9 entries.
|
||||||
|
var count = 0 |
||||||
|
|
||||||
|
// Listen for commit events from the history.
|
||||||
|
history.on("commit", function (commit) { |
||||||
|
// Disregard commits past 9.
|
||||||
|
if (++count >= 9) { |
||||||
|
return |
||||||
|
} |
||||||
|
|
||||||
|
// Show the commit sha.
|
||||||
|
console.log("commit " + commit.sha()) |
||||||
|
|
||||||
|
// Store the author object.
|
||||||
|
var author = commit.author() |
||||||
|
|
||||||
|
// Display author information.
|
||||||
|
console.log( |
||||||
|
"Author:\t" + author.name() + " <" + author.email() + ">" |
||||||
|
) |
||||||
|
|
||||||
|
// Show the commit date.
|
||||||
|
console.log("Date:\t" + commit.date()) |
||||||
|
|
||||||
|
// Give some space and show the message.
|
||||||
|
console.log("\n " + commit.message()) |
||||||
|
}) |
||||||
|
|
||||||
|
// Start emitting events.
|
||||||
|
history.start() |
||||||
|
}) |
@ -0,0 +1,133 @@ |
|||||||
|
cypress/screenshots |
||||||
|
cypress/videos |
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/node,linux |
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=node,linux |
||||||
|
|
||||||
|
### Linux ### |
||||||
|
*~ |
||||||
|
|
||||||
|
# temporary files which can be created if a process still has a handle open of a deleted file |
||||||
|
.fuse_hidden* |
||||||
|
|
||||||
|
# KDE directory preferences |
||||||
|
.directory |
||||||
|
|
||||||
|
# Linux trash folder which might appear on any partition or disk |
||||||
|
.Trash-* |
||||||
|
|
||||||
|
# .nfs files are created when an open file is removed but is still being accessed |
||||||
|
.nfs* |
||||||
|
|
||||||
|
### Node ### |
||||||
|
# Logs |
||||||
|
logs |
||||||
|
*.log |
||||||
|
npm-debug.log* |
||||||
|
yarn-debug.log* |
||||||
|
yarn-error.log* |
||||||
|
lerna-debug.log* |
||||||
|
|
||||||
|
# Diagnostic reports (https://nodejs.org/api/report.html) |
||||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json |
||||||
|
|
||||||
|
# Runtime data |
||||||
|
pids |
||||||
|
*.pid |
||||||
|
*.seed |
||||||
|
*.pid.lock |
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover |
||||||
|
lib-cov |
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul |
||||||
|
coverage |
||||||
|
*.lcov |
||||||
|
|
||||||
|
# nyc test coverage |
||||||
|
.nyc_output |
||||||
|
|
||||||
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) |
||||||
|
.grunt |
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/) |
||||||
|
bower_components |
||||||
|
|
||||||
|
# node-waf configuration |
||||||
|
.lock-wscript |
||||||
|
|
||||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html) |
||||||
|
build/Release |
||||||
|
|
||||||
|
# Dependency directories |
||||||
|
node_modules/ |
||||||
|
jspm_packages/ |
||||||
|
|
||||||
|
# TypeScript v1 declaration files |
||||||
|
typings/ |
||||||
|
|
||||||
|
# TypeScript cache |
||||||
|
*.tsbuildinfo |
||||||
|
|
||||||
|
# Optional npm cache directory |
||||||
|
.npm |
||||||
|
|
||||||
|
# Optional eslint cache |
||||||
|
.eslintcache |
||||||
|
|
||||||
|
# Microbundle cache |
||||||
|
.rpt2_cache/ |
||||||
|
.rts2_cache_cjs/ |
||||||
|
.rts2_cache_es/ |
||||||
|
.rts2_cache_umd/ |
||||||
|
|
||||||
|
# Optional REPL history |
||||||
|
.node_repl_history |
||||||
|
|
||||||
|
# Output of 'npm pack' |
||||||
|
*.tgz |
||||||
|
|
||||||
|
# Yarn Integrity file |
||||||
|
.yarn-integrity |
||||||
|
|
||||||
|
# dotenv environment variables file |
||||||
|
.env |
||||||
|
.env.test |
||||||
|
.env*.local |
||||||
|
|
||||||
|
# parcel-bundler cache (https://parceljs.org/) |
||||||
|
.cache |
||||||
|
.parcel-cache |
||||||
|
|
||||||
|
# Next.js build output |
||||||
|
.next |
||||||
|
|
||||||
|
# Nuxt.js build / generate output |
||||||
|
.nuxt |
||||||
|
dist |
||||||
|
|
||||||
|
# Gatsby files |
||||||
|
.cache/ |
||||||
|
# Comment in the public line in if your project uses Gatsby and not Next.js |
||||||
|
# https://nextjs.org/blog/next-9-1#public-directory-support |
||||||
|
# public |
||||||
|
|
||||||
|
# vuepress build output |
||||||
|
.vuepress/dist |
||||||
|
|
||||||
|
# Serverless directories |
||||||
|
.serverless/ |
||||||
|
|
||||||
|
# FuseBox cache |
||||||
|
.fusebox/ |
||||||
|
|
||||||
|
# DynamoDB Local files |
||||||
|
.dynamodb/ |
||||||
|
|
||||||
|
# TernJS port file |
||||||
|
.tern-port |
||||||
|
|
||||||
|
# Stores VSCode versions used for testing VSCode extensions |
||||||
|
.vscode-test |
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/node,linux |
||||||
|
|
@ -0,0 +1,21 @@ |
|||||||
|
# Asserting sorted dates in Cypress |
||||||
|
|
||||||
|
This demo serves as a minimal working example for the blog post |
||||||
|
|
||||||
|
<https://peterbabic.dev/blog/how-to-assert-sorted-dates-cypress> |
||||||
|
|
||||||
|
## Setup |
||||||
|
|
||||||
|
```bash |
||||||
|
git clone https://git.peterbabic.dev/demo/datetime-sorted-cypress.git |
||||||
|
cd datetime-sorted-cypress |
||||||
|
npm install |
||||||
|
npm run test |
||||||
|
``` |
||||||
|
|
||||||
|
The test should pass. Consider playing with the [index.html](index.html), |
||||||
|
re-ordering the dates to affect the test result. |
||||||
|
|
||||||
|
## License |
||||||
|
|
||||||
|
MIT |
@ -0,0 +1,3 @@ |
|||||||
|
{ |
||||||
|
"baseUrl": "http://localhost:3000/" |
||||||
|
} |
@ -0,0 +1,18 @@ |
|||||||
|
/// <reference types="cypress" />
|
||||||
|
import { parse } from "date-fns" |
||||||
|
|
||||||
|
describe("Date list should", () => { |
||||||
|
it("have dates sorted chronologically", () => { |
||||||
|
cy.visit("/") |
||||||
|
|
||||||
|
const parseDate = date => parse(date, "dd.MM.yyyy", new Date()) |
||||||
|
let prevDate = parseDate("01.01.1970") |
||||||
|
|
||||||
|
cy.get("ul#sorted li").each($pre => { |
||||||
|
const currentDate = parseDate($pre.text()) |
||||||
|
expect(prevDate).to.be.lte(currentDate) |
||||||
|
|
||||||
|
prevDate = currentDate |
||||||
|
}) |
||||||
|
}) |
||||||
|
}) |
@ -0,0 +1,21 @@ |
|||||||
|
/// <reference types="cypress" />
|
||||||
|
// ***********************************************************
|
||||||
|
// This example plugins/index.js can be used to load plugins
|
||||||
|
//
|
||||||
|
// You can change the location of this file or turn off loading
|
||||||
|
// the plugins file with the 'pluginsFile' configuration option.
|
||||||
|
//
|
||||||
|
// You can read more here:
|
||||||
|
// https://on.cypress.io/plugins-guide
|
||||||
|
// ***********************************************************
|
||||||
|
|
||||||
|
// This function is called when a project is opened or re-opened (e.g. due to
|
||||||
|
// the project's config changing)
|
||||||
|
|
||||||
|
/** |
||||||
|
* @type {Cypress.PluginConfig} |
||||||
|
*/ |
||||||
|
module.exports = (on, config) => { |
||||||
|
// `on` is used to hook into various events Cypress emits
|
||||||
|
// `config` is the resolved Cypress config
|
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
// ***********************************************
|
||||||
|
// This example commands.js shows you how to
|
||||||
|
// create various custom commands and overwrite
|
||||||
|
// existing commands.
|
||||||
|
//
|
||||||
|
// For more comprehensive examples of custom
|
||||||
|
// commands please read more here:
|
||||||
|
// https://on.cypress.io/custom-commands
|
||||||
|
// ***********************************************
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This is a parent command --
|
||||||
|
// Cypress.Commands.add("login", (email, password) => { ... })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This is a child command --
|
||||||
|
// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This is a dual command --
|
||||||
|
// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This will overwrite an existing command --
|
||||||
|
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
|
@ -0,0 +1,20 @@ |
|||||||
|
// ***********************************************************
|
||||||
|
// This example support/index.js is processed and
|
||||||
|
// loaded automatically before your test files.
|
||||||
|
//
|
||||||
|
// This is a great place to put global configuration and
|
||||||
|
// behavior that modifies Cypress.
|
||||||
|
//
|
||||||
|
// You can change the location of this file or turn off
|
||||||
|
// automatically serving support files with the
|
||||||
|
// 'supportFile' configuration option.
|
||||||
|
//
|
||||||
|
// You can read more here:
|
||||||
|
// https://on.cypress.io/configuration
|
||||||
|
// ***********************************************************
|
||||||
|
|
||||||
|
// Import commands.js using ES2015 syntax:
|
||||||
|
import "./commands" |
||||||
|
|
||||||
|
// Alternatively you can use CommonJS syntax:
|
||||||
|
// require('./commands')
|
@ -0,0 +1,28 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html> |
||||||
|
<head> |
||||||
|
<title>Asserting sorted date</title> |
||||||
|
</head> |
||||||
|
|
||||||
|
<body> |
||||||
|
<h1>Important dates</h1> |
||||||
|
|
||||||
|
<h2>Ordered</h2> |
||||||
|
<ul id="sorted"> |
||||||
|
<li>12.03.1975</li> |
||||||
|
<li>14.12.1999</li> |
||||||
|
<li>28.02.2001</li> |
||||||
|
<li>20.08.2010</li> |
||||||
|
<li>05.07.2018</li> |
||||||
|
</ul> |
||||||
|
|
||||||
|
<!--<h2>Unordered</h2>--> |
||||||
|
<!--<ul id="unsorted">--> |
||||||
|
<!--<li>12.03.1975</li>--> |
||||||
|
<!--<li>05.07.2018</li>--> |
||||||
|
<!--<li>28.02.2001</li>--> |
||||||
|
<!--<li>14.12.1999</li>--> |
||||||
|
<!--<li>20.08.2010</li>--> |
||||||
|
<!--</ul>--> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,13 @@ |
|||||||
|
const http = require("http") |
||||||
|
const fs = require("fs") |
||||||
|
|
||||||
|
const port = process.env.PORT || 3000 |
||||||
|
|
||||||
|
const server = http.createServer((req, res) => { |
||||||
|
res.writeHead(200, { "content-type": "text/html" }) |
||||||
|
fs.createReadStream("index.html").pipe(res) |
||||||
|
}) |
||||||
|
|
||||||
|
server.listen(port) |
||||||
|
|
||||||
|
console.log(`Listening on the port ${port}.`) |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,22 @@ |
|||||||
|
{ |
||||||
|
"name": "datetime-sorted-cypress", |
||||||
|
"version": "1.0.0", |
||||||
|
"description": "", |
||||||
|
"main": "index.js", |
||||||
|
"scripts": { |
||||||
|
"dev": "node .", |
||||||
|
"cy:run": "cypress run", |
||||||
|
"test": "start-test dev 3000 cy:run" |
||||||
|
}, |
||||||
|
"repository": { |
||||||
|
"type": "git", |
||||||
|
"url": "git@git.peterbabic.dev:demo/datetime-sorted-cypress.git" |
||||||
|
}, |
||||||
|
"author": "peter.babic", |
||||||
|
"license": "MIT", |
||||||
|
"devDependencies": { |
||||||
|
"cypress": "^6.1.0", |
||||||
|
"date-fns": "^2.16.1", |
||||||
|
"start-server-and-test": "^1.11.6" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,135 @@ |
|||||||
|
cypress/screenshots |
||||||
|
cypress/videos |
||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/linux,node |
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=linux,node |
||||||
|
|
||||||
|
### Linux ### |
||||||
|
*~ |
||||||
|
|
||||||
|
# temporary files which can be created if a process still has a handle open of a deleted file |
||||||
|
.fuse_hidden* |
||||||
|
|
||||||
|
# KDE directory preferences |
||||||
|
.directory |
||||||
|
|
||||||
|
# Linux trash folder which might appear on any partition or disk |
||||||
|
.Trash-* |
||||||
|
|
||||||
|
# .nfs files are created when an open file is removed but is still being accessed |
||||||
|
.nfs* |
||||||
|
|
||||||
|
### Node ### |
||||||
|
# Logs |
||||||
|
logs |
||||||
|
*.log |
||||||
|
npm-debug.log* |
||||||
|
yarn-debug.log* |
||||||
|
yarn-error.log* |
||||||
|
lerna-debug.log* |
||||||
|
|
||||||
|
# Diagnostic reports (https://nodejs.org/api/report.html) |
||||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json |
||||||
|
|
||||||
|
# Runtime data |
||||||
|
pids |
||||||
|
*.pid |
||||||
|
*.seed |
||||||
|
*.pid.lock |
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover |
||||||
|
lib-cov |
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul |
||||||
|
coverage |
||||||
|
*.lcov |
||||||
|
|
||||||
|
# nyc test coverage |
||||||
|
.nyc_output |
||||||
|
|
||||||
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) |
||||||
|
.grunt |
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/) |
||||||
|
bower_components |
||||||
|
|
||||||
|
# node-waf configuration |
||||||
|
.lock-wscript |
||||||
|
|
||||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html) |
||||||
|
build/Release |
||||||
|
|
||||||
|
# Dependency directories |
||||||
|
node_modules/ |
||||||
|
jspm_packages/ |
||||||
|
|
||||||
|
# TypeScript v1 declaration files |
||||||
|
typings/ |
||||||
|
|
||||||
|
# TypeScript cache |
||||||
|
*.tsbuildinfo |
||||||
|
|
||||||
|
# Optional npm cache directory |
||||||
|
.npm |
||||||
|
|
||||||
|
# Optional eslint cache |
||||||
|
.eslintcache |
||||||
|
|
||||||
|
# Microbundle cache |
||||||
|
.rpt2_cache/ |
||||||
|
.rts2_cache_cjs/ |
||||||
|
.rts2_cache_es/ |
||||||
|
.rts2_cache_umd/ |
||||||
|
|
||||||
|
# Optional REPL history |
||||||
|
.node_repl_history |
||||||
|
|
||||||
|
# Output of 'npm pack' |
||||||
|
*.tgz |
||||||
|
|
||||||
|
# Yarn Integrity file |
||||||
|
.yarn-integrity |
||||||
|
|
||||||
|
# dotenv environment variables file |
||||||
|
.env |
||||||
|
.env.test |
||||||
|
.env*.local |
||||||
|
|
||||||
|
# parcel-bundler cache (https://parceljs.org/) |
||||||
|
.cache |
||||||
|
.parcel-cache |
||||||
|
|
||||||
|
# Next.js build output |
||||||
|
.next |
||||||
|
|
||||||
|
# Nuxt.js build / generate output |
||||||
|
.nuxt |
||||||
|
dist |
||||||
|
|
||||||
|
# Gatsby files |
||||||
|
.cache/ |
||||||
|
# Comment in the public line in if your project uses Gatsby and not Next.js |
||||||
|
# https://nextjs.org/blog/next-9-1#public-directory-support |
||||||
|
# public |
||||||
|
|
||||||
|
# vuepress build output |
||||||
|
.vuepress/dist |
||||||
|
|
||||||
|
# Serverless directories |
||||||
|
.serverless/ |
||||||
|
|
||||||
|
# FuseBox cache |
||||||
|
.fusebox/ |
||||||
|
|
||||||
|
# DynamoDB Local files |
||||||
|
.dynamodb/ |
||||||
|
|
||||||
|
# TernJS port file |
||||||
|
.tern-port |
||||||
|
|
||||||
|
# Stores VSCode versions used for testing VSCode extensions |
||||||
|
.vscode-test |
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/linux,node |
||||||
|
|
||||||
|
|
@ -0,0 +1,63 @@ |
|||||||
|
# Prevent push when skipping Cypress tests |
||||||
|
|
||||||
|
Make sure your Cypress testing pipeline never let's you push broken code |
||||||
|
when accidentally skipping tests. |
||||||
|
|
||||||
|
## Setup |
||||||
|
|
||||||
|
```bash |
||||||
|
git clone https://git.peterbabic.dev/demo/cypress-prevent-push-skips.git |
||||||
|
cd cypress-prevent-push-skips |
||||||
|
npm install |
||||||
|
``` |
||||||
|
|
||||||
|
## How does it work |
||||||
|
|
||||||
|
![demo](demo.gif) |
||||||
|
|
||||||
|
Edit [spec.js](cypress/integration/spec.js), add **.skip** or **.only** |
||||||
|
modifier to the test or tests and try to push any commited changes this way |
||||||
|
to the repository. The push shoud fail due to pre-push hook, taht makes |
||||||
|
sure that the push fails in two situations: |
||||||
|
|
||||||
|
1. any test contains **.skip** or **.only**, which means not all of them |
||||||
|
would be executed |
||||||
|
1. any test fails, step 1 endures al ltests are executed |
||||||
|
|
||||||
|
The detection happens in the |
||||||
|
[package.json](https://git.peterbabic.dev/demo/cypress-prevent-push-skips/src/branch/master/package.json#L13) |
||||||
|
|
||||||
|
```bash |
||||||
|
grep -Rvzq -e '.skip' -e '.only' cypress/integration |
||||||
|
``` |
||||||
|
|
||||||
|
More details described in the blog post located at: |
||||||
|
|
||||||
|
<https://peterbabic.dev/blog/prevent-push-when-skipping-cypress-tests> |
||||||
|
|
||||||
|
## Preventing the behavior |
||||||
|
|
||||||
|
The push can be executed even with skipping or failing tests by supplying |
||||||
|
`--no-verify` |
||||||
|
|
||||||
|
```bash |
||||||
|
git push origin master --no-verify |
||||||
|
``` |
||||||
|
|
||||||
|
## Possible improvements |
||||||
|
|
||||||
|
Currently, the message provided looks like this: |
||||||
|
|
||||||
|
```bash |
||||||
|
$ git push origin master |
||||||
|
husky > pre-push (node v14.9.0) |
||||||
|
husky > pre-push hook failed (add --no-verify to bypass) |
||||||
|
error: failed to push some refs to 'git.peterbabic.dev:demo/cypress-prevent-push-skips.git' |
||||||
|
``` |
||||||
|
|
||||||
|
However, it is not clear why the pre-push hook failed. The verbosity could |
||||||
|
be improved. |
||||||
|
|
||||||
|
## License |
||||||
|
|
||||||
|
MIT |
@ -0,0 +1 @@ |
|||||||
|
{ "baseUrl": "http://localhost:3000" } |
@ -0,0 +1,5 @@ |
|||||||
|
{ |
||||||
|
"name": "Using fixtures to represent data", |
||||||
|
"email": "hello@cypress.io", |
||||||
|
"body": "Fixtures are a great way to mock data for responses to routes" |
||||||
|
} |
@ -0,0 +1,6 @@ |
|||||||
|
/// <reference types="cypress" />
|
||||||
|
describe("Simplest test should", () => { |
||||||
|
it.only("visit base URL", () => { |
||||||
|
cy.visit("/") |
||||||
|
}) |
||||||
|
}) |
@ -0,0 +1,21 @@ |
|||||||
|
/// <reference types="cypress" />
|
||||||
|
// ***********************************************************
|
||||||
|
// This example plugins/index.js can be used to load plugins
|
||||||
|
//
|
||||||
|
// You can change the location of this file or turn off loading
|
||||||
|
// the plugins file with the 'pluginsFile' configuration option.
|
||||||
|
//
|
||||||
|
// You can read more here:
|
||||||
|
// https://on.cypress.io/plugins-guide
|
||||||
|
// ***********************************************************
|
||||||
|
|
||||||
|
// This function is called when a project is opened or re-opened (e.g. due to
|
||||||
|
// the project's config changing)
|
||||||
|
|
||||||
|
/** |
||||||
|
* @type {Cypress.PluginConfig} |
||||||
|
*/ |
||||||
|
module.exports = (on, config) => { |
||||||
|
// `on` is used to hook into various events Cypress emits
|
||||||
|
// `config` is the resolved Cypress config
|
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
// ***********************************************
|
||||||
|
// This example commands.js shows you how to
|
||||||
|
// create various custom commands and overwrite
|
||||||
|
// existing commands.
|
||||||
|
//
|
||||||
|
// For more comprehensive examples of custom
|
||||||
|
// commands please read more here:
|
||||||
|
// https://on.cypress.io/custom-commands
|
||||||
|
// ***********************************************
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This is a parent command --
|
||||||
|
// Cypress.Commands.add("login", (email, password) => { ... })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This is a child command --
|
||||||
|
// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This is a dual command --
|
||||||
|
// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This will overwrite an existing command --
|
||||||
|
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
|
@ -0,0 +1,20 @@ |
|||||||
|
// ***********************************************************
|
||||||
|
// This example support/index.js is processed and
|
||||||
|
// loaded automatically before your test files.
|
||||||
|
//
|
||||||
|
// This is a great place to put global configuration and
|
||||||
|
// behavior that modifies Cypress.
|
||||||
|
//
|
||||||
|
// You can change the location of this file or turn off
|
||||||
|
// automatically serving support files with the
|
||||||
|
// 'supportFile' configuration option.
|
||||||
|
//
|
||||||
|
// You can read more here:
|
||||||
|
// https://on.cypress.io/configuration
|
||||||
|
// ***********************************************************
|
||||||
|
|
||||||
|
// Import commands.js using ES2015 syntax:
|
||||||
|
import "./commands" |
||||||
|
|
||||||
|
// Alternatively you can use CommonJS syntax:
|
||||||
|
// require('./commands')
|
After Width: | Height: | Size: 46 KiB |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,23 @@ |
|||||||
|
{ |
||||||
|
"name": "prevent-push-when-skipping-cypress-tests", |
||||||
|
"version": "1.0.0", |
||||||
|
"description": "", |
||||||
|
"main": "server.js", |
||||||
|
"scripts": { |
||||||
|
"dev": "node .", |
||||||
|
"cy:run": "cypress run", |
||||||
|
"test": "start-test dev 3000 cy:run" |
||||||
|
}, |
||||||
|
"husky": { |
||||||
|
"hooks": { |
||||||
|
"pre-push": "grep -Rvzq -e '.skip' -e '.only' cypress/integration && npm run test" |
||||||
|
} |
||||||
|
}, |
||||||
|
"author": "peter.babic", |
||||||
|
"license": "MIT", |
||||||
|
"devDependencies": { |
||||||
|
"cypress": "^6.0.1", |
||||||
|
"husky": "^4.3.0", |
||||||
|
"start-server-and-test": "^1.11.6" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
const http = require("http") |
||||||
|
|
||||||
|
const server = http.createServer((_, res) => { |
||||||
|
res.setHeader("Content-Type", "text/html") |
||||||
|
res.end() |
||||||
|
}) |
||||||
|
|
||||||
|
server.listen(3000) |
@ -0,0 +1,4 @@ |
|||||||
|
/node_modules/ |
||||||
|
/public/build/ |
||||||
|
|
||||||
|
.DS_Store |
@ -0,0 +1,23 @@ |
|||||||
|
# Using CSS selectors on Markdown in JS |
||||||
|
|
||||||
|
This is a source code repository for the blog post |
||||||
|
|
||||||
|
<https://peterbabic.dev/blog/using-css-selectors-on-markdown> |
||||||
|
|
||||||
|
## Setup |
||||||
|
|
||||||
|
```bash |
||||||
|
git clone https://git.peterbabic.dev/demo/arrays-svelte-localstorage.git |
||||||
|
cd arrays-svelte-localstorage |
||||||
|
npm install |
||||||
|
npm run start |
||||||
|
``` |
||||||
|
|
||||||
|
Now navigate to <http://localhost:5000/>. You should be able to persist |
||||||
|
data in the array after the refresh, as seen below. |
||||||
|
|
||||||
|
![Data in the array persist after refresh](./demo.gif) |
||||||
|
|
||||||
|
## License |
||||||
|
|
||||||
|
MIT |
After Width: | Height: | Size: 17 KiB |
@ -0,0 +1,799 @@ |
|||||||
|
{ |
||||||
|
"name": "svelte-app", |
||||||
|
"version": "1.0.0", |
||||||
|
"lockfileVersion": 1, |
||||||
|
"requires": true, |
||||||
|
"dependencies": { |
||||||
|
"@babel/code-frame": { |
||||||
|
"version": "7.12.11", |
||||||
|
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", |
||||||
|
"integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"@babel/highlight": "^7.10.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"@babel/helper-validator-identifier": { |
||||||
|
"version": "7.12.11", |
||||||
|
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", |
||||||
|
"integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"@babel/highlight": { |
||||||
|
"version": "7.10.4", |
||||||
|
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", |
||||||
|
"integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"@babel/helper-validator-identifier": "^7.10.4", |
||||||
|
"chalk": "^2.0.0", |
||||||
|
"js-tokens": "^4.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"@polka/url": { |
||||||
|
"version": "1.0.0-next.11", |
||||||
|
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.11.tgz", |
||||||
|
"integrity": "sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==" |
||||||
|
}, |
||||||
|
"@rollup/plugin-commonjs": { |
||||||
|
"version": "16.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz", |
||||||
|
"integrity": "sha512-LuNyypCP3msCGVQJ7ki8PqYdpjfEkE/xtFa5DqlF+7IBD0JsfMZ87C58heSwIMint58sAUZbt3ITqOmdQv/dXw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"@rollup/pluginutils": "^3.1.0", |
||||||
|
"commondir": "^1.0.1", |
||||||
|
"estree-walker": "^2.0.1", |
||||||
|
"glob": "^7.1.6", |
||||||
|
"is-reference": "^1.2.1", |
||||||
|
"magic-string": "^0.25.7", |
||||||
|
"resolve": "^1.17.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"@rollup/plugin-node-resolve": { |
||||||
|
"version": "10.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz", |
||||||
|
"integrity": "sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"@rollup/pluginutils": "^3.1.0", |
||||||
|
"@types/resolve": "1.17.1", |
||||||
|
"builtin-modules": "^3.1.0", |
||||||
|
"deepmerge": "^4.2.2", |
||||||
|
"is-module": "^1.0.0", |
||||||
|
"resolve": "^1.17.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"@rollup/pluginutils": { |
||||||
|
"version": "3.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", |
||||||
|
"integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"@types/estree": "0.0.39", |
||||||
|
"estree-walker": "^1.0.1", |
||||||
|
"picomatch": "^2.2.2" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"estree-walker": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", |
||||||
|
"integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", |
||||||
|
"dev": true |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"@types/estree": { |
||||||
|
"version": "0.0.39", |
||||||
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", |
||||||
|
"integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"@types/node": { |
||||||
|
"version": "14.14.20", |
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", |
||||||
|
"integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"@types/resolve": { |
||||||
|
"version": "1.17.1", |
||||||
|
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", |
||||||
|
"integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"@types/node": "*" |
||||||
|
} |
||||||
|
}, |
||||||
|
"ansi-styles": { |
||||||
|
"version": "3.2.1", |
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", |
||||||
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"color-convert": "^1.9.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"async-limiter": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", |
||||||
|
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"balanced-match": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", |
||||||
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"binary-extensions": { |
||||||
|
"version": "2.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", |
||||||
|
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"brace-expansion": { |
||||||
|
"version": "1.1.11", |
||||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", |
||||||
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"balanced-match": "^1.0.0", |
||||||
|
"concat-map": "0.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"buffer-from": { |
||||||
|
"version": "1.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", |
||||||
|
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"builtin-modules": { |
||||||
|
"version": "3.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", |
||||||
|
"integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"chalk": { |
||||||
|
"version": "2.4.2", |
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", |
||||||
|
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"ansi-styles": "^3.2.1", |
||||||
|
"escape-string-regexp": "^1.0.5", |
||||||
|
"supports-color": "^5.3.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"chokidar": { |
||||||
|
"version": "3.5.0", |
||||||
|
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.0.tgz", |
||||||
|
"integrity": "sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"anymatch": "~3.1.1", |
||||||
|
"braces": "~3.0.2", |
||||||
|
"fsevents": "~2.3.1", |
||||||
|
"glob-parent": "~5.1.0", |
||||||
|
"is-binary-path": "~2.1.0", |
||||||
|
"is-glob": "~4.0.1", |
||||||
|
"normalize-path": "~3.0.0", |
||||||
|
"readdirp": "~3.5.0" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"fsevents": { |
||||||
|
"version": "2.3.1", |
||||||
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", |
||||||
|
"integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", |
||||||
|
"dev": true, |
||||||
|
"optional": true |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"color-convert": { |
||||||
|
"version": "1.9.3", |
||||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", |
||||||
|
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"color-name": "1.1.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"color-name": { |
||||||
|
"version": "1.1.3", |
||||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", |
||||||
|
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"commander": { |
||||||
|
"version": "2.20.3", |
||||||
|
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", |
||||||
|
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"commondir": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", |
||||||
|
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"concat-map": { |
||||||
|
"version": "0.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |
||||||
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"console-clear": { |
||||||
|
"version": "1.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", |
||||||
|
"integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==" |
||||||
|
}, |
||||||
|
"deepmerge": { |
||||||
|
"version": "4.2.2", |
||||||
|
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", |
||||||
|
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"escape-string-regexp": { |
||||||
|
"version": "1.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", |
||||||
|
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"estree-walker": { |
||||||
|
"version": "2.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", |
||||||
|
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"fs.realpath": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", |
||||||
|
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"fsevents": { |
||||||
|
"version": "2.1.3", |
||||||
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", |
||||||
|
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", |
||||||
|
"dev": true, |
||||||
|
"optional": true |
||||||
|
}, |
||||||
|
"function-bind": { |
||||||
|
"version": "1.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", |
||||||
|
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"get-port": { |
||||||
|
"version": "3.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", |
||||||
|
"integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" |
||||||
|
}, |
||||||
|
"glob": { |
||||||
|
"version": "7.1.6", |
||||||
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", |
||||||
|
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"fs.realpath": "^1.0.0", |
||||||
|
"inflight": "^1.0.4", |
||||||
|
"inherits": "2", |
||||||
|
"minimatch": "^3.0.4", |
||||||
|
"once": "^1.3.0", |
||||||
|
"path-is-absolute": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"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": { |
||||||
|
"version": "1.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", |
||||||
|
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"function-bind": "^1.1.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"has-flag": { |
||||||
|
"version": "3.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", |
||||||
|
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"inflight": { |
||||||
|
"version": "1.0.6", |
||||||
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", |
||||||
|
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"once": "^1.3.0", |
||||||
|
"wrappy": "1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"inherits": { |
||||||
|
"version": "2.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", |
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", |
||||||
|
"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-core-module": { |
||||||
|
"version": "2.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", |
||||||
|
"integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"has": "^1.0.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"is-extglob": { |
||||||
|
"version": "2.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", |
||||||
|
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-glob": { |
||||||
|
"version": "4.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", |
||||||
|
"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"is-extglob": "^2.1.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"is-module": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", |
||||||
|
"integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"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 |
||||||
|
}, |
||||||
|
"is-reference": { |
||||||
|
"version": "1.2.1", |
||||||
|
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", |
||||||
|
"integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"@types/estree": "*" |
||||||
|
} |
||||||
|
}, |
||||||
|
"jest-worker": { |
||||||
|
"version": "26.6.2", |
||||||
|
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", |
||||||
|
"integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"@types/node": "*", |
||||||
|
"merge-stream": "^2.0.0", |
||||||
|
"supports-color": "^7.0.0" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"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 |
||||||
|
}, |
||||||
|
"supports-color": { |
||||||
|
"version": "7.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", |
||||||
|
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"has-flag": "^4.0.0" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"js-tokens": { |
||||||
|
"version": "4.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", |
||||||
|
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"kleur": { |
||||||
|
"version": "3.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", |
||||||
|
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" |
||||||
|
}, |
||||||
|
"livereload": { |
||||||
|
"version": "0.9.1", |
||||||
|
"resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz", |
||||||
|
"integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"chokidar": "^3.3.0", |
||||||
|
"livereload-js": "^3.1.0", |
||||||
|
"opts": ">= 1.2.0", |
||||||
|
"ws": "^6.2.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"livereload-js": { |
||||||
|
"version": "3.3.1", |
||||||
|
"resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.1.tgz", |
||||||
|
"integrity": "sha512-CBu1gTEfzVhlOK1WASKAAJ9Qx1fHECTq0SUB67sfxwQssopTyvzqTlgl+c0h9pZ6V+Fzd2rc510ppuNusg9teQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"local-access": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", |
||||||
|
"integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==" |
||||||
|
}, |
||||||
|
"magic-string": { |
||||||
|
"version": "0.25.7", |
||||||
|
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", |
||||||
|
"integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"sourcemap-codec": "^1.4.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"merge-stream": { |
||||||
|
"version": "2.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", |
||||||
|
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"mime": { |
||||||
|
"version": "2.4.7", |
||||||
|
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.7.tgz", |
||||||
|
"integrity": "sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA==" |
||||||
|
}, |
||||||
|
"minimatch": { |
||||||
|
"version": "3.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", |
||||||
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"brace-expansion": "^1.1.7" |
||||||
|
} |
||||||
|
}, |
||||||
|
"mri": { |
||||||
|
"version": "1.1.6", |
||||||
|
"resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", |
||||||
|
"integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==" |
||||||
|
}, |
||||||
|
"normalize-path": { |
||||||
|
"version": "3.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", |
||||||
|
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"once": { |
||||||
|
"version": "1.4.0", |
||||||
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", |
||||||
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"wrappy": "1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"opts": { |
||||||
|
"version": "2.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", |
||||||
|
"integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"path-is-absolute": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", |
||||||
|
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"path-parse": { |
||||||
|
"version": "1.0.6", |
||||||
|
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", |
||||||
|
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"picomatch": { |
||||||
|
"version": "2.2.2", |
||||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", |
||||||
|
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"randombytes": { |
||||||
|
"version": "2.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", |
||||||
|
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"safe-buffer": "^5.1.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"readdirp": { |
||||||
|
"version": "3.5.0", |
||||||
|
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", |
||||||
|
"integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"picomatch": "^2.2.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"require-relative": { |
||||||
|
"version": "0.8.7", |
||||||
|
"resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", |
||||||
|
"integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"resolve": { |
||||||
|
"version": "1.19.0", |
||||||
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", |
||||||
|
"integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"is-core-module": "^2.1.0", |
||||||
|
"path-parse": "^1.0.6" |
||||||
|
} |
||||||
|
}, |
||||||
|
"rollup": { |
||||||
|
"version": "2.36.1", |
||||||
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.36.1.tgz", |
||||||
|
"integrity": "sha512-eAfqho8dyzuVvrGqpR0ITgEdq0zG2QJeWYh+HeuTbpcaXk8vNFc48B7bJa1xYosTCKx0CuW+447oQOW8HgBIZQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"fsevents": "~2.1.2" |
||||||
|
} |
||||||
|
}, |
||||||
|
"rollup-plugin-css-only": { |
||||||
|
"version": "3.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/rollup-plugin-css-only/-/rollup-plugin-css-only-3.1.0.tgz", |
||||||
|
"integrity": "sha512-TYMOE5uoD76vpj+RTkQLzC9cQtbnJNktHPB507FzRWBVaofg7KhIqq1kGbcVOadARSozWF883Ho9KpSPKH8gqA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"@rollup/pluginutils": "4" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"@rollup/pluginutils": { |
||||||
|
"version": "4.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.0.tgz", |
||||||
|
"integrity": "sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"estree-walker": "^2.0.1", |
||||||
|
"picomatch": "^2.2.2" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"rollup-plugin-livereload": { |
||||||
|
"version": "2.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.0.tgz", |
||||||
|
"integrity": "sha512-oC/8NqumGYuphkqrfszOHUUIwzKsaHBICw6QRwT5uD07gvePTS+HW+GFwu6f9K8W02CUuTvtIM9AWJrbj4wE1A==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"livereload": "^0.9.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"rollup-plugin-svelte": { |
||||||
|
"version": "7.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-7.0.0.tgz", |
||||||
|
"integrity": "sha512-cw4yv/5v1NQV3nPbpOJtikgkB+9mfSJaqKUdq7x5fVQJnwLtcdc2JOszBs5pBY+SemTs5pmJbdEMseEavbUtjQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"require-relative": "^0.8.7", |
||||||
|
"rollup-pluginutils": "^2.8.2" |
||||||
|
} |
||||||
|
}, |
||||||
|
"rollup-plugin-terser": { |
||||||
|
"version": "7.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", |
||||||
|
"integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"@babel/code-frame": "^7.10.4", |
||||||
|
"jest-worker": "^26.2.1", |
||||||
|
"serialize-javascript": "^4.0.0", |
||||||
|
"terser": "^5.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"rollup-pluginutils": { |
||||||
|
"version": "2.8.2", |
||||||
|
"resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", |
||||||
|
"integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"estree-walker": "^0.6.1" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"estree-walker": { |
||||||
|
"version": "0.6.1", |
||||||
|
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", |
||||||
|
"integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", |
||||||
|
"dev": true |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"sade": { |
||||||
|
"version": "1.7.4", |
||||||
|
"resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", |
||||||
|
"integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", |
||||||
|
"requires": { |
||||||
|
"mri": "^1.1.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"safe-buffer": { |
||||||
|
"version": "5.2.1", |
||||||
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", |
||||||
|
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"semiver": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", |
||||||
|
"integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==" |
||||||
|
}, |
||||||
|
"serialize-javascript": { |
||||||
|
"version": "4.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", |
||||||
|
"integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"randombytes": "^2.1.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"sirv": { |
||||||
|
"version": "1.0.10", |
||||||
|
"resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.10.tgz", |
||||||
|
"integrity": "sha512-H5EZCoZaggEUQy8ocKsF7WAToGuZhjJlLvM3XOef46CbdIgbNeQ1p32N1PCuCjkVYwrAVOSMacN6CXXgIzuspg==", |
||||||
|
"requires": { |
||||||
|
"@polka/url": "^1.0.0-next.9", |
||||||
|
"mime": "^2.3.1", |
||||||
|
"totalist": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"sirv-cli": { |
||||||
|
"version": "1.0.10", |
||||||
|
"resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-1.0.10.tgz", |
||||||
|
"integrity": "sha512-8mLTRkvzpZXMyUZJ1whf84YHN/mm2r2+j5sU1ZYr5n2jA8VkFItNPk53oysOo+0QxBVp9aUjggkAsQp1d7L3OQ==", |
||||||
|
"requires": { |
||||||
|
"console-clear": "^1.1.0", |
||||||
|
"get-port": "^3.2.0", |
||||||
|
"kleur": "^3.0.0", |
||||||
|
"local-access": "^1.0.1", |
||||||
|
"sade": "^1.6.0", |
||||||
|
"semiver": "^1.0.0", |
||||||
|
"sirv": "^1.0.10", |
||||||
|
"tinydate": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"source-map": { |
||||||
|
"version": "0.7.3", |
||||||
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", |
||||||
|
"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"source-map-support": { |
||||||
|
"version": "0.5.19", |
||||||
|
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", |
||||||
|
"integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"buffer-from": "^1.0.0", |
||||||
|
"source-map": "^0.6.0" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"source-map": { |
||||||
|
"version": "0.6.1", |
||||||
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", |
||||||
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", |
||||||
|
"dev": true |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"sourcemap-codec": { |
||||||
|
"version": "1.4.8", |
||||||
|
"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", |
||||||
|
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"supports-color": { |
||||||
|
"version": "5.5.0", |
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", |
||||||
|
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"has-flag": "^3.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"svelte": { |
||||||
|
"version": "3.31.2", |
||||||
|
"resolved": "https://registry.npmjs.org/svelte/-/svelte-3.31.2.tgz", |
||||||
|
"integrity": "sha512-TxZGrXzX2ggFH3BIKY5fmbeMdJuZrMIMDYPMX6R9255bueuYIuVaBQSLUeY2oD7W4IdeqRZiAVGCjDw2POKBRA==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"terser": { |
||||||
|
"version": "5.5.1", |
||||||
|
"resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", |
||||||
|
"integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"commander": "^2.20.0", |
||||||
|
"source-map": "~0.7.2", |
||||||
|
"source-map-support": "~0.5.19" |
||||||
|
} |
||||||
|
}, |
||||||
|
"tinydate": { |
||||||
|
"version": "1.3.0", |
||||||
|
"resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", |
||||||
|
"integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==" |
||||||
|
}, |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"totalist": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", |
||||||
|
"integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" |
||||||
|
}, |
||||||
|
"wrappy": { |
||||||
|
"version": "1.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", |
||||||
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"ws": { |
||||||
|
"version": "6.2.1", |
||||||
|
"resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", |
||||||
|
"integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"async-limiter": "~1.0.0" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
{ |
||||||
|
"name": "svelte-app", |
||||||
|
"version": "1.0.0", |
||||||
|
"scripts": { |
||||||
|
"build": "rollup -c", |
||||||
|
"dev": "rollup -c -w", |
||||||
|
"start": "sirv public" |
||||||
|
}, |
||||||
|
"devDependencies": { |
||||||
|
"@rollup/plugin-commonjs": "^16.0.0", |
||||||
|
"@rollup/plugin-node-resolve": "^10.0.0", |
||||||
|
"rollup": "^2.3.4", |
||||||
|
"rollup-plugin-css-only": "^3.1.0", |
||||||
|
"rollup-plugin-livereload": "^2.0.0", |
||||||
|
"rollup-plugin-svelte": "^7.0.0", |
||||||
|
"rollup-plugin-terser": "^7.0.0", |
||||||
|
"svelte": "^3.0.0" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"sirv-cli": "^1.0.0" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,80 @@ |
|||||||
|
import svelte from "rollup-plugin-svelte" |
||||||
|
import commonjs from "@rollup/plugin-commonjs" |
||||||
|
import resolve from "@rollup/plugin-node-resolve" |
||||||
|
import livereload from "rollup-plugin-livereload" |
||||||
|
import { terser } from "rollup-plugin-terser" |
||||||
|
import css from "rollup-plugin-css-only" |
||||||
|
|
||||||
|
const production = !process.env.ROLLUP_WATCH |
||||||
|
|
||||||
|
function serve() { |
||||||
|
let server |
||||||
|
|
||||||
|
function toExit() { |
||||||
|
if (server) server.kill(0) |
||||||
|
} |
||||||
|
|
||||||
|
return { |
||||||
|
writeBundle() { |
||||||
|
if (server) return |
||||||
|
server = require("child_process").spawn( |
||||||
|
"npm", |
||||||
|
["run", "start", "--", "--dev"], |
||||||
|
{ |
||||||
|
stdio: ["ignore", "inherit", "inherit"], |
||||||
|
shell: true, |
||||||
|
} |
||||||
|
) |
||||||
|
|
||||||
|
process.on("SIGTERM", toExit) |
||||||
|
process.on("exit", toExit) |
||||||
|
}, |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
export default { |
||||||
|
input: "src/main.js", |
||||||
|
output: { |
||||||
|
sourcemap: true, |
||||||
|
format: "iife", |
||||||
|
name: "app", |
||||||
|
file: "public/build/bundle.js", |
||||||
|
}, |
||||||
|
plugins: [ |
||||||
|
svelte({ |
||||||
|
compilerOptions: { |
||||||
|
// enable run-time checks when not in production
|
||||||
|
dev: !production, |
||||||
|
}, |
||||||
|
}), |
||||||
|
// we'll extract any component CSS out into
|
||||||
|
// a separate file - better for performance
|
||||||
|
css({ output: "bundle.css" }), |
||||||
|
|
||||||
|
// If you have external dependencies installed from
|
||||||
|
// npm, you'll most likely need these plugins. In
|
||||||
|
// some cases you'll need additional configuration -
|
||||||
|
// consult the documentation for details:
|
||||||
|
// https://github.com/rollup/plugins/tree/master/packages/commonjs
|
||||||
|
resolve({ |
||||||
|
browser: true, |
||||||
|
dedupe: ["svelte"], |
||||||
|
}), |
||||||
|
commonjs(), |
||||||
|
|
||||||
|
// In dev mode, call `npm run start` once
|
||||||
|
// the bundle has been generated
|
||||||
|
!production && serve(), |
||||||
|
|
||||||
|
// Watch the `public` directory and refresh the
|
||||||
|
// browser on changes when not in production
|
||||||
|
!production && livereload("public"), |
||||||
|
|
||||||
|
// If we're building for production (npm run build
|
||||||
|
// instead of npm run dev), minify
|
||||||
|
production && terser(), |
||||||
|
], |
||||||
|
watch: { |
||||||
|
clearScreen: false, |
||||||
|
}, |
||||||
|
} |
@ -0,0 +1,130 @@ |
|||||||
|
// @ts-check
|
||||||
|
|
||||||
|
/** This script modifies the project to support TS code in .svelte files like: |
||||||
|
|
||||||
|
<script lang="ts"> |
||||||
|
export let name: string; |
||||||
|
</script> |
||||||
|
|
||||||
|
As well as validating the code for CI. |
||||||
|
*/ |
||||||
|
|
||||||
|
/** To work on this script: |
||||||
|
rm -rf test-template template && git clone sveltejs/template test-template && node scripts/setupTypeScript.js test-template |
||||||
|
*/ |
||||||
|
|
||||||
|
const fs = require("fs") |
||||||
|
const path = require("path") |
||||||
|
const { argv } = require("process") |
||||||
|
|
||||||
|
const projectRoot = argv[2] || path.join(__dirname, "..") |
||||||
|
|
||||||
|
// Add deps to pkg.json
|
||||||
|
const packageJSON = JSON.parse( |
||||||
|
fs.readFileSync(path.join(projectRoot, "package.json"), "utf8") |
||||||
|
) |
||||||
|
packageJSON.devDependencies = Object.assign(packageJSON.devDependencies, { |
||||||
|
"svelte-check": "^1.0.0", |
||||||
|
"svelte-preprocess": "^4.0.0", |
||||||
|
"@rollup/plugin-typescript": "^6.0.0", |
||||||
|
typescript: "^3.9.3", |
||||||
|
tslib: "^2.0.0", |
||||||
|
"@tsconfig/svelte": "^1.0.0", |
||||||
|
}) |
||||||
|
|
||||||
|
// Add script for checking
|
||||||
|
packageJSON.scripts = Object.assign(packageJSON.scripts, { |
||||||
|
validate: "svelte-check", |
||||||
|
}) |
||||||
|
|
||||||
|
// Write the package JSON
|
||||||
|
fs.writeFileSync( |
||||||
|
path.join(projectRoot, "package.json"), |
||||||
|
JSON.stringify(packageJSON, null, " ") |
||||||
|
) |
||||||
|
|
||||||
|
// mv src/main.js to main.ts - note, we need to edit rollup.config.js for this too
|
||||||
|
const beforeMainJSPath = path.join(projectRoot, "src", "main.js") |
||||||
|
const afterMainTSPath = path.join(projectRoot, "src", "main.ts") |
||||||
|
fs.renameSync(beforeMainJSPath, afterMainTSPath) |
||||||
|
|
||||||
|
// Switch the app.svelte file to use TS
|
||||||
|
const appSveltePath = path.join(projectRoot, "src", "App.svelte") |
||||||
|
let appFile = fs.readFileSync(appSveltePath, "utf8") |
||||||
|
appFile = appFile.replace("<script>", '<script lang="ts">') |
||||||
|
appFile = appFile.replace("export let name;", "export let name: string;") |
||||||
|
fs.writeFileSync(appSveltePath, appFile) |
||||||
|
|
||||||
|
// Edit rollup config
|
||||||
|
const rollupConfigPath = path.join(projectRoot, "rollup.config.js") |
||||||
|
let rollupConfig = fs.readFileSync(rollupConfigPath, "utf8") |
||||||
|
|
||||||
|
// Edit imports
|
||||||
|
rollupConfig = rollupConfig.replace( |
||||||
|
`'rollup-plugin-terser';`, |
||||||
|
`'rollup-plugin-terser';
|
||||||
|
import sveltePreprocess from 'svelte-preprocess'; |
||||||
|
import typescript from '@rollup/plugin-typescript';` |
||||||
|
) |
||||||
|
|
||||||
|
// Replace name of entry point
|
||||||
|
rollupConfig = rollupConfig.replace(`'src/main.js'`, `'src/main.ts'`) |
||||||
|
|
||||||
|
// Add preprocessor
|
||||||
|
rollupConfig = rollupConfig.replace( |
||||||
|
"compilerOptions:", |
||||||
|
"preprocess: sveltePreprocess(),\n\t\t\tcompilerOptions:" |
||||||
|
) |
||||||
|
|
||||||
|
// Add TypeScript
|
||||||
|
rollupConfig = rollupConfig.replace( |
||||||
|
"commonjs(),", |
||||||
|
"commonjs(),\n\t\ttypescript({\n\t\t\tsourceMap: !production,\n\t\t\tinlineSources: !production\n\t\t})," |
||||||
|
) |
||||||
|
fs.writeFileSync(rollupConfigPath, rollupConfig) |
||||||
|
|
||||||
|
// Add TSConfig
|
||||||
|
const tsconfig = `{
|
||||||
|
"extends": "@tsconfig/svelte/tsconfig.json", |
||||||
|
|
||||||
|
"include": ["src/**/*"], |
||||||
|
"exclude": ["node_modules/*", "__sapper__/*", "public/*"] |
||||||
|
}` |
||||||
|
const tsconfigPath = path.join(projectRoot, "tsconfig.json") |
||||||
|
fs.writeFileSync(tsconfigPath, tsconfig) |
||||||
|
|
||||||
|
// Delete this script, but not during testing
|
||||||
|
if (!argv[2]) { |
||||||
|
// Remove the script
|
||||||
|
fs.unlinkSync(path.join(__filename)) |
||||||
|
|
||||||
|
// Check for Mac's DS_store file, and if it's the only one left remove it
|
||||||
|
const remainingFiles = fs.readdirSync(path.join(__dirname)) |
||||||
|
if (remainingFiles.length === 1 && remainingFiles[0] === ".DS_store") { |
||||||
|
fs.unlinkSync(path.join(__dirname, ".DS_store")) |
||||||
|
} |
||||||
|
|
||||||
|
// Check if the scripts folder is empty
|
||||||
|
if (fs.readdirSync(path.join(__dirname)).length === 0) { |
||||||
|
// Remove the scripts folder
|
||||||
|
fs.rmdirSync(path.join(__dirname)) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// Adds the extension recommendation
|
||||||
|
fs.mkdirSync(path.join(projectRoot, ".vscode")) |
||||||
|
fs.writeFileSync( |
||||||
|
path.join(projectRoot, ".vscode", "extensions.json"), |
||||||
|
`{
|
||||||
|
"recommendations": ["svelte.svelte-vscode"] |
||||||
|
} |
||||||
|
` |
||||||
|
) |
||||||
|
|
||||||
|
console.log("Converted to TypeScript.") |
||||||
|
|
||||||
|
if (fs.existsSync(path.join(projectRoot, "node_modules"))) { |
||||||
|
console.log( |
||||||
|
"\nYou will need to re-run your dependency manager to get started." |
||||||
|
) |
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
<script> |
||||||
|
import {storedArray} from './store.js'; |
||||||
|
const update = () => storedArray.update(arr => [...arr, arr.length]) |
||||||
|
</script> |
||||||
|
|
||||||
|
<h1>Array: {$storedArray}</h1> |
||||||
|
|
||||||
|
<button on:click={update}> |
||||||
|
add |
||||||
|
</button> |
@ -0,0 +1,7 @@ |
|||||||
|
import App from "./App.svelte" |
||||||
|
|
||||||
|
var app = new App({ |
||||||
|
target: document.body, |
||||||
|
}) |
||||||
|
|
||||||
|
export default app |
@ -0,0 +1,10 @@ |
|||||||
|
import { writable } from "svelte/store" |
||||||
|
|
||||||
|
const itemName = "storedArray" |
||||||
|
const retrieved = localStorage.getItem(itemName) |
||||||
|
const parsed = JSON.parse(retrieved) |
||||||
|
export const storedArray = writable(parsed === null ? [] : parsed) |
||||||
|
|
||||||
|
storedArray.subscribe(value => |
||||||
|
localStorage.setItem(itemName, JSON.stringify(value)) |
||||||
|
) |
@ -0,0 +1,132 @@ |
|||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/node,linux |
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=node,linux |
||||||
|
|
||||||
|
### Linux ### |
||||||
|
*~ |
||||||
|
|
||||||
|
# temporary files which can be created if a process still has a handle open of a deleted file |
||||||
|
.fuse_hidden* |
||||||
|
|
||||||
|
# KDE directory preferences |
||||||
|
.directory |
||||||
|
|
||||||
|
# Linux trash folder which might appear on any partition or disk |
||||||
|
.Trash-* |
||||||
|
|
||||||
|
# .nfs files are created when an open file is removed but is still being accessed |
||||||
|
.nfs* |
||||||
|
|
||||||
|
### Node ### |
||||||
|
# Logs |
||||||
|
logs |
||||||
|
*.log |
||||||
|
npm-debug.log* |
||||||
|
yarn-debug.log* |
||||||
|
yarn-error.log* |
||||||
|
lerna-debug.log* |
||||||
|
|
||||||
|
# Diagnostic reports (https://nodejs.org/api/report.html) |
||||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json |
||||||
|
|
||||||
|
# Runtime data |
||||||
|
pids |
||||||
|
*.pid |
||||||
|
*.seed |
||||||
|
*.pid.lock |
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover |
||||||
|
lib-cov |
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul |
||||||
|
coverage |
||||||
|
*.lcov |
||||||
|
|
||||||
|
# nyc test coverage |
||||||
|
.nyc_output |
||||||
|
|
||||||
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) |
||||||
|
.grunt |
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/) |
||||||
|
bower_components |
||||||
|
|
||||||
|
# node-waf configuration |
||||||
|
.lock-wscript |
||||||
|
|
||||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html) |
||||||
|
build/Release |
||||||
|
|
||||||
|
# Dependency directories |
||||||
|
node_modules/ |
||||||
|
jspm_packages/ |
||||||
|
|
||||||
|
# TypeScript v1 declaration files |
||||||
|
typings/ |
||||||
|
|
||||||
|
# TypeScript cache |
||||||
|
*.tsbuildinfo |
||||||
|
|
||||||
|
# Optional npm cache directory |
||||||
|
.npm |
||||||
|
|
||||||
|
# Optional eslint cache |
||||||
|
.eslintcache |
||||||
|
|
||||||
|
# Microbundle cache |
||||||
|
.rpt2_cache/ |
||||||
|
.rts2_cache_cjs/ |
||||||
|
.rts2_cache_es/ |
||||||
|
.rts2_cache_umd/ |
||||||
|
|
||||||
|
# Optional REPL history |
||||||
|
.node_repl_history |
||||||
|
|
||||||
|
# Output of 'npm pack' |
||||||
|
*.tgz |
||||||
|
|
||||||
|
# Yarn Integrity file |
||||||
|
.yarn-integrity |
||||||
|
|
||||||
|
# dotenv environment variables file |
||||||
|
.env |
||||||
|
.env.test |
||||||
|
.env*.local |
||||||
|
|
||||||
|
# parcel-bundler cache (https://parceljs.org/) |
||||||
|
.cache |
||||||
|
.parcel-cache |
||||||
|
|
||||||
|
# Next.js build output |
||||||
|
.next |
||||||
|
|
||||||
|
# Nuxt.js build / generate output |
||||||
|
.nuxt |
||||||
|
dist |
||||||
|
|
||||||
|
# Gatsby files |
||||||
|
.cache/ |
||||||
|
# Comment in the public line in if your project uses Gatsby and not Next.js |
||||||
|
# https://nextjs.org/blog/next-9-1#public-directory-support |
||||||
|
# public |
||||||
|
|
||||||
|
# vuepress build output |
||||||
|
.vuepress/dist |
||||||
|
|
||||||
|
# Serverless directories |
||||||
|
.serverless/ |
||||||
|
|
||||||
|
# FuseBox cache |
||||||
|
.fusebox/ |
||||||
|
|
||||||
|
# DynamoDB Local files |
||||||
|
.dynamodb/ |
||||||
|
|
||||||
|
# TernJS port file |
||||||
|
.tern-port |
||||||
|
|
||||||
|
# Stores VSCode versions used for testing VSCode extensions |
||||||
|
.vscode-test |
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/node,linux |
||||||
|
|
@ -0,0 +1,94 @@ |
|||||||
|
# Using CSS selectors on Markdown in JS |
||||||
|
|
||||||
|
This is a source code repository for the blog post |
||||||
|
|
||||||
|
<https://peterbabic.dev/blog/using-css-selectors-on-markdown> |
||||||
|
|
||||||
|
## Setup |
||||||
|
|
||||||
|
```bash |
||||||
|
git clone https://git.peterbabic.dev/demo/css-selectors-markdown.git |
||||||
|
cd css-selectors-markdown |
||||||
|
npm install |
||||||
|
node . |
||||||
|
``` |
||||||
|
|
||||||
|
This should produce the JSON ouput containing all the level 2 headings |
||||||
|
(`##`) from the [post.md](post.md) |
||||||
|
|
||||||
|
```json |
||||||
|
[ |
||||||
|
{ |
||||||
|
"type": "heading", |
||||||
|
"depth": 2, |
||||||
|
"children": [ |
||||||
|
{ |
||||||
|
"type": "text", |
||||||
|
"value": "Second level heading A", |
||||||
|
"position": { |
||||||
|
"start": { |
||||||
|
"line": 5, |
||||||
|
"column": 4, |
||||||
|
"offset": 48 |
||||||
|
}, |
||||||
|
"end": { |
||||||
|
"line": 5, |
||||||
|
"column": 26, |
||||||
|
"offset": 70 |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
], |
||||||
|
"position": { |
||||||
|
"start": { |
||||||
|
"line": 5, |
||||||
|
"column": 1, |
||||||
|
"offset": 45 |
||||||
|
}, |
||||||
|
"end": { |
||||||
|
"line": 5, |
||||||
|
"column": 26, |
||||||
|
"offset": 70 |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "heading", |
||||||
|
"depth": 2, |
||||||
|
"children": [ |
||||||
|
{ |
||||||
|
"type": "text", |
||||||
|
"value": "Second level heading B", |
||||||
|
"position": { |
||||||
|
"start": { |
||||||
|
"line": 9, |
||||||
|
"column": 4, |
||||||
|
"offset": 86 |
||||||
|
}, |
||||||
|
"end": { |
||||||
|
"line": 9, |
||||||
|
"column": 26, |
||||||
|
"offset": 108 |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
], |
||||||
|
"position": { |
||||||
|
"start": { |
||||||
|
"line": 9, |
||||||
|
"column": 1, |
||||||
|
"offset": 83 |
||||||
|
}, |
||||||
|
"end": { |
||||||
|
"line": 9, |
||||||
|
"column": 26, |
||||||
|
"offset": 108 |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
] |
||||||
|
``` |
||||||
|
|
||||||
|
## License |
||||||
|
|
||||||
|
MIT |
@ -0,0 +1,18 @@ |
|||||||
|
import fs from "fs" |
||||||
|
import markdown from "remark-parse" |
||||||
|
import stringify from "remark-stringify" |
||||||
|
import unified from "unified" |
||||||
|
import util from "unist-util-select" |
||||||
|
const { selectAll } = util |
||||||
|
|
||||||
|
let mdast |
||||||
|
unified() |
||||||
|
.use(markdown) |
||||||
|
.use(() => tree => (mdast = tree)) |
||||||
|
.use(stringify) |
||||||
|
.process(fs.readFileSync("post.md")) |
||||||
|
|
||||||
|
const headingsNodes = selectAll("heading[depth=2]", mdast) |
||||||
|
const json = JSON.stringify(headingsNodes, null, 2) |
||||||
|
|
||||||
|
console.log(json) |
@ -0,0 +1,332 @@ |
|||||||
|
{ |
||||||
|
"name": "css-selectors-markdown", |
||||||
|
"version": "0.0.1", |
||||||
|
"lockfileVersion": 1, |
||||||
|
"requires": true, |
||||||
|
"dependencies": { |
||||||
|
"@types/mdast": { |
||||||
|
"version": "3.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", |
||||||
|
"integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", |
||||||
|
"requires": { |
||||||
|
"@types/unist": "*" |
||||||
|
} |
||||||
|
}, |
||||||
|
"@types/unist": { |
||||||
|
"version": "2.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", |
||||||
|
"integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==" |
||||||
|
}, |
||||||
|
"bail": { |
||||||
|
"version": "1.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", |
||||||
|
"integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" |
||||||
|
}, |
||||||
|
"boolbase": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", |
||||||
|
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" |
||||||
|
}, |
||||||
|
"character-entities": { |
||||||
|
"version": "1.2.4", |
||||||
|
"resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", |
||||||
|
"integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" |
||||||
|
}, |
||||||
|
"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==" |
||||||
|
}, |
||||||
|
"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==" |
||||||
|
}, |
||||||
|
"css-selector-parser": { |
||||||
|
"version": "1.4.1", |
||||||
|
"resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", |
||||||
|
"integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" |
||||||
|
}, |
||||||
|
"debug": { |
||||||
|
"version": "4.3.1", |
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", |
||||||
|
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", |
||||||
|
"requires": { |
||||||
|
"ms": "2.1.2" |
||||||
|
} |
||||||
|
}, |
||||||
|
"extend": { |
||||||
|
"version": "3.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", |
||||||
|
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" |
||||||
|
}, |
||||||
|
"is-alphabetical": { |
||||||
|
"version": "1.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", |
||||||
|
"integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" |
||||||
|
}, |
||||||
|
"is-alphanumerical": { |
||||||
|
"version": "1.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", |
||||||
|
"integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", |
||||||
|
"requires": { |
||||||
|
"is-alphabetical": "^1.0.0", |
||||||
|
"is-decimal": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"is-buffer": { |
||||||
|
"version": "2.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", |
||||||
|
"integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" |
||||||
|
}, |
||||||
|
"is-decimal": { |
||||||
|
"version": "1.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", |
||||||
|
"integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" |
||||||
|
}, |
||||||
|
"is-hexadecimal": { |
||||||
|
"version": "1.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", |
||||||
|
"integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" |
||||||
|
}, |
||||||
|
"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==" |
||||||
|
}, |
||||||
|
"longest-streak": { |
||||||
|
"version": "2.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", |
||||||
|
"integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==" |
||||||
|
}, |
||||||
|
"mdast-util-definitions": { |
||||||
|
"version": "4.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", |
||||||
|
"integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", |
||||||
|
"requires": { |
||||||
|
"unist-util-visit": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"mdast-util-from-markdown": { |
||||||
|
"version": "0.8.4", |
||||||
|
"resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.4.tgz", |
||||||
|
"integrity": "sha512-jj891B5pV2r63n2kBTFh8cRI2uR9LQHsXG1zSDqfhXkIlDzrTcIlbB5+5aaYEkl8vOPIOPLf8VT7Ere1wWTMdw==", |
||||||
|
"requires": { |
||||||
|
"@types/mdast": "^3.0.0", |
||||||
|
"mdast-util-to-string": "^2.0.0", |
||||||
|
"micromark": "~2.11.0", |
||||||
|
"parse-entities": "^2.0.0", |
||||||
|
"unist-util-stringify-position": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"mdast-util-to-hast": { |
||||||
|
"version": "10.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.1.0.tgz", |
||||||
|
"integrity": "sha512-oOsIICebvylk3IiZDVUCJG4CesMvAWp3LcbnmVZdoCZI8svvxzXQHm1jgIZeQC3F0K2HnLC6ACgOEYDWY+qHPg==", |
||||||
|
"requires": { |
||||||
|
"@types/mdast": "^3.0.0", |
||||||
|
"@types/unist": "^2.0.0", |
||||||
|
"mdast-util-definitions": "^4.0.0", |
||||||
|
"mdurl": "^1.0.0", |
||||||
|
"unist-builder": "^2.0.0", |
||||||
|
"unist-util-generated": "^1.0.0", |
||||||
|
"unist-util-position": "^3.0.0", |
||||||
|
"unist-util-visit": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"mdast-util-to-markdown": { |
||||||
|
"version": "0.6.1", |
||||||
|
"resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.1.tgz", |
||||||
|
"integrity": "sha512-4qJtZ0qdyYeexAXoOZiU0uHIFVncJAmCkHkSluAsvDaVWODtPyNEo9I1ns0T4ulxu2EHRH5u/bt1cV0pdHCX+A==", |
||||||
|
"requires": { |
||||||
|
"@types/unist": "^2.0.0", |
||||||
|
"longest-streak": "^2.0.0", |
||||||
|
"mdast-util-to-string": "^2.0.0", |
||||||
|
"parse-entities": "^2.0.0", |
||||||
|
"repeat-string": "^1.0.0", |
||||||
|
"zwitch": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"mdast-util-to-string": { |
||||||
|
"version": "2.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", |
||||||
|
"integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" |
||||||
|
}, |
||||||
|
"mdurl": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", |
||||||
|
"integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" |
||||||
|
}, |
||||||
|
"micromark": { |
||||||
|
"version": "2.11.2", |
||||||
|
"resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.2.tgz", |
||||||
|
"integrity": "sha512-IXuP76p2uj8uMg4FQc1cRE7lPCLsfAXuEfdjtdO55VRiFO1asrCSQ5g43NmPqFtRwzEnEhafRVzn2jg0UiKArQ==", |
||||||
|
"requires": { |
||||||
|
"debug": "^4.0.0", |
||||||
|
"parse-entities": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"ms": { |
||||||
|
"version": "2.1.2", |
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", |
||||||
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" |
||||||
|
}, |
||||||
|
"not": { |
||||||
|
"version": "0.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", |
||||||
|
"integrity": "sha1-yWkcF0bFXc++VMvYvU/wQbwrUZ0=" |
||||||
|
}, |
||||||
|
"nth-check": { |
||||||
|
"version": "2.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", |
||||||
|
"integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", |
||||||
|
"requires": { |
||||||
|
"boolbase": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"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==", |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"remark-parse": { |
||||||
|
"version": "9.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", |
||||||
|
"integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", |
||||||
|
"requires": { |
||||||
|
"mdast-util-from-markdown": "^0.8.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"remark-rehype": { |
||||||
|
"version": "8.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-8.0.0.tgz", |
||||||
|
"integrity": "sha512-gVvOH02TMFqXOWoL6iXU7NXMsDJguNkNuMrzfkQeA4V6WCyHQnOKptn+IQBVVPuIH2sMJBwo8hlrmtn1MLTh9w==", |
||||||
|
"requires": { |
||||||
|
"mdast-util-to-hast": "^10.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"remark-stringify": { |
||||||
|
"version": "9.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", |
||||||
|
"integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", |
||||||
|
"requires": { |
||||||
|
"mdast-util-to-markdown": "^0.6.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"repeat-string": { |
||||||
|
"version": "1.6.1", |
||||||
|
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", |
||||||
|
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" |
||||||
|
}, |
||||||
|
"trough": { |
||||||
|
"version": "1.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", |
||||||
|
"integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" |
||||||
|
}, |
||||||
|
"unified": { |
||||||
|
"version": "9.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", |
||||||
|
"integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", |
||||||
|
"requires": { |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"unist-builder": { |
||||||
|
"version": "2.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", |
||||||
|
"integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" |
||||||
|
}, |
||||||
|
"unist-util-generated": { |
||||||
|
"version": "1.1.6", |
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", |
||||||
|
"integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" |
||||||
|
}, |
||||||
|
"unist-util-is": { |
||||||
|
"version": "4.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.4.tgz", |
||||||
|
"integrity": "sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA==" |
||||||
|
}, |
||||||
|
"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-select": { |
||||||
|
"version": "3.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-3.0.4.tgz", |
||||||
|
"integrity": "sha512-xf1zCu4okgPqGLdhCDpRnjwBNyv3EqjiXRUbz2SdK1+qnLMB7uXXajfzuBvvbHoQ+JLyp4AEbFCGndmc6S72sw==", |
||||||
|
"requires": { |
||||||
|
"css-selector-parser": "^1.0.0", |
||||||
|
"not": "^0.1.0", |
||||||
|
"nth-check": "^2.0.0", |
||||||
|
"unist-util-is": "^4.0.0", |
||||||
|
"zwitch": "^1.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.3", |
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", |
||||||
|
"integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", |
||||||
|
"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.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", |
||||||
|
"integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", |
||||||
|
"requires": { |
||||||
|
"@types/unist": "^2.0.0", |
||||||
|
"unist-util-is": "^4.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"vfile": { |
||||||
|
"version": "4.2.1", |
||||||
|
"resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", |
||||||
|
"integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", |
||||||
|
"requires": { |
||||||
|
"@types/unist": "^2.0.0", |
||||||
|
"is-buffer": "^2.0.0", |
||||||
|
"unist-util-stringify-position": "^2.0.0", |
||||||
|
"vfile-message": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"vfile-message": { |
||||||
|
"version": "2.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", |
||||||
|
"integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", |
||||||
|
"requires": { |
||||||
|
"@types/unist": "^2.0.0", |
||||||
|
"unist-util-stringify-position": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"zwitch": { |
||||||
|
"version": "1.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", |
||||||
|
"integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,19 @@ |
|||||||
|
{ |
||||||
|
"name": "css-selectors-markdown", |
||||||
|
"version": "0.0.1", |
||||||
|
"description": "", |
||||||
|
"main": "index.js", |
||||||
|
"scripts": { |
||||||
|
"test": "echo \"Error: no test specified\" && exit 1" |
||||||
|
}, |
||||||
|
"author": "Peter Babič <peter@peterbabic.dev> (https://peterbabic.dev/)", |
||||||
|
"license": "MIT", |
||||||
|
"dependencies": { |
||||||
|
"remark-parse": "^9.0.0", |
||||||
|
"remark-rehype": "^8.0.0", |
||||||
|
"remark-stringify": "^9.0.1", |
||||||
|
"unified": "^9.2.0", |
||||||
|
"unist-util-select": "^3.0.4" |
||||||
|
}, |
||||||
|
"type": "module" |
||||||
|
} |
@ -0,0 +1,9 @@ |
|||||||
|
[//]: # "This is a comment" |
||||||
|
|
||||||
|
# Main heading |
||||||
|
|
||||||
|
## Second level heading A |
||||||
|
|
||||||
|
Paragraph |
||||||
|
|
||||||
|
## Second level heading B |
@ -0,0 +1,132 @@ |
|||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/node,linux |
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=node,linux |
||||||
|
|
||||||
|
### Linux ### |
||||||
|
*~ |
||||||
|
|
||||||
|
# temporary files which can be created if a process still has a handle open of a deleted file |
||||||
|
.fuse_hidden* |
||||||
|
|
||||||
|
# KDE directory preferences |
||||||
|
.directory |
||||||
|
|
||||||
|
# Linux trash folder which might appear on any partition or disk |
||||||
|
.Trash-* |
||||||
|
|
||||||
|
# .nfs files are created when an open file is removed but is still being accessed |
||||||
|
.nfs* |
||||||
|
|
||||||
|
### Node ### |
||||||
|
# Logs |
||||||
|
logs |
||||||
|
*.log |
||||||
|
npm-debug.log* |
||||||
|
yarn-debug.log* |
||||||
|
yarn-error.log* |
||||||
|
lerna-debug.log* |
||||||
|
|
||||||
|
# Diagnostic reports (https://nodejs.org/api/report.html) |
||||||
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json |
||||||
|
|
||||||
|
# Runtime data |
||||||
|
pids |
||||||
|
*.pid |
||||||
|
*.seed |
||||||
|
*.pid.lock |
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover |
||||||
|
lib-cov |
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul |
||||||
|
coverage |
||||||
|
*.lcov |
||||||
|
|
||||||
|
# nyc test coverage |
||||||
|
.nyc_output |
||||||
|
|
||||||
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) |
||||||
|
.grunt |
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/) |
||||||
|
bower_components |
||||||
|
|
||||||
|
# node-waf configuration |
||||||
|
.lock-wscript |
||||||
|
|
||||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html) |
||||||
|
build/Release |
||||||
|
|
||||||
|
# Dependency directories |
||||||
|
node_modules/ |
||||||
|
jspm_packages/ |
||||||
|
|
||||||
|
# TypeScript v1 declaration files |
||||||
|
typings/ |
||||||
|
|
||||||
|
# TypeScript cache |
||||||
|
*.tsbuildinfo |
||||||
|
|
||||||
|
# Optional npm cache directory |
||||||
|
.npm |
||||||
|
|
||||||
|
# Optional eslint cache |
||||||
|
.eslintcache |
||||||
|
|
||||||
|
# Microbundle cache |
||||||
|
.rpt2_cache/ |
||||||
|
.rts2_cache_cjs/ |
||||||
|
.rts2_cache_es/ |
||||||
|
.rts2_cache_umd/ |
||||||
|
|
||||||
|
# Optional REPL history |
||||||
|
.node_repl_history |
||||||
|
|
||||||
|
# Output of 'npm pack' |
||||||
|
*.tgz |
||||||
|
|
||||||
|
# Yarn Integrity file |
||||||
|
.yarn-integrity |
||||||
|
|
||||||
|
# dotenv environment variables file |
||||||
|
.env |
||||||
|
.env.test |
||||||
|
.env*.local |
||||||
|
|
||||||
|
# parcel-bundler cache (https://parceljs.org/) |
||||||
|
.cache |
||||||
|
.parcel-cache |
||||||
|
|
||||||
|
# Next.js build output |
||||||
|
.next |
||||||
|
|
||||||
|
# Nuxt.js build / generate output |
||||||
|
.nuxt |
||||||
|
dist |
||||||
|
|
||||||
|
# Gatsby files |
||||||
|
.cache/ |
||||||
|
# Comment in the public line in if your project uses Gatsby and not Next.js |
||||||
|
# https://nextjs.org/blog/next-9-1#public-directory-support |
||||||
|
# public |
||||||
|
|
||||||
|
# vuepress build output |
||||||
|
.vuepress/dist |
||||||
|
|
||||||
|
# Serverless directories |
||||||
|
.serverless/ |
||||||
|
|
||||||
|
# FuseBox cache |
||||||
|
.fusebox/ |
||||||
|
|
||||||
|
# DynamoDB Local files |
||||||
|
.dynamodb/ |
||||||
|
|
||||||
|
# TernJS port file |
||||||
|
.tern-port |
||||||
|
|
||||||
|
# Stores VSCode versions used for testing VSCode extensions |
||||||
|
.vscode-test |
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/node,linux |
||||||
|
|
@ -0,0 +1,29 @@ |
|||||||
|
# YAML metadata in Markdown |
||||||
|
|
||||||
|
This is a source code repository for the blog post |
||||||
|
|
||||||
|
<https://peterbabic.dev/blog/yaml-metadata-in-markdown> |
||||||
|
|
||||||
|
## Setup |
||||||
|
|
||||||
|
```bash |
||||||
|
git clone https://git.peterbabic.dev/demo/yaml-metadata-in-markdown.git |
||||||
|
cd yaml-metadata-in-markdown |
||||||
|
npm install |
||||||
|
node . |
||||||
|
``` |
||||||
|
|
||||||
|
This should produce the JSON ouput containing parsed Front Matter in a form |
||||||
|
of YAML from the [example.md](example.md) |
||||||
|
|
||||||
|
```json |
||||||
|
{ |
||||||
|
"Title": "Post about the Front Matter", |
||||||
|
"Category": "programming", |
||||||
|
"Tags": ["markdown", "yaml", "metadata"] |
||||||
|
} |
||||||
|
``` |
||||||
|
|
||||||
|
## License |
||||||
|
|
||||||
|
MIT |
@ -0,0 +1,7 @@ |
|||||||
|
--- |
||||||
|
Title: "Post about the Front Matter" |
||||||
|
Category: "programming" |
||||||
|
Tags: ["markdown", "yaml", "metadata"] |
||||||
|
--- |
||||||
|
|
||||||
|
# Other markdown |
@ -0,0 +1,23 @@ |
|||||||
|
const fs = require("fs") |
||||||
|
const yaml = require("js-yaml") |
||||||
|
const unified = require("unified") |
||||||
|
const parse = require("remark-parse") |
||||||
|
const stringify = require("remark-stringify") |
||||||
|
const frontmatter = require("remark-frontmatter") |
||||||
|
const select = require("unist-util-select").select |
||||||
|
|
||||||
|
let tree |
||||||
|
|
||||||
|
unified() |
||||||
|
.use(parse) |
||||||
|
.use(stringify) |
||||||
|
.use(frontmatter, ["yaml"]) |
||||||
|
.use(() => t => (tree = t)) |
||||||
|
.process(fs.readFileSync("example.md")) |
||||||
|
|
||||||
|
const yamlNode = select("yaml", tree) |
||||||
|
const parsedYaml = yaml.safeLoad(yamlNode.value) |
||||||
|
|
||||||
|
console.log(parsedYaml) |
||||||
|
|
||||||
|
module.exports = parsedYaml |
@ -0,0 +1,989 @@ |
|||||||
|
{ |
||||||
|
"name": "yaml-metadata-in-markdown", |
||||||
|
"version": "0.0.1", |
||||||
|
"lockfileVersion": 1, |
||||||
|
"requires": true, |
||||||
|
"dependencies": { |
||||||
|
"@types/mdast": { |
||||||
|
"version": "3.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", |
||||||
|
"integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", |
||||||
|
"requires": { |
||||||
|
"@types/unist": "*" |
||||||
|
} |
||||||
|
}, |
||||||
|
"@types/unist": { |
||||||
|
"version": "2.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", |
||||||
|
"integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==" |
||||||
|
}, |
||||||
|
"argparse": { |
||||||
|
"version": "1.0.10", |
||||||
|
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", |
||||||
|
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", |
||||||
|
"requires": { |
||||||
|
"sprintf-js": "~1.0.2" |
||||||
|
} |
||||||
|
}, |
||||||
|
"array-filter": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", |
||||||
|
"integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"available-typed-arrays": { |
||||||
|
"version": "1.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", |
||||||
|
"integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"array-filter": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"bail": { |
||||||
|
"version": "1.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", |
||||||
|
"integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" |
||||||
|
}, |
||||||
|
"balanced-match": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", |
||||||
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"boolbase": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", |
||||||
|
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" |
||||||
|
}, |
||||||
|
"brace-expansion": { |
||||||
|
"version": "1.1.11", |
||||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", |
||||||
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"balanced-match": "^1.0.0", |
||||||
|
"concat-map": "0.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"call-bind": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", |
||||||
|
"integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"function-bind": "^1.1.1", |
||||||
|
"get-intrinsic": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"character-entities": { |
||||||
|
"version": "1.2.4", |
||||||
|
"resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", |
||||||
|
"integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" |
||||||
|
}, |
||||||
|
"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==" |
||||||
|
}, |
||||||
|
"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==" |
||||||
|
}, |
||||||
|
"concat-map": { |
||||||
|
"version": "0.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |
||||||
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"css-selector-parser": { |
||||||
|
"version": "1.4.1", |
||||||
|
"resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", |
||||||
|
"integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" |
||||||
|
}, |
||||||
|
"debug": { |
||||||
|
"version": "4.3.1", |
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", |
||||||
|
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", |
||||||
|
"requires": { |
||||||
|
"ms": "2.1.2" |
||||||
|
} |
||||||
|
}, |
||||||
|
"deep-equal": { |
||||||
|
"version": "2.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", |
||||||
|
"integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"call-bind": "^1.0.0", |
||||||
|
"es-get-iterator": "^1.1.1", |
||||||
|
"get-intrinsic": "^1.0.1", |
||||||
|
"is-arguments": "^1.0.4", |
||||||
|
"is-date-object": "^1.0.2", |
||||||
|
"is-regex": "^1.1.1", |
||||||
|
"isarray": "^2.0.5", |
||||||
|
"object-is": "^1.1.4", |
||||||
|
"object-keys": "^1.1.1", |
||||||
|
"object.assign": "^4.1.2", |
||||||
|
"regexp.prototype.flags": "^1.3.0", |
||||||
|
"side-channel": "^1.0.3", |
||||||
|
"which-boxed-primitive": "^1.0.1", |
||||||
|
"which-collection": "^1.0.1", |
||||||
|
"which-typed-array": "^1.1.2" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"isarray": { |
||||||
|
"version": "2.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", |
||||||
|
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", |
||||||
|
"dev": true |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"define-properties": { |
||||||
|
"version": "1.1.3", |
||||||
|
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", |
||||||
|
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"object-keys": "^1.0.12" |
||||||
|
} |
||||||
|
}, |
||||||
|
"defined": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", |
||||||
|
"integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"dotignore": { |
||||||
|
"version": "0.1.2", |
||||||
|
"resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", |
||||||
|
"integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"minimatch": "^3.0.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"es-abstract": { |
||||||
|
"version": "1.17.7", |
||||||
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", |
||||||
|
"integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"es-to-primitive": "^1.2.1", |
||||||
|
"function-bind": "^1.1.1", |
||||||
|
"has": "^1.0.3", |
||||||
|
"has-symbols": "^1.0.1", |
||||||
|
"is-callable": "^1.2.2", |
||||||
|
"is-regex": "^1.1.1", |
||||||
|
"object-inspect": "^1.8.0", |
||||||
|
"object-keys": "^1.1.1", |
||||||
|
"object.assign": "^4.1.1", |
||||||
|
"string.prototype.trimend": "^1.0.1", |
||||||
|
"string.prototype.trimstart": "^1.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"es-get-iterator": { |
||||||
|
"version": "1.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.1.tgz", |
||||||
|
"integrity": "sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"call-bind": "^1.0.0", |
||||||
|
"get-intrinsic": "^1.0.1", |
||||||
|
"has-symbols": "^1.0.1", |
||||||
|
"is-arguments": "^1.0.4", |
||||||
|
"is-map": "^2.0.1", |
||||||
|
"is-set": "^2.0.1", |
||||||
|
"is-string": "^1.0.5", |
||||||
|
"isarray": "^2.0.5" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"isarray": { |
||||||
|
"version": "2.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", |
||||||
|
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", |
||||||
|
"dev": true |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"es-to-primitive": { |
||||||
|
"version": "1.2.1", |
||||||
|
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", |
||||||
|
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"is-callable": "^1.1.4", |
||||||
|
"is-date-object": "^1.0.1", |
||||||
|
"is-symbol": "^1.0.2" |
||||||
|
} |
||||||
|
}, |
||||||
|
"esprima": { |
||||||
|
"version": "4.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", |
||||||
|
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" |
||||||
|
}, |
||||||
|
"extend": { |
||||||
|
"version": "3.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", |
||||||
|
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" |
||||||
|
}, |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"for-each": { |
||||||
|
"version": "0.3.3", |
||||||
|
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", |
||||||
|
"integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"is-callable": "^1.1.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"foreach": { |
||||||
|
"version": "2.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", |
||||||
|
"integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"format": { |
||||||
|
"version": "0.2.2", |
||||||
|
"resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", |
||||||
|
"integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=" |
||||||
|
}, |
||||||
|
"fs.realpath": { |
||||||
|
"version": "1.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", |
||||||
|
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"function-bind": { |
||||||
|
"version": "1.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", |
||||||
|
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"get-intrinsic": { |
||||||
|
"version": "1.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", |
||||||
|
"integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"function-bind": "^1.1.1", |
||||||
|
"has": "^1.0.3", |
||||||
|
"has-symbols": "^1.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"glob": { |
||||||
|
"version": "7.1.6", |
||||||
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", |
||||||
|
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"fs.realpath": "^1.0.0", |
||||||
|
"inflight": "^1.0.4", |
||||||
|
"inherits": "2", |
||||||
|
"minimatch": "^3.0.4", |
||||||
|
"once": "^1.3.0", |
||||||
|
"path-is-absolute": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"has": { |
||||||
|
"version": "1.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", |
||||||
|
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"function-bind": "^1.1.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"has-symbols": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", |
||||||
|
"integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"inflight": { |
||||||
|
"version": "1.0.6", |
||||||
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", |
||||||
|
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"once": "^1.3.0", |
||||||
|
"wrappy": "1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"inherits": { |
||||||
|
"version": "2.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", |
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-alphabetical": { |
||||||
|
"version": "1.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", |
||||||
|
"integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" |
||||||
|
}, |
||||||
|
"is-alphanumerical": { |
||||||
|
"version": "1.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", |
||||||
|
"integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", |
||||||
|
"requires": { |
||||||
|
"is-alphabetical": "^1.0.0", |
||||||
|
"is-decimal": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"is-arguments": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", |
||||||
|
"integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"call-bind": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"is-bigint": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", |
||||||
|
"integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-boolean-object": { |
||||||
|
"version": "1.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", |
||||||
|
"integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"call-bind": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"is-buffer": { |
||||||
|
"version": "2.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", |
||||||
|
"integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" |
||||||
|
}, |
||||||
|
"is-callable": { |
||||||
|
"version": "1.2.2", |
||||||
|
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", |
||||||
|
"integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-core-module": { |
||||||
|
"version": "2.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", |
||||||
|
"integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"has": "^1.0.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"is-date-object": { |
||||||
|
"version": "1.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", |
||||||
|
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-decimal": { |
||||||
|
"version": "1.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", |
||||||
|
"integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" |
||||||
|
}, |
||||||
|
"is-hexadecimal": { |
||||||
|
"version": "1.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", |
||||||
|
"integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" |
||||||
|
}, |
||||||
|
"is-map": { |
||||||
|
"version": "2.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", |
||||||
|
"integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-negative-zero": { |
||||||
|
"version": "2.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", |
||||||
|
"integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-number-object": { |
||||||
|
"version": "1.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", |
||||||
|
"integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", |
||||||
|
"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==" |
||||||
|
}, |
||||||
|
"is-regex": { |
||||||
|
"version": "1.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", |
||||||
|
"integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"has-symbols": "^1.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"is-set": { |
||||||
|
"version": "2.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", |
||||||
|
"integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-string": { |
||||||
|
"version": "1.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", |
||||||
|
"integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-symbol": { |
||||||
|
"version": "1.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", |
||||||
|
"integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"has-symbols": "^1.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"is-typed-array": { |
||||||
|
"version": "1.1.4", |
||||||
|
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.4.tgz", |
||||||
|
"integrity": "sha512-ILaRgn4zaSrVNXNGtON6iFNotXW3hAPF3+0fB1usg2jFlWqo5fEDdmJkz0zBfoi7Dgskr8Khi2xZ8cXqZEfXNA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"available-typed-arrays": "^1.0.2", |
||||||
|
"call-bind": "^1.0.0", |
||||||
|
"es-abstract": "^1.18.0-next.1", |
||||||
|
"foreach": "^2.0.5", |
||||||
|
"has-symbols": "^1.0.1" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"es-abstract": { |
||||||
|
"version": "1.18.0-next.1", |
||||||
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", |
||||||
|
"integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"es-to-primitive": "^1.2.1", |
||||||
|
"function-bind": "^1.1.1", |
||||||
|
"has": "^1.0.3", |
||||||
|
"has-symbols": "^1.0.1", |
||||||
|
"is-callable": "^1.2.2", |
||||||
|
"is-negative-zero": "^2.0.0", |
||||||
|
"is-regex": "^1.1.1", |
||||||
|
"object-inspect": "^1.8.0", |
||||||
|
"object-keys": "^1.1.1", |
||||||
|
"object.assign": "^4.1.1", |
||||||
|
"string.prototype.trimend": "^1.0.1", |
||||||
|
"string.prototype.trimstart": "^1.0.1" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"is-weakmap": { |
||||||
|
"version": "2.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", |
||||||
|
"integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"is-weakset": { |
||||||
|
"version": "2.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz", |
||||||
|
"integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"js-yaml": { |
||||||
|
"version": "3.14.1", |
||||||
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", |
||||||
|
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", |
||||||
|
"requires": { |
||||||
|
"argparse": "^1.0.7", |
||||||
|
"esprima": "^4.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"longest-streak": { |
||||||
|
"version": "2.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", |
||||||
|
"integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==" |
||||||
|
}, |
||||||
|
"mdast-util-from-markdown": { |
||||||
|
"version": "0.8.4", |
||||||
|
"resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.4.tgz", |
||||||
|
"integrity": "sha512-jj891B5pV2r63n2kBTFh8cRI2uR9LQHsXG1zSDqfhXkIlDzrTcIlbB5+5aaYEkl8vOPIOPLf8VT7Ere1wWTMdw==", |
||||||
|
"requires": { |
||||||
|
"@types/mdast": "^3.0.0", |
||||||
|
"mdast-util-to-string": "^2.0.0", |
||||||
|
"micromark": "~2.11.0", |
||||||
|
"parse-entities": "^2.0.0", |
||||||
|
"unist-util-stringify-position": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"mdast-util-frontmatter": { |
||||||
|
"version": "0.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", |
||||||
|
"integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==", |
||||||
|
"requires": { |
||||||
|
"micromark-extension-frontmatter": "^0.2.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"mdast-util-to-markdown": { |
||||||
|
"version": "0.6.1", |
||||||
|
"resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.1.tgz", |
||||||
|
"integrity": "sha512-4qJtZ0qdyYeexAXoOZiU0uHIFVncJAmCkHkSluAsvDaVWODtPyNEo9I1ns0T4ulxu2EHRH5u/bt1cV0pdHCX+A==", |
||||||
|
"requires": { |
||||||
|
"@types/unist": "^2.0.0", |
||||||
|
"longest-streak": "^2.0.0", |
||||||
|
"mdast-util-to-string": "^2.0.0", |
||||||
|
"parse-entities": "^2.0.0", |
||||||
|
"repeat-string": "^1.0.0", |
||||||
|
"zwitch": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"mdast-util-to-string": { |
||||||
|
"version": "2.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", |
||||||
|
"integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" |
||||||
|
}, |
||||||
|
"micromark": { |
||||||
|
"version": "2.11.2", |
||||||
|
"resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.2.tgz", |
||||||
|
"integrity": "sha512-IXuP76p2uj8uMg4FQc1cRE7lPCLsfAXuEfdjtdO55VRiFO1asrCSQ5g43NmPqFtRwzEnEhafRVzn2jg0UiKArQ==", |
||||||
|
"requires": { |
||||||
|
"debug": "^4.0.0", |
||||||
|
"parse-entities": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"micromark-extension-frontmatter": { |
||||||
|
"version": "0.2.2", |
||||||
|
"resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", |
||||||
|
"integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==", |
||||||
|
"requires": { |
||||||
|
"fault": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"minimatch": { |
||||||
|
"version": "3.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", |
||||||
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"brace-expansion": "^1.1.7" |
||||||
|
} |
||||||
|
}, |
||||||
|
"minimist": { |
||||||
|
"version": "1.2.5", |
||||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", |
||||||
|
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"ms": { |
||||||
|
"version": "2.1.2", |
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", |
||||||
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" |
||||||
|
}, |
||||||
|
"not": { |
||||||
|
"version": "0.1.0", |
||||||
|
"resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", |
||||||
|
"integrity": "sha1-yWkcF0bFXc++VMvYvU/wQbwrUZ0=" |
||||||
|
}, |
||||||
|
"nth-check": { |
||||||
|
"version": "2.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", |
||||||
|
"integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", |
||||||
|
"requires": { |
||||||
|
"boolbase": "^1.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"object-inspect": { |
||||||
|
"version": "1.9.0", |
||||||
|
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", |
||||||
|
"integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"object-is": { |
||||||
|
"version": "1.1.4", |
||||||
|
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", |
||||||
|
"integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"call-bind": "^1.0.0", |
||||||
|
"define-properties": "^1.1.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"object-keys": { |
||||||
|
"version": "1.1.1", |
||||||
|
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", |
||||||
|
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"object.assign": { |
||||||
|
"version": "4.1.2", |
||||||
|
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", |
||||||
|
"integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"call-bind": "^1.0.0", |
||||||
|
"define-properties": "^1.1.3", |
||||||
|
"has-symbols": "^1.0.1", |
||||||
|
"object-keys": "^1.1.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"once": { |
||||||
|
"version": "1.4.0", |
||||||
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", |
||||||
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"wrappy": "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==", |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"path-is-absolute": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", |
||||||
|
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"path-parse": { |
||||||
|
"version": "1.0.6", |
||||||
|
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", |
||||||
|
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"regexp.prototype.flags": { |
||||||
|
"version": "1.3.0", |
||||||
|
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", |
||||||
|
"integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"define-properties": "^1.1.3", |
||||||
|
"es-abstract": "^1.17.0-next.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"remark-frontmatter": { |
||||||
|
"version": "3.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", |
||||||
|
"integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==", |
||||||
|
"requires": { |
||||||
|
"mdast-util-frontmatter": "^0.2.0", |
||||||
|
"micromark-extension-frontmatter": "^0.2.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"remark-parse": { |
||||||
|
"version": "9.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", |
||||||
|
"integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", |
||||||
|
"requires": { |
||||||
|
"mdast-util-from-markdown": "^0.8.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"remark-stringify": { |
||||||
|
"version": "9.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", |
||||||
|
"integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", |
||||||
|
"requires": { |
||||||
|
"mdast-util-to-markdown": "^0.6.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"repeat-string": { |
||||||
|
"version": "1.6.1", |
||||||
|
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", |
||||||
|
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" |
||||||
|
}, |
||||||
|
"resolve": { |
||||||
|
"version": "1.19.0", |
||||||
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", |
||||||
|
"integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"is-core-module": "^2.1.0", |
||||||
|
"path-parse": "^1.0.6" |
||||||
|
} |
||||||
|
}, |
||||||
|
"resumer": { |
||||||
|
"version": "0.0.0", |
||||||
|
"resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", |
||||||
|
"integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"through": "~2.3.4" |
||||||
|
} |
||||||
|
}, |
||||||
|
"side-channel": { |
||||||
|
"version": "1.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", |
||||||
|
"integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"es-abstract": "^1.18.0-next.0", |
||||||
|
"object-inspect": "^1.8.0" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"es-abstract": { |
||||||
|
"version": "1.18.0-next.1", |
||||||
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", |
||||||
|
"integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"es-to-primitive": "^1.2.1", |
||||||
|
"function-bind": "^1.1.1", |
||||||
|
"has": "^1.0.3", |
||||||
|
"has-symbols": "^1.0.1", |
||||||
|
"is-callable": "^1.2.2", |
||||||
|
"is-negative-zero": "^2.0.0", |
||||||
|
"is-regex": "^1.1.1", |
||||||
|
"object-inspect": "^1.8.0", |
||||||
|
"object-keys": "^1.1.1", |
||||||
|
"object.assign": "^4.1.1", |
||||||
|
"string.prototype.trimend": "^1.0.1", |
||||||
|
"string.prototype.trimstart": "^1.0.1" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"sprintf-js": { |
||||||
|
"version": "1.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", |
||||||
|
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" |
||||||
|
}, |
||||||
|
"string.prototype.trim": { |
||||||
|
"version": "1.2.3", |
||||||
|
"resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.3.tgz", |
||||||
|
"integrity": "sha512-16IL9pIBA5asNOSukPfxX2W68BaBvxyiRK16H3RA/lWW9BDosh+w7f+LhomPHpXJ82QEe7w7/rY/S1CV97raLg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"call-bind": "^1.0.0", |
||||||
|
"define-properties": "^1.1.3", |
||||||
|
"es-abstract": "^1.18.0-next.1" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"es-abstract": { |
||||||
|
"version": "1.18.0-next.1", |
||||||
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", |
||||||
|
"integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"es-to-primitive": "^1.2.1", |
||||||
|
"function-bind": "^1.1.1", |
||||||
|
"has": "^1.0.3", |
||||||
|
"has-symbols": "^1.0.1", |
||||||
|
"is-callable": "^1.2.2", |
||||||
|
"is-negative-zero": "^2.0.0", |
||||||
|
"is-regex": "^1.1.1", |
||||||
|
"object-inspect": "^1.8.0", |
||||||
|
"object-keys": "^1.1.1", |
||||||
|
"object.assign": "^4.1.1", |
||||||
|
"string.prototype.trimend": "^1.0.1", |
||||||
|
"string.prototype.trimstart": "^1.0.1" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"string.prototype.trimend": { |
||||||
|
"version": "1.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", |
||||||
|
"integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"call-bind": "^1.0.0", |
||||||
|
"define-properties": "^1.1.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"string.prototype.trimstart": { |
||||||
|
"version": "1.0.3", |
||||||
|
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", |
||||||
|
"integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"call-bind": "^1.0.0", |
||||||
|
"define-properties": "^1.1.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"tape": { |
||||||
|
"version": "5.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/tape/-/tape-5.0.1.tgz", |
||||||
|
"integrity": "sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"deep-equal": "^2.0.3", |
||||||
|
"defined": "^1.0.0", |
||||||
|
"dotignore": "^0.1.2", |
||||||
|
"for-each": "^0.3.3", |
||||||
|
"function-bind": "^1.1.1", |
||||||
|
"glob": "^7.1.6", |
||||||
|
"has": "^1.0.3", |
||||||
|
"inherits": "^2.0.4", |
||||||
|
"is-regex": "^1.0.5", |
||||||
|
"minimist": "^1.2.5", |
||||||
|
"object-inspect": "^1.7.0", |
||||||
|
"object-is": "^1.1.2", |
||||||
|
"object.assign": "^4.1.0", |
||||||
|
"resolve": "^1.17.0", |
||||||
|
"resumer": "^0.0.0", |
||||||
|
"string.prototype.trim": "^1.2.1", |
||||||
|
"through": "^2.3.8" |
||||||
|
} |
||||||
|
}, |
||||||
|
"through": { |
||||||
|
"version": "2.3.8", |
||||||
|
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", |
||||||
|
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"trough": { |
||||||
|
"version": "1.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", |
||||||
|
"integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" |
||||||
|
}, |
||||||
|
"unified": { |
||||||
|
"version": "9.2.0", |
||||||
|
"resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", |
||||||
|
"integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", |
||||||
|
"requires": { |
||||||
|
"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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"unist-util-is": { |
||||||
|
"version": "4.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.4.tgz", |
||||||
|
"integrity": "sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA==" |
||||||
|
}, |
||||||
|
"unist-util-select": { |
||||||
|
"version": "3.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-3.0.4.tgz", |
||||||
|
"integrity": "sha512-xf1zCu4okgPqGLdhCDpRnjwBNyv3EqjiXRUbz2SdK1+qnLMB7uXXajfzuBvvbHoQ+JLyp4AEbFCGndmc6S72sw==", |
||||||
|
"requires": { |
||||||
|
"css-selector-parser": "^1.0.0", |
||||||
|
"not": "^0.1.0", |
||||||
|
"nth-check": "^2.0.0", |
||||||
|
"unist-util-is": "^4.0.0", |
||||||
|
"zwitch": "^1.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" |
||||||
|
} |
||||||
|
}, |
||||||
|
"vfile": { |
||||||
|
"version": "4.2.1", |
||||||
|
"resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", |
||||||
|
"integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", |
||||||
|
"requires": { |
||||||
|
"@types/unist": "^2.0.0", |
||||||
|
"is-buffer": "^2.0.0", |
||||||
|
"unist-util-stringify-position": "^2.0.0", |
||||||
|
"vfile-message": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"vfile-message": { |
||||||
|
"version": "2.0.4", |
||||||
|
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", |
||||||
|
"integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", |
||||||
|
"requires": { |
||||||
|
"@types/unist": "^2.0.0", |
||||||
|
"unist-util-stringify-position": "^2.0.0" |
||||||
|
} |
||||||
|
}, |
||||||
|
"which-boxed-primitive": { |
||||||
|
"version": "1.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", |
||||||
|
"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"is-bigint": "^1.0.1", |
||||||
|
"is-boolean-object": "^1.1.0", |
||||||
|
"is-number-object": "^1.0.4", |
||||||
|
"is-string": "^1.0.5", |
||||||
|
"is-symbol": "^1.0.3" |
||||||
|
} |
||||||
|
}, |
||||||
|
"which-collection": { |
||||||
|
"version": "1.0.1", |
||||||
|
"resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", |
||||||
|
"integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"is-map": "^2.0.1", |
||||||
|
"is-set": "^2.0.1", |
||||||
|
"is-weakmap": "^2.0.1", |
||||||
|
"is-weakset": "^2.0.1" |
||||||
|
} |
||||||
|
}, |
||||||
|
"which-typed-array": { |
||||||
|
"version": "1.1.4", |
||||||
|
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", |
||||||
|
"integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"available-typed-arrays": "^1.0.2", |
||||||
|
"call-bind": "^1.0.0", |
||||||
|
"es-abstract": "^1.18.0-next.1", |
||||||
|
"foreach": "^2.0.5", |
||||||
|
"function-bind": "^1.1.1", |
||||||
|
"has-symbols": "^1.0.1", |
||||||
|
"is-typed-array": "^1.1.3" |
||||||
|
}, |
||||||
|
"dependencies": { |
||||||
|
"es-abstract": { |
||||||
|
"version": "1.18.0-next.1", |
||||||
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", |
||||||
|
"integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", |
||||||
|
"dev": true, |
||||||
|
"requires": { |
||||||
|
"es-to-primitive": "^1.2.1", |
||||||
|
"function-bind": "^1.1.1", |
||||||
|
"has": "^1.0.3", |
||||||
|
"has-symbols": "^1.0.1", |
||||||
|
"is-callable": "^1.2.2", |
||||||
|
"is-negative-zero": "^2.0.0", |
||||||
|
"is-regex": "^1.1.1", |
||||||
|
"object-inspect": "^1.8.0", |
||||||
|
"object-keys": "^1.1.1", |
||||||
|
"object.assign": "^4.1.1", |
||||||
|
"string.prototype.trimend": "^1.0.1", |
||||||
|
"string.prototype.trimstart": "^1.0.1" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"wrappy": { |
||||||
|
"version": "1.0.2", |
||||||
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", |
||||||
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", |
||||||
|
"dev": true |
||||||
|
}, |
||||||
|
"zwitch": { |
||||||
|
"version": "1.0.5", |
||||||
|
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", |
||||||
|
"integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
{ |
||||||
|
"name": "yaml-metadata-in-markdown", |
||||||
|
"version": "0.0.1", |
||||||
|
"description": "", |
||||||
|
"main": "index.js", |
||||||
|
"dependencies": { |
||||||
|
"js-yaml": "^3.14.1", |
||||||
|
"remark-frontmatter": "^3.0.0", |
||||||
|
"remark-parse": "^9.0.0", |
||||||
|
"remark-stringify": "^9.0.1", |
||||||
|
"unified": "^9.2.0", |
||||||
|
"unist-util-select": "^3.0.4" |
||||||
|
}, |
||||||
|
"devDependencies": { |
||||||
|
"tape": "^5.0.1" |
||||||
|
}, |
||||||
|
"scripts": { |
||||||
|
"test": "node test" |
||||||
|
}, |
||||||
|
"author": "Peter Babič <peter@peterbabic.dev> (https://peterbabic.dev/)", |
||||||
|
"license": "MIT" |
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
const test = require("tape") |
||||||
|
const actual = require("../index") |
||||||
|
|
||||||
|
const expected = { |
||||||
|
Title: "Post about the Front Matter", |
||||||
|
Category: "programming", |
||||||
|
Tags: ["markdown", "yaml", "metadata"], |
||||||
|
} |
||||||
|
|
||||||
|
test("equal", t => { |
||||||
|
t.deepEqual(actual, expected) |
||||||
|
t.end() |
||||||
|
}) |
Loading…
Reference in new issue