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

17
book/node_modules/honkit/lib/cli/build.d.ts generated vendored Normal file
View File

@ -0,0 +1,17 @@
declare const _default: {
name: string;
description: string;
options: ({
name: string;
description: string;
values: any;
defaults: string;
} | {
name: string;
description: string;
defaults: boolean;
})[];
exec: (args: any, kwargs: any) => any;
};
export default _default;
//# sourceMappingURL=build.d.ts.map

1
book/node_modules/honkit/lib/cli/build.d.ts.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAQA,wBAsBE"}

36
book/node_modules/honkit/lib/cli/build.js generated vendored Normal file
View File

@ -0,0 +1,36 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const parse_1 = __importDefault(require("../parse"));
const output_1 = __importDefault(require("../output"));
const timing_1 = __importDefault(require("../utils/timing"));
const options_1 = __importDefault(require("./options"));
const getBook_1 = __importDefault(require("./getBook"));
const getOutputFolder_1 = __importDefault(require("./getOutputFolder"));
const page_cache_1 = require("../output/page-cache");
exports.default = {
name: "build [book] [output]",
description: "build a book",
options: [options_1.default.log, options_1.default.format, options_1.default.timing, options_1.default.reload],
exec: function (args, kwargs) {
const book = (0, getBook_1.default)(args, kwargs);
const outputFolder = (0, getOutputFolder_1.default)(args);
const Generator = output_1.default.getGenerator(kwargs.format);
if (kwargs.reload) {
book.getLogger().info.ok(`Clear cache`);
(0, page_cache_1.clearCache)();
}
return parse_1.default.parseBook(book)
.then((resultBook) => {
return output_1.default.generate(Generator, resultBook, {
root: outputFolder
});
})
.fin(() => {
if (kwargs.timing)
timing_1.default.dump(book.getLogger());
});
}
};

12
book/node_modules/honkit/lib/cli/buildEbook.d.ts generated vendored Normal file
View File

@ -0,0 +1,12 @@
export default function (format: any): {
name: string;
description: string;
options: {
name: string;
description: string;
values: any;
defaults: string;
}[];
exec: (args: any, kwargs: any) => any;
};
//# sourceMappingURL=buildEbook.d.ts.map

1
book/node_modules/honkit/lib/cli/buildEbook.d.ts.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"buildEbook.d.ts","sourceRoot":"","sources":["../../src/cli/buildEbook.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,OAAO,WAAW,MAAM,KAAA;;;;;;;;;;EA4D9B"}

63
book/node_modules/honkit/lib/cli/buildEbook.js generated vendored Normal file
View File

@ -0,0 +1,63 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
const path_1 = __importDefault(require("path"));
const promise_1 = __importDefault(require("../utils/promise"));
const fs_1 = __importDefault(require("../utils/fs"));
const parse_1 = __importDefault(require("../parse"));
const output_1 = __importDefault(require("../output"));
const options_1 = __importDefault(require("./options"));
const getBook_1 = __importDefault(require("./getBook"));
const page_cache_1 = require("../output/page-cache");
const tmpdir_1 = require("../fs/tmpdir");
function default_1(format) {
return {
name: `${format} [book] [output]`,
description: "build a book into an ebook file",
options: [options_1.default.log],
exec: function (args, kwargs) {
const extension = `.${format}`;
// Output file will be stored in
const outputFile = args[1] || `book${extension}`;
// Create temporary directory
const outputFolder = (0, tmpdir_1.createTmpDirWithRealPath)();
const book = (0, getBook_1.default)(args, kwargs);
const logger = book.getLogger();
const Generator = output_1.default.getGenerator("ebook");
if (kwargs.reload) {
(0, page_cache_1.clearCache)();
}
return (parse_1.default.parseBook(book)
.then((resultBook) => {
return output_1.default.generate(Generator, resultBook, {
root: outputFolder,
format: format
});
})
// Extract ebook file
.then((output) => {
const book = output.getBook();
const languages = book.getLanguages();
if (book.isMultilingual()) {
return promise_1.default.forEach(languages.getList(), (lang) => {
const langID = lang.getID();
const langOutputFile = path_1.default.join(path_1.default.dirname(outputFile), `${path_1.default.basename(outputFile, extension)}_${langID}${extension}`);
return fs_1.default.copy(path_1.default.resolve(outputFolder, langID, `index${extension}`), langOutputFile);
}).thenResolve(languages.getCount());
}
else {
return fs_1.default.copy(path_1.default.resolve(outputFolder, `index${extension}`), outputFile).thenResolve(1);
}
})
// Log end
.then((count) => {
logger.info.ok(`${count} file(s) generated`);
logger.debug("cleaning up... ");
return logger.debug.promise(fs_1.default.rmDir(outputFolder));
}));
}
};
}

