@canopycanopycanopy/b-ber-tasks 3.0.8-nav-memo.4 → 3.0.8-next.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,96 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
- _Object$defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
10
- var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
11
- var _path = _interopRequireDefault(require("path"));
12
- var _layouts = _interopRequireDefault(require("layouts"));
13
- var _vinyl = _interopRequireDefault(require("vinyl"));
14
- var _recursiveReaddir = _interopRequireDefault(require("recursive-readdir"));
15
- var _has = _interopRequireDefault(require("lodash/has"));
16
- var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
17
- var _Metadata = _interopRequireDefault(require("@canopycanopycanopy/b-ber-templates/Opf/Metadata"));
18
- var _Manifest = _interopRequireDefault(require("@canopycanopycanopy/b-ber-templates/Opf/Manifest"));
19
- var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
20
- var _helpers = require("./helpers");
21
- /* eslint-disable class-methods-use-this */
22
-
23
- // Scans directory contents and reads YAML files to create the `manifest` and
24
- // `metadata` elements in the `content.opf`
25
-
26
- class ManifestAndMetadata {
27
- constructor() {
28
- this.bookmeta = null;
29
- }
30
- async loadMetadata() {
31
- this.bookmeta = _State.default.metadata.json();
32
- }
33
-
34
- // Retrieve lists of files to include in the `content.opf`
35
- async createManifestObjectFromAssets() {
36
- let files = await (0, _recursiveReaddir.default)(_State.default.dist.ops());
37
-
38
- // TODO: better testing here, make sure we're not including symlinks, for example
39
- // @issue: https://github.com/triplecanopy/b-ber/issues/228
40
- files = [..._State.default.remoteAssets, ...(0, _filter.default)(files).call(files, file => _path.default.basename(file).charAt(0) !== '.')];
41
- const fileObjects = (0, _helpers.pathInfoFromFiles)(files, _State.default.distDir);
42
- return fileObjects;
43
- }
44
- createManifestAndMetadataFromTemplates(files) {
45
- var _context, _context2;
46
- const manifest = (0, _map.default)(files).call(files, file => _Manifest.default.item(file));
47
- const specifiedFonts = (0, _has.default)(_State.default.config, 'ibooks_specified_fonts') && _State.default.config.ibooks_specified_fonts === true;
48
- const modified = new Date().toISOString().replace(/\.\d{3}Z$/, 'Z');
49
- const generator = `b-ber@${_State.default.version}`;
50
-
51
- // Add exceptions here as needed
52
- const bookmeta = [...(0, _filter.default)(_context = (0, _map.default)(_context2 = this.bookmeta).call(_context2, value => _Metadata.default.meta(value))).call(_context, Boolean), `<meta property="ibooks:specified-fonts">${specifiedFonts}</meta>`, `<meta property="dcterms:modified">${modified}</meta>`, `<meta name="generator" content="${generator}" />`];
53
- return {
54
- manifest,
55
- bookmeta
56
- };
57
- }
58
- createManifestAndMetadataXML(resp) {
59
- var _context3;
60
- _bBerLogger.default.info('opf build [metadata]');
61
- const metadata = (0, _layouts.default)(new _vinyl.default({
62
- path: '.tmp',
63
- layout: 'body',
64
- contents: Buffer.from(resp.bookmeta.join(''))
65
- }), {
66
- body: _Metadata.default.body()
67
- }).contents.toString();
68
- _bBerLogger.default.info('opf build [manifest]');
69
- const manifest = (0, _layouts.default)(new _vinyl.default({
70
- path: '.tmp',
71
- layout: 'body',
72
- contents: Buffer.from((0, _filter.default)(_context3 = resp.manifest).call(_context3, Boolean).join(''))
73
- }), {
74
- body: _Manifest.default.body()
75
- }).contents.toString();
76
- return {
77
- metadata,
78
- manifest
79
- };
80
- }
81
- init() {
82
- // get the book metadata from state or yaml file
83
- return this.loadMetadata()
84
-
85
- // get lists of files to include in the `content.opf`
86
- .then(() => this.createManifestObjectFromAssets())
87
-
88
- // create strings of XML entries for the `content.opf`
89
- .then(resp => this.createManifestAndMetadataFromTemplates(resp))
90
-
91
- // create the manifest and metadata from templating strings.manifest and
92
- // strings.metadata
93
- .then(resp => this.createManifestAndMetadataXML(resp)).catch(_bBerLogger.default.error);
94
- }
95
- }
96
- var _default = exports.default = ManifestAndMetadata;
@@ -1,199 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
- _Object$defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
10
- var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
11
- var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
12
- var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
13
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
14
- var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
15
- var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
16
- var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
17
- var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
18
- var _splice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/splice"));
19
- var _path = _interopRequireDefault(require("path"));
20
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
21
- var _vinyl = _interopRequireDefault(require("vinyl"));
22
- var _glob = _interopRequireDefault(require("glob"));
23
- var _find2 = _interopRequireDefault(require("lodash/find"));
24
- var _difference = _interopRequireDefault(require("lodash/difference"));
25
- var _remove = _interopRequireDefault(require("lodash/remove"));
26
- var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
27
- var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
28
- var _Toc = _interopRequireDefault(require("@canopycanopycanopy/b-ber-templates/Toc"));
29
- var _Ncx = _interopRequireDefault(require("@canopycanopycanopy/b-ber-templates/Ncx"));
30
- var _Guide = _interopRequireDefault(require("@canopycanopycanopy/b-ber-templates/Opf/Guide"));
31
- var _Spine = _interopRequireDefault(require("@canopycanopycanopy/b-ber-templates/Opf/Spine"));
32
- var _bBerLib = require("@canopycanopycanopy/b-ber-lib");
33
- var _inject = require("../inject");
34
- class Navigation {
35
- // Remove the `toc.xhtml` and `toc.ncx` from the output directory
36
- static createEmptyNavDocuments() {
37
- const navDocs = ['toc.ncx', 'toc.xhtml'];
38
- _bBerLogger.default.info(`opf build navigation documents [${navDocs.join(', ')}]`);
39
- const promises = (0, _map.default)(navDocs).call(navDocs, doc => _fsExtra.default.writeFile(_State.default.dist.ops(doc), ''));
40
- return _promise.default.all(promises);
41
- }
42
-
43
- // Resolve discrepancies between files that exist in the output directory
44
- // and those that are listed in the YAML manifest
45
- static compareXhtmlWithYaml() {
46
- var _context;
47
- // Get the XHTML file names
48
- const files = (0, _map.default)(_context = _glob.default.sync(_State.default.dist.ops('**', '*.xhtml'))).call(_context, file => _path.default.basename(file, '.xhtml'));
49
-
50
- // Set up our promise chain
51
- const promises = [_promise.default.resolve()];
52
- const missing = [];
53
- const redundant = [];
54
-
55
- // Check if we need to compare agains the global toc.yml, or an
56
- // overrides (type.yml) file
57
- const tocFile = _fsExtra.default.existsSync(_State.default.src.root(`${_State.default.build}.yml`)) ? _State.default.src.root(`${_State.default.build}.yml`) : _State.default.src.root('toc.yml');
58
-
59
- // Load the TOC from the YAML file directly. We know that the spine
60
- // contains the correct entries since we load any files that haven't
61
- // been declared in the TOC when initializing the Spine object, so no
62
- // need to update anything there
63
- const tocEntries = _State.default.spine.flattenYAML(_bBerLib.YamlAdaptor.load(tocFile));
64
-
65
- // Files on the system that are not included in the TOC
66
- const missingEntries = (0, _difference.default)(files, tocEntries);
67
-
68
- // Add the missing entries to the YAML file (either toc.yml or type.yml)
69
- (0, _forEach.default)(missingEntries).call(missingEntries, name => {
70
- if (_State.default.contains('loi', {
71
- name
72
- })) return;
73
- const entry = (0, _find.default)(_State.default).call(_State.default, 'spine.flattened', {
74
- name
75
- });
76
- let yamlString = `\n- ${name}`;
77
-
78
- // If the entry has default attributes only write the name, otherwise
79
- // write the attributes along with the name
80
- if (entry) {
81
- // Get attributes that may have been dynamically added to the entry and
82
- // list them in the YAML
83
- const {
84
- linear,
85
- in_toc
86
- } = entry; // eslint-disable-line camelcase
87
- const attributes = {};
88
- if (linear === false) attributes.linear = false;
89
- if (in_toc === false) attributes.in_toc = false; // eslint-disable-line camelcase
90
-
91
- if ((0, _keys.default)(attributes).length) {
92
- var _context2;
93
- const space = '\n ';
94
- yamlString += ':';
95
- yamlString = (0, _reduce.default)(_context2 = (0, _entries.default)(attributes)).call(_context2, (acc, [key, val]) => (0, _concat.default)(acc).call(acc, `${space}${key}: ${val}`), yamlString);
96
- }
97
- }
98
- missing.push(name);
99
- promises.push(_fsExtra.default.appendFile(tocFile, yamlString));
100
- });
101
-
102
- // Files in the TOC that don't exist in the project directory
103
- const redundantEntries = (0, _difference.default)(tocEntries, files);
104
-
105
- // Strip out `cover` entry during PDF build since it's handled separately
106
- // in the project's config.yml
107
- if (_State.default.build === 'pdf') {
108
- const coverIndex = (0, _indexOf.default)(redundantEntries).call(redundantEntries, 'cover');
109
- if (coverIndex > -1) (0, _splice.default)(redundantEntries).call(redundantEntries, coverIndex, 1);
110
- }
111
-
112
- // Notify the user of any entries that are listed in the YAML file but
113
- // not present on the system. The user has to resolve these conflicts
114
- // manually because deeply nested structures can't be reliably
115
- // processed.
116
- (0, _forEach.default)(redundantEntries).call(redundantEntries, name => redundant.push(name));
117
- if (missing.length) {
118
- (0, _forEach.default)(missing).call(missing, name => _bBerLogger.default.warn('opf [%s] was not declared in the TOC. Adding [%s] to [%s]', name, name, _path.default.basename(tocFile)));
119
- }
120
- if (redundant.length) {
121
- let message = 'Files declared in the TOC do not exist in the _markdown directory';
122
- message += `\nThe following entries must be removed manually from [${_path.default.basename(tocFile)}]:`;
123
- message += `\n${(0, _map.default)(redundant).call(redundant, name => `[${name}]`).join('\n')}`;
124
- _bBerLogger.default.error(message);
125
- }
126
- return _promise.default.all(promises);
127
- }
128
- static async createTocStringsFromTemplate() {
129
- _bBerLogger.default.info('opf build [toc.xhtml]');
130
- const {
131
- toc
132
- } = _State.default;
133
- const data = new _vinyl.default({
134
- contents: Buffer.from(_bBerLib.Template.render(_Toc.default.items(toc), _Toc.default.body()))
135
- });
136
- const file = [{
137
- name: 'toc.xhtml',
138
- data
139
- }];
140
- const [{
141
- contents
142
- }] = await (0, _inject.getFileObjects)(file);
143
- return contents;
144
- }
145
- static createNcxStringsFromTemplate() {
146
- _bBerLogger.default.info('opf build [toc.ncx]');
147
- const {
148
- toc
149
- } = _State.default;
150
- const ncxXML = _Ncx.default.navPoints(toc);
151
- return _bBerLib.Template.render(ncxXML, _Ncx.default.document());
152
- }
153
- static createGuideStringsFromTemplate() {
154
- _bBerLogger.default.info('opf build [guide]');
155
- const guideXML = _Guide.default.items(_State.default.guide);
156
- return _bBerLib.Template.render(guideXML, _Guide.default.body());
157
- }
158
- static createSpineStringsFromTemplate() {
159
- _bBerLogger.default.info('opf build [spine]');
160
- const {
161
- flattened
162
- } = _State.default.spine;
163
-
164
- // We add entries to the spine programatically, but then they're
165
- // also found on the system, so we dedupe them here
166
- // TODO: but also, this is super confusing ...
167
- const generatedFiles = (0, _remove.default)(flattened, file => file.generated === true);
168
- (0, _forEach.default)(generatedFiles).call(generatedFiles, file => {
169
- if (!(0, _find2.default)(flattened, {
170
- fileName: file.fileName
171
- })) {
172
- flattened.push(file);
173
- }
174
- });
175
- const spineXML = _Spine.default.items(flattened);
176
- return _bBerLib.Template.render(spineXML, _Spine.default.body());
177
- }
178
- static writeTocXhtmlFile(toc) {
179
- const filepath = _State.default.dist.ops('toc.xhtml');
180
- _bBerLogger.default.info(`opf emit toc.xhtml [${filepath}]`);
181
- return _fsExtra.default.writeFile(filepath, toc);
182
- }
183
- static writeTocNcxFile(ncx) {
184
- const filepath = _State.default.dist.ops('toc.ncx');
185
- _bBerLogger.default.info(`opf emit toc.ncx [${filepath}]`);
186
- return _fsExtra.default.writeFile(filepath, ncx);
187
- }
188
- static async writeFiles([toc, ncx, guide, spine]) {
189
- await _promise.default.all([Navigation.writeTocXhtmlFile(toc), Navigation.writeTocNcxFile(ncx)]);
190
- return {
191
- spine,
192
- guide
193
- };
194
- }
195
- static init() {
196
- return Navigation.createEmptyNavDocuments().then(() => Navigation.compareXhtmlWithYaml()).then(() => _promise.default.all([Navigation.createTocStringsFromTemplate(), Navigation.createNcxStringsFromTemplate(), Navigation.createGuideStringsFromTemplate(), Navigation.createSpineStringsFromTemplate()])).then(resp => Navigation.writeFiles(resp)).catch(_bBerLogger.default.error);
197
- }
198
- }
199
- var _default = exports.default = Navigation;
package/dist/opf/Opf.js DELETED
@@ -1,56 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
- _Object$defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
10
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
11
- var _layouts = _interopRequireDefault(require("layouts"));
12
- var _vinyl = _interopRequireDefault(require("vinyl"));
13
- var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
14
- var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
15
- var _Pkg = _interopRequireDefault(require("@canopycanopycanopy/b-ber-templates/Opf/Pkg"));
16
- var _ = require(".");
17
- // Generates metadata, manifest, guide, and spine XML and writes to to `content.opf`
18
-
19
- class Opf {
20
- static createOpf() {
21
- const manifestAndMetadata = new _.ManifestAndMetadata();
22
- return _promise.default.all([manifestAndMetadata.init(), _.Navigation.init()]).then(Opf.createOpfPackageString).then(Opf.writeOPF).catch(_bBerLogger.default.error);
23
- }
24
- static writeOPF(contents) {
25
- const opsPath = _State.default.dist.ops('content.opf');
26
- _bBerLogger.default.info(`opf emit content.opf [${opsPath}]`);
27
- return _fsExtra.default.writeFile(opsPath, contents);
28
- }
29
-
30
- // Create the root `package` element and inject metadata, manifest, and navigation data
31
- static createOpfPackageString([manifestAndMetadataXML, navigationXML]) {
32
- _bBerLogger.default.info('opf build [package]');
33
- const {
34
- metadata,
35
- manifest
36
- } = manifestAndMetadataXML;
37
- const {
38
- guide,
39
- spine
40
- } = navigationXML;
41
- const opfString = (0, _layouts.default)(new _vinyl.default({
42
- path: '.tmp',
43
- layout: 'body',
44
- contents: Buffer.from(`
45
- ${metadata}
46
- ${manifest}
47
- ${spine}
48
- ${guide}
49
- `)
50
- }), {
51
- body: _Pkg.default.body()
52
- }).contents.toString();
53
- return opfString;
54
- }
55
- }
56
- var _default = exports.default = Opf;
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
- _Object$defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.pathInfoFromFiles = exports.nestedContentToYAML = void 0;
9
- var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
10
- var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
11
- var _path = _interopRequireDefault(require("path"));
12
- var _utils = require("@canopycanopycanopy/b-ber-lib/utils");
13
- /* eslint-disable import/prefer-default-export */
14
-
15
- const isRemote = file => /^http/.test(file);
16
- const pathInfoFromFile = (file, dest) => {
17
- if (isRemote(file)) {
18
- return {
19
- absolutePath: file,
20
- opsPath: file,
21
- name: file,
22
- extension: '',
23
- remote: true
24
- };
25
- }
26
- return {
27
- absolutePath: file,
28
- opsPath: (0, _utils.opsPath)(file, dest),
29
- name: _path.default.basename(file),
30
- extension: _path.default.extname(file),
31
- remote: false
32
- };
33
- };
34
- const pathInfoFromFiles = (arr, dest) => (0, _map.default)(arr).call(arr, file => pathInfoFromFile(file, dest));
35
-
36
- // TODO: move into Spine class? although it's called against the toc
37
- exports.pathInfoFromFiles = pathInfoFromFiles;
38
- const nestedContentToYAML = arr => (0, _reduce.default)(arr).call(arr, (acc, curr) => {
39
- const model = {};
40
- if (curr.linear === false || curr.in_toc === false) {
41
- if (curr.linear === false) model.linear = false;
42
- // eslint-disable-next-line camelcase
43
- if (curr.in_toc === false) model.in_toc = false;
44
- acc.push({
45
- [curr.fileName]: model
46
- });
47
- } else {
48
- acc.push(curr.fileName);
49
- if (curr.nodes && curr.nodes.length) {
50
- acc.push({
51
- section: nestedContentToYAML(curr.nodes)
52
- });
53
- }
54
- }
55
- return acc;
56
- }, []);
57
- exports.nestedContentToYAML = nestedContentToYAML;
package/dist/opf/index.js DELETED
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
- _Object$defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- _Object$defineProperty(exports, "ManifestAndMetadata", {
9
- enumerable: true,
10
- get: function () {
11
- return _ManifestAndMetadata.default;
12
- }
13
- });
14
- _Object$defineProperty(exports, "Navigation", {
15
- enumerable: true,
16
- get: function () {
17
- return _Navigation.default;
18
- }
19
- });
20
- _Object$defineProperty(exports, "Opf", {
21
- enumerable: true,
22
- get: function () {
23
- return _Opf.default;
24
- }
25
- });
26
- exports.default = void 0;
27
- var _Opf = _interopRequireDefault(require("./Opf"));
28
- var _ManifestAndMetadata = _interopRequireDefault(require("./ManifestAndMetadata"));
29
- var _Navigation = _interopRequireDefault(require("./Navigation"));
30
- const opf = _Opf.default.createOpf;
31
- var _default = exports.default = opf;
package/dist/pdf/index.js DELETED
@@ -1,59 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
- _Object$defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
10
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
11
- var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
12
- var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
13
- var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
14
- var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
15
- var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
16
- var _path = _interopRequireDefault(require("path"));
17
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
18
- var _kebabCase = _interopRequireDefault(require("lodash/kebabCase"));
19
- var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
20
- var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
21
- var _EbookConvert = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/EbookConvert"));
22
- var _utils = require("@canopycanopycanopy/b-ber-lib/utils");
23
- const booleans = new _set.default(['pdf_mark_links', 'preserve_cover_aspect_ratio', 'pretty_print', 'uncompressed_pdf', 'pdf_page_numbers', 'pdf_add_toc', 'use_profile_size', 'disable_font_rescaling', 'subset_embedded_fonts', 'embed_all_fonts ', 'linearize_tables', 'expand_css', 'smarten_punctuation', 'unsmarten_punctuation', 'insert_blank_line', 'remove_paragraph_spacing', 'asciiize', 'keep_ligatures', 'enable_heuristics', 'disable_markup_chapter_headings', 'disable_italicize_common_cases', 'disable_fix_indents', 'disable_unwrap_lines', 'disable_delete_blank_paragraphs', 'disable_format_scene_breaks', 'disable_dehyphenate', 'disable_renumber_headings', 'prefer_metadata_cover', 'remove_first_image', 'insert_metadata ', 'disable_remove_fake_margins', 'no_chapters_in_toc', 'use_auto_toc', 'duplicate_links_in_toc']);
24
- const settings = new _set.default(['u', 'unit', 'm', 'read_metadata_from_opf', 'from_opf', 'custom_size', 'pdf_standard_font', 'pdf_page_margin_top', 'pdf_page_margin_right', 'toc_title', 'pdf_serif_family', 'pdf_mono_font_size', 'pdf_page_margin_left', 'pdf_page_margin_bottom', 'pdf_footer_template', 'pdf_default_font_size', 'pdf_sans_family', 'pdf_mono_family', 'paper_size', 'pdf_header_template', 'base_font_size', 'font_size_mapping', 'embed_font_family', 'line_height', 'minimum_line_height', 'extra_css', 'filter_css', 'transform_css_rules', 'margin_top', 'margin_left', 'margin_right', 'margin_bottom', 'change_justification', 'insert_blank_line_size', 'remove_paragraph_spacing_indent_size', 'html_unwrap_factor', 'replace_scene_breaks', 'sr1_search', 'sr1_replace', 'sr2_search', 'sr2_replace', 'sr3_search', 'sr3_replace', 'search_replace', 'chapter', 'chapter_mark', 'page_breaks_before', 'start_reading_at', 'level1_toc', 'level2_toc', 'level3_toc', 'toc_threshold', 'max_toc_links', 'toc_filter', 'title', 'authors', 'title_sort', 'author_sort', 'cover', 'comments', 'publisher', 'series', 'series_index', 'rating', 'isbn', 'tags', 'book_producer', 'language', 'pubdate', 'timestamp']);
25
- const toArg = (key, val) => {
26
- if (typeof val === 'undefined') return `--${(0, _kebabCase.default)(key)}`;
27
- return `--${(0, _kebabCase.default)(key)}=${val}`;
28
- };
29
- const getPDFFlags = options => {
30
- var _context;
31
- if ((0, _keys.default)(options).length < 1) return [];
32
- const flags = (0, _reduce.default)(_context = (0, _entries.default)(options)).call(_context, (acc, [key, val]) => {
33
- if (booleans.has(key)) return (0, _concat.default)(acc).call(acc, toArg(key));
34
- if (settings.has(key)) return (0, _concat.default)(acc).call(acc, toArg(key, val));
35
- return acc;
36
- }, []);
37
- return flags;
38
- };
39
- const pdf = () => {
40
- const opsPath = _State.default.dist.ops();
41
- const inputPath = _path.default.join(opsPath, 'content.opf');
42
- const pdfOptions = _State.default.config.pdf_options || {};
43
- const flags = getPDFFlags(pdfOptions);
44
-
45
- // Remove TOC manually since there's no option in
46
- // ebook-convert to skip it.
47
- const tocPath = _path.default.join(opsPath, 'toc.xhtml');
48
- return _fsExtra.default.remove(tocPath).then(() => {
49
- var _context2;
50
- return (0, _includes.default)(_context2 = process.argv).call(_context2, '--no-compile') ? _promise.default.resolve() : _EbookConvert.default.convert({
51
- inputPath,
52
- outputPath: process.cwd(),
53
- fileType: 'pdf',
54
- fileName: (0, _utils.getBookMetadata)('identifier', _State.default),
55
- flags
56
- }).catch(_bBerLogger.default.error);
57
- });
58
- };
59
- var _default = exports.default = pdf;