@canopycanopycanopy/b-ber-lib 3.0.8-nav.0 → 3.0.8-next.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/State.js CHANGED
@@ -1,400 +1,2 @@
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 _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(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
46
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[_Symbol$toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
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
-
70
- const SRC_DIR_IMAGES = '_images';
71
- const SRC_DIR_MARKDOWN = '_markdown';
72
- const SRC_DIR_STYLESHEETS = '_stylesheets';
73
- const SRC_DIR_JAVASCRIPTS = '_javascripts';
74
- const SRC_DIR_FONTS = '_fonts';
75
- const SRC_DIR_MEDIA = '_media';
76
- const DIST_DIR_OPS = 'OPS';
77
- const DIST_DIR_TEXT = 'text';
78
- const DIST_DIR_IMAGES = 'images';
79
- const DIST_DIR_STYLESHEETS = 'stylesheets';
80
- const DIST_DIR_JAVASCRIPTS = 'javascripts';
81
- const DIST_DIR_FONTS = 'fonts';
82
- const DIST_DIR_MEDIA = 'media';
83
- class State {
84
- static get defaults() {
85
- return {
86
- build: 'epub',
87
- sequence: [],
88
- hash: randomHash()
89
- };
90
- }
91
- get spine() {
92
- return this.builds[this.build].spine;
93
- }
94
- set spine(val) {
95
- this.builds[this.build].spine = val;
96
- }
97
- get guide() {
98
- return this.builds[this.build].guide;
99
- }
100
- set guide(val) {
101
- this.builds[this.build].guide = val;
102
- }
103
- get figures() {
104
- return this.builds[this.build].figures;
105
- }
106
- set figures(val) {
107
- this.builds[this.build].figures = val;
108
- }
109
- get footnotes() {
110
- return this.builds[this.build].footnotes;
111
- }
112
- set footnotes(val) {
113
- this.builds[this.build].footnotes = val;
114
- }
115
- get cursor() {
116
- return this.builds[this.build].cursor;
117
- }
118
- set cursor(val) {
119
- this.builds[this.build].cursor = val;
120
- }
121
- get toc() {
122
- return this.builds[this.build].toc;
123
- }
124
- set toc(val) {
125
- this.builds[this.build].toc = val;
126
- }
127
- get remoteAssets() {
128
- return this.builds[this.build].remoteAssets;
129
- }
130
- set remoteAssets(val) {
131
- this.builds[this.build].remoteAssets = val;
132
- }
133
- get loi() {
134
- return this.builds[this.build].loi;
135
- }
136
- set loi(val) {
137
- this.builds[this.build].loi = val;
138
- }
139
- get srcDir() {
140
- return this.config.src;
141
- }
142
- set srcDir(val) {
143
- this.config.src = val;
144
- }
145
- get distDir() {
146
- if (this.build && this.builds && this.builds[this.build]) {
147
- return this.builds[this.build].dist;
148
- }
149
- return this.config.dist;
150
- }
151
- set distDir(val) {
152
- this.config.dist = val;
153
- }
154
-
155
- // eslint-disable-next-line class-methods-use-this
156
- get env() {
157
- return process.env.NODE_ENV || 'development';
158
- }
159
- set env(val) {
160
- this.config.env = val;
161
- }
162
- constructor() {
163
- (0, _defineProperty2.default)(this, "metadata", {
164
- json: () => [{}]
165
- });
166
- // mocks the YAML api
167
- (0, _defineProperty2.default)(this, "theme", {});
168
- (0, _defineProperty2.default)(this, "video", []);
169
- (0, _defineProperty2.default)(this, "audio", []);
170
- (0, _defineProperty2.default)(this, "media", {});
171
- (0, _defineProperty2.default)(this, "build", 'epub');
172
- (0, _defineProperty2.default)(this, "sequence", []);
173
- (0, _defineProperty2.default)(this, "hash", randomHash());
174
- (0, _defineProperty2.default)(this, "builds", {
175
- sample: {},
176
- epub: {},
177
- mobi: {},
178
- pdf: {},
179
- web: {},
180
- reader: {}
181
- });
182
- (0, _defineProperty2.default)(this, "src", {
183
- root: (...args) => _path.default.join(this.srcDir, ...args),
184
- images: (...args) => _path.default.join(this.srcDir, SRC_DIR_IMAGES, ...args),
185
- markdown: (...args) => _path.default.join(this.srcDir, SRC_DIR_MARKDOWN, ...args),
186
- stylesheets: (...args) => _path.default.join(this.srcDir, SRC_DIR_STYLESHEETS, ...args),
187
- javascripts: (...args) => _path.default.join(this.srcDir, SRC_DIR_JAVASCRIPTS, ...args),
188
- fonts: (...args) => _path.default.join(this.srcDir, SRC_DIR_FONTS, ...args),
189
- media: (...args) => _path.default.join(this.srcDir, SRC_DIR_MEDIA, ...args)
190
- });
191
- (0, _defineProperty2.default)(this, "dist", {
192
- root: (...args) => _path.default.join(this.distDir, ...args),
193
- ops: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, ...args),
194
- text: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, DIST_DIR_TEXT, ...args),
195
- images: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, DIST_DIR_IMAGES, ...args),
196
- stylesheets: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, DIST_DIR_STYLESHEETS, ...args),
197
- javascripts: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, DIST_DIR_JAVASCRIPTS, ...args),
198
- fonts: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, DIST_DIR_FONTS, ...args),
199
- media: (...args) => _path.default.join(this.distDir, DIST_DIR_OPS, DIST_DIR_MEDIA, ...args)
200
- });
201
- (0, _defineProperty2.default)(this, "reset", () => {
202
- var _context;
203
- (0, _forEach.default)(_context = (0, _entries.default)(State.defaults)).call(_context, ([key, val]) => (0, _set2.default)(this, key, val));
204
- this.loadConfig();
205
- });
206
- (0, _defineProperty2.default)(this, "add", (prop, value) => {
207
- const prevValue = (0, _get.default)(this, prop);
208
- if ((0, _isArray.default)(prevValue)) {
209
- (0, _set2.default)(this, prop, [...prevValue, value]);
210
- } else if ((0, _isPlainObject.default)(prevValue)) {
211
- (0, _set2.default)(this, prop, _objectSpread(_objectSpread({}, prevValue), {}, {
212
- value
213
- }));
214
- } else if (typeof prevValue === 'string') {
215
- (0, _set2.default)(this, prop, `${prevValue}${value}`);
216
- } else {
217
- _bBerLogger.default.error(`Cannot add [${value}] to [state.${prop}]`);
218
- }
219
- });
220
- (0, _defineProperty2.default)(this, "remove", (prop, value) => {
221
- const prevValue = (0, _get.default)(this, prop);
222
- if ((0, _isArray.default)(prevValue)) {
223
- const arr = [...prevValue];
224
- (0, _remove.default)(arr, value);
225
- (0, _set2.default)(this, prop, arr);
226
- } else if ((0, _isPlainObject.default)(prevValue)) {
227
- var _context2;
228
- const {
229
- [value]: _
230
- } = prevValue,
231
- rest = (0, _objectWithoutProperties2.default)(prevValue, (0, _map.default)(_context2 = [value]).call(_context2, _toPropertyKey)); // eslint-disable-line no-unused-vars
232
- (0, _set2.default)(this, prop, rest);
233
- } else {
234
- _bBerLogger.default.error(`Cannot remove [${value}] from [state.${prop}]`);
235
- }
236
- });
237
- (0, _defineProperty2.default)(this, "merge", (prop, value) => {
238
- const oldValue = (0, _get.default)(this, prop);
239
- (0, _set2.default)(this, prop, (0, _merge.default)(oldValue, value));
240
- });
241
- (0, _defineProperty2.default)(this, "update", (prop, val) => {
242
- (0, _set2.default)(this, prop, val);
243
- });
244
- (0, _defineProperty2.default)(this, "has", prop => {
245
- return (0, _has.default)(this, prop);
246
- });
247
- (0, _defineProperty2.default)(this, "contains", (coll, value) => {
248
- var _context3;
249
- return (0, _indexOf.default)(_context3 = this).call(_context3, coll, value) > -1;
250
- });
251
- (0, _defineProperty2.default)(this, "find", (coll, pred) => {
252
- const collection = (0, _get.default)(this, coll);
253
- return (0, _find.default)(collection, pred);
254
- });
255
- (0, _defineProperty2.default)(this, "indexOf", (coll, pred) => {
256
- const collection = (0, _get.default)(this, coll);
257
- return (0, _findIndex.default)(collection, pred);
258
- });
259
- (0, _defineProperty2.default)(this, "loadConfig", () => {
260
- if (!_fsExtra.default.existsSync(_path.default.resolve('config.yml'))) return;
261
- const config = new _Yaml.default('config');
262
- config.load(_path.default.resolve('config.yml'));
263
-
264
- // not necessary right now to pass around a YAWN instance since we'er
265
- // not writing back to config.yml, but may be necessary at some point
266
- (0, _set2.default)(this, 'config', new _Config.default(config.json()));
267
- });
268
- (0, _defineProperty2.default)(this, "loadMetadata", () => {
269
- const fpath = _path.default.resolve(this.config.src, 'metadata.yml');
270
- if (!_fsExtra.default.existsSync(fpath)) return;
271
- (0, _set2.default)(this, 'metadata', new _Yaml.default('metadata'));
272
- this.metadata.load(fpath);
273
- });
274
- (0, _defineProperty2.default)(this, "loadMedia", () => {
275
- const fpath = _path.default.resolve(this.config.src, 'media.yml');
276
- if (!_fsExtra.default.existsSync(fpath)) return;
277
- let media = new _Yaml.default('media');
278
- media.load(fpath);
279
- media = media.json();
280
- (0, _set2.default)(this, 'media', media);
281
- });
282
- (0, _defineProperty2.default)(this, "loadTheme", () => {
283
- // Ensure themes dir exists unless running `new` command, as it's the
284
- // only command that's run outside of a project directory
285
- if (skipInitialization()) return;
286
- const userThemesPath = _path.default.resolve(this.config.themes_directory);
287
- _fsExtra.default.ensureDirSync(userThemesPath);
288
-
289
- // Add modules path that references the current b-ber project's theme dir
290
- module.paths.push(userThemesPath);
291
- const cwd = process.cwd();
292
- const cwdArr = cwd.split('/');
293
- const modulePaths = new _set.default([...module.paths]);
294
- let cwdPath;
295
-
296
- // Add modules paths that reference the current b-ber project
297
- do {
298
- cwdPath = `${cwdArr.join('/')}/node_modules`;
299
- if (modulePaths.has(cwdPath)) continue;
300
- module.paths.push(cwdPath);
301
- } while (cwdArr.pop());
302
-
303
- // Theme is set, using a built-in theme
304
- if (themes[this.config.theme]) {
305
- (0, _set2.default)(this, 'theme', themes[this.config.theme]);
306
- _bBerLogger.default.info(`Loaded theme [${this.config.theme}]`);
307
- return;
308
- }
309
-
310
- // Possibly a user defined theme, or one installed with npm
311
- try {
312
- // eslint-disable-next-line global-require, import/no-dynamic-require
313
- (0, _set2.default)(this, 'theme', require(this.config.theme));
314
- _bBerLogger.default.info(`Loaded theme [${this.config.theme}]`);
315
- } catch (err) {
316
- _bBerLogger.default.warn(`There was an error during require [${this.config.theme}]`);
317
- _bBerLogger.default.warn('Using default theme [b-ber-theme-serif]');
318
- _bBerLogger.default.warn(err.message);
319
-
320
- // Error loading theme, set to default
321
- (0, _set2.default)(this, 'theme', themes['b-ber-theme-serif']);
322
- }
323
- });
324
- (0, _defineProperty2.default)(this, "loadAudioVideo", () => {
325
- if (skipInitialization()) return;
326
- const mediaPath = _path.default.resolve(this.config.src, '_media');
327
- _fsExtra.default.ensureDirSync(mediaPath);
328
- const media = _fsExtra.default.readdirSync(mediaPath);
329
- const video = (0, _filter.default)(media).call(media, a => /^video/.test(_mimeTypes.default.lookup(a)));
330
- const audio = (0, _filter.default)(media).call(media, a => /^audio/.test(_mimeTypes.default.lookup(a)));
331
- (0, _set2.default)(this, 'video', video);
332
- (0, _set2.default)(this, 'audio', audio);
333
- });
334
- (0, _defineProperty2.default)(this, "loadBuildSettings", type => {
335
- if (skipInitialization()) return;
336
- const {
337
- src,
338
- dist
339
- } = this.config;
340
- const projectDir = _path.default.resolve(src);
341
- if (!_fsExtra.default.existsSync(projectDir)) _bBerLogger.default.error(`Project directory [${projectDir}] does not exist`);
342
-
343
- // One TOC to rule them all (toc.yml). A user can override the TOC for a
344
- // specific build by including a <type>.yml file, which will be loaded
345
- // instead of toc.yml below.
346
- const navigationConfigFileDefaultPath = _path.default.resolve(src, 'toc.yml');
347
- const navigationConfigFilePath = _path.default.resolve(src, `${type}.yml`);
348
- const navigationConfigFile = _fsExtra.default.existsSync(navigationConfigFilePath) ? navigationConfigFilePath : navigationConfigFileDefaultPath;
349
- const spine = new _Spine.default({
350
- src,
351
- buildType: type,
352
- navigationConfigFile
353
- });
354
-
355
- // Build-specific config. gets merged into base config during build step
356
- const config = this.config[type] ? _objectSpread({}, this.config[type]) : {};
357
- return {
358
- src,
359
- dist: `${dist}-${type}`,
360
- config,
361
- guide: [],
362
- spine,
363
- toc: spine.nested,
364
- cursor: [],
365
- figures: [],
366
- footnotes: [],
367
- remoteAssets: [],
368
- loi: []
369
- };
370
- });
371
- (0, _defineProperty2.default)(this, "loadBuilds", () => {
372
- const builds = ['sample', 'epub', 'mobi', 'pdf', 'web', 'reader', 'xml'];
373
- (0, _forEach.default)(builds).call(builds, build => (0, _set2.default)(this.builds, build, this.loadBuildSettings(build)));
374
- });
375
- let version;
376
-
377
- // for testing, since our directory structure is different in dist
378
- try {
379
- ;
380
- ({
381
- version
382
- } = _fsExtra.default.readJSONSync(require.resolve('./package.json')));
383
- } catch (err) {
384
- ;
385
- ({
386
- version
387
- } = _fsExtra.default.readJSONSync(require.resolve('../package.json')));
388
- }
389
- (0, _set2.default)(this, 'version', version);
390
- (0, _set2.default)(this, 'config', new _Config.default());
391
- this.reset();
392
- this.loadMetadata();
393
- this.loadAudioVideo();
394
- this.loadMedia();
395
- this.loadBuilds();
396
- this.loadTheme();
397
- }
398
- }
399
- var _default = new State();
400
- exports.default = _default;
1
+ 'use strict';
2
+ module.exports = require('./dist/index.js').State;
package/Theme.js CHANGED
@@ -1,172 +1,2 @@
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 _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 = Theme;
172
- exports.default = _default;
1
+ 'use strict';
2
+ module.exports = require('./dist/index.js').Theme;
package/YamlAdaptor.js CHANGED
@@ -1,42 +1,2 @@
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 _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 = YamlAdaptor;
42
- exports.default = _default;
1
+ 'use strict';
2
+ module.exports = require('./dist/index.js').YamlAdaptor;