12
book/node_modules/honkit/lib/cli/getBook.d.ts generated vendored Normal file
View File

@ -0,0 +1,12 @@
import Book from "../models/book";
/**
Return a book instance to work on from
command line args/kwargs
@param {Array} args
@param {Object} kwargs
@return {Book}
*/
declare function getBook(args: any, kwargs: any): Book;
export default getBook;
//# sourceMappingURL=getBook.d.ts.map

1
book/node_modules/honkit/lib/cli/getBook.d.ts.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"getBook.d.ts","sourceRoot":"","sources":["../../src/cli/getBook.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAGlC;;;;;;;GAOG;AAEH,iBAAS,OAAO,CAAC,IAAI,KAAA,EAAE,MAAM,KAAA,QAS5B;AAED,eAAe,OAAO,CAAC"}

24
book/node_modules/honkit/lib/cli/getBook.js generated vendored Normal file
View File

@ -0,0 +1,24 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const book_1 = __importDefault(require("../models/book"));
const node_1 = __importDefault(require("../fs/node"));
/**
Return a book instance to work on from
command line args/kwargs
@param {Array} args
@param {Object} kwargs
@return {Book}
*/
function getBook(args, kwargs) {
const input = path_1.default.resolve(args[0] || process.cwd());
const logLevel = kwargs.log;
const fs = (0, node_1.default)(input);
const book = book_1.default.createForFS(fs);
return book.setLogLevel(logLevel);
}
exports.default = getBook;

View File

@ -0,0 +1,9 @@
/**
Return path to output folder
@param {Array} args
@return {string}
*/
declare function getOutputFolder(args: any): string;
export default getOutputFolder;
//# sourceMappingURL=getOutputFolder.d.ts.map

View File

@ -0,0 +1 @@
{"version":3,"file":"getOutputFolder.d.ts","sourceRoot":"","sources":["../../src/cli/getOutputFolder.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,iBAAS,eAAe,CAAC,IAAI,KAAA,UAM5B;AAED,eAAe,eAAe,CAAC"}

19
book/node_modules/honkit/lib/cli/getOutputFolder.js generated vendored Normal file
View File

@ -0,0 +1,19 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
/**
Return path to output folder
@param {Array} args
@return {string}
*/
function getOutputFolder(args) {
const bookRoot = path_1.default.resolve(args[0] || process.cwd());
const defaultOutputRoot = path_1.default.join(bookRoot, "_book");
const outputFolder = args[1] ? path_1.default.resolve(process.cwd(), args[1]) : defaultOutputRoot;
return outputFolder;
}
exports.default = getOutputFolder;

25
book/node_modules/honkit/lib/cli/index.d.ts generated vendored Normal file
View File

@ -0,0 +1,25 @@
declare const _default: {
name: string;
description: string;
options: ({
name: string;
description: string;
values: any;
defaults: string;
} | {
name: string;
description: string;
defaults: boolean;
} | {
name: string;
description: string;
defaults: number;
} | {
name: string;
description: string;
defaults: string;
})[];
exec: (args: any, kwargs: any) => any;
}[];
export default _default;
//# sourceMappingURL=index.d.ts.map

1
book/node_modules/honkit/lib/cli/index.d.ts.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAKA,wBAAsG"}

11
book/node_modules/honkit/lib/cli/index.js generated vendored Normal file
View File

@ -0,0 +1,11 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const buildEbook_1 = __importDefault(require("./buildEbook"));
const build_1 = __importDefault(require("./build"));
const serve_1 = __importDefault(require("./serve"));
const parse_1 = __importDefault(require("./parse"));
const init_1 = __importDefault(require("./init"));
exports.default = [build_1.default, serve_1.default, parse_1.default, init_1.default, (0, buildEbook_1.default)("pdf"), (0, buildEbook_1.default)("epub"), (0, buildEbook_1.default)("mobi")];

13
book/node_modules/honkit/lib/cli/init.d.ts generated vendored Normal file
View File

@ -0,0 +1,13 @@
declare const _default: {
name: string;
description: string;
options: {
name: string;
description: string;
values: any;
defaults: string;
}[];
exec: (args: any, kwargs: any) => any;
};
export default _default;
//# sourceMappingURL=init.d.ts.map

1
book/node_modules/honkit/lib/cli/init.d.ts.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";;;;;;;;;;;AAIA,wBASE"}

