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

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,473 +1,144 @@
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);
30
- }
31
- function _throw(err) {
32
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
33
- }
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
45
- });
46
- } else {
47
- obj[key] = value;
48
- }
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";
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 merge_1 = __importDefault(require("lodash/merge"));
19
+ const escapeRegExp_1 = __importDefault(require("lodash/escapeRegExp"));
20
+ const json_schema_ref_parser_1 = __importDefault(require("@apidevtools/json-schema-ref-parser"));
21
+ const normaliseRefs_1 = __importDefault(require("./utils/normaliseRefs"));
91
22
  function createRefResolver(normalisedRefs, serialiser, mutableFilesystem) {
92
23
  return {
93
24
  file: {
94
25
  canRead: true,
95
26
  order: 1,
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
- }))();
27
+ read(file, callback) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ try {
30
+ const refedPage = normalisedRefs[file.url] ||
31
+ (yield serialiser.deserialise(file.url, yield mutableFilesystem.promises.readFile(file.url)));
32
+ return callback(null, (0, omit_1.default)(refedPage, 'content'));
33
+ }
34
+ catch (e) {
35
+ return callback(e, null);
36
+ }
37
+ });
136
38
  }
137
39
  }
138
40
  };
139
41
  }
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) {
143
- if (key === targetProp) {
144
- return found.concat([
145
- [
146
- pathParts.concat(String(key)),
147
- value
148
- ]
149
- ]);
150
- }
151
- if (typeof value === "object") {
152
- var foundParents = findKeys(value, targetProp, pathParts.concat(String(key)));
153
- return found.concat(foundParents);
154
- }
155
- return found;
156
- }, []);
157
- };
42
+ const findKeys = (obj, targetProp, pathParts = []) => (0, reduce_1.default)(obj, (found, value, key) => {
43
+ if (key === targetProp) {
44
+ return found.concat([[pathParts.concat(String(key)), value]]);
45
+ }
46
+ if (typeof value === 'object') {
47
+ const foundParents = findKeys(value, targetProp, pathParts.concat(String(key)));
48
+ return found.concat(foundParents);
49
+ }
50
+ return found;
51
+ }, []);
158
52
  function createPageTest(ignorePages, pageExtensions) {
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(".");
163
- };
53
+ const extTest = new RegExp(`${pageExtensions.map(escapeRegExp_1.default).join('|')}$`);
54
+ const ignoreTest = new RegExp(`${ignorePages.map(escapeRegExp_1.default).join('|')}$`);
55
+ return file => !ignoreTest.test(file) && extTest.test(file) && !path_1.default.basename(file).startsWith('.');
164
56
  }
165
57
  /**
166
58
  * Plugin that scrapes `$ref` properties from page metadata and also applies all refs stored in `config.data.refs`.
167
59
  * 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();
60
+ */
61
+ const $RefPlugin = {
62
+ afterUpdate(mutableFilesystem, { ignorePages, globalFilesystem, serialiser, pageExtensions, globalConfig }) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ mutableFilesystem.__internal_do_not_use_addReadFileHook((pagePath, fileData) => __awaiter(this, void 0, void 0, function* () {
65
+ if (globalConfig.data.globalRefs[pagePath]) {
66
+ const normalisedRef = (0, merge_1.default)(yield serialiser.deserialise(pagePath, fileData), yield (0, normaliseRefs_1.default)(String(pagePath), globalConfig.data.globalRefs[pagePath], globalFilesystem, pageExtensions, ignorePages));
67
+ const resolve = createRefResolver({
68
+ [pagePath]: normalisedRef
69
+ }, serialiser, globalFilesystem);
70
+ const refParser = new json_schema_ref_parser_1.default();
71
+ try {
72
+ const resolved = yield refParser.dereference(String(pagePath), normalisedRef, {
73
+ resolve,
74
+ dereference: { circular: false }
75
+ });
76
+ const serialisedPage = yield serialiser.serialise(pagePath, (0, merge_1.default)(normalisedRef, resolved));
77
+ return serialisedPage;
78
+ }
79
+ catch (e) {
80
+ console.warn(`Error resolving ref(s) for page '${pagePath}'. ${e.message.replace(/\.$/, '')} in '${e.source}'`);
81
+ throw e;
82
+ }
237
83
  }
238
- }, _callee);
239
- }))();
84
+ return fileData;
85
+ }));
86
+ });
240
87
  },
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
- }
88
+ $beforeSend(mutableFilesystem, { config, serialiser, pageExtensions, ignorePages }) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ // Prevent any more refs being set after this lifecycle has been called - as they won't take effect
91
+ config.setRef = () => {
92
+ throw new Error('Cannot set refs after `RefPlugin` has reached `$beforeSend` lifecycle phase.');
93
+ };
94
+ const normalisedRefs = {};
95
+ if (config.data.refs) {
96
+ // First pass of refs, normalises any $ref entries to expand wildcards
97
+ for (const fullPath in config.data.refs) {
98
+ const page = yield serialiser.deserialise(fullPath, yield mutableFilesystem.promises.readFile(fullPath));
99
+ normalisedRefs[fullPath] = (0, merge_1.default)(page, yield (0, normaliseRefs_1.default)(String(fullPath), config.data.refs[fullPath], mutableFilesystem, pageExtensions, ignorePages));
100
+ }
101
+ const resolve = createRefResolver(normalisedRefs, serialiser, mutableFilesystem);
102
+ const refParser = new json_schema_ref_parser_1.default();
103
+ // Second pass of refs, resolves the refs
104
+ for (const fullPath in normalisedRefs) {
105
+ const page = normalisedRefs[fullPath];
106
+ try {
107
+ const resolved = yield refParser.dereference(String(fullPath), page, {
108
+ resolve,
109
+ dereference: { circular: false }
301
110
  });
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();
111
+ normalisedRefs[fullPath] = Object.assign(Object.assign({}, page), resolved);
112
+ }
113
+ catch (e) {
114
+ console.warn(`Error resolving ref(s) for page '${fullPath}'. ${e.message.replace(/\.$/, '')} in '${e.source}'`);
115
+ throw e;
116
+ }
117
+ }
118
+ // Third pass, write out the files
119
+ for (const fullPath in normalisedRefs) {
120
+ yield mutableFilesystem.promises.writeFile(fullPath, yield serialiser.serialise(fullPath, normalisedRefs[fullPath]));
337
121
  }
338
- }, _callee, null, [
339
- [
340
- 28,
341
- 35
342
- ]
343
- ]);
344
- }))();
122
+ }
123
+ });
345
124
  },
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();
125
+ $afterSource(pages, { config, ignorePages, pageExtensions }) {
126
+ return __awaiter(this, void 0, void 0, function* () {
127
+ const isNonHiddenPage = createPageTest(ignorePages, pageExtensions);
128
+ for (const page of pages) {
129
+ if (!isNonHiddenPage(page.fullPath)) {
130
+ continue;
131
+ }
132
+ const refs = findKeys(page, '$ref');
133
+ if (refs.length) {
134
+ for (const ref of refs) {
135
+ config.setRef(page.fullPath, ...ref);
136
+ }
441
137
  }
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
- }))();
138
+ }
139
+ return pages;
140
+ });
469
141
  }
470
142
  };
471
- export default $RefPlugin;
472
-
143
+ exports.default = $RefPlugin;
473
144
  //# sourceMappingURL=$RefPlugin.js.map
@@ -1 +1 @@
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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"}
1
+ {"version":3,"file":"$RefPlugin.js","sourceRoot":"","sources":["../src/$RefPlugin.ts"],"names":[],"mappings":"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"}