@jpmorganchase/mosaic-plugins 0.1.0-beta.6 → 0.1.0-beta.8

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.
Files changed (35) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/$AliasPlugin.js +229 -64
  3. package/dist/$AliasPlugin.js.map +1 -1
  4. package/dist/$CodeModPlugin.js +118 -36
  5. package/dist/$CodeModPlugin.js.map +1 -1
  6. package/dist/$RefPlugin.js +449 -122
  7. package/dist/$RefPlugin.js.map +1 -1
  8. package/dist/$TagPlugin.js +236 -77
  9. package/dist/$TagPlugin.js.map +1 -1
  10. package/dist/BreadcrumbsPlugin.js +114 -42
  11. package/dist/BreadcrumbsPlugin.js.map +1 -1
  12. package/dist/LazyPagePlugin.js +255 -86
  13. package/dist/LazyPagePlugin.js.map +1 -1
  14. package/dist/LocalFolderSavePlugin.js +165 -0
  15. package/dist/LocalFolderSavePlugin.js.map +1 -0
  16. package/dist/NextPrevPagePlugin.js +157 -47
  17. package/dist/NextPrevPagePlugin.js.map +1 -1
  18. package/dist/PagesWithoutFileExtPlugin.js +119 -38
  19. package/dist/PagesWithoutFileExtPlugin.js.map +1 -1
  20. package/dist/ReadingTimePlugin.mjs.map +1 -1
  21. package/dist/SearchIndexPlugin.mjs +268 -0
  22. package/dist/SearchIndexPlugin.mjs.map +1 -0
  23. package/dist/SharedConfigPlugin.js +174 -43
  24. package/dist/SharedConfigPlugin.js.map +1 -1
  25. package/dist/SidebarPlugin.js +319 -87
  26. package/dist/SidebarPlugin.js.map +1 -1
  27. package/dist/SiteMapPlugin.js +90 -38
  28. package/dist/SiteMapPlugin.js.map +1 -1
  29. package/dist/TableOfContentsPlugin.mjs +49 -58
  30. package/dist/TableOfContentsPlugin.mjs.map +1 -1
  31. package/dist/__tests__/BreadcrumbsPlugin.test.js +160 -0
  32. package/dist/__tests__/BreadcrumbsPlugin.test.js.map +1 -0
  33. package/dist/utils/normaliseRefs.js +276 -74
  34. package/dist/utils/normaliseRefs.js.map +1 -1
  35. package/package.json +16 -5