17
book/node_modules/honkit/lib/cli/init.js generated vendored Normal file
View File

@ -0,0 +1,17 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const options_1 = __importDefault(require("./options"));
const init_1 = __importDefault(require("../init"));
exports.default = {
name: "init [book]",
description: "setup and create files for chapters",
options: [options_1.default.log],
exec: function (args, kwargs) {
const bookRoot = path_1.default.resolve(process.cwd(), args[0] || "./");
return (0, init_1.default)(bookRoot);
}
};

26
book/node_modules/honkit/lib/cli/options.d.ts generated vendored Normal file
View File

@ -0,0 +1,26 @@
declare const _default: {
log: {
name: string;
description: string;
values: any;
defaults: string;
};
format: {
name: string;
description: string;
values: string[];
defaults: string;
};
timing: {
name: string;
description: string;
defaults: boolean;
};
reload: {
name: string;
description: string;
defaults: boolean;
};
};
export default _default;
//# sourceMappingURL=options.d.ts.map

1
book/node_modules/honkit/lib/cli/options.d.ts.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAgCA,wBAKE"}

38
book/node_modules/honkit/lib/cli/options.js generated vendored Normal file
View File

@ -0,0 +1,38 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const logger_1 = __importDefault(require("../utils/logger"));
const logOptions = {
name: "log",
description: "Minimum log level to display",
values: logger_1.default.LEVELS.keySeq()
.map((s) => {
return s.toLowerCase();
})
.toJS(),
defaults: "info"
};
const formatOption = {
name: "format",
description: "Format to build to",
values: ["website", "json", "ebook"],
defaults: "website"
};
const timingOption = {
name: "timing",
description: "Print timing debug information",
defaults: false
};
const reloadOption = {
name: "reload",
description: "Prune cache. Remove file cache",
defaults: false
};
exports.default = {
log: logOptions,
format: formatOption,
timing: timingOption,
reload: reloadOption
};

13
book/node_modules/honkit/lib/cli/parse.d.ts generated vendored Normal file
View File

@ -0,0 +1,13 @@
declare const _default: {
name: string;
description: string;
options: {
name: string;
description: string;
values: any;
defaults: string;
}[];
exec: (args: any, kwargs: any) => any;
};
export default _default;
//# sourceMappingURL=parse.d.ts.map

1
book/node_modules/honkit/lib/cli/parse.d.ts.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/cli/parse.ts"],"names":[],"mappings":";;;;;;;;;;;AAmDA,wBAwBE"}

67
book/node_modules/honkit/lib/cli/parse.js generated vendored Normal file
View File

