This commit is contained in:
2025-05-12 05:38:44 +09:00
parent dced21c3f8
commit 6d78bfa46e
8120 changed files with 1161564 additions and 0 deletions

21
book/node_modules/write/LICENSE generated vendored Normal file
View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014-2017, Jon Schlinkert.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

178
book/node_modules/write/README.md generated vendored Normal file
View File

@ -0,0 +1,178 @@
# write [![NPM version](https://img.shields.io/npm/v/write.svg?style=flat)](https://www.npmjs.com/package/write) [![NPM monthly downloads](https://img.shields.io/npm/dm/write.svg?style=flat)](https://npmjs.org/package/write) [![NPM total downloads](https://img.shields.io/npm/dt/write.svg?style=flat)](https://npmjs.org/package/write) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/write.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/write)
> Write data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Thin wrapper around node's native fs methods.
## Install
Install with [npm](https://www.npmjs.com/):
```sh
$ npm install --save write
```
## Usage
```js
var writeFile = require('write');
```
## API
### [writeFile](index.js#L40)
Asynchronously writes data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Data can be a string or a buffer. Returns a promise if a callback function is not passed.
**Params**
* `filepath` **{string|Buffer|integer}**: filepath or file descriptor.
* `data` **{string|Buffer|Uint8Array}**: String to write to disk.
* `options` **{object}**: Options to pass to [fs.writeFile](https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback) and/or [mkdirp](https://github.com/substack/node-mkdirp)
* `callback` **{Function}**: (optional) If no callback is provided, a promise is returned.
**Example**
```js
var writeFile = require('write');
writeFile('foo.txt', 'This is content...', function(err) {
if (err) console.log(err);
});
// promise
writeFile('foo.txt', 'This is content...')
.then(function() {
// do stuff
});
```
### [.promise](index.js#L82)
The promise version of [writeFile](#writefile). Returns a promise.
**Params**
* `filepath` **{string|Buffer|integer}**: filepath or file descriptor.
* `val` **{string|Buffer|Uint8Array}**: String or buffer to write to disk.
* `options` **{object}**: Options to pass to [fs.writeFile](https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback) and/or [mkdirp](https://github.com/substack/node-mkdirp)
* `returns` **{Promise}**
**Example**
```js
var writeFile = require('write');
writeFile.promise('foo.txt', 'This is content...')
.then(function() {
// do stuff
});
```
### [.sync](index.js#L120)
The synchronous version of [writeFile](#writefile). Returns undefined.
**Params**
* `filepath` **{string|Buffer|integer}**: filepath or file descriptor.
* `data` **{string|Buffer|Uint8Array}**: String or buffer to write to disk.
* `options` **{object}**: Options to pass to [fs.writeFileSync](https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options) and/or [mkdirp](https://github.com/substack/node-mkdirp)
* `returns` **{undefined}**
**Example**
```js
var writeFile = require('write');
writeFile.sync('foo.txt', 'This is content...');
```
### [.stream](index.js#L151)
Uses `fs.createWriteStream` to write data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Data can be a string or a buffer. Returns a new [WriteStream](https://nodejs.org/api/fs.html#fs_class_fs_writestream) object.
**Params**
* `filepath` **{string|Buffer|integer}**: filepath or file descriptor.
* `options` **{object}**: Options to pass to [mkdirp](https://github.com/substack/node-mkdirp) and [fs.createWriteStream](https://nodejs.org/api/fs.html#fs_fs_createwritestream_path_options)
* `returns` **{Stream}**: Returns a new [WriteStream](https://nodejs.org/api/fs.html#fs_class_fs_writestream) object. (See [Writable Stream](https://nodejs.org/api/stream.html#stream_class_stream_writable)).
**Example**
```js
var fs = require('fs');
var writeFile = require('write');
fs.createReadStream('README.md')
.pipe(writeFile.stream('a/b/c/other-file.md'))
.on('close', function() {
// do stuff
});
```
## Release history
### v1.0.2 - 2017-07-11
* improved documentation
### v1.0.0 - 2017-07-09
**Added**
* [promise support](#promise)
**Changed**
* The main export will now return a promise if no callback is passed
## About
### Related projects
* [delete](https://www.npmjs.com/package/delete): Delete files and folders and any intermediate directories if they exist (sync and async). | [homepage](https://github.com/jonschlinkert/delete "Delete files and folders and any intermediate directories if they exist (sync and async).")
* [read-data](https://www.npmjs.com/package/read-data): Read JSON or YAML files. | [homepage](https://github.com/jonschlinkert/read-data "Read JSON or YAML files.")
* [read-yaml](https://www.npmjs.com/package/read-yaml): Very thin wrapper around js-yaml for directly reading in YAML files. | [homepage](https://github.com/jonschlinkert/read-yaml "Very thin wrapper around js-yaml for directly reading in YAML files.")
* [write-data](https://www.npmjs.com/package/write-data): Write a YAML or JSON file to disk. Automatically detects the format to write based… [more](https://github.com/jonschlinkert/write-data) | [homepage](https://github.com/jonschlinkert/write-data "Write a YAML or JSON file to disk. Automatically detects the format to write based on extension. Or pass `ext` on the options.")
* [write-json](https://www.npmjs.com/package/write-json): Write a JSON file to disk, also creates intermediate directories in the destination path if… [more](https://github.com/jonschlinkert/write-json) | [homepage](https://github.com/jonschlinkert/write-json "Write a JSON file to disk, also creates intermediate directories in the destination path if they don't already exist.")
* [write-yaml](https://www.npmjs.com/package/write-yaml): Write YAML. Converts JSON to YAML writes it to the specified file. | [homepage](https://github.com/jonschlinkert/write-yaml "Write YAML. Converts JSON to YAML writes it to the specified file.")
### Contributing
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
### Contributors
| **Commits** | **Contributor** |
| --- | --- |
| 33 | [jonschlinkert](https://github.com/jonschlinkert) |
| 1 | [tunnckoCore](https://github.com/tunnckoCore) |
### Building docs
_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
To generate the readme, run the following command:
```sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
```
### Running tests
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
```sh
$ npm install && npm test
```
### Author
**Jon Schlinkert**
* [github/jonschlinkert](https://github.com/jonschlinkert)
* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
### License
Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
Released under the [MIT License](LICENSE).
***
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 11, 2017._

160
book/node_modules/write/index.js generated vendored Normal file
View File

@ -0,0 +1,160 @@
/*!
* write <https://github.com/jonschlinkert/write>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
'use strict';
var fs = require('fs');
var path = require('path');
var mkdirp = require('mkdirp');
/**
* Asynchronously writes data to a file, replacing the file if it already
* exists and creating any intermediate directories if they don't already
* exist. Data can be a string or a buffer. Returns a promise if a callback
* function is not passed.
*
* ```js
* var writeFile = require('write');
* writeFile('foo.txt', 'This is content...', function(err) {
* if (err) console.log(err);
* });
*
* // promise
* writeFile('foo.txt', 'This is content...')
* .then(function() {
* // do stuff
* });
* ```
* @name writeFile
* @param {string|Buffer|integer} `filepath` filepath or file descriptor.
* @param {string|Buffer|Uint8Array} `data` String to write to disk.
* @param {object} `options` Options to pass to [fs.writeFile][fs]{#fs_fs_writefile_file_data_options_callback} and/or [mkdirp][]
* @param {Function} `callback` (optional) If no callback is provided, a promise is returned.
* @api public
*/
function writeFile(filepath, data, options, cb) {
if (typeof options === 'function') {
cb = options;
options = {};
}
if (typeof cb !== 'function') {
return writeFile.promise.apply(null, arguments);
}
if (typeof filepath !== 'string') {
cb(new TypeError('expected filepath to be a string'));
return;
}
mkdirp(path.dirname(filepath), options, function(err) {
if (err) {
cb(err);
return;
}
fs.writeFile(filepath, data, options, cb);
});
};
/**
* The promise version of [writeFile](#writefile). Returns a promise.
*
* ```js
* var writeFile = require('write');
* writeFile.promise('foo.txt', 'This is content...')
* .then(function() {
* // do stuff
* });
* ```
* @name .promise
* @param {string|Buffer|integer} `filepath` filepath or file descriptor.
* @param {string|Buffer|Uint8Array} `val` String or buffer to write to disk.
* @param {object} `options` Options to pass to [fs.writeFile][fs]{#fs_fs_writefile_file_data_options_callback} and/or [mkdirp][]
* @return {Promise}
* @api public
*/
writeFile.promise = function(filepath, val, options) {
if (typeof filepath !== 'string') {
return Promise.reject(new TypeError('expected filepath to be a string'));
}
return new Promise(function(resolve, reject) {
mkdirp(path.dirname(filepath), options, function(err) {
if (err) {
reject(err);
return;
}
fs.writeFile(filepath, val, options, function(err) {
if (err) {
reject(err);
return;
}
resolve(val);
});
});
});
};
/**
* The synchronous version of [writeFile](#writefile). Returns undefined.
*
* ```js
* var writeFile = require('write');
* writeFile.sync('foo.txt', 'This is content...');
* ```
* @name .sync
* @param {string|Buffer|integer} `filepath` filepath or file descriptor.
* @param {string|Buffer|Uint8Array} `data` String or buffer to write to disk.
* @param {object} `options` Options to pass to [fs.writeFileSync][fs]{#fs_fs_writefilesync_file_data_options} and/or [mkdirp][]
* @return {undefined}
* @api public
*/
writeFile.sync = function(filepath, data, options) {
if (typeof filepath !== 'string') {
throw new TypeError('expected filepath to be a string');
}
mkdirp.sync(path.dirname(filepath), options);
fs.writeFileSync(filepath, data, options);
};
/**
* Uses `fs.createWriteStream` to write data to a file, replacing the
* file if it already exists and creating any intermediate directories
* if they don't already exist. Data can be a string or a buffer. Returns
* a new [WriteStream](https://nodejs.org/api/fs.html#fs_class_fs_writestream)
* object.
*
* ```js
* var fs = require('fs');
* var writeFile = require('write');
* fs.createReadStream('README.md')
* .pipe(writeFile.stream('a/b/c/other-file.md'))
* .on('close', function() {
* // do stuff
* });
* ```
* @name .stream
* @param {string|Buffer|integer} `filepath` filepath or file descriptor.
* @param {object} `options` Options to pass to [mkdirp][] and [fs.createWriteStream][fs]{#fs_fs_createwritestream_path_options}
* @return {Stream} Returns a new [WriteStream](https://nodejs.org/api/fs.html#fs_class_fs_writestream) object. (See [Writable Stream](https://nodejs.org/api/stream.html#stream_class_stream_writable)).
* @api public
*/
writeFile.stream = function(filepath, options) {
mkdirp.sync(path.dirname(filepath), options);
return fs.createWriteStream(filepath, options);
};
/**
* Expose `writeFile`
*/
module.exports = writeFile;

1
book/node_modules/write/node_modules/.bin/mkdirp generated vendored Symbolic link
View File

@ -0,0 +1 @@
../mkdirp/bin/cmd.js

21
book/node_modules/write/node_modules/mkdirp/LICENSE generated vendored Normal file
View File

@ -0,0 +1,21 @@
Copyright 2010 James Halliday (mail@substack.net)
This project is free software released under the MIT/X11 license:
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

33
book/node_modules/write/node_modules/mkdirp/bin/cmd.js generated vendored Executable file
View File

@ -0,0 +1,33 @@
#!/usr/bin/env node
var mkdirp = require('../');
var minimist = require('minimist');
var fs = require('fs');
var argv = minimist(process.argv.slice(2), {
alias: { m: 'mode', h: 'help' },
string: [ 'mode' ]
});
if (argv.help) {
fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout);
return;
}
var paths = argv._.slice();
var mode = argv.mode ? parseInt(argv.mode, 8) : undefined;
(function next () {
if (paths.length === 0) return;
var p = paths.shift();
if (mode === undefined) mkdirp(p, cb)
else mkdirp(p, mode, cb)
function cb (err) {
if (err) {
console.error(err.message);
process.exit(1);
}
else next();
}
})();

View File

@ -0,0 +1,12 @@
usage: mkdirp [DIR1,DIR2..] {OPTIONS}
Create each supplied directory including any necessary parent directories that
don't yet exist.
If the directory already exists, do nothing.
OPTIONS are:
-m, --mode If a directory needs to be created, set the mode as an octal
permission string.

102
book/node_modules/write/node_modules/mkdirp/index.js generated vendored Normal file
View File

@ -0,0 +1,102 @@
var path = require('path');
var fs = require('fs');
var _0777 = parseInt('0777', 8);
module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
function mkdirP (p, opts, f, made) {
if (typeof opts === 'function') {
f = opts;
opts = {};
}
else if (!opts || typeof opts !== 'object') {
opts = { mode: opts };
}
var mode = opts.mode;
var xfs = opts.fs || fs;
if (mode === undefined) {
mode = _0777
}
if (!made) made = null;
var cb = f || /* istanbul ignore next */ function () {};
p = path.resolve(p);
xfs.mkdir(p, mode, function (er) {
if (!er) {
made = made || p;
return cb(null, made);
}
switch (er.code) {
case 'ENOENT':
/* istanbul ignore if */
if (path.dirname(p) === p) return cb(er);
mkdirP(path.dirname(p), opts, function (er, made) {
/* istanbul ignore if */
if (er) cb(er, made);
else mkdirP(p, opts, cb, made);
});
break;
// In the case of any other error, just see if there's a dir
// there already. If so, then hooray! If not, then something
// is borked.
default:
xfs.stat(p, function (er2, stat) {
// if the stat fails, then that's super weird.
// let the original error be the failure reason.
if (er2 || !stat.isDirectory()) cb(er, made)
else cb(null, made);
});
break;
}
});
}
mkdirP.sync = function sync (p, opts, made) {
if (!opts || typeof opts !== 'object') {
opts = { mode: opts };
}
var mode = opts.mode;
var xfs = opts.fs || fs;
if (mode === undefined) {
mode = _0777
}
if (!made) made = null;
p = path.resolve(p);
try {
xfs.mkdirSync(p, mode);
made = made || p;
}
catch (err0) {
switch (err0.code) {
case 'ENOENT' :
made = sync(path.dirname(p), opts, made);
sync(p, opts, made);
break;
// In the case of any other error, just see if there's a dir
// there already. If so, then hooray! If not, then something
// is borked.
default:
var stat;
try {
stat = xfs.statSync(p);
}
catch (err1) /* istanbul ignore next */ {
throw err0;
}
/* istanbul ignore if */
if (!stat.isDirectory()) throw err0;
break;
}
}
return made;
};

View File

@ -0,0 +1,33 @@
{
"name": "mkdirp",
"description": "Recursively mkdir, like `mkdir -p`",
"version": "0.5.6",
"publishConfig": {
"tag": "legacy"
},
"author": "James Halliday <mail@substack.net> (http://substack.net)",
"main": "index.js",
"keywords": [
"mkdir",
"directory"
],
"repository": {
"type": "git",
"url": "https://github.com/substack/node-mkdirp.git"
},
"scripts": {
"test": "tap test/*.js"
},
"dependencies": {
"minimist": "^1.2.6"
},
"devDependencies": {
"tap": "^16.0.1"
},
"bin": "bin/cmd.js",
"license": "MIT",
"files": [
"bin",
"index.js"
]
}

View File

@ -0,0 +1,100 @@
# mkdirp
Like `mkdir -p`, but in node.js!
[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)
# example
## pow.js
```js
var mkdirp = require('mkdirp');
mkdirp('/tmp/foo/bar/baz', function (err) {
if (err) console.error(err)
else console.log('pow!')
});
```
Output
```
pow!
```
And now /tmp/foo/bar/baz exists, huzzah!
# methods
```js
var mkdirp = require('mkdirp');
```
## mkdirp(dir, opts, cb)
Create a new directory and any necessary subdirectories at `dir` with octal
permission string `opts.mode`. If `opts` is a non-object, it will be treated as
the `opts.mode`.
If `opts.mode` isn't specified, it defaults to `0777`.
`cb(err, made)` fires with the error or the first directory `made`
that had to be created, if any.
You can optionally pass in an alternate `fs` implementation by passing in
`opts.fs`. Your implementation should have `opts.fs.mkdir(path, mode, cb)` and
`opts.fs.stat(path, cb)`.
## mkdirp.sync(dir, opts)
Synchronously create a new directory and any necessary subdirectories at `dir`
with octal permission string `opts.mode`. If `opts` is a non-object, it will be
treated as the `opts.mode`.
If `opts.mode` isn't specified, it defaults to `0777`.
Returns the first directory that had to be created, if any.
You can optionally pass in an alternate `fs` implementation by passing in
`opts.fs`. Your implementation should have `opts.fs.mkdirSync(path, mode)` and
`opts.fs.statSync(path)`.
# usage
This package also ships with a `mkdirp` command.
```
usage: mkdirp [DIR1,DIR2..] {OPTIONS}
Create each supplied directory including any necessary parent directories that
don't yet exist.
If the directory already exists, do nothing.
OPTIONS are:
-m, --mode If a directory needs to be created, set the mode as an octal
permission string.
```
# install
With [npm](http://npmjs.org) do:
```
npm install mkdirp
```
to get the library, or
```
npm install -g mkdirp
```
to get the command.
# license
MIT

74
book/node_modules/write/package.json generated vendored Normal file
View File

@ -0,0 +1,74 @@
{
"name": "write",
"description": "Write data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Thin wrapper around node's native fs methods.",
"version": "1.0.3",
"homepage": "https://github.com/jonschlinkert/write",
"author": "Jon Schlinkert (https://github.com/jonschlinkert)",
"contributors": [
"Charlike Mike Reagent (https://i.am.charlike.online)",
"Jon Schlinkert (http://twitter.com/jonschlinkert)"
],
"repository": "jonschlinkert/write",
"bugs": {
"url": "https://github.com/jonschlinkert/write/issues"
},
"license": "MIT",
"files": [
"index.js"
],
"main": "index.js",
"engines": {
"node": ">=4"
},
"scripts": {
"test": "mocha"
},
"dependencies": {
"mkdirp": "^0.5.1"
},
"devDependencies": {
"async-each": "^1.0.1",
"delete": "^1.1.0",
"gulp-format-md": "^1.0.0",
"mocha": "^3.4.2"
},
"keywords": [
"file",
"filepath",
"files",
"filesystem",
"folder",
"fs",
"fs.writeFile",
"fs.writeFileSync",
"path",
"write"
],
"verb": {
"run": true,
"toc": false,
"layout": "default",
"tasks": [
"readme"
],
"plugins": [
"gulp-format-md"
],
"related": {
"list": [
"delete",
"read-data",
"read-yaml",
"write-data",
"write-json",
"write-yaml"
]
},
"reflinks": [
"verb"
],
"lint": {
"reflinks": true
}
}
}