@canopycanopycanopy/b-ber-tasks 3.0.0 → 3.0.3

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,50 @@
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"', '--metadata-directive REPLACE', '--acl public-read', '--expires 1970-01-01T00:00:00Z', '--cache-control max-age=0,public'];
63
43
 
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
44
+ // Also invalidate cache for X/HTML, but requires settings
66
45
  // `content-type` to prevent the browser from downloading them
67
46
  // directly
68
-
69
47
  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
48
  async function ensureAwsCli() {
72
49
  try {
73
50
  (0, _child_process.execSync)('aws --version > /dev/null 2>&1', {
@@ -79,7 +56,6 @@ async function ensureAwsCli() {
79
56
  process.exit(0);
80
57
  }
81
58
  }
82
-
83
59
  function run(command, callback) {
84
60
  const proc = (0, _child_process.exec)(command, {
85
61
  cwd
@@ -97,11 +73,9 @@ function run(command, callback) {
97
73
  console.log('');
98
74
  console.log(`ERROR: aws exited with code ${code}`);
99
75
  }
100
-
101
76
  if (callback) callback();
102
77
  });
103
78
  }
104
-
105
79
  function deploy({
106
80
  bucketURL,
107
81
  awsRegion,
@@ -111,46 +85,36 @@ function deploy({
111
85
  console.log('Uploading project files...');
112
86
  return new _promise.default(resolve => {
113
87
  const sourceDir = _path.default.resolve(cwd, './');
114
-
115
88
  let command = [`aws s3 cp ${sourceDir} ${bucketURL}`, '--recursive', '--exclude "*"', `--region ${awsRegion}`];
116
89
  (0, _forEach.default)(builds).call(builds, arg => command.push(args.get(arg)));
117
90
  command = command.join(' ');
118
91
  return run(command, resolve);
119
92
  });
120
93
  }
121
-
122
94
  function ensureEnvVars() {
123
95
  const {
124
96
  AWS_ACCESS_KEY_ID,
125
97
  AWS_SECRET_ACCESS_KEY,
126
98
  BBER_BUCKET_REGION
127
99
  } = process.env;
128
-
129
100
  if (!AWS_ACCESS_KEY_ID || !AWS_SECRET_ACCESS_KEY || !BBER_BUCKET_REGION) {
130
101
  _bBerLogger.default.error('[AWS_ACCESS_KEY_ID], [AWS_SECRET_ACCESS_KEY] and [BBER_BUCKET_REGION] must be set to deploy the project');
131
102
  }
132
-
133
103
  const configFile = _path.default.resolve(cwd, 'config.yml');
134
-
135
104
  const config = _YamlAdaptor.default.load(configFile);
136
-
137
105
  const {
138
106
  bucket_url: bucketURL
139
107
  } = config;
140
-
141
108
  if (!bucketURL) {
142
109
  _bBerLogger.default.error('[bucketURL] must be set in config.yml to deploy the project');
143
110
  }
144
-
145
111
  return {
146
112
  bucketURL,
147
113
  awsRegion: BBER_BUCKET_REGION
148
114
  };
149
115
  }
150
-
151
116
  function extractVars(config) {
152
117
  var _context;
153
-
154
118
  const {
155
119
  bucketURL,
156
120
  awsRegion
@@ -166,11 +130,9 @@ function extractVars(config) {
166
130
  builds
167
131
  };
168
132
  }
169
-
170
133
  function deployWithPrompt(config) {
171
134
  return new _promise.default(resolve => {
172
135
  const rl = _readline.default.createInterface(process.stdin, process.stdout);
173
-
174
136
  const {
175
137
  bucketURL,
176
138
  awsRegion,
@@ -193,29 +155,23 @@ function deployWithPrompt(config) {
193
155
  builds
194
156
  }).then(() => rl.close());
195
157
  }
196
-
197
158
  process.exit(0);
198
159
  }).on('close', resolve);
199
160
  });
200
161
  }
201
-
202
162
  function deployWithoutPrompt(config) {
203
163
  _bBerLogger.default.notice('Deploy command run with "--yes", skipping confirmation');
204
-
205
164
  return deploy(config);
206
165
  }
207
-
208
166
  function setCachePolicy({
209
167
  bucketURL,
210
168
  awsRegion
211
169
  }, cacheArgs) {
212
170
  var _context2;
213
-
214
171
  console.log('Setting cache policy...');
215
172
  const command = (0, _concat.default)(_context2 = [`aws s3 cp ${bucketURL} ${bucketURL}`, `--region ${awsRegion}`]).call(_context2, cacheArgs).join(' ');
216
173
  return new _promise.default(resolve => run(command, resolve));
217
174
  }
218
-
219
175
  function main({
220
176
  builds,
221
177
  yes
@@ -229,6 +185,5 @@ function main({
229
185
  return deployWithPrompt(config);
230
186
  }).then(() => setCachePolicy(config, cacheArgsBucket)).then(() => setCachePolicy(config, cacheArgsFiles)).then(() => setCachePolicy(config, cacheArgsHTML)).catch(_bBerLogger.default.error);
231
187
  }
232
-
233
188
  var _default = main;
234
189
  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;