@ -0,0 +1,67 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const options_1 = __importDefault(require("./options"));
const getBook_1 = __importDefault(require("./getBook"));
const parse_1 = __importDefault(require("../parse"));
function printBook(book) {
const logger = book.getLogger();
const config = book.getConfig();
const configFile = config.getFile();
const summary = book.getSummary();
const summaryFile = summary.getFile();
const readme = book.getReadme();
const readmeFile = readme.getFile();
const glossary = book.getGlossary();
const glossaryFile = glossary.getFile();
if (configFile.exists()) {
logger.info.ln("Configuration file is", configFile.getPath());
}
if (readmeFile.exists()) {
logger.info.ln("Introduction file is", readmeFile.getPath());
}
if (glossaryFile.exists()) {
logger.info.ln("Glossary file is", glossaryFile.getPath());
}
if (summaryFile.exists()) {
logger.info.ln("Table of Contents file is", summaryFile.getPath());
}
}
function printMultingualBook(book) {
const logger = book.getLogger();
const languages = book.getLanguages();
const books = book.getBooks();
logger.info.ln(`${languages.size} languages`);
const file = languages.getFile();
const list = languages.getList();
list.valueSeq().forEach((lang) => {
logger.info.ln("Language:", lang.getTitle());
printBook(books.get(lang.getID()));
logger.info.ln("");
});
}
exports.default = {
name: "parse [book]",
description: "parse and print debug information about a book",
options: [options_1.default.log],
exec: function (args, kwargs) {
const book = (0, getBook_1.default)(args, kwargs);
const logger = book.getLogger();
return parse_1.default.parseBook(book).then((resultBook) => {
const rootFolder = book.getRoot();
const contentFolder = book.getContentRoot();
logger.info.ln("Book located in:", rootFolder);
if (contentFolder != rootFolder) {
logger.info.ln("Content located in:", contentFolder);
}
if (resultBook.isMultilingual()) {
printMultingualBook(resultBook);
}
else {
printBook(resultBook);
}
});
}
};

25
book/node_modules/honkit/lib/cli/serve.d.ts generated vendored Normal file
View File

@ -0,0 +1,25 @@
declare const _default: {
name: string;
description: string;
options: ({
name: string;
description: string;
values: any;
defaults: string;
} | {
name: string;
description: string;
defaults: boolean;
} | {
name: string;
description: string;
defaults: number;
} | {
name: string;
description: string;
defaults: string;
})[];
exec: (args: any, kwargs: any) => any;
};
export default _default;
//# sourceMappingURL=serve.d.ts.map

1
book/node_modules/honkit/lib/cli/serve.d.ts.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA4IA,wBA6DE"}

193
book/node_modules/honkit/lib/cli/serve.js generated vendored Normal file
View File