@@ -1,146 +1,473 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const path_1 = __importDefault(require("path"));
16
- const reduce_1 = __importDefault(require("lodash/reduce"));
17
- const omit_1 = __importDefault(require("lodash/omit"));
18
- const escapeRegExp_1 = __importDefault(require("lodash/escapeRegExp"));
19
- const json_schema_ref_parser_1 = __importDefault(require("@apidevtools/json-schema-ref-parser"));
20
- const normaliseRefs_1 = __importDefault(require("./utils/normaliseRefs"));
21
- /**
22
- * Plugin that scrapes `$ref` properties from page metadata and also applies all refs stored in `config.data.refs`.
23
- * Other plugins can use `setRef` to apply new refs, as long as they call it before this plugin has reaches `$beforeSend`
24
- */
25
- const $RefPlugin = {
26
- afterUpdate(mutableFilesystem, { ignorePages, globalFilesystem, serialiser, pageExtensions, globalConfig }) {
27
- return __awaiter(this, void 0, void 0, function* () {
28
- mutableFilesystem.__internal_do_not_use_addReadFileHook((pagePath, fileData) => __awaiter(this, void 0, void 0, function* () {
29
- if (globalConfig.data.globalRefs[pagePath]) {
30
- const normalisedRef = Object.assign(Object.assign({}, (yield serialiser.deserialise(pagePath, fileData))), (yield (0, normaliseRefs_1.default)(String(pagePath), globalConfig.data.globalRefs[pagePath], globalFilesystem, pageExtensions, ignorePages)));
31
- const resolve = createRefResolver({
32
- [pagePath]: normalisedRef
33
- }, serialiser, globalFilesystem);
34
- const refParser = new json_schema_ref_parser_1.default();
35
- try {
36
- const resolved = yield refParser.dereference(String(pagePath), normalisedRef, {
37
- resolve,
38
- dereference: { circular: false }
39
- });
40
- return serialiser.serialise(pagePath, Object.assign(Object.assign({}, normalisedRef), resolved));
41
- }
42
- catch (e) {
43
- console.warn(`Error resolving ref(s) for page '${pagePath}'. ${e.message.replace(/\.$/, '')} in '${e.source}'`);
44
- throw e;
45
- }
46
- }
47
- return fileData;
48
- }));
49
- });
50
- },
51
- $beforeSend(mutableFilesystem, { config, serialiser, pageExtensions, ignorePages }, options) {
52
- return __awaiter(this, void 0, void 0, function* () {
53
- // Prevent any more refs being set after this lifecycle has been called - as they won't take effect
54
- config.setRef = () => {
55
- throw new Error('Cannot set refs after `RefPlugin` has reached `$beforeSend` lifecycle phase.');
56
- };
57
- const normalisedRefs = {};
58
- if (config.data.refs) {
59
- // First pass of refs, normalises any $ref entries to expand wildcards
60
- for (const fullPath in config.data.refs) {
61
- const page = yield serialiser.deserialise(fullPath, yield mutableFilesystem.promises.readFile(fullPath));
62
- normalisedRefs[fullPath] = Object.assign(Object.assign({}, page), (yield (0, normaliseRefs_1.default)(String(fullPath), config.data.refs[fullPath], mutableFilesystem, pageExtensions, ignorePages)));
63
- }
64
- const resolve = createRefResolver(normalisedRefs, serialiser, mutableFilesystem);
65
- const refParser = new json_schema_ref_parser_1.default();
66
- // Second pass of refs, resolves the refs
67
- for (const fullPath in normalisedRefs) {
68
- const page = normalisedRefs[fullPath];
69
- try {
70
- const resolved = yield refParser.dereference(String(fullPath), page, {
71
- resolve,
72
- dereference: { circular: false }
73
- });
74
- normalisedRefs[fullPath] = Object.assign(Object.assign({}, page), resolved);
75
- }
76
- catch (e) {
77
- console.warn(`Error resolving ref(s) for page '${fullPath}'. ${e.message.replace(/\.$/, '')} in '${e.source}'`);
78
- throw e;
79
- }
80
- }
81
- // Third pass, write out the files
82
- for (const fullPath in normalisedRefs) {
83
- yield mutableFilesystem.promises.writeFile(fullPath, yield serialiser.serialise(fullPath, normalisedRefs[fullPath]));
84
- }
1
+ function _arrayLikeToArray(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _arrayWithoutHoles(arr) {
7
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
8
+ }
9
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
10
+ try {
11
+ var info = gen[key](arg);
12
+ var value = info.value;
13
+ } catch (error) {
14
+ reject(error);
15
+ return;
16
+ }
17
+ if (info.done) {
18
+ resolve(value);
19
+ } else {
20
+ Promise.resolve(value).then(_next, _throw);
21
+ }
22
+ }
23
+ function _asyncToGenerator(fn) {
24
+ return function() {
25
+ var self = this, args = arguments;
26
+ return new Promise(function(resolve, reject) {
27
+ var gen = fn.apply(self, args);
28
+ function _next(value) {
29
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
85
30
  }
86
- });
87
- },
88
- $afterSource(pages, { config, ignorePages, pageExtensions }) {
89
- return __awaiter(this, void 0, void 0, function* () {
90
- const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
91
- for (const page of pages) {
92
- if (!isNonHiddenPage(page.fullPath)) {
93
- continue;
94
- }
95
- const refs = findKeys(page, '$ref');
96
- if (refs.length) {
97
- for (const ref of refs) {
98
- config.setRef(page.fullPath, ...ref);
99
- }
100
- }
31
+ function _throw(err) {
32
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
101
33
  }
102
- return pages;
34
+ _next(undefined);
35
+ });
36
+ };
37
+ }
38
+ function _defineProperty(obj, key, value) {
39
+ if (key in obj) {
40
+ Object.defineProperty(obj, key, {
41
+ value: value,
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true
103
45
  });
46
+ } else {
47
+ obj[key] = value;
104
48
  }
105
- };
106
- exports.default = $RefPlugin;
49
+ return obj;
50
+ }
51
+ function _iterableToArray(iter) {
52
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
53
+ }
54
+ function _nonIterableSpread() {
55
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
56
+ }
57
+ function _objectSpread(target) {
58
+ for(var i = 1; i < arguments.length; i++){
59
+ var source = arguments[i] != null ? arguments[i] : {};
60
+ var ownKeys = Object.keys(source);
61
+ if (typeof Object.getOwnPropertySymbols === "function") {
62
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
63
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
64
+ }));
65
+ }
66
+ ownKeys.forEach(function(key) {
67
+ _defineProperty(target, key, source[key]);
68
+ });
69
+ }
70
+ return target;
71
+ }
72
+ function _toConsumableArray(arr) {
73
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
74
+ }
75
+ function _unsupportedIterableToArray(o, minLen) {
76
+ if (!o) return;
77
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
78
+ var n = Object.prototype.toString.call(o).slice(8, -1);
79
+ if (n === "Object" && o.constructor) n = o.constructor.name;
80
+ if (n === "Map" || n === "Set") return Array.from(n);
81
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
82
+ }
83
+ import regeneratorRuntime from "regenerator-runtime";
84
+ import path from "path";
85
+ import reduce from "lodash/reduce";
86
+ import omit from "lodash/omit";
87
+ import merge from "lodash/merge";
88
+ import escapeRegExp from "lodash/escapeRegExp";
89
+ import $RefParser from "@apidevtools/json-schema-ref-parser";
90
+ import normaliseRefs from "./utils/normaliseRefs";
107
91
  function createRefResolver(normalisedRefs, serialiser, mutableFilesystem) {
108
92
  return {
109
93
  file: {
110
94
  canRead: true,
111
95
  order: 1,
112
- read(file, callback) {
113
- return __awaiter(this, void 0, void 0, function* () {
114
- try {
115
- const refedPage = normalisedRefs[file.url] ||
116
- (yield serialiser.deserialise(file.url, yield mutableFilesystem.promises.readFile(file.url)));
117
- return callback(null, (0, omit_1.default)(refedPage, 'content'));
118
- }
119
- catch (e) {
120
- return callback(e, null);
121
- }
122
- });
96
+ read: function read(file, callback) {
97
+ return _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
98
+ var refedPage;
99
+ return regeneratorRuntime.wrap(function _callee$(_ctx) {
100
+ while(1)switch(_ctx.prev = _ctx.next){
101
+ case 0:
102
+ _ctx.prev = 0;
103
+ _ctx.t0 = normalisedRefs[file.url];
104
+ if (_ctx.t0) {
105
+ _ctx.next = 11;
106
+ break;
107
+ }
108
+ _ctx.t1 = serialiser;
109
+ _ctx.t2 = file.url;
110
+ _ctx.next = 7;
111
+ return mutableFilesystem.promises.readFile(file.url);
112
+ case 7:
113
+ _ctx.t3 = _ctx.sent;
114
+ _ctx.next = 10;
115
+ return _ctx.t1.deserialise.call(_ctx.t1, _ctx.t2, _ctx.t3);
116
+ case 10:
117
+ _ctx.t0 = _ctx.sent;
118
+ case 11:
119
+ refedPage = _ctx.t0;
120
+ return _ctx.abrupt("return", callback(null, omit(refedPage, "content")));
121
+ case 15:
122
+ _ctx.prev = 15;
123
+ _ctx.t4 = _ctx["catch"](0);
124
+ return _ctx.abrupt("return", callback(_ctx.t4, null));
125
+ case 18:
126
+ case "end":
127
+ return _ctx.stop();
128
+ }
129
+ }, _callee, null, [
130
+ [
131
+ 0,
132
+ 15
133
+ ]
134
+ ]);
135
+ }))();
123
136
  }
124
137
  }
125
138
  };
126
139
  }
