@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.
@@ -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;
@@ -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;
@@ -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
- const cwd = process.cwd(); // Copy directories of assets into the output directory
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;
@@ -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 = ''; // cover data
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'; // File name needs to be added to copy.sh
79
+ this.fontName = 'Free Universal';
111
80
 
112
- this.fontFile = 'freeuniversal-bold-webfont.ttf'; // increments paragraph Y position
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; // add text
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
- }); // Set the content string to be written once resolved
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); // Load metadata.yml
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
- _bBerLogger.default.info('cover verify image [%s]', this.coverEntry); // There's a reference to a cover image, so create a cover.xhtml file
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
- } // If there's no cover referenced in the metadata.yml, create one
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;
@@ -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/*"']]); // Set far off cache for all files. Must not use `--metadata-directive REPLACE` or files
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
- const cacheArgsBucket = ['--recursive', '--acl public-read', // '--metadata-directive REPLACE',
62
- '--expires 2034-01-01T00:00:00Z', '--cache-control max-age=31536000,public']; // Set immediate re-fetch for XML, JSON and downloads
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
- const cacheArgsFiles = ['--recursive', '--exclude "*"', '--include "*.ncx"', '--include "*.opf"', '--include "*.json"', '--include "*.epub"', '--include "*.mobi"', '--include "*.pdf"', '--include "*.xml"', // '--metadata-directive REPLACE',
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;
@@ -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;