@ -0,0 +1,193 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const tiny_lr_1 = __importDefault(require("tiny-lr"));
const open_1 = __importDefault(require("open"));
const immutable_1 = __importDefault(require("immutable"));
const parse_1 = __importDefault(require("../parse"));
const output_1 = __importDefault(require("../output"));
const modifiers_1 = __importDefault(require("../modifiers"));
const promise_1 = __importDefault(require("../utils/promise"));
const options_1 = __importDefault(require("./options"));
const getBook_1 = __importDefault(require("./getBook"));
const getOutputFolder_1 = __importDefault(require("./getOutputFolder"));
const server_1 = __importDefault(require("./server"));
const watch_1 = __importDefault(require("./watch"));
const page_cache_1 = require("../output/page-cache");
const fs_1 = __importDefault(require("fs"));
let server, lrServer, lrPath;
function waitForCtrlC() {
const d = promise_1.default.defer();
process.on("SIGINT", () => {
d.resolve();
});
return d.promise;
}
function startServer(args, kwargs) {
const outputFolder = (0, getOutputFolder_1.default)(args);
const port = kwargs.port;
const browser = kwargs["browser"];
const book = (0, getBook_1.default)(args, kwargs);
const hasWatch = kwargs["watch"];
const hasOpen = kwargs["open"];
const hasLiveReloading = kwargs["live"];
const reload = kwargs["reload"];
const Generator = output_1.default.getGenerator(kwargs.format);
const logger = book.getLogger();
logger.info.ok("Starting server ...");
let lastOutput = null;
return promise_1.default.all([
server.start(outputFolder, port),
generateBook({
book,
outputFolder,
hasLiveReloading,
Generator,
reload
}).then((output) => {
lastOutput = output;
return output;
})
])
.then(() => {
console.log(`Serving book on http://localhost:${port}`);
if (hasOpen) {
(0, open_1.default)(`http://localhost:${port}`, { app: browser });
}
})
.then(() => {
if (!hasWatch) {
return waitForCtrlC();
}
// update book immutably. does not use book again
return (0, watch_1.default)(book.getRoot(), (error, filepath) => {
if (error) {
console.error(error);
return;
}
// If the file does not exist in file system, show a warning and skip
// Probably, the file has been deleted
if (!fs_1.default.existsSync(filepath)) {
logger.warn.ok(`${filepath} does not exist in file system.`);
return;
}
// set livereload path
lrPath = filepath;
// TODO: use parse extension
// Incremental update for pages
if (lastOutput && filepath.endsWith(".md")) {
logger.warn.ok("Rebuild " + filepath);
const changedOutput = lastOutput.reloadPage(lastOutput.book.getContentRoot(), filepath).merge({
incrementalChangeFileSet: immutable_1.default.Set([filepath])
});
return incrementalBuild({
output: changedOutput,
Generator
}).then(() => {
if (lrPath && hasLiveReloading) {
// trigger livereload
lrServer.changed({
body: {
files: [lrPath]
}
});
}
});
}
// Asciidoc files are not supported for incremental build
logger.info.ok("Rebuild " + filepath);
return generateBook({
book,
outputFolder,
hasLiveReloading,
Generator,
reload
}).then((output) => {
lastOutput = output;
});
});
});
}
function generateBook({ book, outputFolder, hasLiveReloading, Generator, reload }) {
// Stop server if running
if (reload) {
book.getLogger().info.ok(`Clear cache`);
(0, page_cache_1.clearCache)();
}
return parse_1.default.parseBook(book).then((resultBook) => {
if (hasLiveReloading) {
// Enable livereload plugin
let config = resultBook.getConfig();
// @ts-expect-error ts-migrate(2554) FIXME: Expected 3 arguments, but got 2.
config = modifiers_1.default.Config.addPlugin(config, "livereload");
resultBook = resultBook.set("config", config);
}
return output_1.default.generate(Generator, resultBook, {
root: outputFolder
});
});
}
function incrementalBuild({ output, Generator }) {
return output_1.default.incrementalBuild(Generator, output);
}
exports.default = {
name: "serve [book] [output]",
description: "serve the book as a website for testing",
options: [
{
name: "port",
description: "Port for server to listen on",
defaults: 4000
},
{
name: "lrport",
description: "Port for livereload server to listen on",
defaults: 35729
},
{
name: "watch",
description: "Enable file watcher and live reloading",
defaults: true
},
{
name: "live",
description: "Enable live reloading",
defaults: true
},
{
name: "open",
description: "Enable opening book in browser",
defaults: false
},
{
name: "browser",
description: "Specify browser for opening book",
defaults: ""
},
options_1.default.log,
options_1.default.format,
options_1.default.reload
],
exec: function (args, kwargs) {
server = new server_1.default();
const hasWatch = kwargs["watch"];
const hasLiveReloading = kwargs["live"];
return (0, promise_1.default)()
.then(() => {
if (!hasWatch || !hasLiveReloading) {
return;
}
lrServer = (0, tiny_lr_1.default)({});
return promise_1.default.nfcall(lrServer.listen.bind(lrServer), kwargs.lrport).then(() => {
console.log("Live reload server started on port:", kwargs.lrport);
console.log("Press CTRL+C to quit ...");
console.log("");
});
})
.then(() => {
return startServer(args, kwargs);
});
}
};

28
book/node_modules/honkit/lib/cli/server.d.ts generated vendored Normal file
View File

@ -0,0 +1,28 @@
import events from "events";
declare class Server extends events.EventEmitter {
private running;
private dir;
private port;
private sockets;
constructor();
/**
Return true if the server is running
@return {boolean}
*/
isRunning(): boolean;
/**
Stop the server
@return {Promise}
*/
stop(): any;
/**
Start the server
@return {Promise}
*/
start(dir: any, port: any): any;
}
export default Server;
//# sourceMappingURL=server.d.ts.map

1
book/node_modules/honkit/lib/cli/server.d.ts.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/cli/server.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAO5B,cAAM,MAAO,SAAQ,MAAM,CAAC,YAAY;IACpC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,GAAG,CAAO;IAClB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAQ;;IASvB;;;;OAIG;IACH,SAAS;IAIT;;;;OAIG;IACH,IAAI;IAqBJ;;;;OAIG;IACH,KAAK,CAAC,GAAG,KAAA,EAAE,IAAI,KAAA;CA0DlB;AAcD,eAAe,MAAM,CAAC"}

120
book/node_modules/honkit/lib/cli/server.js generated vendored Normal file
View File

