@canopycanopycanopy/b-ber-lib 1.2.16 → 2.0.2

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/Config.js CHANGED
@@ -1,22 +1,16 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = void 0;
12
-
13
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
14
-
15
10
  var _defaultsDeep = _interopRequireDefault(require("lodash/defaultsDeep"));
16
-
17
11
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
18
-
19
12
  /* eslint-disable camelcase */
13
+
20
14
  class Config {
21
15
  constructor(options = {}) {
22
16
  (0, _defineProperty2.default)(this, "defaultOptions", {
@@ -49,7 +43,7 @@ class Config {
49
43
  private: false,
50
44
  ignore: [],
51
45
  autoprefixer_options: {
52
- overrideBrowserslist: ['last 2 versions', '> 2%'],
46
+ overrideBrowserslist: ['defaults', '> 1%', 'not dead', 'not IE 11'],
53
47
  flexbox: 'no-2009'
54
48
  },
55
49
  layout: 'columns',
@@ -60,8 +54,6 @@ class Config {
60
54
  const optionsClone = (0, _cloneDeep.default)(options);
61
55
  return (0, _defaultsDeep.default)(optionsClone, defaultOptionsClone);
62
56
  }
63
-
64
57
  }
65
-
66
58
  var _default = Config;
67
59
  exports.default = _default;
package/EbookConvert.js CHANGED
@@ -1,49 +1,28 @@
1
1
  "use strict";
2
2
 
3
- var _Object$defineProperty2 = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
-
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 _filterInstanceProperty = 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 _forEachInstanceProperty2 = 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");
5
11
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
6
-
7
- _Object$defineProperty2(exports, "__esModule", {
12
+ _Object$defineProperty(exports, "__esModule", {
8
13
  value: true
9
14
  });
10
-
11
15
  exports.default = void 0;
12
-
13
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
14
-
15
17
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
16
-
17
18
  var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
18
-
19
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
20
-
21
- var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols"));
22
-
23
- var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
24
-
25
- var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor"));
26
-
27
- var _getOwnPropertyDescriptors = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors"));
28
-
29
- var _defineProperties = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-properties"));
30
-
31
- var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-property"));
32
-
33
19
  var _path = _interopRequireDefault(require("path"));
34
-
35
20
  var _has = _interopRequireDefault(require("lodash/has"));
36
-
37
21
  var _child_process = require("child_process");
38
-
39
22
  var _commandExists = _interopRequireDefault(require("command-exists"));
40
-
41
23
  var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
42
-
43
- function ownKeys(object, enumerableOnly) { var keys = (0, _keys.default)(object); if (_getOwnPropertySymbols.default) { var symbols = (0, _getOwnPropertySymbols.default)(object); if (enumerableOnly) symbols = (0, _filter.default)(symbols).call(symbols, function (sym) { return (0, _getOwnPropertyDescriptor.default)(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
44
-
45
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; (0, _forEach.default)(_context = ownKeys(Object(source), true)).call(_context, function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (_getOwnPropertyDescriptors.default) { (0, _defineProperties.default)(target, (0, _getOwnPropertyDescriptors.default)(source)); } else { var _context2; (0, _forEach.default)(_context2 = ownKeys(Object(source))).call(_context2, function (key) { (0, _defineProperty3.default)(target, key, (0, _getOwnPropertyDescriptor.default)(source, key)); }); } } return target; }
46
-
24
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
25
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty2(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty2(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
47
26
  const command = 'ebook-convert';
48
27
  const defaults = {
49
28
  inputPath: null,
@@ -53,19 +32,16 @@ const defaults = {
53
32
  fileName: new Date().toISOString().replace(/:/g, '-'),
54
33
  flags: []
55
34
  };
56
-
57
35
  function checkForCalibre() {
58
36
  return new _promise.default((resolve, reject) => {
59
37
  (0, _commandExists.default)(command, (err, ok) => {
60
38
  if (err || !ok) {
61
39
  return reject(new Error("Error: calibre's ebook-convert must be installed. Download calibre here: https://calibre-ebook.com/"));
62
40
  }
63
-
64
41
  resolve();
65
42
  });
66
43
  });
67
44
  }
68
-
69
45
  function convertDocument({
70
46
  inputPath,
71
47
  bookPath,
@@ -82,7 +58,6 @@ function convertDocument({
82
58
  });
83
59
  });
84
60
  }
85
-
86
61
  function convert(options) {
87
62
  const props = ['inputPath', 'outputPath', 'fileType'];
88
63
  (0, _forEach.default)(props).call(props, prop => {
@@ -90,14 +65,11 @@ function convert(options) {
90
65
  throw new Error(`Missing required option [${prop}]`);
91
66
  }
92
67
  });
93
-
94
68
  const settings = _objectSpread(_objectSpread({}, defaults), options);
95
-
96
69
  const bookName = `${settings.fileName}.${settings.fileType.replace(/^\./, '')}`;
97
70
  settings.bookPath = `"${_path.default.resolve(settings.outputPath, bookName)}"`;
98
71
  return checkForCalibre().then(() => convertDocument(settings)).catch(_bBerLogger.default.error);
99
72
  }
100
-
101
73
  var _default = {
102
74
  convert
103
75
  };
package/GuideItem.js CHANGED
@@ -1,13 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
-
5
4
  _Object$defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
-
9
7
  exports.default = void 0;
10
-
11
8
  class GuideItem {
12
9
  constructor({
13
10
  fileName,
@@ -18,8 +15,6 @@ class GuideItem {
18
15
  this.title = title;
19
16
  this.type = type;
20
17
  }
21
-
22
18
  }
23
-
24
19
  var _default = GuideItem;
25
20
  exports.default = _default;
package/Html.js CHANGED
@@ -1,18 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
-
5
4
  _Object$defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
-
9
7
  exports.default = void 0;
10
-
11
8
  class Html {
12
9
  static comment(str) {
13
10
  return `\n<!-- ${str} -->\n`;
14
11
  }
15
-
16
12
  static escape(str) {
17
13
  const str_ = typeof str !== 'string' ? String(str) : str;
18
14
  const map = {
@@ -24,8 +20,6 @@ class Html {
24
20
  };
25
21
  return str_.replace(/[&<>"']/g, m => map[m]);
26
22
  }
27
-
28
23
  }
29
-
30
24
  var _default = Html;
31
25
  exports.default = _default;
package/HtmlToXml.js CHANGED
@@ -1,40 +1,26 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = void 0;
12
-
13
9
  var _bind = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/bind"));
14
-
15
10
  var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
16
-
17
11
  var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
18
-
19
12
  var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
20
-
21
13
  var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
22
-
23
14
  var _trim = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/trim"));
24
-
25
15
  var _path = _interopRequireDefault(require("path"));
26
-
27
16
  var _htmlparser = require("htmlparser2");
28
-
29
17
  var _State = _interopRequireDefault(require("./State"));
30
-
31
18
  class HtmlToXmlParser {
32
19
  constructor({
33
20
  content,
34
21
  onEndCallback
35
22
  }) {
36
23
  var _context, _context2, _context3, _context4;
37
-
38
24
  this.customElementNames = {
39
25
  pullquote: true,
40
26
  blockquote: true,
@@ -160,67 +146,51 @@ class HtmlToXmlParser {
160
146
  this.onclosetag = (0, _bind.default)(_context3 = this.onclosetag).call(_context3, this);
161
147
  this.onend = (0, _bind.default)(_context4 = this.onend).call(_context4, this);
162
148
  }
163
-
164
149
  writePageBreak() {
165
150
  this.output += '<pagebreak></pagebreak>';
166
151
  }
167
-
168
152
  writeXMLDeclaration() {
169
153
  this.output += '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
170
154
  }
171
-
172
155
  renameAttribute(name, attribute) {
173
156
  if (!this.elementAttributeNames[name]) return attribute;
174
157
  return this.elementAttributeNames[name][attribute] || attribute;
175
158
  }
176
-
177
159
  transformAttributeValue(name, attribute, value) {
178
160
  if (!this.elementAttributeTransformers[name] || !this.elementAttributeTransformers[name][attribute]) {
179
161
  return value;
180
162
  }
181
-
182
163
  return this.elementAttributeTransformers[name][attribute](value);
183
164
  }
184
-
185
165
  writeTagOpen(name, attributes = {}) {
186
166
  var _context5;
187
-
188
167
  let tag = [name];
189
168
  tag = (0, _reduce.default)(_context5 = (0, _entries.default)(attributes)).call(_context5, (acc, [key, val]) => this.whitelistedAttributes[key] ? (0, _concat.default)(acc).call(acc, `${this.renameAttribute(name, key)}="${this.transformAttributeValue(name, key, val)}"`) : acc, tag);
190
-
191
169
  if (attributes.class) {
192
170
  const classNames = new _set.default(attributes.class.split(' '));
193
-
194
171
  if (classNames.has('figure__large') && classNames.has('figure__inline') || classNames.has('gallery__item')) {
195
172
  this.writePageBreak();
196
173
  }
197
174
  }
198
-
199
175
  tag = tag.join(' ');
200
176
  this.output += `<${tag}>`;
201
177
  }
202
-
203
178
  writeTagClose(name) {
204
179
  this.output += `</${name}>`;
205
180
  if (!this.inlineElementNames[name]) this.output += '\n';
206
181
  }
207
-
208
182
  addTag(name) {
209
183
  this.tagList.push(name);
210
184
  }
211
-
212
185
  removeTag() {
213
186
  return this.tagList.pop();
214
187
  }
215
-
216
188
  getTag() {
217
189
  if (!this.tagList.length) return null;
218
190
  return this.tagList[this.tagList.length - 1];
219
191
  }
220
-
221
192
  onopentag(name, attributes = {}) {
222
193
  if (this.blacklistedTagNames[name]) return;
223
-
224
194
  if (name === 'body') {
225
195
  // Special case for body
226
196
  if (attributes.class) {
@@ -239,7 +209,6 @@ class HtmlToXmlParser {
239
209
  // Generic tag
240
210
  if (attributes.class) {
241
211
  const classNames = attributes.class.split(' ');
242
-
243
212
  for (let i = 0; i < classNames.length; i++) {
244
213
  if (this.customElementNames[classNames[i]]) {
245
214
  // eslint-disable-next-line no-param-reassign
@@ -248,28 +217,23 @@ class HtmlToXmlParser {
248
217
  }
249
218
  }
250
219
  }
251
-
252
220
  this.addTag(name);
253
221
  this.writeTagOpen(name, attributes);
254
222
  }
255
-
256
223
  ontext(text) {
257
224
  if (!(0, _trim.default)(text).call(text)) return;
258
225
  const name = this.getTag();
259
226
  if (!name || this.blacklistedTagNames[name]) return;
260
227
  this.output += text;
261
228
  }
262
-
263
229
  onclosetag() {
264
230
  const name = this.removeTag();
265
231
  if (name) this.writeTagClose(name);
266
232
  }
267
-
268
233
  onend() {
269
234
  this.writeTagClose('body');
270
235
  this.onEndCallback(this.output);
271
236
  }
272
-
273
237
  parse() {
274
238
  this.writeXMLDeclaration();
275
239
  this.writeTagOpen('body');
@@ -284,8 +248,6 @@ class HtmlToXmlParser {
284
248
  parser.write(this.content);
285
249
  parser.end();
286
250
  }
287
-
288
251
  }
289
-
290
252
  var _default = HtmlToXmlParser;
291
253
  exports.default = _default;
@@ -1,110 +1,89 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = void 0;
12
-
13
9
  var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
14
-
15
10
  var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
16
-
17
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
18
-
19
12
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
20
-
21
13
  var _mimeTypes = _interopRequireDefault(require("mime-types"));
22
-
23
14
  var _has = _interopRequireDefault(require("lodash/has"));
24
-
25
15
  var _bBerShapesDublinCore = require("@canopycanopycanopy/b-ber-shapes-dublin-core");
26
-
27
16
  // Class to detect XML media-type properties based on the content of XHTML documents
28
17
  class ManifestItemProperties {
29
18
  // Detect if a file is an (X)HTML document
30
19
  static isHTML(file) {
31
20
  var _context;
32
-
33
21
  return (0, _includes.default)(_context = ManifestItemProperties.HTMLMimeTypes).call(_context, _mimeTypes.default.lookup(file.absolutePath));
34
- } // Detect if a file is an ePub navigation document
35
-
22
+ }
36
23
 
24
+ // Detect if a file is an ePub navigation document
37
25
  static isNav(file) {
38
26
  return ManifestItemProperties.isHTML(file) && /^toc\./.test(file.name);
39
- } // Detect if an XHTML file contains JavaScript
40
-
27
+ }
41
28
 
29
+ // Detect if an XHTML file contains JavaScript
42
30
  static isScripted(file) {
43
- if (!ManifestItemProperties.isHTML(file)) return false; // TODO: fixme; we need to check if the toc.xhtml is scripted, but it
31
+ if (!ManifestItemProperties.isHTML(file)) return false;
32
+
33
+ // TODO: fixme; we need to check if the toc.xhtml is scripted, but it
44
34
  // hasn't been written to disk yet. checking right now against the
45
35
  // results from `state.template.dynamicTail` for now, since we know
46
36
  // that the toc was written using that
47
37
  // @issue: https://github.com/triplecanopy/b-ber/issues/206
48
-
49
38
  if (ManifestItemProperties.isNav(file)) return true;
50
-
51
39
  const contents = _fsExtra.default.readFileSync(file.absolutePath, 'utf8');
52
-
53
40
  return contents.match(/<script/) !== null;
54
- } // Detect if an XHTML file contains SVG
55
-
41
+ }
56
42
 
43
+ // Detect if an XHTML file contains SVG
57
44
  static isSVG(file) {
58
45
  if (!ManifestItemProperties.isHTML(file)) return false;
59
-
60
46
  const contents = _fsExtra.default.readFileSync(file.absolutePath, 'utf8');
61
-
62
47
  return contents.match(/<svg/) !== null;
63
- } // Detect if a term is a Dublin Core `element`
64
-
48
+ }
65
49
 
50
+ // Detect if a term is a Dublin Core `element`
66
51
  static isDCElement(data) {
67
52
  return (0, _has.default)(data, 'term') && (0, _indexOf.default)(_bBerShapesDublinCore.elements).call(_bBerShapesDublinCore.elements, data.term) > -1;
68
- } // Detect if a term is a Dublin Core `term`
69
-
53
+ }
70
54
 
55
+ // Detect if a term is a Dublin Core `term`
71
56
  static isDCTerm(data) {
72
57
  return (0, _has.default)(data, 'term') && (0, _indexOf.default)(_bBerShapesDublinCore.terms).call(_bBerShapesDublinCore.terms, data.term) > -1;
73
- } // Detect if an XHTML file contains remote resources
74
-
58
+ }
75
59
 
60
+ // Detect if an XHTML file contains remote resources
76
61
  static hasRemoteResources(file) {
77
62
  if (!ManifestItemProperties.isHTML(file)) return false;
78
-
79
63
  const contents = _fsExtra.default.readFileSync(file.absolutePath, 'utf8');
80
-
81
64
  return contents.match(/src=(?:['"]{1})?(?:http|\/\/)/) !== null;
82
- } // Test if an XHTML file is a navigation document, contains JavaScript or SVG
83
-
65
+ }
84
66
 
67
+ // Test if an XHTML file is a navigation document, contains JavaScript or SVG
85
68
  static testHTML(file) {
86
69
  const props = [];
87
70
  if (ManifestItemProperties.isNav(file)) props.push('nav');
88
71
  if (ManifestItemProperties.isScripted(file)) props.push('scripted');
89
72
  if (ManifestItemProperties.isSVG(file)) props.push('svg');
90
-
91
73
  if (ManifestItemProperties.hasRemoteResources(file)) {
92
74
  props.push('remote-resources');
93
75
  }
94
-
95
76
  return props;
96
- } // Test if an object contains Dublin Core `term`s or `element`s
97
-
77
+ }
98
78
 
79
+ // Test if an object contains Dublin Core `term`s or `element`s
99
80
  static testMeta(data) {
100
81
  return {
101
82
  term: ManifestItemProperties.isDCTerm(data),
102
83
  element: ManifestItemProperties.isDCElement(data)
103
84
  };
104
85
  }
105
-
106
86
  }
107
-
108
87
  (0, _defineProperty2.default)(ManifestItemProperties, "HTMLMimeTypes", ['text/html', 'application/xhtml+xml']);
109
88
  var _default = ManifestItemProperties;
110
89
  exports.default = _default;