@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,285 +1,83 @@
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 _arrayWithHoles(arr) {
7
- if (Array.isArray(arr)) return arr;
8
- }
9
- function _arrayWithoutHoles(arr) {
10
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
11
- }
12
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
13
- try {
14
- var info = gen[key](arg);
15
- var value = info.value;
16
- } catch (error) {
17
- reject(error);
18
- return;
19
- }
20
- if (info.done) {
21
- resolve(value);
22
- } else {
23
- Promise.resolve(value).then(_next, _throw);
24
- }
25
- }
26
- function _asyncToGenerator(fn) {
27
- return function() {
28
- var self = this, args = arguments;
29
- return new Promise(function(resolve, reject) {
30
- var gen = fn.apply(self, args);
31
- function _next(value) {
32
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
33
- }
34
- function _throw(err) {
35
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
36
- }
37
- _next(undefined);
38
- });
39
- };
40
- }
41
- function _iterableToArray(iter) {
42
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
43
- }
44
- function _iterableToArrayLimit(arr, i) {
45
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
46
- if (_i == null) return;
47
- var _arr = [];
48
- var _n = true;
49
- var _d = false;
50
- var _s, _e;
51
- try {
52
- for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
53
- _arr.push(_s.value);
54
- if (i && _arr.length === i) break;
55
- }
56
- } catch (err) {
57
- _d = true;
58
- _e = err;
59
- } finally{
60
- try {
61
- if (!_n && _i["return"] != null) _i["return"]();
62
- } finally{
63
- if (_d) throw _e;
64
- }
65
- }
66
- return _arr;
67
- }
68
- function _nonIterableRest() {
69
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
70
- }
71
- function _nonIterableSpread() {
72
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
73
- }
74
- function _slicedToArray(arr, i) {
75
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
76
- }
77
- function _toConsumableArray(arr) {
78
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
79
- }
80
- function _unsupportedIterableToArray(o, minLen) {
81
- if (!o) return;
82
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
83
- var n = Object.prototype.toString.call(o).slice(8, -1);
84
- if (n === "Object" && o.constructor) n = o.constructor.name;
85
- if (n === "Map" || n === "Set") return Array.from(n);
86
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
87
- }
88
- import regeneratorRuntime from "regenerator-runtime";
89
- import path from "path";
90
- import glob from "fast-glob";
91
- import set from "lodash/set";
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 fast_glob_1 = __importDefault(require("fast-glob"));
17
+ const set_1 = __importDefault(require("lodash/set"));
92
18
  function createFileGlob(url, pageExtensions) {
93
19
  if (pageExtensions.length === 1) {
94
- return "".concat(url).concat(pageExtensions[0]);
20
+ return `${url}${pageExtensions[0]}`;
95
21
  }
96
- return "".concat(url, "{").concat(pageExtensions.join(","), "}");
22
+ return `${url}{${pageExtensions.join(',')}}`;
97
23
  }
