@canopycanopycanopy/b-ber-lib 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.
- package/EbookConvert.js +2 -75
- package/Html.js +2 -24
- package/HtmlToXml.js +2 -252
- package/ManifestItemProperties.js +2 -88
- package/README.md +22 -4
- package/State.js +2 -398
- package/Theme.js +2 -171
- package/YamlAdaptor.js +2 -41
- package/dist/index.d.ts +364 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1372 -0
- package/package.json +24 -31
- package/utils.js +2 -0
- package/Config.js +0 -58
- package/GuideItem.js +0 -19
- package/Spine.js +0 -133
- package/SpineItem.js +0 -53
- package/Template.js +0 -20
- package/Url.js +0 -42
- package/Yaml.js +0 -174
- package/index.js +0 -98
- package/utils/index.js +0 -285
package/State.js
CHANGED
|
@@ -1,398 +1,2 @@
|
|
|
1
|
-
|
|
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 _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");
|
|
11
|
-
var _Symbol$toPrimitive = require("@babel/runtime-corejs3/core-js-stable/symbol/to-primitive");
|
|
12
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
13
|
-
_Object$defineProperty(exports, "__esModule", {
|
|
14
|
-
value: true
|
|
15
|
-
});
|
|
16
|
-
exports.default = void 0;
|
|
17
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
|
18
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
19
|
-
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
20
|
-
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
|
21
|
-
var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
|
|
22
|
-
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
23
|
-
var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
|
|
24
|
-
var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
|
|
25
|
-
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
26
|
-
var _crypto = _interopRequireDefault(require("crypto"));
|
|
27
|
-
var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
|
|
28
|
-
var _isArray = _interopRequireDefault(require("lodash/isArray"));
|
|
29
|
-
var _find = _interopRequireDefault(require("lodash/find"));
|
|
30
|
-
var _findIndex = _interopRequireDefault(require("lodash/findIndex"));
|
|
31
|
-
var _set2 = _interopRequireDefault(require("lodash/set"));
|
|
32
|
-
var _get = _interopRequireDefault(require("lodash/get"));
|
|
33
|
-
var _has = _interopRequireDefault(require("lodash/has"));
|
|
34
|
-
var _merge = _interopRequireDefault(require("lodash/merge"));
|
|
35
|
-
var _remove = _interopRequireDefault(require("lodash/remove"));
|
|
36
|
-
var _path = _interopRequireDefault(require("path"));
|
|
37
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
38
|
-
var _mimeTypes = _interopRequireDefault(require("mime-types"));
|
|
39
|
-
var _bBerThemeSerif = _interopRequireDefault(require("@canopycanopycanopy/b-ber-theme-serif"));
|
|
40
|
-
var _bBerThemeSans = _interopRequireDefault(require("@canopycanopycanopy/b-ber-theme-sans"));
|
|
41
|
-
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
42
|
-
var _Yaml = _interopRequireDefault(require("./Yaml"));
|
|
43
|
-
var _Config = _interopRequireDefault(require("./Config"));
|
|
44
|
-
var _Spine = _interopRequireDefault(require("./Spine"));
|
|
45
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
46
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[_Symbol$toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
47
|
-
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; }
|
|
48
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context4, _context5; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty2(_context4 = ownKeys(Object(t), !0)).call(_context4, function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty2(_context5 = ownKeys(Object(t))).call(_context5, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; } /* eslint-disable no-continue */
|
|
49
|
-
const themes = {
|
|
50
|
-
'b-ber-theme-serif': _bBerThemeSerif.default,
|
|
51
|
-
'b-ber-theme-sans': _bBerThemeSans.default
|
|
52
|
-
};
|
|
53
|
-
const randomHash = () => _crypto.default.randomBytes(20).toString('hex');
|
|
54
|
-
const skipInitialization = () => {
|
|
55
|
-
const {
|
|
56
|
-
argv
|
|
57
|
-
} = process;
|
|
58
|
-
|
|
59
|
-
// prettier-ignore
|
|
60
|
-
return (0, _includes.default)(argv).call(argv, '--help') ||
|
|
61
|
-
// if a help flag is set
|
|
62
|
-
(0, _includes.default)(argv).call(argv, '-h') ||
|
|
63
|
-
// if a help alias is set
|
|
64
|
-
argv.length < 3 ||
|
|
65
|
-
// if there are insufficient arguments
|
|
66
|
-
(0, _includes.default)(argv).call(argv, 'new') // if it's a new project
|
|
67
|
-
;
|
|
68
|
-
};
|
|
69
|
-
const SRC_DIR_IMAGES = '_images';
|
|
70
|
-
const SRC_DIR_MARKDOWN = '_markdown';
|
|
71
|
-
const SRC_DIR_STYLESHEETS = '_stylesheets';
|
|
72
|
-
const SRC_DIR_JAVASCRIPTS = '_javascripts';
|
|
73
|
-
const SRC_DIR_FONTS = '_fonts';
|
|
74
|
-
const SRC_DIR_MEDIA = '_media';
|
|
75
|
-
const DIST_DIR_OPS = 'OPS';
|
|
76
|
-
const DIST_DIR_TEXT = 'text';
|
|
77
|
-
const DIST_DIR_IMAGES = 'images';
|
|
78
|
-
const DIST_DIR_STYLESHEETS = 'stylesheets';
|
|
79
|
-
const DIST_DIR_JAVASCRIPTS = 'javascripts';
|
|
80
|
-
const DIST_DIR_FONTS = 'fonts';
|
|
81
|
-
const DIST_DIR_MEDIA = 'media';
|
|
82
|
-
class State {
|
|
83
|
-
static get defaults() {
|
|
84
|
-
return {
|
|
85
|
-
build: 'epub',
|
|
86
|
-
sequence: [],
|
|
87
|
-
hash: randomHash()
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
get spine() {
|
|
91
|
-
return this.builds[this.build].spine;
|
|
92
|
-
}
|
|
93
|
-
set spine(val) {
|
|
94
|
-
this.builds[this.build].spine = val;
|
|
95
|
-
}
|
|
96
|
-
get guide() {
|
|
97
|
-
return this.builds[this.build].guide;
|
|
98
|
-
}
|
|
99
|
-
set guide(val) {
|
|
100
|
-
this.builds[this.build].guide = val;
|
|
101
|
-
}
|
|
102
|
-
get figures() {
|
|
103
|
-
return this.builds[this.build].figures;
|
|
104
|
-
}
|
|
105
|
-
set figures(val) {
|
|
106
|
-
this.builds[this.build].figures = val;
|
|
107
|
-
}
|
|
108
|
-
get footnotes() {
|
|
109
|
-
return this.builds[this.build].footnotes;
|
|
110
|
-
}
|
|
111
|
-
set footnotes(val) {
|
|
112
|
-
this.builds[this.build].footnotes = val;
|
|
113
|
-
}
|
|
114
|
-
get cursor() {
|
|
115
|
-
return this.builds[this.build].cursor;
|
|
116
|
-
}
|
|
117
|
-
set cursor(val) {
|
|
118
|
-
this.builds[this.build].cursor = val;
|
|
119
|
-
}
|
|
120
|
-
get toc() {
|
|
121
|
-
return this.builds[this.build].toc;
|
|
122
|
-
}
|
|
123
|
-
set toc(val) {
|
|
124
|
-
this.builds[this.build].toc = val;
|
|
125
|
-
}
|
|
126
|
-
get remoteAssets() {
|
|
127
|
-
return this.builds[this.build].remoteAssets;
|
|
128
|
-
}
|
|
129
|
-
set remoteAssets(val) {
|
|
130
|
-
this.builds[this.build].remoteAssets = val;
|
|
131
|
-
}
|
|
132
|
-
get loi() {
|
|
133
|
-
return this.builds[this.build].loi;
|
|
134
|
-
}
|
|
135
|
-
set loi(val) {
|
|
136
|
-
this.builds[this.build].loi = val;
|
|
137
|
-
}
|
|
138
|
-
get srcDir() {
|
|
139
|
-
return this.config.src;
|
|
140
|
-
}
|
|
141
|
-
set srcDir(val) {
|
|
142
|
-
this.config.src = val;
|
|
143
|
-
}
|
|
144
|
-
get distDir() {
|
|
145
|
-
if (this.build && this.builds && this.builds[this.build]) {
|
|
146
|
-
return this.builds[this.build].dist;
|
|
147
|
-
}
|
|
148
|
-
return this.config.dist;
|
|
149
|
-
}
|
|
150
|
-
set distDir(val) {
|
|
151
|
-
this.config.dist = val;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// eslint-disable-next-line class-methods-use-this
|
|
155
|
-
get env() {
|
|
156
|
-
return process.env.NODE_ENV || 'development';
|
|
157
|
-
}
|
|
158
|
-
set env(val) {
|
|
159
|
-
this.config.env = val;
|
|
160
|
-
}
|
|
161
|
-
constructor() {
|
|
162
|
-
(0, _defineProperty2.default)(this, "metadata", {
|
|
163
|
-
json: () => [{}]
|
|
164
|
-
});
|
|
165
|
-
// mocks the YAML api
|
|
166
|
-
(0, _defineProperty2.default)(this, "theme", {});
|
|
167
|
-
(0, _defineProperty2.default)(this, "video", []);
|
|
168
|
-
(0, _defineProperty2.default)(this, "audio", []);
|
|
169
|
-
(0, _defineProperty2.default)(this, "media", {});
|
|
170
|
-
(0, _defineProperty2.default)(this, "build", 'epub');
|
|
171
|
-
(0, _defineProperty2.default)(this, "sequence", []);
|
|
172
|
-
(0, _defineProperty2.default)(this, "hash", randomHash());
|
|
173
|
-
(0, _defineProperty2.default)(this, "builds", {
|
|
174
|
-
sample: {},
|
|
175
|
-
epub: {},
|
|
176
|
-
mobi: {},
|
|
177
|
-
pdf: {},
|
|
178
|
-
web: {},
|
|
179
|
-
reader: {}
|
|
180
|
-
});
|
|
181
|
-
(0, _defineProperty2.default)(this, "src", {
|
|
182
|
-
root: (...args) => _path.default.join(this.srcDir, ...args),
|
|
183
|
-
images: (...args) => _path.default.join(this.srcDir, SRC_DIR_IMAGES, ...args),
|
|
184
|
-
markdown: (...args) => _path.default.join(this.srcDir, SRC_DIR_MARKDOWN, ...args),
|
|
185
|
-
stylesheets: (...args) => _path.default.join(this.srcDir, SRC_DIR_STYLESHEETS, ...args),
|
|
186
|
-
javascripts: (...args) => _path.default.join(this.srcDir, SRC_DIR_JAVASCRIPTS, ...args),
|
|
187
|
-
fonts: (...args) => _path.default.join(this.srcDir, SRC_DIR_FONTS, ...args),
|
|
188
|
-
media: (...args) => _path.default.join(this.srcDir, SRC_DIR_MEDIA, ...args)
|
|
189
|
-
});
|
|
190
|
-
(0, _defineProperty2.default)(this, "dist", {
|
|
191
|
-
root: (...args) => _path.default.join(this.distDir, ...args),
|
|
192
|
-
ops: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, ...args),
|
|
193
|
-
text: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, DIST_DIR_TEXT, ...args),
|
|
194
|
-
images: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, DIST_DIR_IMAGES, ...args),
|
|
195
|
-
stylesheets: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, DIST_DIR_STYLESHEETS, ...args),
|
|
196
|
-
javascripts: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, DIST_DIR_JAVASCRIPTS, ...args),
|
|
197
|
-
fonts: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, DIST_DIR_FONTS, ...args),
|
|
198
|
-
media: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, DIST_DIR_MEDIA, ...args)
|
|
199
|
-
});
|
|
200
|
-
(0, _defineProperty2.default)(this, "reset", () => {
|
|
201
|
-
var _context;
|
|
202
|
-
(0, _forEach.default)(_context = (0, _entries.default)(State.defaults)).call(_context, ([key, val]) => (0, _set2.default)(this, key, val));
|
|
203
|
-
this.loadConfig();
|
|
204
|
-
});
|
|
205
|
-
(0, _defineProperty2.default)(this, "add", (prop, value) => {
|
|
206
|
-
const prevValue = (0, _get.default)(this, prop);
|
|
207
|
-
if ((0, _isArray.default)(prevValue)) {
|
|
208
|
-
(0, _set2.default)(this, prop, [...prevValue, value]);
|
|
209
|
-
} else if ((0, _isPlainObject.default)(prevValue)) {
|
|
210
|
-
(0, _set2.default)(this, prop, _objectSpread(_objectSpread({}, prevValue), {}, {
|
|
211
|
-
value
|
|
212
|
-
}));
|
|
213
|
-
} else if (typeof prevValue === 'string') {
|
|
214
|
-
(0, _set2.default)(this, prop, `${prevValue}${value}`);
|
|
215
|
-
} else {
|
|
216
|
-
_bBerLogger.default.error(`Cannot add [${value}] to [state.${prop}]`);
|
|
217
|
-
}
|
|
218
|
-
});
|
|
219
|
-
(0, _defineProperty2.default)(this, "remove", (prop, value) => {
|
|
220
|
-
const prevValue = (0, _get.default)(this, prop);
|
|
221
|
-
if ((0, _isArray.default)(prevValue)) {
|
|
222
|
-
const arr = [...prevValue];
|
|
223
|
-
(0, _remove.default)(arr, value);
|
|
224
|
-
(0, _set2.default)(this, prop, arr);
|
|
225
|
-
} else if ((0, _isPlainObject.default)(prevValue)) {
|
|
226
|
-
var _context2;
|
|
227
|
-
const {
|
|
228
|
-
[value]: _
|
|
229
|
-
} = prevValue,
|
|
230
|
-
rest = (0, _objectWithoutProperties2.default)(prevValue, (0, _map.default)(_context2 = [value]).call(_context2, _toPropertyKey)); // eslint-disable-line no-unused-vars
|
|
231
|
-
(0, _set2.default)(this, prop, rest);
|
|
232
|
-
} else {
|
|
233
|
-
_bBerLogger.default.error(`Cannot remove [${value}] from [state.${prop}]`);
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
(0, _defineProperty2.default)(this, "merge", (prop, value) => {
|
|
237
|
-
const oldValue = (0, _get.default)(this, prop);
|
|
238
|
-
(0, _set2.default)(this, prop, (0, _merge.default)(oldValue, value));
|
|
239
|
-
});
|
|
240
|
-
(0, _defineProperty2.default)(this, "update", (prop, val) => {
|
|
241
|
-
(0, _set2.default)(this, prop, val);
|
|
242
|
-
});
|
|
243
|
-
(0, _defineProperty2.default)(this, "has", prop => {
|
|
244
|
-
return (0, _has.default)(this, prop);
|
|
245
|
-
});
|
|
246
|
-
(0, _defineProperty2.default)(this, "contains", (coll, value) => {
|
|
247
|
-
var _context3;
|
|
248
|
-
return (0, _indexOf.default)(_context3 = this).call(_context3, coll, value) > -1;
|
|
249
|
-
});
|
|
250
|
-
(0, _defineProperty2.default)(this, "find", (coll, pred) => {
|
|
251
|
-
const collection = (0, _get.default)(this, coll);
|
|
252
|
-
return (0, _find.default)(collection, pred);
|
|
253
|
-
});
|
|
254
|
-
(0, _defineProperty2.default)(this, "indexOf", (coll, pred) => {
|
|
255
|
-
const collection = (0, _get.default)(this, coll);
|
|
256
|
-
return (0, _findIndex.default)(collection, pred);
|
|
257
|
-
});
|
|
258
|
-
(0, _defineProperty2.default)(this, "loadConfig", () => {
|
|
259
|
-
if (!_fsExtra.default.existsSync(_path.default.resolve('config.yml'))) return;
|
|
260
|
-
const config = new _Yaml.default('config');
|
|
261
|
-
config.load(_path.default.resolve('config.yml'));
|
|
262
|
-
|
|
263
|
-
// not necessary right now to pass around a YAWN instance since we'er
|
|
264
|
-
// not writing back to config.yml, but may be necessary at some point
|
|
265
|
-
(0, _set2.default)(this, 'config', new _Config.default(config.json()));
|
|
266
|
-
});
|
|
267
|
-
(0, _defineProperty2.default)(this, "loadMetadata", () => {
|
|
268
|
-
const fpath = _path.default.resolve(this.config.src, 'metadata.yml');
|
|
269
|
-
if (!_fsExtra.default.existsSync(fpath)) return;
|
|
270
|
-
(0, _set2.default)(this, 'metadata', new _Yaml.default('metadata'));
|
|
271
|
-
this.metadata.load(fpath);
|
|
272
|
-
});
|
|
273
|
-
(0, _defineProperty2.default)(this, "loadMedia", () => {
|
|
274
|
-
const fpath = _path.default.resolve(this.config.src, 'media.yml');
|
|
275
|
-
if (!_fsExtra.default.existsSync(fpath)) return;
|
|
276
|
-
let media = new _Yaml.default('media');
|
|
277
|
-
media.load(fpath);
|
|
278
|
-
media = media.json();
|
|
279
|
-
(0, _set2.default)(this, 'media', media);
|
|
280
|
-
});
|
|
281
|
-
(0, _defineProperty2.default)(this, "loadTheme", () => {
|
|
282
|
-
// Ensure themes dir exists unless running `new` command, as it's the
|
|
283
|
-
// only command that's run outside of a project directory
|
|
284
|
-
if (skipInitialization()) return;
|
|
285
|
-
const userThemesPath = _path.default.resolve(this.config.themes_directory);
|
|
286
|
-
_fsExtra.default.ensureDirSync(userThemesPath);
|
|
287
|
-
|
|
288
|
-
// Add modules path that references the current b-ber project's theme dir
|
|
289
|
-
module.paths.push(userThemesPath);
|
|
290
|
-
const cwd = process.cwd();
|
|
291
|
-
const cwdArr = cwd.split('/');
|
|
292
|
-
const modulePaths = new _set.default([...module.paths]);
|
|
293
|
-
let cwdPath;
|
|
294
|
-
|
|
295
|
-
// Add modules paths that reference the current b-ber project
|
|
296
|
-
do {
|
|
297
|
-
cwdPath = `${cwdArr.join('/')}/node_modules`;
|
|
298
|
-
if (modulePaths.has(cwdPath)) continue;
|
|
299
|
-
module.paths.push(cwdPath);
|
|
300
|
-
} while (cwdArr.pop());
|
|
301
|
-
|
|
302
|
-
// Theme is set, using a built-in theme
|
|
303
|
-
if (themes[this.config.theme]) {
|
|
304
|
-
(0, _set2.default)(this, 'theme', themes[this.config.theme]);
|
|
305
|
-
_bBerLogger.default.info(`Loaded theme [${this.config.theme}]`);
|
|
306
|
-
return;
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
// Possibly a user defined theme, or one installed with npm
|
|
310
|
-
try {
|
|
311
|
-
// eslint-disable-next-line global-require, import/no-dynamic-require
|
|
312
|
-
(0, _set2.default)(this, 'theme', require(this.config.theme));
|
|
313
|
-
_bBerLogger.default.info(`Loaded theme [${this.config.theme}]`);
|
|
314
|
-
} catch (err) {
|
|
315
|
-
_bBerLogger.default.warn(`There was an error during require [${this.config.theme}]`);
|
|
316
|
-
_bBerLogger.default.warn('Using default theme [b-ber-theme-serif]');
|
|
317
|
-
_bBerLogger.default.warn(err.message);
|
|
318
|
-
|
|
319
|
-
// Error loading theme, set to default
|
|
320
|
-
(0, _set2.default)(this, 'theme', themes['b-ber-theme-serif']);
|
|
321
|
-
}
|
|
322
|
-
});
|
|
323
|
-
(0, _defineProperty2.default)(this, "loadAudioVideo", () => {
|
|
324
|
-
if (skipInitialization()) return;
|
|
325
|
-
const mediaPath = _path.default.resolve(this.config.src, '_media');
|
|
326
|
-
_fsExtra.default.ensureDirSync(mediaPath);
|
|
327
|
-
const media = _fsExtra.default.readdirSync(mediaPath);
|
|
328
|
-
const video = (0, _filter.default)(media).call(media, a => /^video/.test(_mimeTypes.default.lookup(a)));
|
|
329
|
-
const audio = (0, _filter.default)(media).call(media, a => /^audio/.test(_mimeTypes.default.lookup(a)));
|
|
330
|
-
(0, _set2.default)(this, 'video', video);
|
|
331
|
-
(0, _set2.default)(this, 'audio', audio);
|
|
332
|
-
});
|
|
333
|
-
(0, _defineProperty2.default)(this, "loadBuildSettings", type => {
|
|
334
|
-
if (skipInitialization()) return;
|
|
335
|
-
const {
|
|
336
|
-
src,
|
|
337
|
-
dist
|
|
338
|
-
} = this.config;
|
|
339
|
-
const projectDir = _path.default.resolve(src);
|
|
340
|
-
if (!_fsExtra.default.existsSync(projectDir)) _bBerLogger.default.error(`Project directory [${projectDir}] does not exist`);
|
|
341
|
-
|
|
342
|
-
// One TOC to rule them all (toc.yml). A user can override the TOC for a
|
|
343
|
-
// specific build by including a <type>.yml file, which will be loaded
|
|
344
|
-
// instead of toc.yml below.
|
|
345
|
-
const navigationConfigFileDefaultPath = _path.default.resolve(src, 'toc.yml');
|
|
346
|
-
const navigationConfigFilePath = _path.default.resolve(src, `${type}.yml`);
|
|
347
|
-
const navigationConfigFile = _fsExtra.default.existsSync(navigationConfigFilePath) ? navigationConfigFilePath : navigationConfigFileDefaultPath;
|
|
348
|
-
const spine = new _Spine.default({
|
|
349
|
-
src,
|
|
350
|
-
buildType: type,
|
|
351
|
-
navigationConfigFile
|
|
352
|
-
});
|
|
353
|
-
|
|
354
|
-
// Build-specific config. gets merged into base config during build step
|
|
355
|
-
const config = this.config[type] ? _objectSpread({}, this.config[type]) : {};
|
|
356
|
-
return {
|
|
357
|
-
src,
|
|
358
|
-
dist: `${dist}-${type}`,
|
|
359
|
-
config,
|
|
360
|
-
guide: [],
|
|
361
|
-
spine,
|
|
362
|
-
toc: spine.nested,
|
|
363
|
-
cursor: [],
|
|
364
|
-
figures: [],
|
|
365
|
-
footnotes: [],
|
|
366
|
-
remoteAssets: [],
|
|
367
|
-
loi: []
|
|
368
|
-
};
|
|
369
|
-
});
|
|
370
|
-
(0, _defineProperty2.default)(this, "loadBuilds", () => {
|
|
371
|
-
const builds = ['sample', 'epub', 'mobi', 'pdf', 'web', 'reader', 'xml'];
|
|
372
|
-
(0, _forEach.default)(builds).call(builds, build => (0, _set2.default)(this.builds, build, this.loadBuildSettings(build)));
|
|
373
|
-
});
|
|
374
|
-
let version;
|
|
375
|
-
|
|
376
|
-
// for testing, since our directory structure is different in dist
|
|
377
|
-
try {
|
|
378
|
-
;
|
|
379
|
-
({
|
|
380
|
-
version
|
|
381
|
-
} = _fsExtra.default.readJSONSync(require.resolve('./package.json')));
|
|
382
|
-
} catch (err) {
|
|
383
|
-
;
|
|
384
|
-
({
|
|
385
|
-
version
|
|
386
|
-
} = _fsExtra.default.readJSONSync(require.resolve('../package.json')));
|
|
387
|
-
}
|
|
388
|
-
(0, _set2.default)(this, 'version', version);
|
|
389
|
-
(0, _set2.default)(this, 'config', new _Config.default());
|
|
390
|
-
this.reset();
|
|
391
|
-
this.loadMetadata();
|
|
392
|
-
this.loadAudioVideo();
|
|
393
|
-
this.loadMedia();
|
|
394
|
-
this.loadBuilds();
|
|
395
|
-
this.loadTheme();
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
var _default = exports.default = new State();
|
|
1
|
+
'use strict';
|
|
2
|
+
module.exports = require('./dist/index.js').State;
|
package/Theme.js
CHANGED
|
@@ -1,171 +1,2 @@
|
|
|
1
|
-
|
|
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
10
|
-
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
|
|
11
|
-
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
12
|
-
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
13
|
-
var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
|
|
14
|
-
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
15
|
-
var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
|
|
16
|
-
var _lastIndexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/last-index-of"));
|
|
17
|
-
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
18
|
-
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
19
|
-
var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
|
|
20
|
-
var _path = _interopRequireDefault(require("path"));
|
|
21
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
22
|
-
var _lodash = require("lodash");
|
|
23
|
-
var _bBerThemeSerif = _interopRequireDefault(require("@canopycanopycanopy/b-ber-theme-serif"));
|
|
24
|
-
var _bBerThemeSans = _interopRequireDefault(require("@canopycanopycanopy/b-ber-theme-sans"));
|
|
25
|
-
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
26
|
-
var _YamlAdaptor = _interopRequireDefault(require("./YamlAdaptor"));
|
|
27
|
-
var _State = _interopRequireDefault(require("./State"));
|
|
28
|
-
var _utils = require("./utils");
|
|
29
|
-
/* eslint-disable no-continue */
|
|
30
|
-
/* eslint-disable global-require, import/no-dynamic-require */
|
|
31
|
-
|
|
32
|
-
const defaultThemes = {
|
|
33
|
-
'b-ber-theme-serif': _bBerThemeSerif.default,
|
|
34
|
-
'b-ber-theme-sans': _bBerThemeSans.default
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
// get any themes installed via npm.
|
|
38
|
-
const getVendorThemes = () => {
|
|
39
|
-
const packageJSON = _path.default.resolve('package.json');
|
|
40
|
-
if (!_fsExtra.default.existsSync(packageJSON)) return [];
|
|
41
|
-
let themes = [];
|
|
42
|
-
let {
|
|
43
|
-
dependencies,
|
|
44
|
-
devDependencies
|
|
45
|
-
} = _fsExtra.default.readJSONSync(packageJSON);
|
|
46
|
-
dependencies = dependencies ? (0, _keys.default)(dependencies) : [];
|
|
47
|
-
devDependencies = devDependencies ? (0, _keys.default)(devDependencies) : [];
|
|
48
|
-
themes = (0, _concat.default)(themes).call(themes, dependencies, devDependencies);
|
|
49
|
-
themes = (0, _filter.default)(themes).call(themes, name => /^b-ber-theme/.test(name));
|
|
50
|
-
return themes;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
// gets themes from the project/themes dir
|
|
54
|
-
const getUserThemes = () => {
|
|
55
|
-
var _context;
|
|
56
|
-
const dir = _path.default.resolve(_State.default.config.themes_directory);
|
|
57
|
-
if (!_fsExtra.default.existsSync(dir)) {
|
|
58
|
-
_bBerLogger.default.warn(`Themes directory [${_path.default.basename(dir)}] does not exist`);
|
|
59
|
-
return [];
|
|
60
|
-
}
|
|
61
|
-
return (0, _reduce.default)(_context = _fsExtra.default.readdirSync(dir)).call(_context, (acc, curr) => _fsExtra.default.lstatSync(_path.default.resolve(dir, curr)).isDirectory() ? (0, _concat.default)(acc).call(acc, curr) : acc, []);
|
|
62
|
-
};
|
|
63
|
-
const getThemeList = (themes, current = '') => {
|
|
64
|
-
var _context2;
|
|
65
|
-
const themes_ = (0, _lodash.uniq)(themes);
|
|
66
|
-
const duplicates = [];
|
|
67
|
-
const text = (0, _slice.default)(_context2 = (0, _reduce.default)(themes_).call(themes_, (acc, curr) => {
|
|
68
|
-
let curr_ = `${current === curr ? '✓' : '○'} ${curr}`;
|
|
69
|
-
if ((0, _indexOf.default)(themes).call(themes, curr) !== (0, _lastIndexOf.default)(themes).call(themes, curr)) {
|
|
70
|
-
duplicates.push(curr);
|
|
71
|
-
curr_ += ' [(duplicate)]';
|
|
72
|
-
}
|
|
73
|
-
curr_ += '\n';
|
|
74
|
-
return (0, _concat.default)(acc).call(acc, curr_);
|
|
75
|
-
}, '')).call(_context2, 0, -1); // remove trailing newline
|
|
76
|
-
|
|
77
|
-
return {
|
|
78
|
-
text,
|
|
79
|
-
duplicates
|
|
80
|
-
};
|
|
81
|
-
};
|
|
82
|
-
const getThemes = () => {
|
|
83
|
-
const current = _State.default.config.theme ? _State.default.config.theme : '';
|
|
84
|
-
const userThemes = getUserThemes();
|
|
85
|
-
const vendorThemes = getVendorThemes();
|
|
86
|
-
const themes = [...(0, _keys.default)(defaultThemes), ...userThemes, ...vendorThemes];
|
|
87
|
-
return {
|
|
88
|
-
current,
|
|
89
|
-
themes
|
|
90
|
-
};
|
|
91
|
-
};
|
|
92
|
-
const createProjectThemeDirectory = name => _fsExtra.default.mkdirp(_path.default.resolve(_State.default.config.src, '_stylesheets', name)).catch(_bBerLogger.default.error);
|
|
93
|
-
const copyThemeAssets = theme => {
|
|
94
|
-
const themePath = _path.default.dirname(theme.entry);
|
|
95
|
-
const themeSettings = _path.default.join(themePath, '_settings.scss');
|
|
96
|
-
const settingsPath = _path.default.resolve(_State.default.src.stylesheets(theme.name, '_settings.scss'));
|
|
97
|
-
const overridesPath = _path.default.resolve(_State.default.src.stylesheets(theme.name, '_overrides.scss'));
|
|
98
|
-
const fontsPath = _path.default.resolve(_State.default.src.fonts());
|
|
99
|
-
const imagesPath = _path.default.resolve(_State.default.src.images());
|
|
100
|
-
return _fsExtra.default.copy(themeSettings, settingsPath, {
|
|
101
|
-
overwrite: false
|
|
102
|
-
}).then((0, _utils.safeWrite)(overridesPath, '')).then(() => {
|
|
103
|
-
var _context3;
|
|
104
|
-
if (!theme.fonts.length) return;
|
|
105
|
-
const promises = (0, _map.default)(_context3 = theme.fonts).call(_context3, font => {
|
|
106
|
-
const fontPath = _path.default.join(themePath, 'fonts', font);
|
|
107
|
-
return _fsExtra.default.copy(fontPath, _path.default.join(fontsPath, font), {
|
|
108
|
-
overwrite: false
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
return _promise.default.all(promises);
|
|
112
|
-
}).then(() => {
|
|
113
|
-
var _context4;
|
|
114
|
-
if (!theme.images.length) return;
|
|
115
|
-
const promises = (0, _map.default)(_context4 = theme.images).call(_context4, image => {
|
|
116
|
-
const imagePath = _path.default.join(themePath, 'images', image);
|
|
117
|
-
return _fsExtra.default.copy(imagePath, _path.default.join(imagesPath, image), {
|
|
118
|
-
overwrite: false
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
return _promise.default.all(promises);
|
|
122
|
-
});
|
|
123
|
-
};
|
|
124
|
-
const updateConfig = name => {
|
|
125
|
-
const configPath = _path.default.resolve('config.yml');
|
|
126
|
-
const config = _YamlAdaptor.default.load(configPath);
|
|
127
|
-
config.theme = name;
|
|
128
|
-
const config_ = _YamlAdaptor.default.dump(config);
|
|
129
|
-
return _fsExtra.default.writeFile(configPath, config_);
|
|
130
|
-
};
|
|
131
|
-
class Theme {}
|
|
132
|
-
(0, _defineProperty2.default)(Theme, "list", () => {
|
|
133
|
-
const {
|
|
134
|
-
current,
|
|
135
|
-
themes
|
|
136
|
-
} = getThemes();
|
|
137
|
-
const {
|
|
138
|
-
text,
|
|
139
|
-
duplicates
|
|
140
|
-
} = getThemeList(themes, current);
|
|
141
|
-
_bBerLogger.default.notice('The following themes are available:', '\n', text);
|
|
142
|
-
if (duplicates.length) {
|
|
143
|
-
_bBerLogger.default.notice('Duplicate themes have been found in both the [node_modules] and [themes] directory');
|
|
144
|
-
_bBerLogger.default.notice('Resolve this issue by either removing the duplicate directory from [themes] or by running [npm rm <location> <package>]');
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
(0, _defineProperty2.default)(Theme, "set", (name, force = false) => {
|
|
148
|
-
let theme;
|
|
149
|
-
const cwd = process.cwd();
|
|
150
|
-
const cwdArr = cwd.split('/');
|
|
151
|
-
const modulePaths = new _set.default([...module.paths]);
|
|
152
|
-
let cwdPath;
|
|
153
|
-
|
|
154
|
-
// Add modules paths that reference the current b-ber project
|
|
155
|
-
do {
|
|
156
|
-
cwdPath = `${cwdArr.join('/')}/node_modules`;
|
|
157
|
-
if (modulePaths.has(cwdPath)) continue;
|
|
158
|
-
module.paths.push(cwdPath);
|
|
159
|
-
} while (cwdArr.pop());
|
|
160
|
-
if (defaultThemes[name]) {
|
|
161
|
-
theme = defaultThemes[name];
|
|
162
|
-
} else {
|
|
163
|
-
try {
|
|
164
|
-
theme = require(name);
|
|
165
|
-
} catch (err) {
|
|
166
|
-
_bBerLogger.default.error(`Could not load theme [${name}]`);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
return createProjectThemeDirectory(name).then(() => copyThemeAssets(theme)).then(() => updateConfig(name)).then(() => !force && _bBerLogger.default.notice(`Updated theme [${name}]`)).catch(_bBerLogger.default.error);
|
|
170
|
-
});
|
|
171
|
-
var _default = exports.default = Theme;
|
|
1
|
+
'use strict';
|
|
2
|
+
module.exports = require('./dist/index.js').Theme;
|
package/YamlAdaptor.js
CHANGED
|
@@ -1,41 +1,2 @@
|
|
|
1
|
-
|
|
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 _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
|
|
10
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
11
|
-
var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
|
|
12
|
-
var _isArray = _interopRequireDefault(require("lodash/isArray"));
|
|
13
|
-
var _jsYaml = _interopRequireDefault(require("js-yaml"));
|
|
14
|
-
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
15
|
-
class YamlAdaptor {
|
|
16
|
-
static toYaml(input) {
|
|
17
|
-
if (typeof input === 'string') return _jsYaml.default.safeDump(input);
|
|
18
|
-
if ((0, _isPlainObject.default)(input) || (0, _isArray.default)(input)) {
|
|
19
|
-
return _jsYaml.default.safeDump((0, _stringify.default)(input));
|
|
20
|
-
}
|
|
21
|
-
throw new TypeError(`Invalid type: [${typeof input}]`);
|
|
22
|
-
}
|
|
23
|
-
static load(file) {
|
|
24
|
-
let data;
|
|
25
|
-
try {
|
|
26
|
-
data = _fsExtra.default.readFileSync(file, 'utf-8');
|
|
27
|
-
} catch (err) {
|
|
28
|
-
_bBerLogger.default.error(err);
|
|
29
|
-
}
|
|
30
|
-
return data ? _jsYaml.default.safeLoad(data) : [];
|
|
31
|
-
}
|
|
32
|
-
static dump(str) {
|
|
33
|
-
return _jsYaml.default.safeDump(str, {
|
|
34
|
-
indent: 2
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
static parse(str) {
|
|
38
|
-
return _jsYaml.default.safeLoad(str);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
var _default = exports.default = YamlAdaptor;
|
|
1
|
+
'use strict';
|
|
2
|
+
module.exports = require('./dist/index.js').YamlAdaptor;
|