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

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/package.json CHANGED
@@ -1,15 +1,12 @@
1
1
  {
2
2
  "name": "@canopycanopycanopy/b-ber-lib",
3
- "version": "3.0.8-nav.0+24db1e6b",
3
+ "version": "3.0.8-next.96+7446845b",
4
4
  "description": "",
5
- "main": "index.js",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
6
7
  "scripts": {
7
- "prepare:dist": "BABEL_ENV=production babel --config-file ../../babel.config.js -d ./ src/ --ignore **/__tests__/**",
8
- "clean": "rimraf utils && rimraf ApplicationLoader.js GuideItem.js Config.js EbookConvert.js Html.js HtmlToXml.js ManifestItemProperties.js Spine.js SpineItem.js State.js Template.js Theme.js Url.js Yaml.js YamlAdaptor.js index.js",
9
- "prepare": "npm run clean && npm run prepare:dist",
10
- "build": "npm run prepare",
11
- "watch": "BABEL_ENV=production babel --config-file ../../babel.config.js -d ./ src/ --watch src --ignore **/__tests__/**",
12
- "start": "babel-node ./src/index.js --presets es2015,stage-0",
8
+ "build": "tsdown",
9
+ "typecheck": "tsc --noEmit",
13
10
  "test": "jest"
14
11
  },
15
12
  "author": "Triple Canopy <b-ber@canopycanopycanopy.com> (https://triplecanopy.github.io/)",
@@ -18,21 +15,24 @@
18
15
  "access": "public"
19
16
  },
20
17
  "devDependencies": {
21
- "@babel/cli": "^7.10.5",
22
- "@babel/core": "^7.10.5",
23
- "@babel/preset-env": "^7.10.4",
24
- "browserslist": "^4.17.4",
25
- "jest": "^26.6.3",
26
- "mock-fs": "^4.4.2",
27
- "rimraf": "^2.7.1"
18
+ "@swc/core": "^1.15.40",
19
+ "@swc/jest": "^0.2.39",
20
+ "@types/fs-extra": "^11.0.4",
21
+ "@types/js-yaml": "^3.12.10",
22
+ "@types/lodash": "^4.17.24",
23
+ "@types/mime-types": "^3.0.1",
24
+ "@types/vinyl": "^2.0.12",
25
+ "jest": "^29.7.0",
26
+ "rimraf": "^2.7.1",
27
+ "tsdown": "^0.22.1",
28
+ "typescript": "^6.0.3"
28
29
  },
29
30
  "dependencies": {
30
- "@babel/runtime-corejs3": "^7.10.5",
31
- "@canopycanopycanopy/b-ber-logger": "3.0.8-nav.0+24db1e6b",
32
- "@canopycanopycanopy/b-ber-shapes-dublin-core": "3.0.8-nav.0+24db1e6b",
33
- "@canopycanopycanopy/b-ber-shapes-sequences": "3.0.8-nav.0+24db1e6b",
34
- "@canopycanopycanopy/b-ber-theme-sans": "3.0.8-nav.0+24db1e6b",
35
- "@canopycanopycanopy/b-ber-theme-serif": "3.0.8-nav.0+24db1e6b",
31
+ "@canopycanopycanopy/b-ber-logger": "3.0.8-next.96+7446845b",
32
+ "@canopycanopycanopy/b-ber-shapes-dublin-core": "3.0.8-next.96+7446845b",
33
+ "@canopycanopycanopy/b-ber-shapes-sequences": "3.0.8-next.96+7446845b",
34
+ "@canopycanopycanopy/b-ber-theme-sans": "3.0.8-next.96+7446845b",
35
+ "@canopycanopycanopy/b-ber-theme-serif": "3.0.8-next.96+7446845b",
36
36
  "command-exists": "^1.2.2",
37
37
  "fs-extra": "^8.1.0",
38
38
  "glob": "^7.1.4",
@@ -41,26 +41,19 @@
41
41
  "layouts": "^3.0.2",
42
42
  "lodash": "^4.17.21",
43
43
  "mime-types": "^2.1.24",
44
- "tar": "^6.1.11",
45
44
  "vinyl": "^2.2.0",
46
45
  "yargs": "^13.3.0",
47
- "yawn-yaml": "^1.3.4"
46
+ "yawn-yaml": "1.5.0"
48
47
  },