127
- const findKeys = (obj, targetProp, pathParts = []) => {
128
- return (0, reduce_1.default)(obj, (found, value, key) => {
140
+ var findKeys = function(obj, targetProp) {
141
+ var pathParts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
142
+ return reduce(obj, function(found, value, key) {
129
143
  if (key === targetProp) {
130
- return found.concat([[pathParts.concat(String(key)), value]]);
144
+ return found.concat([
145
+ [
146
+ pathParts.concat(String(key)),
147
+ value
148
+ ]
149
+ ]);
131
150
  }
132
- if (typeof value === 'object') {
133
- const foundParents = findKeys(value, targetProp, pathParts.concat(String(key)));
151
+ if (typeof value === "object") {
152
+ var foundParents = findKeys(value, targetProp, pathParts.concat(String(key)));
134
153
  return found.concat(foundParents);
135
154
  }
136
155
  return found;
137
156
  }, []);
138
157
  };
139
158
  function createPageTest(ignorePages, pageExtensions) {
140
- const extTest = new RegExp(`${pageExtensions.map(escapeRegExp_1.default).join('|')}$`);
141
- const ignoreTest = new RegExp(`${ignorePages.map(escapeRegExp_1.default).join('|')}$`);
142
- return file => {
143
- return !ignoreTest.test(file) && extTest.test(file) && !path_1.default.basename(file).startsWith('.');
159
+ var extTest = new RegExp("".concat(pageExtensions.map(escapeRegExp).join("|"), "$"));
160
+ var ignoreTest = new RegExp("".concat(ignorePages.map(escapeRegExp).join("|"), "$"));
161
+ return function(file) {
162
+ return !ignoreTest.test(file) && extTest.test(file) && !path.basename(file).startsWith(".");
144
163
  };
145
164
  }
165
+ /**
166
+ * Plugin that scrapes `$ref` properties from page metadata and also applies all refs stored in `config.data.refs`.
167
+ * Other plugins can use `setRef` to apply new refs, as long as they call it before this plugin has reaches `$beforeSend`
168
+ */ var $RefPlugin = {
169
+ afterUpdate: function afterUpdate(mutableFilesystem, param) {
170
+ var ignorePages = param.ignorePages, globalFilesystem = param.globalFilesystem, serialiser = param.serialiser, pageExtensions = param.pageExtensions, globalConfig = param.globalConfig;
171
+ return _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
172
+ return regeneratorRuntime.wrap(function _callee$(_ctx) {
173
+ while(1)switch(_ctx.prev = _ctx.next){
174
+ case 0:
175
+ mutableFilesystem.__internal_do_not_use_addReadFileHook(function() {
176
+ var _ref = _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee(pagePath, fileData) {
177
+ var normalisedRef, resolve, refParser, resolved, serialisedPage;
178
+ return regeneratorRuntime.wrap(function _callee$(_ctx) {
179
+ while(1)switch(_ctx.prev = _ctx.next){
180
+ case 0:
181
+ if (!globalConfig.data.globalRefs[pagePath]) {
182
+ _ctx.next = 25;
183
+ break;
184
+ }
185
+ _ctx.t0 = merge;
186
+ _ctx.next = 4;
187
+ return serialiser.deserialise(pagePath, fileData);
188
+ case 4:
189
+ _ctx.t1 = _ctx.sent;
190
+ _ctx.next = 7;
191
+ return normaliseRefs(String(pagePath), globalConfig.data.globalRefs[pagePath], globalFilesystem, pageExtensions, ignorePages);
192
+ case 7:
193
+ _ctx.t2 = _ctx.sent;
194
+ normalisedRef = (0, _ctx.t0)(_ctx.t1, _ctx.t2);
195
+ resolve = createRefResolver(_defineProperty({}, pagePath, normalisedRef), serialiser, globalFilesystem);
196
+ refParser = new $RefParser();
197
+ _ctx.prev = 11;
198
+ _ctx.next = 14;
199
+ return refParser.dereference(String(pagePath), normalisedRef, {
200
+ resolve: resolve,
201
+ dereference: {
202
+ circular: false
203
+ }
204
+ });
205
+ case 14:
206
+ resolved = _ctx.sent;
207
+ _ctx.next = 17;
208
+ return serialiser.serialise(pagePath, merge(normalisedRef, resolved));
209
+ case 17:
210
+ serialisedPage = _ctx.sent;
211
+ return _ctx.abrupt("return", serialisedPage);
212
+ case 21:
213
+ _ctx.prev = 21;
214
+ _ctx.t3 = _ctx["catch"](11);
215
+ console.warn("Error resolving ref(s) for page '".concat(pagePath, "'. ").concat(_ctx.t3.message.replace(/\.$/, ""), " in '").concat(_ctx.t3.source, "'"));
216
+ throw _ctx.t3;
217
+ case 25:
218
+ return _ctx.abrupt("return", fileData);
219
+ case 26:
220
+ case "end":
221
+ return _ctx.stop();
222
+ }
223
+ }, _callee, null, [
224
+ [
225
+ 11,
226
+ 21
227
+ ]
228
+ ]);
229
+ }));
230
+ return function(pagePath, fileData) {
231
+ return _ref.apply(this, arguments);
232
+ };
233
+ }());
234
+ case 1:
235
+ case "end":
236
+ return _ctx.stop();
237
+ }
238
+ }, _callee);
239
+ }))();
240
+ },
241
+ $beforeSend: function $beforeSend(mutableFilesystem, param) {
242
+ var config = param.config, serialiser = param.serialiser, pageExtensions = param.pageExtensions, ignorePages = param.ignorePages;
243
+ return _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
244
+ var normalisedRefs, fullPath, page, resolve, refParser, fullPath1, page1, resolved, fullPath2;
245
+ return regeneratorRuntime.wrap(function _callee$(_ctx) {
246
+ while(1)switch(_ctx.prev = _ctx.next){
247
+ case 0:
248
+ // Prevent any more refs being set after this lifecycle has been called - as they won't take effect
249
+ config.setRef = function() {
250
+ throw new Error("Cannot set refs after `RefPlugin` has reached `$beforeSend` lifecycle phase.");
251
+ };
252
+ normalisedRefs = {};
253
+ if (!config.data.refs) {
254
+ _ctx.next = 53;
255
+ break;
256
+ }
257
+ _ctx.t0 = regeneratorRuntime.keys(config.data.refs);
258
+ case 4:
259
+ if ((_ctx.t1 = _ctx.t0()).done) {
260
+ _ctx.next = 22;
261
+ break;
262
+ }
263
+ fullPath = _ctx.t1.value;
264
+ _ctx.t2 = serialiser;
265
+ _ctx.t3 = fullPath;
266
+ _ctx.next = 10;
267
+ return mutableFilesystem.promises.readFile(fullPath);
268
+ case 10:
269
+ _ctx.t4 = _ctx.sent;
270
+ _ctx.next = 13;
271
+ return _ctx.t2.deserialise.call(_ctx.t2, _ctx.t3, _ctx.t4);
272
+ case 13:
273
+ page = _ctx.sent;
274
+ _ctx.t5 = merge;
275
+ _ctx.t6 = page;
276
+ _ctx.next = 18;
277
+ return normaliseRefs(String(fullPath), config.data.refs[fullPath], mutableFilesystem, pageExtensions, ignorePages);
278
+ case 18:
279
+ _ctx.t7 = _ctx.sent;
280
+ normalisedRefs[fullPath] = (0, _ctx.t5)(_ctx.t6, _ctx.t7);
281
+ _ctx.next = 4;
282
+ break;
283
+ case 22:
284
+ resolve = createRefResolver(normalisedRefs, serialiser, mutableFilesystem);
285
+ refParser = new $RefParser();
286
+ _ctx.t8 = regeneratorRuntime.keys(normalisedRefs);
287
+ case 25:
288
+ if ((_ctx.t9 = _ctx.t8()).done) {
289
+ _ctx.next = 41;
290
+ break;
291
+ }
292
+ fullPath1 = _ctx.t9.value;
293
+ page1 = normalisedRefs[fullPath1];
294
+ _ctx.prev = 28;
295
+ _ctx.next = 31;
296
+ return refParser.dereference(String(fullPath1), page1, {
297
+ resolve: resolve,
298
+ dereference: {
299
+ circular: false
300
+ }
301
+ });
302
+ case 31:
303
+ resolved = _ctx.sent;
304
+ normalisedRefs[fullPath1] = _objectSpread({}, page1, resolved);
305
+ _ctx.next = 39;
306
+ break;
307
+ case 35:
308
+ _ctx.prev = 35;
309
+ _ctx.t10 = _ctx["catch"](28);
310
+ console.warn("Error resolving ref(s) for page '".concat(fullPath1, "'. ").concat(_ctx.t10.message.replace(/\.$/, ""), " in '").concat(_ctx.t10.source, "'"));
311
+ throw _ctx.t10;
312
+ case 39:
313
+ _ctx.next = 25;
314
+ break;
315
+ case 41:
316
+ _ctx.t11 = regeneratorRuntime.keys(normalisedRefs);
317
+ case 42:
318
+ if ((_ctx.t12 = _ctx.t11()).done) {
319
+ _ctx.next = 53;
320
+ break;
321
+ }
322
+ fullPath2 = _ctx.t12.value;
323
+ _ctx.t13 = mutableFilesystem.promises;
324
+ _ctx.t14 = fullPath2;
325
+ _ctx.next = 48;
326
+ return serialiser.serialise(fullPath2, normalisedRefs[fullPath2]);
327
+ case 48:
328
+ _ctx.t15 = _ctx.sent;
329
+ _ctx.next = 51;
330
+ return _ctx.t13.writeFile.call(_ctx.t13, _ctx.t14, _ctx.t15);
331
+ case 51:
332
+ _ctx.next = 42;
333
+ break;
334
+ case 53:
335
+ case "end":
336
+ return _ctx.stop();
337
+ }
338
+ }, _callee, null, [
339
+ [
340
+ 28,
341
+ 35
342
+ ]
343
+ ]);
344
+ }))();
345
+ },
346
+ $afterSource: function $afterSource(pages, param) {
347
+ var config = param.config, ignorePages = param.ignorePages, pageExtensions = param.pageExtensions;
348
+ return _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
349
+ var isNonHiddenPage, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, page, refs, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, ref, _config;
350
+ return regeneratorRuntime.wrap(function _callee$(_ctx) {
351
+ while(1)switch(_ctx.prev = _ctx.next){
352
+ case 0:
353
+ isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
354
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
355
+ _ctx.prev = 2;
356
+ _iterator = pages[Symbol.iterator]();
357
+ case 4:
358
+ if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
359
+ _ctx.next = 30;
360
+ break;
361
+ }
362
+ page = _step.value;
363
+ if (isNonHiddenPage(page.fullPath)) {
364
+ _ctx.next = 8;
365
+ break;
366
+ }
367
+ return _ctx.abrupt("continue", 27);
368
+ case 8:
369
+ refs = findKeys(page, "$ref");
370
+ if (!refs.length) {
371
+ _ctx.next = 27;
372
+ break;
373
+ }
374
+ _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
375
+ _ctx.prev = 11;
376
+ for(_iterator1 = refs[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
377
+ ref = _step1.value;
378
+ ;
379
+ (_config = config).setRef.apply(_config, [
380
+ page.fullPath
381
+ ].concat(_toConsumableArray(ref)));
382
+ }
383
+ _ctx.next = 19;
384
+ break;
385
+ case 15:
386
+ _ctx.prev = 15;
387
+ _ctx.t0 = _ctx["catch"](11);
388
+ _didIteratorError1 = true;
389
+ _iteratorError1 = _ctx.t0;
390
+ case 19:
391
+ _ctx.prev = 19;
392
+ _ctx.prev = 20;
393
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
394
+ _iterator1.return();
395
+ }
396
+ case 22:
397
+ _ctx.prev = 22;
398
+ if (!_didIteratorError1) {
399
+ _ctx.next = 25;
400
+ break;
401
+ }
402
+ throw _iteratorError1;
403
+ case 25:
404
+ return _ctx.finish(22);
405
+ case 26:
406
+ return _ctx.finish(19);
407
+ case 27:
408
+ _iteratorNormalCompletion = true;
409
+ _ctx.next = 4;
410
+ break;
411
+ case 30:
412
+ _ctx.next = 36;
413
+ break;
414
+ case 32:
415
+ _ctx.prev = 32;
416
+ _ctx.t1 = _ctx["catch"](2);
417
+ _didIteratorError = true;
418
+ _iteratorError = _ctx.t1;
419
+ case 36:
420
+ _ctx.prev = 36;
421
+ _ctx.prev = 37;
422
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
423
+ _iterator.return();
424
+ }
425
+ case 39:
426
+ _ctx.prev = 39;
427
+ if (!_didIteratorError) {
428
+ _ctx.next = 42;
429
+ break;
430
+ }
431
+ throw _iteratorError;
432
+ case 42:
433
+ return _ctx.finish(39);
434
+ case 43:
435
+ return _ctx.finish(36);
436
+ case 44:
437
+ return _ctx.abrupt("return", pages);
438
+ case 45:
439
+ case "end":
440
+ return _ctx.stop();
441
+ }
442
+ }, _callee, null, [
443
+ [
444
+ 2,
445
+ 32,
446
+ 36,
447
+ 44
448
+ ],
449
+ [
450
+ 11,
451
+ 15,
452
+ 19,
453
+ 27
454
+ ],
455
+ [
456
+ 20,
457
+ ,
458
+ 22,
459
+ 26
460
+ ],
461
+ [
462
+ 37,
463
+ ,
464
+ 39,
465
+ 43
466
+ ]
467
+ ]);
468
+ }))();
469
+ }
470
+ };
471
+ export default $RefPlugin;
472
+
146
473
  //# sourceMappingURL=$RefPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"$RefPlugin.js","sourceRoot":"","sources":["../src/$RefPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/$RefPlugin.ts"],"sourcesContent":["import path from 'path';\nimport reduce from 'lodash/reduce';\nimport omit from 'lodash/omit';\nimport merge from 'lodash/merge';\nimport escapeRegExp from 'lodash/escapeRegExp';\nimport $RefParser from '@apidevtools/json-schema-ref-parser';\nimport type { Plugin as PluginType } from '@jpmorganchase/mosaic-types';\n\nimport normaliseRefs from './utils/normaliseRefs';\n\nfunction createRefResolver(normalisedRefs, serialiser, mutableFilesystem) {\n return {\n file: {\n canRead: true,\n order: 1,\n async read(file, callback) {\n try {\n const refedPage =\n normalisedRefs[file.url] ||\n (await serialiser.deserialise(\n file.url,\n await mutableFilesystem.promises.readFile(file.url)\n ));\n return callback(null, omit(refedPage, 'content'));\n } catch (e) {\n return callback(e, null);\n }\n }\n }\n };\n}\n\nconst findKeys = (obj, targetProp, pathParts: string[] = []): [string[], string][] =>\n reduce<string, [string[], string][]>(\n obj,\n (found, value, key) => {\n if (key === targetProp) {\n return found.concat([[pathParts.concat(String(key)), value]]);\n }\n if (typeof value === 'object') {\n const foundParents = findKeys(value, targetProp, pathParts.concat(String(key)));\n return found.concat(foundParents);\n }\n return found;\n },\n []\n );\n\nfunction createPageTest(ignorePages, pageExtensions) {\n const extTest = new RegExp(`${pageExtensions.map(escapeRegExp).join('|')}$`);\n const ignoreTest = new RegExp(`${ignorePages.map(escapeRegExp).join('|')}$`);\n return file =>\n !ignoreTest.test(file) && extTest.test(file) && !path.basename(file).startsWith('.');\n}\n\ninterface RefsPluginConfigData {\n refs: { [key: string]: { $$path: string[]; $$value: string }[] };\n globalRefs: { [key: string]: { $$path: string[]; $$value: string }[] };\n subscribedTags: string[];\n}\n\ninterface RefsPluginPage {\n fullPath: string;\n refs: { [key: string]: { $$path: string[]; $$value: string }[] };\n}\n\n/**\n * Plugin that scrapes `$ref` properties from page metadata and also applies all refs stored in `config.data.refs`.\n * Other plugins can use `setRef` to apply new refs, as long as they call it before this plugin has reaches `$beforeSend`\n */\nconst $RefPlugin: PluginType<RefsPluginPage, unknown, RefsPluginConfigData> = {\n async afterUpdate(\n mutableFilesystem,\n { ignorePages, globalFilesystem, serialiser, pageExtensions, globalConfig }\n ) {\n mutableFilesystem.__internal_do_not_use_addReadFileHook(async (pagePath: string, fileData) => {\n if (globalConfig.data.globalRefs[pagePath]) {\n const normalisedRef = merge(\n await serialiser.deserialise(pagePath, fileData),\n await normaliseRefs(\n String(pagePath),\n globalConfig.data.globalRefs[pagePath],\n globalFilesystem,\n pageExtensions,\n ignorePages\n )\n );\n const resolve = createRefResolver(\n {\n [pagePath]: normalisedRef\n },\n serialiser,\n globalFilesystem\n );\n const refParser = new $RefParser();\n\n try {\n const resolved = await refParser.dereference(String(pagePath), normalisedRef, {\n resolve,\n dereference: { circular: false }\n });\n const serialisedPage = await serialiser.serialise(\n pagePath,\n merge(normalisedRef, resolved)\n );\n return serialisedPage;\n } catch (e) {\n console.warn(\n `Error resolving ref(s) for page '${pagePath}'. ${e.message.replace(/\\.$/, '')} in '${\n e.source\n }'`\n );\n throw e;\n }\n }\n\n return fileData;\n });\n },\n async $beforeSend(mutableFilesystem, { config, serialiser, pageExtensions, ignorePages }) {\n // Prevent any more refs being set after this lifecycle has been called - as they won't take effect\n config.setRef = () => {\n throw new Error(\n 'Cannot set refs after `RefPlugin` has reached `$beforeSend` lifecycle phase.'\n );\n };\n const normalisedRefs = {};\n\n if (config.data.refs) {\n // First pass of refs, normalises any $ref entries to expand wildcards\n for (const fullPath in config.data.refs) {\n const page = await serialiser.deserialise(\n fullPath,\n await mutableFilesystem.promises.readFile(fullPath)\n );\n normalisedRefs[fullPath] = merge(\n page,\n await normaliseRefs(\n String(fullPath),\n config.data.refs[fullPath],\n mutableFilesystem,\n pageExtensions,\n ignorePages\n )\n );\n }\n\n const resolve = createRefResolver(normalisedRefs, serialiser, mutableFilesystem);\n const refParser = new $RefParser();\n\n // Second pass of refs, resolves the refs\n for (const fullPath in normalisedRefs) {\n const page = normalisedRefs[fullPath];\n try {\n const resolved = await refParser.dereference(String(fullPath), page, {\n resolve,\n dereference: { circular: false }\n });\n normalisedRefs[fullPath] = { ...page, ...resolved };\n } catch (e) {\n console.warn(\n `Error resolving ref(s) for page '${fullPath}'. ${e.message.replace(/\\.$/, '')} in '${\n e.source\n }'`\n );\n throw e;\n }\n }\n // Third pass, write out the files\n for (const fullPath in normalisedRefs) {\n await mutableFilesystem.promises.writeFile(\n fullPath,\n await serialiser.serialise(fullPath, normalisedRefs[fullPath])\n );\n }\n }\n },\n async $afterSource(pages, { config, ignorePages, pageExtensions }) {\n const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);\n\n for (const page of pages) {\n if (!isNonHiddenPage(page.fullPath)) {\n continue;\n }\n const refs = findKeys(page, '$ref');\n\n if (refs.length) {\n for (const ref of refs) {\n config.setRef(page.fullPath, ...ref);\n }\n }\n }\n return pages;\n }\n};\n\nexport default $RefPlugin;\n"],"names":["path","reduce","omit","merge","escapeRegExp","$RefParser","normaliseRefs","createRefResolver","normalisedRefs","serialiser","mutableFilesystem","file","canRead","order","read","callback","refedPage","url","promises","readFile","deserialise","findKeys","obj","targetProp","pathParts","found","value","key","concat","String","foundParents","createPageTest","ignorePages","pageExtensions","extTest","RegExp","map","join","ignoreTest","test","basename","startsWith","$RefPlugin","afterUpdate","globalFilesystem","globalConfig","__internal_do_not_use_addReadFileHook","pagePath","fileData","normalisedRef","resolve","refParser","resolved","serialisedPage","data","globalRefs","dereference","circular","serialise","console","warn","e","message","replace","source","$beforeSend","config","fullPath","page","setRef","Error","refs","writeFile","$afterSource","pages","isNonHiddenPage","ref","length"],"mappings":"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"}