98
- export default function normaliseRefs(filepath, refs, filesystem, pageExtensions, ignorePages) {
99
- return _normaliseRefs.apply(this, arguments);
100
- };
101
- function _normaliseRefs() {
102
- _normaliseRefs = _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee(filepath, refs, filesystem, pageExtensions, ignorePages) {
103
- var configWithoutGlobs, i, ref, ref1, url, tmp, fragment, fullUrl, refRealPath, stat, globResolvedRefs, resolvedRefs, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, value, refRealPath1;
104
- return regeneratorRuntime.wrap(function _callee$(_ctx) {
105
- while(1)switch(_ctx.prev = _ctx.next){
106
- case 0:
107
- configWithoutGlobs = {};
108
- i = 0;
109
- case 2:
110
- if (!(i < refs.length)) {
111
- _ctx.next = 79;
112
- break;
113
- }
114
- ref = refs[i];
115
- ref1 = _slicedToArray(ref.$$value.split("#"), 2), url = ref1[0], tmp = ref1[1], fragment = tmp === void 0 ? "" : tmp;
116
- if (url) {
117
- _ctx.next = 7;
118
- break;
119
- }
120
- return _ctx.abrupt("continue", 76);
121
- case 7:
122
- fullUrl = path.resolve(path.dirname(filepath), url);
123
- if (glob.isDynamicPattern(url)) {
124
- _ctx.next = 34;
125
- break;
126
- }
127
- _ctx.next = 11;
128
- return filesystem.promises.exists(fullUrl);
129
- case 11:
130
- if (_ctx.sent) {
131
- _ctx.next = 13;
132
- break;
133
- }
134
- throw new Error("A `$ref` for '".concat(filepath, "' pointed to page '").concat(fullUrl, "' - which could not be found."));
135
- case 13:
136
- _ctx.next = 15;
137
- return filesystem.promises.realpath(fullUrl);
138
- case 15:
139
- refRealPath = _ctx.sent;
140
- _ctx.next = 18;
141
- return filesystem.promises.stat(refRealPath);
142
- case 18:
143
- stat = _ctx.sent;
144
- if (!stat.isDirectory()) {
145
- _ctx.next = 32;
146
- break;
147
- }
148
- _ctx.t0 = // && !/\/index(\.\w{1,4})?$/.test(url)) {
149
- set;
150
- _ctx.t1 = configWithoutGlobs;
151
- _ctx.t2 = ref.$$path.slice(0, -1);
152
- _ctx.t3 = "";
153
- _ctx.next = 26;
154
- return filesystem.promises.realpath(path.join(refRealPath, "index"));
155
- case 26:
156
- _ctx.t4 = _ctx.sent;
157
- _ctx.t5 = _ctx.t3.concat.call(_ctx.t3, _ctx.t4, "#").concat(fragment);
158
- _ctx.t6 = {
159
- $ref: _ctx.t5
160
- };
161
- (0, _ctx.t0)(_ctx.t1, _ctx.t2, _ctx.t6);
162
- _ctx.next = 33;
163
- break;
164
- case 32:
165
- {
166
- set(configWithoutGlobs, ref.$$path.slice(0, -1), {
167
- $ref: "".concat(refRealPath, "#").concat(fragment)
168
- });
169
- }
170
- case 33:
171
- return _ctx.abrupt("continue", 76);
172
- case 34:
173
- _ctx.prev = 34;
174
- _ctx.next = 37;
175
- return filesystem.promises.glob(!/\/[^/]+\.\w{2,4}$/.test(url) ? createFileGlob(url, pageExtensions) : url, {
176
- ignore: [
177
- filepath
178
- ].concat(_toConsumableArray(ignorePages.map(function(ignore) {
179
- return "**/".concat(ignore);
180
- }))),
181
- cwd: path.dirname(filepath),
182
- absolute: true
24
+ function normaliseRefs(filepath, refs, filesystem, pageExtensions, ignorePages) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ const configWithoutGlobs = {};
27
+ for (let i = 0; i < refs.length; i++) {
28
+ const ref = refs[i];
29
+ const [url, fragment = ''] = ref.$$value.split('#');
30
+ if (!url) {
31
+ continue;
32
+ }
33
+ const fullUrl = path_1.default.resolve(path_1.default.dirname(filepath), url);
34
+ if (!fast_glob_1.default.isDynamicPattern(url)) {
35
+ if (!(yield filesystem.promises.exists(fullUrl))) {
36
+ throw new Error(`A \`$ref\` for '${filepath}' pointed to page '${fullUrl}' - which could not be found.`);
37
+ }
38
+ const refRealPath = yield filesystem.promises.realpath(fullUrl
39
+ //path.resolve(path.dirname(filepath), url)
40
+ );
41
+ const stat = yield filesystem.promises.stat(refRealPath);
42
+ // Turn directory refs into full index paths
43
+ // TODO: But DO we want to do this?
44
+ if (stat.isDirectory()) {
45
+ // && !/\/index(\.\w{1,4})?$/.test(url)) {
46
+ (0, set_1.default)(configWithoutGlobs, ref.$$path.slice(0, -1), {
47
+ $ref: `${yield filesystem.promises.realpath(path_1.default.join(refRealPath, 'index'))}#${fragment}`
183
48
  });
184
- case 37:
185
- globResolvedRefs = _ctx.sent;
186
- resolvedRefs = new Set();
187
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
188
- _ctx.prev = 40;
189
- _iterator = globResolvedRefs[Symbol.iterator]();
190
- case 42:
191
- if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
192
- _ctx.next = 56;
193
- break;
194
- }
195
- value = _step.value;
196
- _ctx.next = 46;
197
- return filesystem.promises.realpath(path.resolve(filepath, value));
198
- case 46:
199
- refRealPath1 = _ctx.sent;
200
- _ctx.t7 = refRealPath1;
201
- _ctx.next = 50;
202
- return filesystem.promises.realpath(filepath);
203
- case 50:
204
- _ctx.t8 = _ctx.sent;
205
- if (!(_ctx.t7 !== _ctx.t8)) {
206
- _ctx.next = 53;
207
- break;
208
- }
209
- {
210
- resolvedRefs.add("".concat(refRealPath1, "#").concat(fragment));
211
- }
212
- case 53:
213
- _iteratorNormalCompletion = true;
214
- _ctx.next = 42;
215
- break;
216
- case 56:
217
- _ctx.next = 62;
218
- break;
219
- case 58:
220
- _ctx.prev = 58;
221
- _ctx.t9 = _ctx["catch"](40);
222
- _didIteratorError = true;
223
- _iteratorError = _ctx.t9;
224
- case 62:
225
- _ctx.prev = 62;
226
- _ctx.prev = 63;
227
- if (!_iteratorNormalCompletion && _iterator.return != null) {
228
- _iterator.return();
229
- }
230
- case 65:
231
- _ctx.prev = 65;
232
- if (!_didIteratorError) {
233
- _ctx.next = 68;
234
- break;
49
+ }
50
+ else {
51
+ (0, set_1.default)(configWithoutGlobs, ref.$$path.slice(0, -1), {
52
+ $ref: `${refRealPath}#${fragment}`
53
+ });
54
+ }
55
+ continue;
56
+ }
57
+ try {
58
+ let globResolvedRefs =
59
+ // If the pattern doesn't have an explicit file extension - then we'll make it just return pages
60
+ yield filesystem.promises.glob(!/\/[^/]+\.\w{2,4}$/.test(url) ? createFileGlob(url, pageExtensions) : url, {
61
+ ignore: [filepath, ...ignorePages.map(ignore => `**/${ignore}`)],
62
+ cwd: path_1.default.dirname(filepath),
63
+ absolute: true
64
+ });
65
+ // Use a set so we de-dupe any symlinks that point to the same page
66
+ const resolvedRefs = new Set();
67
+ for (const value of globResolvedRefs) {
68
+ const refRealPath = yield filesystem.promises.realpath(path_1.default.resolve(filepath, value));
69
+ if (refRealPath !== (yield filesystem.promises.realpath(filepath))) {
70
+ resolvedRefs.add(`${refRealPath}#${fragment}`);
235
71
  }
236
- throw _iteratorError;
237
- case 68:
238
- return _ctx.finish(65);
239
- case 69:
240
- return _ctx.finish(62);
241
- case 70:
242
- set(configWithoutGlobs, ref.$$path.slice(0, -1), Array.from(resolvedRefs).map(function($ref) {
243
- return {
244
- $ref: $ref
245
- };
246
- }));
247
- _ctx.next = 76;
248
- break;
249
- case 73:
250
- _ctx.prev = 73;
251
- _ctx.t10 = _ctx["catch"](34);
252
- throw _ctx.t10;
253
- case 76:
254
- i++;
255
- _ctx.next = 2;
256
- break;
257
- case 79:
258
- return _ctx.abrupt("return", configWithoutGlobs);
259
- case 80:
260
- case "end":
261
- return _ctx.stop();
72
+ }
73
+ (0, set_1.default)(configWithoutGlobs, ref.$$path.slice(0, -1), Array.from(resolvedRefs).map($ref => ({ $ref })));
262
74
  }
263
- }, _callee, null, [
264
- [
265
- 34,
266
- 73
267
- ],
268
- [
269
- 40,
270
- 58,
271
- 62,
272
- 70
273
- ],
274
- [
275
- 63,
276
- ,
277
- 65,
278
- 69
279
- ]
280
- ]);
281
- }));
282
- return _normaliseRefs.apply(this, arguments);
75
+ catch (e) {
76
+ throw e;
77
+ }
78
+ }
79
+ return configWithoutGlobs;
80
+ });
283
81
  }