@ -0,0 +1,120 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const events_1 = __importDefault(require("events"));
const http_1 = __importDefault(require("http"));
const send_1 = __importDefault(require("send"));
const url_1 = __importDefault(require("url"));
const promise_1 = __importDefault(require("../utils/promise"));
class Server extends events_1.default.EventEmitter {
running;
dir;
port;
sockets;
constructor() {
super();
this.running = null;
this.dir = null;
this.port = 0;
this.sockets = [];
}
/**
Return true if the server is running
@return {boolean}
*/
isRunning() {
return !!this.running;
}
/**
Stop the server
@return {Promise}
*/
stop() {
const that = this;
if (!this.isRunning())
return (0, promise_1.default)();
const d = promise_1.default.defer();
this.running.close((err) => {
that.running = null;
that.emit("state", false);
if (err)
d.reject(err);
else
d.resolve();
});
for (let i = 0; i < this.sockets.length; i++) {
this.sockets[i].destroy();
}
return d.promise;
}
/**
Start the server
@return {Promise}
*/
start(dir, port) {
const that = this;
let pre = (0, promise_1.default)();
port = port || 8004;
if (that.isRunning())
pre = this.stop();
return pre.then(() => {
const d = promise_1.default.defer();
that.running = http_1.default.createServer((req, res) => {
// Render error
function error(err) {
res.statusCode = err.status || 500;
res.end(err.message);
}
// Redirect to directory's index.html
function redirect() {
const resultURL = urlTransform(req.url, (parsed) => {
parsed.pathname += "/";
return parsed;
});
res.statusCode = 301;
res.setHeader("Location", resultURL);
res.end(`Redirecting to ${resultURL}`);
}
res.setHeader("X-Current-Location", req.url);
// Send file
(0, send_1.default)(req, url_1.default.parse(req.url).pathname, {
root: dir
})
.on("error", error)
.on("directory", redirect)
.pipe(res);
});
that.running.on("connection", (socket) => {
that.sockets.push(socket);
socket.setTimeout(4000);
socket.on("close", () => {
that.sockets.splice(that.sockets.indexOf(socket), 1);
});
});
that.running.listen(port, () => {
that.port = port;
that.dir = dir;
that.emit("state", true);
d.resolve();
});
return d.promise;
});
}
}
/**
urlTransform is a helper function that allows a function to transform
a url string in it's parsed form and returns the new url as a string
@param {string} uri
@param {Function} fn
@return {string}
*/
function urlTransform(uri, fn) {
return url_1.default.format(fn(url_1.default.parse(uri)));
}
exports.default = Server;

10
book/node_modules/honkit/lib/cli/watch.d.ts generated vendored Normal file
View File

@ -0,0 +1,10 @@
/**
Watch a folder and resolve promise once a file is modified
@param {string} dir
@param callback
@return {Promise}
*/
declare function watch(dir: any, callback: any): void;
export default watch;
//# sourceMappingURL=watch.d.ts.map

1
book/node_modules/honkit/lib/cli/watch.d.ts.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/cli/watch.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,iBAAS,KAAK,CAAC,GAAG,KAAA,EAAE,QAAQ,KAAA,QAwB3B;AAED,eAAe,KAAK,CAAC"}

37
book/node_modules/honkit/lib/cli/watch.js generated vendored Normal file
View File

@ -0,0 +1,37 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const chokidar_1 = __importDefault(require("chokidar"));
const parsers_1 = __importDefault(require("../parsers"));
/**
Watch a folder and resolve promise once a file is modified
@param {string} dir
@param callback
@return {Promise}
*/
function watch(dir, callback) {
dir = path_1.default.resolve(dir);
const toWatch = ["book.json", "book.js", "_layouts/**"];
// Watch all parsable files
parsers_1.default.extensions.forEach((ext) => {
toWatch.push(`**/*${ext}`);
});
const watcher = chokidar_1.default.watch(toWatch, {
cwd: dir,
// prevent infinity loop
// https://github.com/honkit/honkit/issues/269
ignored: ["_book/**", "node_modules/**"],
ignoreInitial: true
});
watcher.on("all", (e, filepath) => {
callback(null, path_1.default.resolve(dir, filepath));
});
watcher.on("error", (err) => {
callback(err);
});
}
exports.default = watch;