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

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,51 +0,0 @@
1
- "use strict";
2
-
3
- var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
4
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
5
- var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
6
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
7
- _Object$defineProperty(exports, "__esModule", {
8
- value: true
9
- });
10
- exports.default = void 0;
11
- var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
12
- var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
13
- var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
14
- var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
15
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
16
- var _path = _interopRequireDefault(require("path"));
17
- var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
18
- var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
19
- var _bBerValidator = _interopRequireWildcard(require("@canopycanopycanopy/b-ber-validator"));
20
- function _getRequireWildcardCache(e) { if ("function" != typeof _WeakMap) return null; var r = new _WeakMap(), t = new _WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
21
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? _Object$getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? _Object$defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
22
- const validate = async ({
23
- project
24
- }) => {
25
- var _context, _context2;
26
- const markdownPath = _path.default.resolve(process.cwd(), project, _State.default.src.markdown());
27
- if (!_fsExtra.default.pathExists(markdownPath)) {
28
- _bBerLogger.default.error('Project path does not exist, aborting');
29
- }
30
- const files = (0, _map.default)(_context = (0, _filter.default)(_context2 = await _fsExtra.default.readdir(markdownPath)).call(_context2, f => (0, _slice.default)(f).call(f, -2).toLowerCase() === 'md')).call(_context, f => _path.default.join(markdownPath, f));
31
- const errors = [];
32
- const check = (0, _map.default)(files).call(files, async file => {
33
- const data = await _fsExtra.default.readFile(file, 'utf8');
34
- const res = (0, _bBerValidator.default)({
35
- text: data,
36
- index: 0
37
- });
38
- if (res.success === false) {
39
- (0, _bBerValidator.report)(_path.default.basename(file), res);
40
- errors.push(res);
41
- } else {
42
- _bBerLogger.default.info('Syntax valid %s', _path.default.basename(file));
43
- }
44
- });
45
- await _promise.default.all(check);
46
- if (!errors.length) {
47
- _bBerLogger.default.info('Directives valid');
48
- }
49
- _bBerLogger.default.info(errors);
50
- };
51
- var _default = exports.default = validate;
@@ -1,171 +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 _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
10
- var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
11
- class Template {
12
- static header(title) {
13
- return `
14
- <header class="publication__header" role="navigation">
15
- <div class="header__item header__item__toggle header__item__toggle--toc">
16
- <button class="material-icons">view_list</button>
17
- </div>
18
-
19
- <div class="header__item header__item__title">
20
- <h1>${title}</h1>
21
- </div>
22
-
23
- <div class="header__item publication__search">
24
- <button class="material-icons publication__search__button publication__search__button--open">search</button>
25
- <input type="text" disabled="disabled" class="publication__search__input" placeholder="" name="s" value="" />
26
- <button class="material-icons publication__search__button publication__search__button--close">close</button>
27
- </div>
28
-
29
- <div class="header__item header__item__toggle header__item__toggle--info">
30
- <button class="material-icons">info</button>
31
- </div>
32
- </header>
33
- `;
34
- }
35
- static metadata(data) {
36
- return `
37
- <dl>
38
- ${(0, _reduce.default)(data).call(data, (acc, curr) => (0, _concat.default)(acc).call(acc, `
39
- <dt>${curr.term}</dt>
40
- <dd>${curr.value}</dd>
41
- `), '')}
42
- </dl>
43
- `;
44
- }
45
- static toc(baseURL, title, content) {
46
- return `
47
- <nav class="publication__toc" role="navigation">
48
- <div class="publication__title">
49
- <a href="${baseURL}">${title}</a>
50
- </div>
51
- ${content}
52
- </nav>
53
- `;
54
- }
55
- static info(content) {
56
- return `
57
- <nav class="publication__info" role="navigation">
58
- ${content}
59
- </nav>
60
- `;
61
- }
62
- static prev(baseURL, href) {
63
- return `
64
- <div class="publication__nav__prev">
65
- <a class="publication__nav__link" href="${baseURL}text/${href}">
66
- <i class="material-icons">arrow_back</i>
67
- </a>
68
- </div>
69
- `;
70
- }
71
- static next(baseURL, href) {
72
- return `
73
- <div class="publication__nav__next">
74
- <a class="publication__nav__link" href="${baseURL}text/${href}">
75
- <i class="material-icons">arrow_forward</i>
76
- </a>
77
- </div>
78
- `;
79
- }
80
- static pagination(prev, next) {
81
- return `
82
- <nav class="publication__nav" role="navigation">
83
- ${prev}
84
- ${next}
85
- </nav>
86
- `;
87
- }
88
- static styles() {
89
- return `
90
- <style>
91
- body { opacity: 0; transition: opacity 250ms ease; }
92
- body.ready { opacity: 1 !important; }
93
- </style>
94
- `;
95
- }
96
- static scripts(content) {
97
- return `
98
- <script type="text/javascript">
99
- // <![CDATA[
100
- ${content}
101
- // ]]>
102
- </script>
103
- `;
104
- }
105
- static cover(firstPage, coverImageSrc) {
106
- return `
107
- <a class="cover__image__link" href="${firstPage}">
108
- <img class="cover__image" src="${coverImageSrc}" alt="Cover" />
109
- </a>
110
- `;
111
- }
112
- static robots(isPrivate) {
113
- return isPrivate ? '<meta name="robots" content="noindex,nofollow"/>' : '<meta name="robots" content="index,follow"/>';
114
- }
115
- static body(styleBlock, headerElement) {
116
- return `
117
- <body style="opacity: 0;">
118
- ${styleBlock}
119
- <div class="publication">
120
- ${headerElement}
121
- <div class="publication__contents">
122
- `;
123
- }
124
- static footer(pageNavigation, tocElement, infoElement, navigationToggleScript, webWorkerScript, evenHandlerScript) {
125
- return `
126
- </div> <!-- / .publication__contents -->
127
- ${pageNavigation}
128
- </div> <!-- / .publication -->
129
- ${tocElement}
130
- ${infoElement}
131
- ${navigationToggleScript}
132
- ${webWorkerScript}
133
- ${evenHandlerScript}
134
- $1
135
- `;
136
- }
137
- static index(baseURL, robotsMeta, title, styleBlock, tocElement, infoElement, headerElement, coverImage, navigationToggleScript, webWorkerScript) {
138
- return `
139
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
140
- <html xmlns="http://www.w3.org/1999/xhtml"
141
- xmlns:epub="http://www.idpf.org/2007/ops"
142
- xmlns:ibooks="http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0"
143
- epub:prefix="ibooks: http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0">
144
- <meta http-equiv="default-style" content="text/html charset=utf-8"/>
145
- ${robotsMeta}
146
- <link rel="manifest" type="application/webpub+json" href="${baseURL}manifest.json">
147
- <link rel="stylesheet" type="text/css" href="${baseURL}stylesheets/application.css"/>
148
-
149
- <head>
150
- <title>${title}</title>
151
- ${styleBlock}
152
- </head>
153
- <body style="opacity: 0;">
154
- ${tocElement}
155
- ${infoElement}
156
- <div class="publication">
157
- ${headerElement}
158
- <div class="publication__contents">
159
- <section>
160
- ${coverImage}
161
- </section>
162
- </div>
163
- </div>
164
- ${navigationToggleScript}
165
- ${webWorkerScript}
166
- </body>
167
- </html>
168
- `;
169
- }
170
- }
171
- var _default = exports.default = Template;
package/dist/web/index.js DELETED
@@ -1,371 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
4
- var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
5
- var _filterInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
6
- var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
7
- var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
8
- var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
9
- var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
10
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
11
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
12
- _Object$defineProperty(exports, "__esModule", {
13
- value: true
14
- });
15
- exports.default = void 0;
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
17
- var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
18
- var _splice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/splice"));
19
- var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
20
- var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
21
- var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
22
- var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
23
- var _path = _interopRequireDefault(require("path"));
24
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
25
- var _find = _interopRequireDefault(require("lodash/find"));
26
- var _findIndex = _interopRequireDefault(require("lodash/findIndex"));
27
- var _has = _interopRequireDefault(require("lodash/has"));
28
- var _cheerio = _interopRequireDefault(require("cheerio"));
29
- var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
30
- var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
31
- var _bBerLib = require("@canopycanopycanopy/b-ber-lib");
32
- var _utils = require("@canopycanopycanopy/b-ber-lib/utils");
33
- var _Toc = _interopRequireDefault(require("@canopycanopycanopy/b-ber-templates/Toc"));
34
- var _recursiveReaddir = _interopRequireDefault(require("recursive-readdir"));
35
- var _Template = _interopRequireDefault(require("./Template"));
36
- function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty2(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
37
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context7, _context8; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context7 = ownKeys(Object(t), !0)).call(_context7, function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context8 = ownKeys(Object(t))).call(_context8, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; } // Since the file structure for the `web` build is quite different from the
38
- // other (ebook-style) builds, it's better for maintainability to rearrange
39
- // the ebook-style directory structure rather than inserting a bunch of
40
- // conditionals into the various build scripts.
41
- //
42
- // This script can also be modularized in the future as an `ebook-to-static-
43
- // site` module for external use
44
- let ASSETS_TO_UNLINK;
45
- let DIST_PATH;
46
- let OPS_PATH;
47
- let OMIT_FROM_SEARCH;
48
- let BASE_URL;
49
- let flow; // copy of spine for web task, see `WebFlow` below
50
-
51
- // Class to manage pagination for web layout. when building an epub, figures are
52
- // handled outside of the spine, mostly so that they can have hashed file names
53
- // (since they're generated on the fly), and so that the individual figures
54
- // pages are not listed in the YAML files. the `WebFlow` class creates a new
55
- // spine by merging in the loi
56
- class WebFlow {
57
- constructor({
58
- spine,
59
- loi
60
- }) {
61
- this.spine = spine;
62
- this.loi = loi;
63
- this.prepareLoi();
64
- this.addFiguresToSpine();
65
- this.removeNonLinearEntriesFromSpine();
66
- this.removeTocFromSpine();
67
- }
68
-
69
- // TODO: the naming scheme for figures is slightly different for figures (the
70
- // `fileName` property has a file extension). @issue:
71
- // https://github.com/triplecanopy/b-ber/issues/208
72
- prepareLoi() {
73
- var _context;
74
- this.loi = (0, _map.default)(_context = this.loi).call(_context, a => {
75
- const b = _objectSpread({}, a);
76
- b.fileName = b.fileName.replace(/\.xhtml$/, '');
77
- b.relativePath = b.relativePath.replace(/\.xhtml$/, '');
78
- return b;
79
- });
80
- }
81
- getFiguresPageIndex() {
82
- const fileName = 'figures-titlepage';
83
- return (0, _findIndex.default)(this.spine.flattened, {
84
- fileName
85
- });
86
- }
87
- addFiguresToSpine() {
88
- var _context2;
89
- if (!this.loi.length) return;
90
- const figuresPageIndex = this.getFiguresPageIndex();
91
- if (figuresPageIndex < 0) return;
92
- (0, _splice.default)(_context2 = this.spine.flattened).call(_context2, figuresPageIndex + 1, 0, ...this.loi);
93
- }
94
- removeNonLinearEntriesFromSpine() {
95
- var _context3;
96
- this.spine = (0, _filter.default)(_context3 = this.spine.flattened).call(_context3, a => a.linear);
97
- }
98
- removeTocFromSpine() {
99
- var _context4;
100
- this.spine = (0, _filter.default)(_context4 = this.spine).call(_context4, a => a.fileName !== 'toc');
101
- }
102
- }
103
-
104
- // Make sure we're using the correct build variables
105
- async function initialize() {
106
- DIST_PATH = _State.default.distDir;
107
- OPS_PATH = _path.default.join(DIST_PATH, 'OPS');
108
- BASE_URL = _bBerLib.Url.addTrailingSlash(_State.default.config.base_url);
109
- ASSETS_TO_UNLINK = [_path.default.join(DIST_PATH, 'mimetype'), _path.default.join(DIST_PATH, 'META-INF'), _path.default.join(DIST_PATH, 'OPS/content.opf'), _path.default.join(DIST_PATH, 'OPS/toc.ncx')];
110
-
111
- // List of spine item entry `fileName`s
112
- OMIT_FROM_SEARCH = ['toc'];
113
- const {
114
- spine,
115
- loi
116
- } = _State.default;
117
- flow = new WebFlow({
118
- spine,
119
- loi
120
- });
121
- }
122
- async function moveAssetsToRootDirctory() {
123
- const files = _fsExtra.default.readdirSync(OPS_PATH);
124
- const dirs = (0, _filter.default)(files).call(files, file => file.charAt(0) !== '.' && _fsExtra.default.statSync(_path.default.join(OPS_PATH, file)).isDirectory());
125
- const promises = (0, _map.default)(dirs).call(dirs, dir => {
126
- const from = _path.default.join(OPS_PATH, dir);
127
- const to = _path.default.join(DIST_PATH, dir);
128
- _bBerLogger.default.info('Moving [%s]', dir);
129
- return _fsExtra.default.move(from, to);
130
- });
131
-
132
- // Remove the OPS dir once all the moving assets have been moved
133
- await _promise.default.all(promises);
134
- return _fsExtra.default.remove(OPS_PATH);
135
- }
136
- function unlinkRedundantAssets() {
137
- const promises = (0, _map.default)(ASSETS_TO_UNLINK).call(ASSETS_TO_UNLINK, file => {
138
- _bBerLogger.default.info('Removing [%s]', _path.default.basename(file));
139
- return _fsExtra.default.remove(file);
140
- });
141
- return _promise.default.all(promises);
142
- }
143
- function getProjectTitle() {
144
- let title = '';
145
- const titleEntry = (0, _utils.getBookMetadata)('title', _State.default);
146
- if (titleEntry && titleEntry.value) {
147
- title = titleEntry.value;
148
- }
149
- return title;
150
- }
151
- function getChapterTitle(fileName) {
152
- if (typeof fileName !== 'string') return getProjectTitle();
153
- const meta = _State.default.spine.frontMatter.get(fileName);
154
- if (!(meta !== null && meta !== void 0 && meta.title)) return getProjectTitle();
155
- return meta.title;
156
- }
157
- function getProjectMetadataHTML() {
158
- return _Template.default.metadata(_State.default.metadata.json());
159
- }
160
- function getHeaderElement(fileName) {
161
- const title = getChapterTitle(fileName);
162
- return _Template.default.header(title);
163
- }
164
- function createNavigationElement() {
165
- const {
166
- toc: prevToc
167
- } = _State.default;
168
-
169
- // Filter out toc entry if it exists
170
- const toc = (0, _filter.default)(prevToc).call(prevToc, item => item.fileName !== 'toc');
171
- const tocHTML = _Toc.default.items(toc).replace(/a href="/g, `a href="${BASE_URL}`);
172
- const metadataHTML = getProjectMetadataHTML();
173
- const title = getProjectTitle();
174
- const tocElement = _Template.default.toc(BASE_URL, title, tocHTML);
175
- const infoElement = _Template.default.info(metadataHTML);
176
- return {
177
- tocElement,
178
- infoElement
179
- };
180
- }
181
- function buttonPrev(filePath) {
182
- const fileName = _path.default.basename(filePath, '.xhtml');
183
- const index = (0, _findIndex.default)(flow.spine, {
184
- fileName
185
- });
186
- const prevIndex = index - 1;
187
- let html = '';
188
- if (index > -1 && flow.spine[prevIndex]) {
189
- const href = `${flow.spine[prevIndex].fileName}.xhtml`;
190
- html = _Template.default.prev(BASE_URL, href);
191
- }
192
- return html;
193
- }
194
- function buttonNext(filePath) {
195
- const fileName = _path.default.basename(filePath, '.xhtml');
196
- const index = (0, _findIndex.default)(flow.spine, {
197
- fileName
198
- });
199
- const nextIndex = index + 1;
200
- let html = '';
201
- if (index > -1 && flow.spine[nextIndex]) {
202
- const href = `${flow.spine[nextIndex].fileName}.xhtml`;
203
- html = _Template.default.next(BASE_URL, href);
204
- }
205
- return html;
206
- }
207
- function paginate(filePath) {
208
- return {
209
- prev: buttonPrev(filePath),
210
- next: buttonNext(filePath)
211
- };
212
- }
213
- function paginationNavigation(filePath) {
214
- const {
215
- prev,
216
- next
217
- } = paginate(filePath);
218
- return _Template.default.pagination(prev, next);
219
- }
220
- function injectBaseURL(script) {
221
- const script_ = typeof script === 'string' ? script : String(script);
222
- return Buffer.from(script_.replace(/%BASE_URL%/g, BASE_URL));
223
- }
224
- function getStyleBlock() {
225
- return _Template.default.styles();
226
- }
227
- function getNavigationToggleScript() {
228
- const content = injectBaseURL(_fsExtra.default.readFileSync(_path.default.join(__dirname, 'navigation.js')));
229
- return _Template.default.scripts(content);
230
- }
231
- function getWebWorkerScript() {
232
- const content = injectBaseURL(_fsExtra.default.readFileSync(_path.default.join(__dirname, 'search.js')));
233
- return _Template.default.scripts(content);
234
- }
235
- function getEventHandlerScript() {
236
- const content = injectBaseURL(_fsExtra.default.readFileSync(_path.default.join(__dirname, 'event-handlers.js')));
237
- return _Template.default.scripts(content);
238
- }
239
- function injectPageElementsIntoFile(filePath) {
240
- const {
241
- tocElement,
242
- infoElement
243
- } = createNavigationElement();
244
- const pageNavigation = paginationNavigation(filePath);
245
- const styleBlock = getStyleBlock();
246
- const navigationToggleScript = getNavigationToggleScript();
247
- const webWorkerScript = getWebWorkerScript();
248
- const evenHandlerScript = getEventHandlerScript();
249
- const headerElement = getHeaderElement(_path.default.basename(filePath, _path.default.extname(filePath)));
250
- _bBerLogger.default.info(`Adding pagination to ${_path.default.basename(filePath)}`);
251
- const data = _fsExtra.default.readFileSync(filePath, 'utf8');
252
-
253
- // Prepare to modify publication content
254
- let contents;
255
-
256
- // Prepend the dynamically generated elements to body, adding a
257
- // wrapper around the main publication content. this allows us to
258
- // create a sliding nav, fixed header, etc.
259
- contents = data.replace(/(<body[^>]*?>)/, _Template.default.body(styleBlock, headerElement));
260
-
261
- // Close the wrapper element, adding a little javascript for the
262
- // navigation toggle. should be moved to core when stable
263
- contents = contents.replace(/(<\/body>)/, _Template.default.footer(pageNavigation, tocElement, infoElement, navigationToggleScript, webWorkerScript, evenHandlerScript));
264
- _bBerLogger.default.info(`web writing ${_path.default.basename(filePath)}`);
265
- return _fsExtra.default.writeFile(filePath, contents);
266
- }
267
- function injectPageElementsIntoFiles(elements) {
268
- var _context5;
269
- const textPath = _path.default.join(DIST_PATH, 'text');
270
- const files = (0, _filter.default)(_context5 = _fsExtra.default.readdirSync(textPath)).call(_context5, file => _path.default.extname(file) === '.xhtml');
271
- const promises = (0, _map.default)(files).call(files, file => {
272
- const filePath = _path.default.resolve(textPath, file);
273
- return injectPageElementsIntoFile(filePath, elements);
274
- });
275
- return _promise.default.all(promises).then(() => elements);
276
- }
277
- function indexPageContent() {
278
- var _context6;
279
- const {
280
- spine
281
- } = flow;
282
- const records = [];
283
- let fileIndex = -1;
284
- const promises = (0, _map.default)(_context6 = (0, _filter.default)(spine).call(spine, a => (0, _indexOf.default)(OMIT_FROM_SEARCH).call(OMIT_FROM_SEARCH, a.fileName) < 0)).call(_context6, entry => _fsExtra.default.readFile(_path.default.join(OPS_PATH, `${entry.relativePath}.xhtml`), 'utf8').then(data => {
285
- const $ = _cheerio.default.load(data);
286
- const title = $('h1,h2,h3,h4,h5,h6').first().text();
287
- const body = $('body').text();
288
- const url = `${BASE_URL}text/${entry.fileName}.xhtml`;
289
- fileIndex += 1;
290
- records.push({
291
- id: fileIndex,
292
- title,
293
- body,
294
- url
295
- });
296
- }));
297
- return _promise.default.all(promises).then(() => (0, _stringify.default)(records));
298
- }
299
- function writeJSONPageData(json) {
300
- return _fsExtra.default.writeFile(_path.default.join(DIST_PATH, 'search-index.json'), json);
301
- }
302
- function importVendorScripts() {
303
- const lunrPath = require.resolve('lunr');
304
- const outputPath = _path.default.join(DIST_PATH, 'lunr.js');
305
- return _fsExtra.default.copy(lunrPath, outputPath);
306
- }
307
- function writeWebWorker() {
308
- const worker = injectBaseURL(_fsExtra.default.readFileSync(_path.default.join(__dirname, 'worker.js')));
309
- return _fsExtra.default.writeFile(_path.default.join(DIST_PATH, 'worker.js'), worker);
310
- }
311
- function writeWebpubManifest() {
312
- return new _promise.default((resolve, reject) => {
313
- (0, _recursiveReaddir.default)(_State.default.distDir, (err1, files) => {
314
- if (err1) reject(err1);
315
- const manifest = (0, _utils.generateWebpubManifest)(files);
316
- _fsExtra.default.writeJson(_path.default.join(DIST_PATH, 'manifest.json'), manifest).then(resolve);
317
- });
318
- });
319
- }
320
-
321
- // subtracts 1 from `n` argument since `getPage` refrerences state.spine,
322
- // which is 0-indexed
323
- function getPage(_n = -1) {
324
- const n = _n - 1;
325
- const url = `${BASE_URL}text/${flow.spine[n].fileName}.xhtml`;
326
- return url;
327
- }
328
- function getFirstPage() {
329
- return getPage(1);
330
- }
331
- function getCoverImage() {
332
- const metadata = _State.default.metadata.json();
333
- const coverEntry = (0, _find.default)(metadata, {
334
- term: 'cover'
335
- });
336
- const firstPage = getFirstPage();
337
- let coverImageSrc = 'images/';
338
- if (coverEntry && (0, _has.default)(coverEntry, 'value')) {
339
- coverImageSrc += coverEntry.value;
340
- }
341
- return _Template.default.cover(firstPage, coverImageSrc);
342
- }
343
- function createIndexHTML() {
344
- const {
345
- tocElement,
346
- infoElement
347
- } = createNavigationElement();
348
- const title = getProjectTitle();
349
- const coverImage = getCoverImage();
350
- const navigationToggleScript = getNavigationToggleScript();
351
- const webWorkerScript = getWebWorkerScript();
352
- const headerElement = getHeaderElement();
353
- const styleBlock = getStyleBlock();
354
- const robotsMeta = _Template.default.robots(_State.default.config.private);
355
-
356
- // TODO: should get dynamic page template here to ensure asset hash on production build
357
- // @issue: https://github.com/triplecanopy/b-ber/issues/232
358
- const indexHTML = _Template.default.index(BASE_URL, robotsMeta, title, styleBlock, tocElement, infoElement, headerElement, coverImage, navigationToggleScript, webWorkerScript);
359
- return _fsExtra.default.writeFile(_path.default.resolve(DIST_PATH, 'index.html'), indexHTML);
360
- }
361
- const web = () => initialize().then(unlinkRedundantAssets)
362
-
363
- // Create search index
364
- .then(indexPageContent).then(writeJSONPageData)
365
-
366
- // move files to root directory and create an index.html
367
- .then(moveAssetsToRootDirctory).then(injectPageElementsIntoFiles).then(createIndexHTML)
368
-
369
- // write scripts into HTML files
370
- .then(importVendorScripts).then(writeWebpubManifest).then(writeWebWorker).catch(_bBerLogger.default.error);
371
- var _default = exports.default = web;
package/dist/xml/index.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.default = void 0;
9
- var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
10
- var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
11
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
12
- var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
13
- var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
14
- var _splice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/splice"));
15
- var _path = _interopRequireDefault(require("path"));
16
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
17
- var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
18
- var _isString = _interopRequireDefault(require("lodash/isString"));
19
- var _findIndex = _interopRequireDefault(require("lodash/findIndex"));
20
- var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
21
- var _HtmlToXml = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/HtmlToXml"));
22
- var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
23
- var _utils = require("@canopycanopycanopy/b-ber-lib/utils");
24
- const fileExtension = '.xhtml';
25
- const writeXML = str => {
26
- const cwd = process.cwd();
27
- const uuid = (0, _utils.getBookMetadata)('identifier', _State.default);
28
- const filePath = _path.default.join(cwd, `${uuid}.xml`);
29
- return _fsExtra.default.writeFile(filePath, str, 'utf8');
30
- };
31
- const parseHTMLFiles = files => new _promise.default(resolve => {
32
- const content = (0, _reduce.default)(files).call(files, (acc, curr) => {
33
- const filePath = (0, _isPlainObject.default)(curr) ? (0, _keys.default)(curr)[0] : (0, _isString.default)(curr) ? curr : null;
34
- if (!filePath) return acc;
35
- const data = _fsExtra.default.readFileSync(filePath, 'utf8');
36
- return (0, _concat.default)(acc).call(acc, `${data}`);
37
- }, []).join('<pagebreak></pagebreak>');
38
- const parser = new _HtmlToXml.default({
39
- content,
40
- onEndCallback: resolve
41
- });
42
- parser.parse();
43
- });
44
- const xml = () => {
45
- let files = [..._State.default.spine.flattened];
46
- const figuresTitlePageIndex = (0, _findIndex.default)(files, {
47
- fileName: 'figures-titlepage'
48
- });
49
- files = (0, _map.default)(files).call(files, entry => `${entry.absolutePath}${fileExtension}`);
50
- if (figuresTitlePageIndex > -1 && _State.default.loi.length) {
51
- var _context;
52
- const loi = (0, _map.default)(_context = _State.default.loi).call(_context, entry => entry.absolutePath);
53
- (0, _splice.default)(files).call(files, figuresTitlePageIndex + 1, 0, ...loi);
54
- }
55
- return parseHTMLFiles(files).then(writeXML).catch(_bBerLogger.default.error);
56
- };
57
- var _default = exports.default = xml;