49
48
  "files": [
50
- "utils",
51
- "Config.js",
49
+ "dist",
52
50
  "EbookConvert.js",
53
- "GuideItem.js",
54
51
  "Html.js",
55
52
  "HtmlToXml.js",
56
53
  "ManifestItemProperties.js",
57
- "Spine.js",
58
- "SpineItem.js",
59
54
  "State.js",
60
- "Template.js",
61
55
  "Theme.js",
62
- "Url.js",
63
- "Yaml.js",
56
+ "utils.js",
64
57
  "YamlAdaptor.js"
65
58
  ],
66
59
  "repository": {
@@ -77,5 +70,5 @@
77
70
  "url": "https://maxwellsimmer.com"
78
71
  }
79
72
  ],
80
- "gitHead": "24db1e6bb491faae0d52c6dadc09d974a5a31cf5"
73
+ "gitHead": "7446845bcda4337bfbc9f75b55a1e0ca805023eb"
81
74
  }
package/utils.js ADDED
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+ module.exports = require('./dist/index.js').utils;
package/Config.js DELETED
@@ -1,59 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
- _Object$defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
10
- var _defaultsDeep = _interopRequireDefault(require("lodash/defaultsDeep"));
11
- var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
12
- /* eslint-disable camelcase */
13
-
14
- class Config {
15
- constructor(options = {}) {
16
- (0, _defineProperty2.default)(this, "defaultOptions", {
17
- env: process.env.NODE_ENV || 'development',
18
- src: '_project',
19
- dist: 'project',
20
- cache: true,
21
- ibooks_specified_fonts: false,
22
- theme: 'b-ber-theme-serif',
23
- themes_directory: './themes',
24
- base_url: 'http://localhost:4000/project-web',
25
- base_path: '/',
26
- remote_url: 'http://localhost:4000/',
27
- reader_url: 'http://localhost:4000/project-reader',
28
- downloads: [],
29
- ui_options: {
30
- navigation: {
31
- header_icons: {
32
- info: true,
33
- home: true,
34
- downloads: true,
35
- toc: true
36
- },
37
- footer_icons: {
38
- chapter: true,
39
- page: true
40
- }
41
- }
42
- },
43
- private: false,
44
- ignore: [],
45
- autoprefixer_options: {
46
- overrideBrowserslist: ['defaults', '> 1%', 'not dead', 'not IE 11'],
47
- flexbox: 'no-2009'
48
- },
49
- layout: 'columns',
50
- group_footnotes: true
51
- });
52
- // lodash.defaultsDeep mutates so we deepclone first
53
- const defaultOptionsClone = (0, _cloneDeep.default)(this.defaultOptions);
54
- const optionsClone = (0, _cloneDeep.default)(options);
55
- return (0, _defaultsDeep.default)(optionsClone, defaultOptionsClone);
56
- }
57
- }
58
- var _default = Config;
59
- exports.default = _default;
package/GuideItem.js DELETED
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
- _Object$defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- class GuideItem {
9
- constructor({
10
- fileName,
11
- title,
12
- type
13
- }) {
14
- this.fileName = fileName;
15
- this.title = title;
16
- this.type = type;
17
- }
18
- }
19
- var _default = GuideItem;
20
- exports.default = _default;
package/Spine.js DELETED
@@ -1,135 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$keys2 = require("@babel/runtime-corejs3/core-js-stable/object/keys");
4
- var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
5
- var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
6
- var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
7
- var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
8
- var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
9
- var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
10
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
11
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
12
- _Object$defineProperty(exports, "__esModule", {
13
- value: true
14
- });
15
- exports.default = void 0;
16
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
17
- var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectDestructuringEmpty"));
18
- var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
19
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
20
- var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/map"));
21
- var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/entries"));
22
- var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
23
- var _entries2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
24
- var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
25
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
26
- var _map2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
27
- var _path = _interopRequireDefault(require("path"));
28
- var _glob = _interopRequireDefault(require("glob"));
29
- var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
30
- var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
31
- var _difference = _interopRequireDefault(require("lodash/difference"));
32
- var _YamlAdaptor = _interopRequireDefault(require("./YamlAdaptor"));
33
- var _SpineItem = _interopRequireDefault(require("./SpineItem"));
34
- const _excluded = ["nodes"];
35
- function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
36
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(t), !0)).call(_context2, function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context3 = ownKeys(Object(t))).call(_context3, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
37
- class Spine {
38
- constructor({
39
- src,
40
- buildType,
41
- navigationConfigFile
42
- }) {
43
- this.src = src;
44
- this.buildType = buildType;
45
- this.frontMatter = new _map.default();
46
- this.navigationConfigFile = navigationConfigFile;
47
- this.entries = this.create();
48
- this.nested = this.build((0, _entries.default)(this)); // nested navigation
49
- this.flattened = this.flattenNodes(this.nested); // one-dimensional page flow
50
- }
51
-
52
- build(entries = []) {
53
- const {
54
- buildType
55
- } = this;
56
- return (0, _reduce.default)(entries).call(entries, (acc, curr, index) => {
57
- // create new spine item
58
- let node;
59
- // check if it either has nested entries or attributes that have
60
- // been assigned in the yaml file
61
- if ((0, _isPlainObject.default)(curr)) {
62
- // we know that nested navigation is wrapped in a `section`
63
- // object so we check against that
64
- const {
65
- section
66
- } = curr;
67
- if (section) {
68
- // curr has nested navigation. attach the nodes to the
69
- // previous entry in the tree by querying the last index
70
- let _index = 0;
71
- while ((0, _isUndefined.default)(acc[index - _index]) && _index !== acc.length) {
72
- _index += 1;
73
- }
74
-
75
- // add the nodes recursively and return the tree
76
- acc[index - _index].nodes = this.build(section);
77
- return acc;
78
- }
79
-
80
- // curr has attributes
81
- const [[fileName, _ref]] = (0, _entries2.default)(curr);
82
- // also set frontmatter for easy access later
83
- const options = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref), _ref));
84
- this.frontMatter.set(fileName, {});
85
- node = new _SpineItem.default(_objectSpread({
86
- fileName,
87
- buildType
88
- }, options));
89
- } else {
90
- // just a plain file name
91
- const fileName = curr;
92
- // also set frontmatter for easy access later
93
- this.frontMatter.set(fileName, {});
94
- node = new _SpineItem.default({
95
- fileName,
96
- buildType
97
- });
98
- }
99
- return (0, _concat.default)(acc).call(acc, node);
100
- }, []);
101
- }
102
- flattenNodes(arr) {
103
- return (0, _reduce.default)(arr).call(arr, (acc, curr) => {
104
- const {
105
- nodes
106
- } = curr,
107
- rest = (0, _objectWithoutProperties2.default)(curr, _excluded);
108
- const acc_ = (0, _concat.default)(acc).call(acc, rest);
109
- return nodes && nodes.length ? (0, _concat.default)(acc_).call(acc_, this.flattenNodes(nodes)) : acc_;
110
- }, []);
111
- }
112
- flattenYAML(data = []) {
113
- return (0, _reduce.default)(data).call(data, (acc, curr) => {
114
- if ((0, _isPlainObject.default)(curr)) {
115
- if ((0, _keys.default)(curr)[0] === 'section') {
116
- return (0, _concat.default)(acc).call(acc, this.flattenYAML(curr.section));
117
- }
118
- return (0, _concat.default)(acc).call(acc, (0, _keys.default)(curr)[0]);
119
- }
120
- return (0, _concat.default)(acc).call(acc, curr);
121
- }, []);
122
- }
123
- create() {
124
- var _context;
125
- const pattern = _path.default.resolve(this.src, '_markdown', '*.md');
126
- const declaredFiles = _YamlAdaptor.default.load(this.navigationConfigFile);
127
- const flattenedFiles = this.flattenYAML(declaredFiles);
128
- const systemFileNames = (0, _map2.default)(_context = _glob.default.sync(pattern)).call(_context, file => _path.default.basename(file, '.md'));
129
- const missingEntries = (0, _difference.default)(systemFileNames, flattenedFiles);
130
- const entries = (0, _concat.default)(declaredFiles).call(declaredFiles, missingEntries);
131
- return entries;
132
- }
133
- }
134
- var _default = Spine;
135
- exports.default = _default;
package/SpineItem.js DELETED
@@ -1,54 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
- _Object$defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _path = _interopRequireDefault(require("path"));
10
- var _startCase = _interopRequireDefault(require("lodash/startCase"));
11
- /* eslint-disable camelcase */
12
-
13
- class SpineItem {
14
- static isNavigationDocument(fileName) {
15
- return fileName === 'toc' || fileName === 'nav';
16
- }
17
- constructor({
18
- fileName,
19
- in_toc,
20
- linear,
21
- generated,
22
- pageOrder,
23
- buildType,
24
- nodes,
25
- ref,
26
- title
27
- }) {
28
- // TODO: rename name baseName
29
- // TODO: fileName has an extension in some cases, other times not (only seen in inject/index.js so far). this needs to be verified
30
- // TODO: should contain separate fields for input and output name (i.e., .md and .xhtml)
31
- // @issue: https://github.com/triplecanopy/b-ber/issues/207
32
-
33
- // options
34
- this.fileName = fileName;
35
- this.pageOrder = typeof pageOrder === 'number' ? pageOrder : -1;
36
- this.in_toc = typeof in_toc === 'boolean' ? in_toc : true;
37
- this.linear = typeof linear === 'boolean' ? linear : true;
38
- this.generated = Boolean(generated);
39
- this.nodes = nodes || [];
40
- this.ref = ref || null; // TODO: what's this? @issue: https://github.com/triplecanopy/b-ber/issues/207
41
- this.title = title || (0, _startCase.default)(fileName.toLowerCase());
42
-
43
- // dynamicly created props
44
- this.relativePath = SpineItem.isNavigationDocument(this.fileName) // relative to OPS
45
- ? this.fileName : _path.default.join('text', this.fileName);
46
- this.absolutePath = _path.default.resolve(`project-${buildType}`, 'OPS', this.relativePath);
47
- this.extension = _path.default.extname(this.fileName);
48
- this.name = _path.default.basename(this.fileName, this.extension);
49
- this.remotePath = '';
50
- this.type = ''; // frontmatter, backmatter, ec
51
- }
52
- }
53
- var _default = SpineItem;
54
- exports.default = _default;
package/Template.js DELETED
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
- _Object$defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
10
- var _vinyl = _interopRequireDefault(require("vinyl"));
11
- var _layouts = _interopRequireDefault(require("layouts"));
12
- class Template {}
13
- (0, _defineProperty2.default)(Template, "render", (contents, template) => (0, _layouts.default)(new _vinyl.default({
14
- path: '.Template',
15
- layout: 'template',
16
- contents: Buffer.from(contents)
17
- }), {
18
- template
19
- }).contents.toString());
20
- var _default = Template;
21
- exports.default = _default;
package/Url.js DELETED
@@ -1,43 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
- _Object$defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
10
- var _class;
11
- class Url {
12
- static trimSlashes(url) {
13
- return url.replace(/(^\/+|\/+$)/, '');
14
- }
15
- static ensureDecoded(str) {
16
- let str_ = str;
17
- while (decodeURIComponent(str_) !== str_) {
18
- str_ = decodeURIComponent(str_);
19
- }
20
- return str_;
21
- }
22
- static encodeQueryString(url) {
23
- let url_ = url.split('?');
24
- const loc = url_[0];
25
- let qs = url_[1];
26
- if (!qs) return loc;
27
- qs = Url.ensureDecoded(qs);
28
- qs = encodeURIComponent(qs);
29
- url_ = `${loc}?${qs}`;
30
- return url_;
31
- }
32
- }
33
- _class = Url;
34
- (0, _defineProperty2.default)(Url, "removeTrailingSlash", str => {
35
- if (typeof str !== 'string') return '';
36
- return str.replace(/\/+$/, '');
37
- });
38
- (0, _defineProperty2.default)(Url, "addTrailingSlash", str => {
39
- if (typeof str !== 'string' || str === '/') return '/';
40
- return `${_class.removeTrailingSlash(str)}/`;
41
- });
42
- var _default = Url;
43
- exports.default = _default;
package/Yaml.js DELETED
@@ -1,176 +0,0 @@
1
- "use strict";
2
-
3
- var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
4
- var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
5
- var _filterInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
6
- var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
7
- var _forEachInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
8
- var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
9
- var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
10
- var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
11
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
12
- _Object$defineProperty(exports, "__esModule", {
13
- value: true
14
- });
15
- exports.default = void 0;
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
17
- var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
18
- var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
19
- var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
20
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
21
- var _find = _interopRequireDefault(require("lodash/find"));
22
- var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
23
- var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
24
- var _bBerLogger = _interopRequireDefault(require("@canopycanopycanopy/b-ber-logger"));
25
- function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty2(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty2(_context3 = ownKeys(Object(t), !0)).call(_context3, function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty2(_context4 = ownKeys(Object(t))).call(_context4, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; } /* eslint-disable camelcase */
27
- const YAWN = require('yawn-yaml/cjs');
28
-
29
- // TODO set up decoder
30
- const interfaces = {
31
- metadata: {
32
- term: {
33
- type: 'string',
34
- required: true
35
- },
36
- value: {
37
- type: 'string',
38
- required: true
39
- },
40
- term_property: {
41
- type: 'string',
42
- required: false
43
- },
44
- term_property_value: {
45
- type: 'string',
46
- required: false
47
- }
48
- },
49
- config: {
50
- env: {
51
- type: 'string',
52
- required: false
53
- },
54
- src: {
55
- type: 'string',
56
- required: true
57
- },
58
- dist: {
59
- type: 'string',
60
- required: true
61
- },
62
- ibooks_specified_fonts: {
63
- type: 'boolean',
64
- required: false
65
- },
66
- theme: {
67
- type: 'string',
68
- required: false
69
- },
70
- themes_directory: {
71
- type: 'string',
72
- required: false
73
- },
74
- base_url: {
75
- type: 'string',
76
- required: false
77
- },
78
- base_path: {
79
- type: 'string',
80
- required: false
81
- },
82
- remote_url: {
83
- type: 'string',
84
- required: false
85
- },
86
- reader_url: {
87
- type: 'string',
88
- required: false
89
- },
90
- downloads: {
91
- type: 'array',
92
- required: false
93
- },
94
- ui_options: {
95
- type: 'object',
96
- required: false
97
- },
98
- private: {
99
- type: 'boolean',
100
- required: false
101
- },
102
- ignore: {
103
- type: 'array',
104
- required: false
105
- },
106
- autoprefixer_options: {
107
- type: 'object',
108
- required: false
109
- },
110
- layout: {
111
- type: 'string',
112
- required: false
113
- },
114
- group_footnotes: {
115
- type: 'boolean',
116
- required: false
117
- }
118
- // TODO: fill this in with missing options
119
- },
120
-
121
- media: {}
122
- };
123
- function YawnAPI() {
124
- this.yaml = () => '';
125
- this.json = () => {};
126
- }
127
- const typeCheck = (schema, data = {}) => {
128
- var _context;
129
- const errors = [];
130
- if (!interfaces[schema]) errors.push(new Error(`Invalid schema: ${schema}`));
131
- if (!(0, _isPlainObject.default)(data)) {
132
- errors.push(new Error(`Invalid entry: ${typeof data}`));
133
- }
134
- (0, _forEach.default)(_context = (0, _entries.default)(data)).call(_context, ([key, val]) => {
135
- if (!interfaces[schema][key]) {
136
- errors.push(new Error(`Schema "${schema}" does not support property "${key}"`));
137
- }
138
- if (interfaces[schema][key] && interfaces[schema][key].required === true && (0, _isUndefined.default)(val)) {
139
- errors.push(new Error(`Schema "${schema}" requires value for"${key}"`));
140
- }
141
- });
142
- if (errors.length) _bBerLogger.default.error(errors);
143
- };
144
- class Yaml {
145
- constructor(schema, strict) {
146
- (0, _defineProperty2.default)(this, "data", new YawnAPI());
147
- (0, _defineProperty2.default)(this, "schema", '');
148
- (0, _defineProperty2.default)(this, "strict", true);
149
- (0, _defineProperty2.default)(this, "load", file => {
150
- const data = _fsExtra.default.readFileSync(file, 'utf8');
151
- this.data = new YAWN(data);
152
- });
153
- (0, _defineProperty2.default)(this, "add", entry => {
154
- if (this.strict) typeCheck(this.schema, entry);
155
- this.data.json = [...this.data.json, entry];
156
- });
157
- (0, _defineProperty2.default)(this, "remove", (key, value) => {
158
- var _context2;
159
- this.data.json = (0, _filter.default)(_context2 = this.data.json).call(_context2, a => a[key] === value);
160
- });
161
- (0, _defineProperty2.default)(this, "update", (key, current, object) => {
162
- const entry = (0, _find.default)(this.data.json, {
163
- [key]: current
164
- });
165
- this.remove(key, current);
166
- this.data.json = [...this.data.json, _objectSpread(_objectSpread({}, entry), object)];
167
- });
168
- (0, _defineProperty2.default)(this, "yaml", () => this.data.yaml);
169
- (0, _defineProperty2.default)(this, "json", () => this.data.json);
170
- this.strict = (0, _isUndefined.default)(strict) ? strict : this.strict;
171
- if (this.strict) typeCheck(schema);
172
- this.schema = schema;
173
- }
174
- }
175
- var _default = Yaml;
176
- exports.default = _default;