@canopycanopycanopy/b-ber-tasks 2.0.0 → 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/dist/clean/index.js +0 -15
- package/dist/container/index.js +1 -20
- package/dist/copy/index.js +2 -20
- package/dist/cover/index.js +20 -75
- package/dist/deploy/index.js +11 -54
- package/dist/epub/index.js +0 -12
- package/dist/footnotes/index.js +0 -27
- package/dist/generate/index.js +5 -32
- package/dist/index.js +0 -52
- package/dist/init/index.js +4 -29
- package/dist/inject/index.js +3 -31
- package/dist/loi/index.js +16 -61
- package/dist/mobi/index.js +8 -17
- package/dist/mobi/mobi-css.js +2 -39
- package/dist/opf/ManifestAndMetadata.js +18 -35
- package/dist/opf/Navigation.js +28 -82
- package/dist/opf/Opf.js +3 -20
- package/dist/opf/helpers.js +5 -20
- package/dist/opf/index.js +0 -10
- package/dist/pdf/index.js +3 -29
- package/dist/reader/index.js +11 -69
- package/dist/render/index.js +2 -28
- package/dist/sample/index.js +0 -6
- package/dist/sass/index.js +30 -66
- package/dist/scripts/index.js +0 -24
- package/dist/serialize.js +1 -20
- package/dist/serve/index.js +5 -29
- package/dist/validate/index.js +0 -24
- package/dist/web/Template.js +0 -21
- package/dist/web/index.js +31 -128
- package/dist/xml/index.js +0 -30
- package/package.json +10 -10
package/dist/clean/index.js
CHANGED
|
@@ -1,40 +1,25 @@
|
|
|
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 _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
14
|
-
|
|
15
10
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
16
|
-
|
|
17
11
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
18
|
-
|
|
19
12
|
var _path = _interopRequireDefault(require("path"));
|
|
20
|
-
|
|
21
13
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
22
|
-
|
|
23
14
|
var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
|
|
24
|
-
|
|
25
15
|
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
26
|
-
|
|
27
16
|
// Remove an ebook's output directory and outdated builds
|
|
28
17
|
const clean = () => {
|
|
29
18
|
var _context, _context2;
|
|
30
|
-
|
|
31
19
|
const projectRoot = _path.default.dirname(_State.default.distDir);
|
|
32
|
-
|
|
33
20
|
const fileType = `.${_State.default.build}`;
|
|
34
21
|
const promises = (0, _map.default)(_context = (0, _filter.default)(_context2 = _fsExtra.default.readdirSync(projectRoot)).call(_context2, a => _path.default.extname(a) === fileType)).call(_context, b => _fsExtra.default.remove(_path.default.join(projectRoot, b)).then(() => _bBerLogger.default.info('clean remove [%s]', b)));
|
|
35
22
|
return _promise.default.all(promises).then(() => _fsExtra.default.remove(_State.default.distDir).then(() => _bBerLogger.default.info('clean remove [%s]', _State.default.distDir)));
|
|
36
23
|
};
|
|
37
|
-
|
|
38
24
|
var _default = () => clean().catch(_bBerLogger.default.error);
|
|
39
|
-
|
|
40
25
|
exports.default = _default;
|
package/dist/container/index.js
CHANGED
|
@@ -1,43 +1,29 @@
|
|
|
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 _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
16
|
-
|
|
17
11
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
18
|
-
|
|
19
12
|
var _path = _interopRequireDefault(require("path"));
|
|
20
|
-
|
|
21
13
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
22
|
-
|
|
23
14
|
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
24
|
-
|
|
25
15
|
var _Xml = _interopRequireDefault(require("@canopycanopycanopy/b-ber-templates/Xml"));
|
|
26
|
-
|
|
27
16
|
var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
|
|
28
|
-
|
|
29
17
|
/* eslint-disable class-methods-use-this */
|
|
18
|
+
|
|
30
19
|
class Container {
|
|
31
20
|
get dirs() {
|
|
32
21
|
return [_State.default.dist.ops(), _State.default.dist.root('META-INF')];
|
|
33
22
|
}
|
|
34
|
-
|
|
35
23
|
constructor() {
|
|
36
24
|
var _context;
|
|
37
|
-
|
|
38
25
|
this.init = (0, _bind.default)(_context = this.init).call(_context, this);
|
|
39
26
|
}
|
|
40
|
-
|
|
41
27
|
write() {
|
|
42
28
|
const files = [{
|
|
43
29
|
path: _path.default.join('META-INF', 'container.xml'),
|
|
@@ -49,20 +35,15 @@ class Container {
|
|
|
49
35
|
const promises = (0, _map.default)(files).call(files, file => _fsExtra.default.writeFile(_State.default.dist.root(file.path), file.content).then(() => _bBerLogger.default.info('container emit [%s]', file.path)));
|
|
50
36
|
return _promise.default.all(promises);
|
|
51
37
|
}
|
|
52
|
-
|
|
53
38
|
makedirs() {
|
|
54
39
|
var _context2;
|
|
55
|
-
|
|
56
40
|
const promises = (0, _map.default)(_context2 = this.dirs).call(_context2, dir => _fsExtra.default.mkdirs(dir).then(() => _bBerLogger.default.info('container emit [%s]', dir)));
|
|
57
41
|
return _promise.default.all(promises);
|
|
58
42
|
}
|
|
59
|
-
|
|
60
43
|
init() {
|
|
61
44
|
return this.makedirs().then(() => this.write()).catch(_bBerLogger.default.error);
|
|
62
45
|
}
|
|
63
|
-
|
|
64
46
|
}
|
|
65
|
-
|
|
66
47
|
const container = new Container();
|
|
67
48
|
var _default = container.init;
|
|
68
49
|
exports.default = _default;
|
package/dist/copy/index.js
CHANGED
|
@@ -1,42 +1,27 @@
|
|
|
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 _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
|
|
14
|
-
|
|
15
10
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
16
|
-
|
|
17
11
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
18
|
-
|
|
19
12
|
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
|
20
|
-
|
|
21
13
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
22
|
-
|
|
23
14
|
var _path = _interopRequireDefault(require("path"));
|
|
24
|
-
|
|
25
15
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
26
|
-
|
|
27
16
|
var _isArray = _interopRequireDefault(require("lodash/isArray"));
|
|
28
|
-
|
|
29
17
|
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
30
|
-
|
|
31
18
|
var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
|
|
32
|
-
|
|
33
19
|
const FILE_SIZE_WARNING_LIMIT = 1500000; // 1.5Mb
|
|
20
|
+
const cwd = process.cwd();
|
|
34
21
|
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
// Copy directories of assets into the output directory
|
|
37
23
|
const copy = () => {
|
|
38
24
|
var _context;
|
|
39
|
-
|
|
40
25
|
let {
|
|
41
26
|
ignore
|
|
42
27
|
} = _State.default.config;
|
|
@@ -64,9 +49,7 @@ const copy = () => {
|
|
|
64
49
|
const {
|
|
65
50
|
size
|
|
66
51
|
} = _fsExtra.default.statSync(_path.default.join(dir.to, file));
|
|
67
|
-
|
|
68
52
|
_bBerLogger.default.info('copy [%s - {%d}]', `${baseTo}/${file}`, size);
|
|
69
|
-
|
|
70
53
|
if (size > FILE_SIZE_WARNING_LIMIT) {
|
|
71
54
|
_bBerLogger.default.warn('copy [%s - {%d}] Large file sizes may cause performance issues in some output formats', file, size);
|
|
72
55
|
}
|
|
@@ -74,6 +57,5 @@ const copy = () => {
|
|
|
74
57
|
}));
|
|
75
58
|
return _promise.default.all(promises).catch(_bBerLogger.default.error);
|
|
76
59
|
};
|
|
77
|
-
|
|
78
60
|
var _default = copy;
|
|
79
61
|
exports.default = _default;
|
package/dist/cover/index.js
CHANGED
|
@@ -1,63 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
|
4
|
-
|
|
5
4
|
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
|
6
|
-
|
|
7
5
|
var _filterInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
|
8
|
-
|
|
9
6
|
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
10
|
-
|
|
11
7
|
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
|
12
|
-
|
|
13
8
|
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
|
14
|
-
|
|
15
9
|
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
|
16
|
-
|
|
17
10
|
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
18
|
-
|
|
19
11
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
20
|
-
|
|
21
12
|
_Object$defineProperty(exports, "__esModule", {
|
|
22
13
|
value: true
|
|
23
14
|
});
|
|
24
|
-
|
|
25
15
|
exports.default = void 0;
|
|
26
|
-
|
|
27
16
|
var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
|
|
28
|
-
|
|
29
17
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
30
|
-
|
|
31
18
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
32
|
-
|
|
33
19
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
34
|
-
|
|
35
20
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
36
|
-
|
|
37
21
|
var _path = _interopRequireDefault(require("path"));
|
|
38
|
-
|
|
39
22
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
40
|
-
|
|
41
23
|
var _crypto = _interopRequireDefault(require("crypto"));
|
|
42
|
-
|
|
43
24
|
var _imageSize = _interopRequireDefault(require("image-size"));
|
|
44
|
-
|
|
45
25
|
var _pureimage = _interopRequireDefault(require("pureimage"));
|
|
46
|
-
|
|
47
26
|
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
48
|
-
|
|
49
27
|
var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
|
|
50
|
-
|
|
51
28
|
var _bBerLib = require("@canopycanopycanopy/b-ber-lib");
|
|
52
|
-
|
|
53
29
|
var _Xhtml = _interopRequireDefault(require("@canopycanopycanopy/b-ber-templates/Xhtml"));
|
|
54
|
-
|
|
55
30
|
var _utils = require("@canopycanopycanopy/b-ber-lib/utils");
|
|
56
|
-
|
|
57
31
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty2(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
58
|
-
|
|
59
32
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
60
|
-
|
|
61
33
|
class Cover {
|
|
62
34
|
constructor() {
|
|
63
35
|
(0, _defineProperty2.default)(this, "getPosY", () => {
|
|
@@ -74,14 +46,10 @@ class Cover {
|
|
|
74
46
|
// Omit cover.xhtml from the PDF build to allow users to define special
|
|
75
47
|
// treatment for the cover in config.yml
|
|
76
48
|
if (_State.default.build === 'pdf') return;
|
|
77
|
-
|
|
78
49
|
const textDir = _State.default.dist.text();
|
|
79
|
-
|
|
80
50
|
const coverFilePath = _State.default.dist.text('cover.xhtml');
|
|
81
|
-
|
|
82
51
|
await _fsExtra.default.mkdirp(textDir);
|
|
83
52
|
await _fsExtra.default.writeFile(coverFilePath, this.coverXHTMLContent);
|
|
84
|
-
|
|
85
53
|
_bBerLogger.default.info('cover wrote XML [cover.xhtml]');
|
|
86
54
|
});
|
|
87
55
|
(0, _defineProperty2.default)(this, "init", () => this.loadInitialState().then(() => this.createCoverImage()).then(() => this.writeCoverXHTML()).catch(_bBerLogger.default.error));
|
|
@@ -97,8 +65,9 @@ class Cover {
|
|
|
97
65
|
this.coverPrefix = '__bber_cover__';
|
|
98
66
|
this.coverXHTMLContent = '';
|
|
99
67
|
this.coverEntry = '';
|
|
100
|
-
this.coverImagePath = '';
|
|
68
|
+
this.coverImagePath = '';
|
|
101
69
|
|
|
70
|
+
// cover data
|
|
102
71
|
this.width = 1600;
|
|
103
72
|
this.height = 2400;
|
|
104
73
|
this.fontSize = 45;
|
|
@@ -107,47 +76,40 @@ class Cover {
|
|
|
107
76
|
this.marginTop = this.fontSize * 2;
|
|
108
77
|
this.colorBackground = '#5050c5';
|
|
109
78
|
this.colorText = '#ffffff';
|
|
110
|
-
this.fontName = 'Free Universal';
|
|
79
|
+
this.fontName = 'Free Universal';
|
|
111
80
|
|
|
112
|
-
|
|
81
|
+
// File name needs to be added to copy.sh
|
|
82
|
+
this.fontFile = 'freeuniversal-bold-webfont.ttf';
|
|
113
83
|
|
|
84
|
+
// increments paragraph Y position
|
|
114
85
|
this.posY = 0;
|
|
115
86
|
}
|
|
116
|
-
|
|
117
87
|
// eslint-disable-next-line class-methods-use-this
|
|
118
88
|
YAMLToObject() {
|
|
119
89
|
var _context;
|
|
120
|
-
|
|
121
90
|
return (0, _reduce.default)(_context = _State.default.metadata.json()).call(_context, (acc, curr) => {
|
|
122
91
|
if (curr.term && curr.value) {
|
|
123
92
|
acc[curr.term] = curr.value;
|
|
124
93
|
}
|
|
125
|
-
|
|
126
94
|
return acc;
|
|
127
95
|
}, {});
|
|
128
96
|
}
|
|
129
|
-
|
|
130
97
|
removeDefaultCovers() {
|
|
131
98
|
const imageDir = _State.default.src.images();
|
|
132
|
-
|
|
133
99
|
const files = _fsExtra.default.readdirSync(imageDir);
|
|
134
|
-
|
|
135
100
|
const covers = (0, _filter.default)(files).call(files, file => _path.default.basename(file).match(new RegExp(this.coverPrefix)));
|
|
136
101
|
if (!covers.length) return _promise.default.resolve();
|
|
137
102
|
const promises = (0, _map.default)(covers).call(covers, file => _fsExtra.default.remove(_path.default.join(imageDir, file)).then(() => _bBerLogger.default.info('cover remove outdated cover image [%s]', file)));
|
|
138
103
|
return _promise.default.all(promises);
|
|
139
104
|
}
|
|
140
|
-
|
|
141
105
|
wrapText(ctx, text) {
|
|
142
106
|
const maxWidth = this.width - this.marginLeft * 2;
|
|
143
107
|
const words = text.split(' ');
|
|
144
108
|
let line = '';
|
|
145
|
-
|
|
146
109
|
for (let n = 0; n < words.length; n++) {
|
|
147
110
|
const testLine = `${line}${words[n]} `;
|
|
148
111
|
const metrics = ctx.measureText(testLine);
|
|
149
112
|
const testWidth = metrics.width;
|
|
150
|
-
|
|
151
113
|
if (testWidth > maxWidth && n > 0) {
|
|
152
114
|
ctx.fillText(line, this.marginLeft, this.getPosY());
|
|
153
115
|
line = `${words[n]} `;
|
|
@@ -155,24 +117,20 @@ class Cover {
|
|
|
155
117
|
line = testLine;
|
|
156
118
|
}
|
|
157
119
|
}
|
|
158
|
-
|
|
159
120
|
ctx.fillText(line, this.marginLeft, this.getPosY());
|
|
160
121
|
}
|
|
161
|
-
|
|
162
122
|
generateDefaultCoverImage() {
|
|
163
123
|
return new _promise.default(resolve => {
|
|
164
124
|
const img = _pureimage.default.make(this.width, this.height);
|
|
165
|
-
|
|
166
125
|
const ctx = img.getContext('2d');
|
|
167
|
-
|
|
168
126
|
const font = _pureimage.default.registerFont(_path.default.join(__dirname, this.fontFile), this.fontName);
|
|
169
|
-
|
|
170
127
|
return font.load(() => {
|
|
171
128
|
ctx.fillStyle = this.colorBackground;
|
|
172
129
|
ctx.fillRect(0, 0, this.width, this.height);
|
|
173
130
|
ctx.font = `${this.fontSize}px '${this.fontName}'`;
|
|
174
|
-
ctx.fillStyle = this.colorText;
|
|
131
|
+
ctx.fillStyle = this.colorText;
|
|
175
132
|
|
|
133
|
+
// add text
|
|
176
134
|
ctx.fillText('Title', this.marginLeft, this.getPosY());
|
|
177
135
|
ctx.fillText(this.metadata.title, this.marginLeft, this.getPosY());
|
|
178
136
|
ctx.fillText('', this.marginLeft, this.getPosY());
|
|
@@ -189,13 +147,11 @@ class Cover {
|
|
|
189
147
|
ctx.fillText(_State.default.version, this.marginLeft, this.getPosY());
|
|
190
148
|
return _pureimage.default.encodeJPEGToStream(img, _fsExtra.default.createWriteStream(this.coverImagePath)).then(() => {
|
|
191
149
|
_bBerLogger.default.info('cover generated image [%s]', this.coverImagePath);
|
|
192
|
-
|
|
193
150
|
resolve();
|
|
194
151
|
}).catch(_bBerLogger.default.error);
|
|
195
152
|
});
|
|
196
153
|
});
|
|
197
154
|
}
|
|
198
|
-
|
|
199
155
|
generateCoverXHTML() {
|
|
200
156
|
// Get the image dimensions and pass them to the coverSVG template
|
|
201
157
|
const {
|
|
@@ -203,70 +159,59 @@ class Cover {
|
|
|
203
159
|
height
|
|
204
160
|
} = (0, _imageSize.default)(this.coverImagePath);
|
|
205
161
|
const href = `images/${encodeURIComponent(this.coverEntry)}`;
|
|
206
|
-
|
|
207
162
|
const svg = _Xhtml.default.cover({
|
|
208
163
|
width,
|
|
209
164
|
height,
|
|
210
165
|
href
|
|
211
|
-
});
|
|
212
|
-
|
|
166
|
+
});
|
|
213
167
|
|
|
168
|
+
// Set the content string to be written once resolved
|
|
214
169
|
this.coverXHTMLContent = _bBerLib.Template.render(svg, _Xhtml.default.body());
|
|
215
|
-
|
|
216
170
|
_bBerLogger.default.info('cover build [cover.xhtml]');
|
|
217
171
|
}
|
|
218
|
-
|
|
219
172
|
addCoverToMetadata() {
|
|
220
173
|
return _fsExtra.default.writeFile(this.metadataYAML, _State.default.metadata.yaml());
|
|
221
174
|
}
|
|
222
|
-
|
|
223
175
|
createCoverImage() {
|
|
224
176
|
this.coverEntry = `${this.coverPrefix}${_crypto.default.randomBytes(20).toString('hex')}.jpg`;
|
|
225
|
-
this.coverImagePath = _State.default.src.images(this.coverEntry);
|
|
226
|
-
|
|
227
|
-
const metadata = _bBerLib.YamlAdaptor.load(this.metadataYAML); // Check if cover if referenced
|
|
177
|
+
this.coverImagePath = _State.default.src.images(this.coverEntry);
|
|
228
178
|
|
|
179
|
+
// Load metadata.yml
|
|
180
|
+
const metadata = _bBerLib.YamlAdaptor.load(this.metadataYAML);
|
|
229
181
|
|
|
182
|
+
// Check if cover if referenced
|
|
230
183
|
const coverListedInMetadata = (0, _utils.getBookMetadata)('cover', _State.default);
|
|
231
|
-
|
|
232
184
|
if (coverListedInMetadata) {
|
|
233
185
|
// TODO: fixme, for generated covers
|
|
234
186
|
// @issue: https://github.com/triplecanopy/b-ber/issues/208
|
|
235
187
|
this.coverEntry = coverListedInMetadata.replace(/_jpg$/, '.jpg');
|
|
188
|
+
_bBerLogger.default.info('cover verify image [%s]', this.coverEntry);
|
|
236
189
|
|
|
237
|
-
|
|
190
|
+
// There's a reference to a cover image, so create a cover.xhtml file
|
|
238
191
|
// containing an SVG-wrapped `image` element with the appropriate cover
|
|
239
192
|
// dimensions and write it to the `text` dir.
|
|
240
|
-
// check that the cover image file exists, throw if not
|
|
241
|
-
|
|
242
193
|
|
|
194
|
+
// check that the cover image file exists, throw if not
|
|
243
195
|
this.coverImagePath = _State.default.src.images(this.coverEntry);
|
|
244
|
-
|
|
245
196
|
if (!_fsExtra.default.existsSync(this.coverImagePath)) {
|
|
246
197
|
_bBerLogger.default.error('Cover image listed in metadata.yml cannot be found');
|
|
247
198
|
}
|
|
248
|
-
|
|
249
199
|
return this.generateCoverXHTML();
|
|
250
|
-
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// If there's no cover referenced in the metadata.yml, create one
|
|
251
203
|
// that displays the book's metadata (title, generator version, etc)
|
|
252
204
|
// and add it to metadata.yml
|
|
253
|
-
|
|
254
|
-
|
|
255
205
|
_bBerLogger.default.info('cover generated image [%s]', this.coverEntry);
|
|
256
|
-
|
|
257
206
|
const coverMetadata = {
|
|
258
207
|
term: 'cover',
|
|
259
208
|
value: this.coverEntry
|
|
260
209
|
};
|
|
261
|
-
|
|
262
210
|
_State.default.metadata.add(coverMetadata);
|
|
263
|
-
|
|
264
211
|
this.metadata = _objectSpread(_objectSpread(_objectSpread({}, coverMetadata), this.metadata), metadata);
|
|
265
212
|
return this.removeDefaultCovers().then(() => this.generateDefaultCoverImage()).then(() => this.generateCoverXHTML()).then(() => this.addCoverToMetadata()).catch(_bBerLogger.default.error);
|
|
266
213
|
}
|
|
267
|
-
|
|
268
214
|
}
|
|
269
|
-
|
|
270
215
|
const cover = new Cover();
|
|
271
216
|
var _default = cover.init;
|
|
272
217
|
exports.default = _default;
|
package/dist/deploy/index.js
CHANGED
|
@@ -1,73 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
|
4
|
-
|
|
5
4
|
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
|
6
|
-
|
|
7
5
|
var _filterInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
|
8
|
-
|
|
9
6
|
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
10
|
-
|
|
11
7
|
var _forEachInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
|
12
|
-
|
|
13
8
|
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
|
14
|
-
|
|
15
9
|
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
|
16
|
-
|
|
17
10
|
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
18
|
-
|
|
19
11
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
20
|
-
|
|
21
12
|
_Object$defineProperty(exports, "__esModule", {
|
|
22
13
|
value: true
|
|
23
14
|
});
|
|
24
|
-
|
|
25
15
|
exports.default = void 0;
|
|
26
|
-
|
|
27
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
28
|
-
|
|
29
17
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/map"));
|
|
30
|
-
|
|
31
18
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
32
|
-
|
|
33
19
|
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
|
34
|
-
|
|
35
20
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
36
|
-
|
|
37
21
|
var _map2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
38
|
-
|
|
39
22
|
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
40
|
-
|
|
41
23
|
var _path = _interopRequireDefault(require("path"));
|
|
42
|
-
|
|
43
24
|
var _readline = _interopRequireDefault(require("readline"));
|
|
44
|
-
|
|
45
25
|
var _child_process = require("child_process");
|
|
46
|
-
|
|
47
26
|
var _YamlAdaptor = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/YamlAdaptor"));
|
|
48
|
-
|
|
49
27
|
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
50
|
-
|
|
51
28
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty2(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
52
|
-
|
|
53
29
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context3, _context4; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty2(_context3 = ownKeys(Object(source), !0)).call(_context3, function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty2(_context4 = ownKeys(Object(source))).call(_context4, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
54
|
-
|
|
55
30
|
const cwd = process.cwd();
|
|
56
31
|
const defaultBuilds = ['epub', 'mobi', 'reader'];
|
|
57
|
-
const args = new _map.default([['epub', '--include "*.epub"'], ['mobi', '--include "*.mobi"'], ['pdf', '--include "*.pdf"'], ['xml', '--include "*.xml"'], ['reader', '--include "project-reader/*"'], ['web', '--include "project-web/*"']]);
|
|
32
|
+
const args = new _map.default([['epub', '--include "*.epub"'], ['mobi', '--include "*.mobi"'], ['pdf', '--include "*.pdf"'], ['xml', '--include "*.xml"'], ['reader', '--include "project-reader/*"'], ['web', '--include "project-web/*"']]);
|
|
33
|
+
|
|
34
|
+
// Set far off cache for all files. Must not use `--metadata-directive REPLACE` or files
|
|
58
35
|
// will just download in the browser without being served
|
|
59
36
|
// https://stackoverflow.com/questions/10435334/set-cache-control-for-entire-s3-bucket-automatically-using-bucket-policies
|
|
37
|
+
const cacheArgsBucket = ['--recursive', '--acl public-read',
|
|
38
|
+
// '--metadata-directive REPLACE',
|
|
39
|
+
'--expires 2034-01-01T00:00:00Z', '--cache-control max-age=31536000,public'];
|
|
60
40
|
|
|
61
|
-
|
|
62
|
-
'--
|
|
41
|
+
// Set immediate re-fetch for XML, JSON and downloads
|
|
42
|
+
const cacheArgsFiles = ['--recursive', '--exclude "*"', '--include "*.ncx"', '--include "*.opf"', '--include "*.json"', '--include "*.epub"', '--include "*.mobi"', '--include "*.pdf"', '--include "*.xml"',
|
|
43
|
+
// '--metadata-directive REPLACE',
|
|
44
|
+
'--acl public-read', '--expires 1970-01-01T00:00:00Z', '--cache-control max-age=0,public'];
|
|
63
45
|
|
|
64
|
-
|
|
65
|
-
'--acl public-read', '--expires 1970-01-01T00:00:00Z', '--cache-control max-age=0,public']; // Also invalidate cache for X/HTML, but requires settings
|
|
46
|
+
// Also invalidate cache for X/HTML, but requires settings
|
|
66
47
|
// `content-type` to prevent the browser from downloading them
|
|
67
48
|
// directly
|
|
68
|
-
|
|
69
49
|
const cacheArgsHTML = ['--recursive', '--exclude "*"', '--include "*.html"', '--include "*.xhtml"', '--acl public-read', '--metadata-directive REPLACE', '--content-type text/html', '--expires 1970-01-01T00:00:00Z', '--cache-control max-age=0,public'];
|
|
70
|
-
|
|
71
50
|
async function ensureAwsCli() {
|
|
72
51
|
try {
|
|
73
52
|
(0, _child_process.execSync)('aws --version > /dev/null 2>&1', {
|
|
@@ -79,7 +58,6 @@ async function ensureAwsCli() {
|
|
|
79
58
|
process.exit(0);
|
|
80
59
|
}
|
|
81
60
|
}
|
|
82
|
-
|
|
83
61
|
function run(command, callback) {
|
|
84
62
|
const proc = (0, _child_process.exec)(command, {
|
|
85
63
|
cwd
|
|
@@ -97,11 +75,9 @@ function run(command, callback) {
|
|
|
97
75
|
console.log('');
|
|
98
76
|
console.log(`ERROR: aws exited with code ${code}`);
|
|
99
77
|
}
|
|
100
|
-
|
|
101
78
|
if (callback) callback();
|
|
102
79
|
});
|
|
103
80
|
}
|
|
104
|
-
|
|
105
81
|
function deploy({
|
|
106
82
|
bucketURL,
|
|
107
83
|
awsRegion,
|
|
@@ -111,46 +87,36 @@ function deploy({
|
|
|
111
87
|
console.log('Uploading project files...');
|
|
112
88
|
return new _promise.default(resolve => {
|
|
113
89
|
const sourceDir = _path.default.resolve(cwd, './');
|
|
114
|
-
|
|
115
90
|
let command = [`aws s3 cp ${sourceDir} ${bucketURL}`, '--recursive', '--exclude "*"', `--region ${awsRegion}`];
|
|
116
91
|
(0, _forEach.default)(builds).call(builds, arg => command.push(args.get(arg)));
|
|
117
92
|
command = command.join(' ');
|
|
118
93
|
return run(command, resolve);
|
|
119
94
|
});
|
|
120
95
|
}
|
|
121
|
-
|
|
122
96
|
function ensureEnvVars() {
|
|
123
97
|
const {
|
|
124
98
|
AWS_ACCESS_KEY_ID,
|
|
125
99
|
AWS_SECRET_ACCESS_KEY,
|
|
126
100
|
BBER_BUCKET_REGION
|
|
127
101
|
} = process.env;
|
|
128
|
-
|
|
129
102
|
if (!AWS_ACCESS_KEY_ID || !AWS_SECRET_ACCESS_KEY || !BBER_BUCKET_REGION) {
|
|
130
103
|
_bBerLogger.default.error('[AWS_ACCESS_KEY_ID], [AWS_SECRET_ACCESS_KEY] and [BBER_BUCKET_REGION] must be set to deploy the project');
|
|
131
104
|
}
|
|
132
|
-
|
|
133
105
|
const configFile = _path.default.resolve(cwd, 'config.yml');
|
|
134
|
-
|
|
135
106
|
const config = _YamlAdaptor.default.load(configFile);
|
|
136
|
-
|
|
137
107
|
const {
|
|
138
108
|
bucket_url: bucketURL
|
|
139
109
|
} = config;
|
|
140
|
-
|
|
141
110
|
if (!bucketURL) {
|
|
142
111
|
_bBerLogger.default.error('[bucketURL] must be set in config.yml to deploy the project');
|
|
143
112
|
}
|
|
144
|
-
|
|
145
113
|
return {
|
|
146
114
|
bucketURL,
|
|
147
115
|
awsRegion: BBER_BUCKET_REGION
|
|
148
116
|
};
|
|
149
117
|
}
|
|
150
|
-
|
|
151
118
|
function extractVars(config) {
|
|
152
119
|
var _context;
|
|
153
|
-
|
|
154
120
|
const {
|
|
155
121
|
bucketURL,
|
|
156
122
|
awsRegion
|
|
@@ -166,11 +132,9 @@ function extractVars(config) {
|
|
|
166
132
|
builds
|
|
167
133
|
};
|
|
168
134
|
}
|
|
169
|
-
|
|
170
135
|
function deployWithPrompt(config) {
|
|
171
136
|
return new _promise.default(resolve => {
|
|
172
137
|
const rl = _readline.default.createInterface(process.stdin, process.stdout);
|
|
173
|
-
|
|
174
138
|
const {
|
|
175
139
|
bucketURL,
|
|
176
140
|
awsRegion,
|
|
@@ -193,29 +157,23 @@ function deployWithPrompt(config) {
|
|
|
193
157
|
builds
|
|
194
158
|
}).then(() => rl.close());
|
|
195
159
|
}
|
|
196
|
-
|
|
197
160
|
process.exit(0);
|
|
198
161
|
}).on('close', resolve);
|
|
199
162
|
});
|
|
200
163
|
}
|
|
201
|
-
|
|
202
164
|
function deployWithoutPrompt(config) {
|
|
203
165
|
_bBerLogger.default.notice('Deploy command run with "--yes", skipping confirmation');
|
|
204
|
-
|
|
205
166
|
return deploy(config);
|
|
206
167
|
}
|
|
207
|
-
|
|
208
168
|
function setCachePolicy({
|
|
209
169
|
bucketURL,
|
|
210
170
|
awsRegion
|
|
211
171
|
}, cacheArgs) {
|
|
212
172
|
var _context2;
|
|
213
|
-
|
|
214
173
|
console.log('Setting cache policy...');
|
|
215
174
|
const command = (0, _concat.default)(_context2 = [`aws s3 cp ${bucketURL} ${bucketURL}`, `--region ${awsRegion}`]).call(_context2, cacheArgs).join(' ');
|
|
216
175
|
return new _promise.default(resolve => run(command, resolve));
|
|
217
176
|
}
|
|
218
|
-
|
|
219
177
|
function main({
|
|
220
178
|
builds,
|
|
221
179
|
yes
|
|
@@ -229,6 +187,5 @@ function main({
|
|
|
229
187
|
return deployWithPrompt(config);
|
|
230
188
|
}).then(() => setCachePolicy(config, cacheArgsBucket)).then(() => setCachePolicy(config, cacheArgsFiles)).then(() => setCachePolicy(config, cacheArgsHTML)).catch(_bBerLogger.default.error);
|
|
231
189
|
}
|
|
232
|
-
|
|
233
190
|
var _default = main;
|
|
234
191
|
exports.default = _default;
|
package/dist/epub/index.js
CHANGED
|
@@ -1,30 +1,19 @@
|
|
|
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 _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
16
|
-
|
|
17
11
|
var _epubZipper = _interopRequireDefault(require("epub-zipper"));
|
|
18
|
-
|
|
19
12
|
var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
|
|
20
|
-
|
|
21
13
|
var _State = _interopRequireDefault(require("@canopycanopycanopy/b-ber-lib/State"));
|
|
22
|
-
|
|
23
14
|
var _utils = require("@canopycanopycanopy/b-ber-lib/utils");
|
|
24
|
-
|
|
25
15
|
const epub = () => {
|
|
26
16
|
var _context;
|
|
27
|
-
|
|
28
17
|
return (0, _includes.default)(_context = process.argv).call(_context, '--no-compile') ? _promise.default.resolve() : _epubZipper.default.create({
|
|
29
18
|
input: _State.default.distDir,
|
|
30
19
|
output: process.cwd(),
|
|
@@ -32,6 +21,5 @@ const epub = () => {
|
|
|
32
21
|
fileName: (0, _utils.getBookMetadata)('identifier', _State.default)
|
|
33
22
|
}).catch(_bBerLogger.default.error);
|
|
34
23
|
};
|
|
35
|
-
|
|
36
24
|
var _default = epub;
|
|
37
25
|
exports.default = _default;
|