@canopycanopycanopy/b-ber-tasks 3.0.8-nav-memo.4 → 3.0.8-next.96
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.
- package/README.md +34 -4
- package/dist/index.d.ts +144 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2109 -176
- package/dist/web/search.js +1 -1
- package/dist/web/worker.js +1 -1
- package/package.json +22 -23
- package/dist/clean/index.js +0 -25
- package/dist/container/index.js +0 -48
- package/dist/copy/index.js +0 -60
- package/dist/cover/index.js +0 -217
- package/dist/deploy/index.js +0 -188
- package/dist/epub/index.js +0 -24
- package/dist/footnotes/index.js +0 -56
- package/dist/generate/index.js +0 -79
- package/dist/init/index.js +0 -73
- package/dist/inject/index.js +0 -80
- package/dist/loi/index.js +0 -130
- package/dist/mobi/index.js +0 -39
- package/dist/mobi/mobi-css.js +0 -85
- package/dist/opf/ManifestAndMetadata.js +0 -96
- package/dist/opf/Navigation.js +0 -199
- package/dist/opf/Opf.js +0 -56
- package/dist/opf/helpers.js +0 -57
- package/dist/opf/index.js +0 -31
- package/dist/pdf/index.js +0 -59
- package/dist/reader/index.js +0 -205
- package/dist/render/index.js +0 -53
- package/dist/sample/index.js +0 -11
- package/dist/sass/index.js +0 -185
- package/dist/scripts/index.js +0 -54
- package/dist/serialize.js +0 -57
- package/dist/serve/index.js +0 -83
- package/dist/validate/index.js +0 -51
- package/dist/web/Template.js +0 -171
- package/dist/web/index.js +0 -371
- package/dist/xml/index.js +0 -57
|
@@ -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;
|
package/dist/opf/Navigation.js
DELETED
|
@@ -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;
|
package/dist/opf/helpers.js
DELETED
|
@@ -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;
|