284
-
82
+ exports.default = normaliseRefs;
285
83
  //# sourceMappingURL=normaliseRefs.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/normaliseRefs.ts"],"sourcesContent":["import path from 'path';\n\nimport glob from 'fast-glob';\nimport set from 'lodash/set';\n\nfunction createFileGlob(url, pageExtensions) {\n if (pageExtensions.length === 1) {\n return `${url}${pageExtensions[0]}`;\n }\n return `${url}{${pageExtensions.join(',')}}`;\n}\n\nexport default async function normaliseRefs(\n filepath,\n refs,\n filesystem,\n pageExtensions,\n ignorePages\n) {\n const configWithoutGlobs = {};\n\n for (let i = 0; i < refs.length; i++) {\n const ref = refs[i];\n const [url, fragment = ''] = ref.$$value.split('#');\n\n if (!url) {\n continue;\n }\n\n const fullUrl = path.resolve(path.dirname(filepath), url);\n\n if (!glob.isDynamicPattern(url)) {\n if (!(await filesystem.promises.exists(fullUrl))) {\n throw new Error(\n `A \\`$ref\\` for '${filepath}' pointed to page '${fullUrl}' - which could not be found.`\n );\n }\n const refRealPath = await filesystem.promises.realpath(\n fullUrl\n //path.resolve(path.dirname(filepath), url)\n );\n const stat = await filesystem.promises.stat(refRealPath);\n // Turn directory refs into full index paths\n // TODO: But DO we want to do this?\n if (stat.isDirectory()) {\n // && !/\\/index(\\.\\w{1,4})?$/.test(url)) {\n set(configWithoutGlobs, ref.$$path.slice(0, -1), {\n $ref: `${await filesystem.promises.realpath(path.join(refRealPath, 'index'))}#${fragment}`\n });\n } else {\n set(configWithoutGlobs, ref.$$path.slice(0, -1), {\n $ref: `${refRealPath}#${fragment}`\n });\n }\n continue;\n }\n\n try {\n let globResolvedRefs =\n // If the pattern doesn't have an explicit file extension - then we'll make it just return pages\n await filesystem.promises.glob(\n !/\\/[^/]+\\.\\w{2,4}$/.test(url) ? createFileGlob(url, pageExtensions) : url,\n {\n ignore: [filepath, ...ignorePages.map(ignore => `**/${ignore}`)],\n cwd: path.dirname(filepath),\n absolute: true\n }\n );\n\n // Use a set so we de-dupe any symlinks that point to the same page\n const resolvedRefs = new Set();\n\n for (const value of globResolvedRefs) {\n const refRealPath = await filesystem.promises.realpath(path.resolve(filepath, value));\n if (refRealPath !== (await filesystem.promises.realpath(filepath))) {\n resolvedRefs.add(`${refRealPath}#${fragment}`);\n }\n }\n\n set(\n configWithoutGlobs,\n ref.$$path.slice(0, -1),\n Array.from(resolvedRefs).map($ref => ({ $ref }))\n );\n } catch (e) {\n throw e;\n }\n }\n\n return configWithoutGlobs;\n}\n"],"names":["path","glob","set","createFileGlob","url","pageExtensions","length","join","normaliseRefs","filepath","refs","filesystem","ignorePages","configWithoutGlobs","i","ref","fragment","fullUrl","refRealPath","stat","globResolvedRefs","resolvedRefs","value","$$value","split","resolve","dirname","isDynamicPattern","promises","exists","Error","realpath","isDirectory","$$path","slice","$ref","test","ignore","map","cwd","absolute","Set","add","Array","from"],"mappings":"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"}
1
+ {"version":3,"file":"normaliseRefs.js","sourceRoot":"","sources":["../../src/utils/normaliseRefs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jpmorganchase/mosaic-plugins",
3
- "version": "0.1.0-beta.8",
3
+ "version": "0.1.0-beta.9",
4
4
  "author": "",
5
5
  "description": "Mosaic plugins for core file system",
6
6
  "license": "Apache-2.0",
@@ -12,7 +12,7 @@
12
12
  "dist"
13
13
  ],
14
14
  "scripts": {
15
- "build": "yarn clean && tsc && swc src -d dist && renamer --find \".mjs.js\" --replace \".mjs\" \"dist/*.mjs.js\" && renamer --find \".mjs.js.map\" --replace \".mjs.map\" \"dist/*.mjs.js.map\"",
15
+ "build": "yarn clean && tsc && swc ./src/*.mjs.ts -d dist && renamer --find \".mjs.js\" --replace \".mjs\" \"dist/*.mjs.js\" && renamer --find \".mjs.js.map\" --replace \".mjs.map\" \"dist/*.mjs.js.map\"",
16
16
  "clean": "rm -fr dist"
17
17
  },
18
18
  "repository": {
@@ -27,10 +27,10 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@apidevtools/json-schema-ref-parser": "^9.0.9",
30
- "@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.8",
31
- "@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.8",
32
- "@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.8",
33
- "@jpmorganchase/mosaic-types": "^0.1.0-beta.8",
30
+ "@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.9",
31
+ "@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.9",
32
+ "@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.9",
33
+ "@jpmorganchase/mosaic-types": "^0.1.0-beta.9",
34
34
  "@types/github-slugger": "^1.3.0",
35
35
  "@vcarl/remark-headings": "^0.1.0",
36
36
  "fs-extra": "^10.1.0",
@@ -1,160 +0,0 @@
1
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
- try {
3
- var info = gen[key](arg);
4
- var value = info.value;
5
- } catch (error) {
6
- reject(error);
7
- return;
8
- }
9
- if (info.done) {
10
- resolve(value);
11
- } else {
12
- Promise.resolve(value).then(_next, _throw);
13
- }
14
- }
15
- function _asyncToGenerator(fn) {
16
- return function() {
17
- var self = this, args = arguments;
18
- return new Promise(function(resolve, reject) {
19
- var gen = fn.apply(self, args);
20
- function _next(value) {
21
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
- }
23
- function _throw(err) {
24
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
- }
26
- _next(undefined);
27
- });
28
- };
29
- }
30
- import regeneratorRuntime from "regenerator-runtime";
31
- import BreadcrumbsPlugin from "../BreadcrumbsPlugin";
32
- // jest.mock('fs');
33
- var pages = [
34
- {
35
- fullPath: "/FolderA/index.mdx",
36
- route: "route/folderA/index",
37
- title: "Folder A Index"
38
- },
39
- {
40
- fullPath: "/FolderA/pageA.mdx",
41
- route: "route/folderA/pageA",
42
- title: "Folder A Page A"
43
- },
44
- {
45
- fullPath: "/FolderA/pageB.mdx",
46
- route: "route/folderA/pageB",
47
- title: "Folder A Page B"
48
- },
49
- {
50
- fullPath: "/FolderA/SubfolderA/index.mdx",
51
- route: "route/folderA/subfolderA/index",
52
- title: "Subfolder A Index"
53
- },
54
- {
55
- fullPath: "/FolderA/SubfolderA/PageA.mdx",
56
- route: "route/folderA/subfolderA/pageA",
57
- title: "Subfolder A Page A"
58
- },
59
- {
60
- fullPath: "/FolderA/SubfolderA/PageB.mdx",
61
- route: "route/folderA/subfolderA/pageB",
62
- title: "Subfolder A Page B"
63
- },
64
- {
65
- fullPath: "/FolderA/SubfolderA/PageB.mdx",
66
- route: "route/folderA/subfolderA/pageB",
67
- title: "Subfolder A Page B",
68
- breadcrumbs: [
69
- {
70
- label: "Label A",
71
- path: "path/A",
72
- id: "id A"
73
- },
74
- {
75
- label: "Label B",
76
- path: "path/B",
77
- id: "id B"
78
- }
79
- ]
80
- }
81
- ];
82
- describe("GIVEN the BreadcrumbsPlugin", function() {
83
- var updatedPages = [];
84
- beforeEach(/*#__PURE__*/ _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
85
- var $afterSource;
86
- return regeneratorRuntime.wrap(function _callee$(_ctx) {
87
- while(1)switch(_ctx.prev = _ctx.next){
88
- case 0:
89
- $afterSource = BreadcrumbsPlugin.$afterSource;
90
- _ctx.next = 3;
91
- return $afterSource === null || $afterSource === void 0 ? void 0 : $afterSource(pages, {}, {
92
- indexPageName: "index.mdx"
93
- });
94
- case 3:
95
- _ctx.t0 = _ctx.sent;
96
- if (_ctx.t0) {
97
- _ctx.next = 6;
98
- break;
99
- }
100
- _ctx.t0 = [];
101
- case 6:
102
- updatedPages = _ctx.t0;
103
- case 7:
104
- case "end":
105
- return _ctx.stop();
106
- }
107
- }, _callee);
108
- })));
109
- test("THEN it should use the `$afterSource` lifecycle event", function() {
110
- expect(BreadcrumbsPlugin).toHaveProperty("$afterSource");
111
- });
112
- describe("AND WHEN `$afterSource` is called", function() {
113
- test("THEN breadcrumbs are added", /*#__PURE__*/ _asyncToGenerator(/*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
114
- var breadcrumbs;
115
- return regeneratorRuntime.wrap(function _callee$(_ctx) {
116
- while(1)switch(_ctx.prev = _ctx.next){
117
- case 0:
118
- breadcrumbs = updatedPages && updatedPages[4].breadcrumbs || [];
119
- expect(breadcrumbs.length).toBe(3);
120
- expect(breadcrumbs[0]).toEqual({
121
- label: "Folder A Index",
122
- path: "route/folderA/index",
123
- id: "/FolderA/index.mdx"
124
- });
125
- expect(breadcrumbs[1]).toEqual({
126
- label: "Subfolder A Index",
127
- path: "route/folderA/subfolderA/index",
128
- id: "/FolderA/SubfolderA/index.mdx"
129
- });
130
- expect(breadcrumbs[2]).toEqual({
131
- label: "Subfolder A Page A",
132
- path: "route/folderA/subfolderA/pageA",
133
- id: "/FolderA/SubfolderA/PageA.mdx"
134
- });
135
- case 5:
136
- case "end":
137
- return _ctx.stop();
138
- }
139
- }, _callee);
140
- })));
141
- describe("AND WHEN a page already has breadcrumbs", function() {
142
- test("THEN those breadcrumbs are used", function() {
143
- var breadcrumbs = updatedPages && updatedPages[6].breadcrumbs || [];
144
- expect(breadcrumbs.length).toBe(2);
145
- expect(breadcrumbs[0]).toEqual({
146
- label: "Label A",
147
- path: "path/A",
148
- id: "id A"
149
- });
150
- expect(breadcrumbs[1]).toEqual({
151
- label: "Label B",
152
- path: "path/B",
153
- id: "id B"
154
- });
155
- });
156
- });
157
- });
158
- });
159
-
160
- //# sourceMappingURL=BreadcrumbsPlugin.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/__tests__/BreadcrumbsPlugin.test.ts"],"sourcesContent":["import type { Page } from '@jpmorganchase/mosaic-types';\n\nimport BreadcrumbsPlugin, { BreadcrumbsPluginPage } from '../BreadcrumbsPlugin';\n\n// jest.mock('fs');\n\nconst pages: BreadcrumbsPluginPage[] = [\n {\n fullPath: '/FolderA/index.mdx',\n route: 'route/folderA/index',\n title: 'Folder A Index'\n },\n {\n fullPath: '/FolderA/pageA.mdx',\n route: 'route/folderA/pageA',\n title: 'Folder A Page A'\n },\n {\n fullPath: '/FolderA/pageB.mdx',\n route: 'route/folderA/pageB',\n title: 'Folder A Page B'\n },\n {\n fullPath: '/FolderA/SubfolderA/index.mdx',\n route: 'route/folderA/subfolderA/index',\n title: 'Subfolder A Index'\n },\n {\n fullPath: '/FolderA/SubfolderA/PageA.mdx',\n route: 'route/folderA/subfolderA/pageA',\n title: 'Subfolder A Page A'\n },\n {\n fullPath: '/FolderA/SubfolderA/PageB.mdx',\n route: 'route/folderA/subfolderA/pageB',\n title: 'Subfolder A Page B'\n },\n {\n fullPath: '/FolderA/SubfolderA/PageB.mdx',\n route: 'route/folderA/subfolderA/pageB',\n title: 'Subfolder A Page B',\n breadcrumbs: [\n {\n label: 'Label A',\n path: 'path/A',\n id: 'id A'\n },\n {\n label: 'Label B',\n path: 'path/B',\n id: 'id B'\n }\n ]\n }\n];\n\ndescribe('GIVEN the BreadcrumbsPlugin', () => {\n let updatedPages: BreadcrumbsPluginPage[] = [];\n beforeEach(async () => {\n const $afterSource = BreadcrumbsPlugin.$afterSource;\n updatedPages = (await $afterSource?.(pages, {}, { indexPageName: 'index.mdx' })) || [];\n });\n test('THEN it should use the `$afterSource` lifecycle event', () => {\n expect(BreadcrumbsPlugin).toHaveProperty('$afterSource');\n });\n\n describe('AND WHEN `$afterSource` is called', () => {\n test('THEN breadcrumbs are added', async () => {\n const breadcrumbs = (updatedPages && updatedPages[4].breadcrumbs) || [];\n\n expect(breadcrumbs.length).toBe(3);\n expect(breadcrumbs[0]).toEqual({\n label: 'Folder A Index',\n path: 'route/folderA/index',\n id: '/FolderA/index.mdx'\n });\n expect(breadcrumbs[1]).toEqual({\n label: 'Subfolder A Index',\n path: 'route/folderA/subfolderA/index',\n id: '/FolderA/SubfolderA/index.mdx'\n });\n expect(breadcrumbs[2]).toEqual({\n label: 'Subfolder A Page A',\n path: 'route/folderA/subfolderA/pageA',\n id: '/FolderA/SubfolderA/PageA.mdx'\n });\n });\n\n describe('AND WHEN a page already has breadcrumbs', () => {\n test('THEN those breadcrumbs are used', () => {\n const breadcrumbs = (updatedPages && updatedPages[6].breadcrumbs) || [];\n expect(breadcrumbs.length).toBe(2);\n expect(breadcrumbs[0]).toEqual({\n label: 'Label A',\n path: 'path/A',\n id: 'id A'\n });\n expect(breadcrumbs[1]).toEqual({\n label: 'Label B',\n path: 'path/B',\n id: 'id B'\n });\n });\n });\n });\n});\n"],"names":["BreadcrumbsPlugin","pages","fullPath","route","title","breadcrumbs","label","path","id","describe","updatedPages","beforeEach","$afterSource","indexPageName","test","expect","toHaveProperty","length","toBe","toEqual"],"mappings":"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"}