@jpmorganchase/mosaic-plugins 0.1.0-beta.8 → 0.1.0-beta.80
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/dist/$AliasPlugin.d.ts +10 -0
- package/dist/$AliasPlugin.js +49 -228
- package/dist/$AliasPlugin.js.map +1 -1
- package/dist/$CodeModPlugin.d.ts +7 -0
- package/dist/$CodeModPlugin.js +18 -118
- package/dist/$CodeModPlugin.js.map +1 -1
- package/dist/$RefPlugin.d.ts +31 -0
- package/dist/$RefPlugin.js +123 -451
- package/dist/$RefPlugin.js.map +1 -1
- package/dist/$TagPlugin.d.ts +28 -0
- package/dist/$TagPlugin.js +51 -234
- package/dist/$TagPlugin.js.map +1 -1
- package/dist/BreadcrumbsPlugin.d.ts +19 -0
- package/dist/BreadcrumbsPlugin.js +87 -112
- package/dist/BreadcrumbsPlugin.js.map +1 -1
- package/dist/BrokenLinksPlugin.d.ts +10 -0
- package/dist/BrokenLinksPlugin.js +80 -0
- package/dist/BrokenLinksPlugin.js.map +1 -0
- package/dist/FragmentPlugin.d.ts +3 -0
- package/dist/FragmentPlugin.js +61 -0
- package/dist/FragmentPlugin.js.map +1 -0
- package/dist/LazyPagePlugin.d.ts +14 -0
- package/dist/LazyPagePlugin.js +50 -254
- package/dist/LazyPagePlugin.js.map +1 -1
- package/dist/PagesWithoutFileExtPlugin.d.ts +9 -0
- package/dist/PagesWithoutFileExtPlugin.js +20 -118
- package/dist/PagesWithoutFileExtPlugin.js.map +1 -1
- package/dist/PropsTablePlugin.d.ts +6 -0
- package/dist/PropsTablePlugin.js +88 -0
- package/dist/PropsTablePlugin.js.map +1 -0
- package/dist/PublicAssetsPlugin.d.ts +18 -0
- package/dist/PublicAssetsPlugin.js +28 -0
- package/dist/PublicAssetsPlugin.js.map +1 -0
- package/dist/ReadingTimePlugin.d.ts +10 -0
- package/dist/ReadingTimePlugin.js +39 -0
- package/dist/ReadingTimePlugin.js.map +1 -0
- package/dist/SearchIndexPlugin.d.ts +56 -0
- package/dist/SearchIndexPlugin.js +154 -0
- package/dist/SearchIndexPlugin.js.map +1 -0
- package/dist/SharedConfigPlugin.d.ts +14 -0
- package/dist/SharedConfigPlugin.js +129 -168
- package/dist/SharedConfigPlugin.js.map +1 -1
- package/dist/SidebarPlugin.d.ts +45 -0
- package/dist/SidebarPlugin.js +285 -324
- package/dist/SidebarPlugin.js.map +1 -1
- package/dist/SiteMapPlugin.d.ts +9 -0
- package/dist/SiteMapPlugin.js +23 -91
- package/dist/SiteMapPlugin.js.map +1 -1
- package/dist/TableOfContentsPlugin.d.ts +20 -0
- package/dist/TableOfContentsPlugin.js +44 -0
- package/dist/TableOfContentsPlugin.js.map +1 -0
- package/dist/utils/PluginError.d.ts +7 -0
- package/dist/utils/PluginError.js +13 -0
- package/dist/utils/PluginError.js.map +1 -0
- package/dist/utils/createPageTest.d.ts +1 -0
- package/dist/utils/createPageTest.js +8 -0
- package/dist/utils/createPageTest.js.map +1 -0
- package/dist/utils/mergePageContent.d.ts +16 -0
- package/dist/utils/mergePageContent.js +23 -0
- package/dist/utils/mergePageContent.js.map +1 -0
- package/dist/utils/normaliseRefs.d.ts +1 -0
- package/dist/utils/normaliseRefs.js +56 -275
- package/dist/utils/normaliseRefs.js.map +1 -1
- package/dist/utils/sortSidebarData.d.ts +29 -0
- package/dist/utils/sortSidebarData.js +47 -0
- package/dist/utils/sortSidebarData.js.map +1 -0
- package/package.json +41 -19
- package/CHANGELOG.md +0 -93
- package/dist/LocalFolderSavePlugin.js +0 -165
- package/dist/LocalFolderSavePlugin.js.map +0 -1
- package/dist/NextPrevPagePlugin.js +0 -173
- package/dist/NextPrevPagePlugin.js.map +0 -1
- package/dist/ReadingTimePlugin.mjs +0 -119
- package/dist/ReadingTimePlugin.mjs.map +0 -1
- package/dist/SearchIndexPlugin.mjs +0 -268
- package/dist/SearchIndexPlugin.mjs.map +0 -1
- package/dist/TableOfContentsPlugin.mjs +0 -131
- package/dist/TableOfContentsPlugin.mjs.map +0 -1
- package/dist/__tests__/BreadcrumbsPlugin.test.js +0 -160
- package/dist/__tests__/BreadcrumbsPlugin.test.js.map +0 -1
|
@@ -1,285 +1,66 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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);
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import glob from 'fast-glob';
|
|
3
|
+
import { set } from 'lodash-es';
|
|
4
|
+
function createFileGlob(url, pageExtensions) {
|
|
5
|
+
if (pageExtensions.length === 1) {
|
|
6
|
+
return `${url}${pageExtensions[0]}`;
|
|
24
7
|
}
|
|
8
|
+
return `${url}{${pageExtensions.join(',')}}`;
|
|
25
9
|
}
|
|
26
|
-
function
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
10
|
+
export default async function normaliseRefs(filepath, refs, filesystem, pageExtensions, ignorePages) {
|
|
11
|
+
const configWithoutGlobs = {};
|
|
12
|
+
for (let i = 0; i < refs.length; i++) {
|
|
13
|
+
const ref = refs[i];
|
|
14
|
+
const [url, fragment = ''] = ref.$$value.split('#');
|
|
15
|
+
if (!url) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const fullUrl = path.posix.resolve(path.posix.dirname(filepath), url);
|
|
19
|
+
if (!glob.isDynamicPattern(url)) {
|
|
20
|
+
if (!(await filesystem.promises.exists(fullUrl))) {
|
|
21
|
+
throw new Error(`A \`$ref\` for '${filepath}' pointed to page '${fullUrl}' - which could not be found.`);
|
|
33
22
|
}
|
|
34
|
-
|
|
35
|
-
|
|
23
|
+
const refRealPath = await filesystem.promises.realpath(fullUrl
|
|
24
|
+
//path.resolve(path.dirname(filepath), url)
|
|
25
|
+
);
|
|
26
|
+
const stat = await filesystem.promises.stat(refRealPath);
|
|
27
|
+
// Turn directory refs into full index paths
|
|
28
|
+
// TODO: But DO we want to do this?
|
|
29
|
+
if (stat.isDirectory()) {
|
|
30
|
+
// && !/\/index(\.\w{1,4})?$/.test(url)) {
|
|
31
|
+
set(configWithoutGlobs, ref.$$path.slice(0, -1), {
|
|
32
|
+
$ref: `${await filesystem.promises.realpath(path.posix.join(refRealPath, 'index'))}#${fragment}`
|
|
33
|
+
});
|
|
36
34
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
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;
|
|
35
|
+
else {
|
|
36
|
+
set(configWithoutGlobs, ref.$$path.slice(0, -1), {
|
|
37
|
+
$ref: `${refRealPath}#${fragment}`
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
continue;
|
|
55
41
|
}
|
|
56
|
-
} catch (err) {
|
|
57
|
-
_d = true;
|
|
58
|
-
_e = err;
|
|
59
|
-
} finally{
|
|
60
42
|
try {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
43
|
+
let globResolvedRefs =
|
|
44
|
+
// If the pattern doesn't have an explicit file extension - then we'll make it just return pages
|
|
45
|
+
await filesystem.promises.glob(!/\/[^/]+\.\w{2,4}$/.test(url) ? createFileGlob(url, pageExtensions) : url, {
|
|
46
|
+
ignore: [filepath, ...ignorePages.map(ignore => `**/${ignore}`)],
|
|
47
|
+
cwd: path.dirname(filepath),
|
|
48
|
+
absolute: true
|
|
49
|
+
});
|
|
50
|
+
// Use a set so we de-dupe any symlinks that point to the same page
|
|
51
|
+
const resolvedRefs = new Set();
|
|
52
|
+
for (const value of globResolvedRefs) {
|
|
53
|
+
const refRealPath = await filesystem.promises.realpath(path.posix.resolve(filepath, value));
|
|
54
|
+
if (refRealPath !== (await filesystem.promises.realpath(filepath))) {
|
|
55
|
+
resolvedRefs.add(`${refRealPath}#${fragment}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
set(configWithoutGlobs, ref.$$path.slice(0, -1), Array.from(resolvedRefs).map($ref => ({ $ref })));
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
throw e;
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
|
-
return
|
|
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";
|
|
92
|
-
function createFileGlob(url, pageExtensions) {
|
|
93
|
-
if (pageExtensions.length === 1) {
|
|
94
|
-
return "".concat(url).concat(pageExtensions[0]);
|
|
95
|
-
}
|
|
96
|
-
return "".concat(url, "{").concat(pageExtensions.join(","), "}");
|
|
97
|
-
}
|
|
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
|
|
183
|
-
});
|
|
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;
|
|
235
|
-
}
|
|
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();
|
|
262
|
-
}
|
|
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);
|
|
64
|
+
return configWithoutGlobs;
|
|
283
65
|
}
|
|
284
|
-
|
|
285
66
|
//# sourceMappingURL=normaliseRefs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"normaliseRefs.js","sourceRoot":"","sources":["../../src/utils/normaliseRefs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { SortConfig } from '@jpmorganchase/mosaic-schemas';
|
|
2
|
+
declare type FieldData = string | number;
|
|
3
|
+
interface SortConfigWithValue extends SortConfig {
|
|
4
|
+
fieldData: FieldData;
|
|
5
|
+
}
|
|
6
|
+
export interface SidebarDataNode {
|
|
7
|
+
kind: 'data';
|
|
8
|
+
id: string;
|
|
9
|
+
fullPath: string;
|
|
10
|
+
name: string;
|
|
11
|
+
priority?: number;
|
|
12
|
+
data: {
|
|
13
|
+
level: number;
|
|
14
|
+
link: string;
|
|
15
|
+
};
|
|
16
|
+
sharedSortConfig?: SortConfigWithValue;
|
|
17
|
+
}
|
|
18
|
+
export declare type SidebarData = SidebarDataNode | SidebarGroupNode;
|
|
19
|
+
export interface SidebarGroupNode {
|
|
20
|
+
id: string;
|
|
21
|
+
kind: 'group';
|
|
22
|
+
childNodes: SidebarData[];
|
|
23
|
+
name: string;
|
|
24
|
+
priority?: number;
|
|
25
|
+
}
|
|
26
|
+
export declare function isGroupNode(node: SidebarDataNode | SidebarGroupNode): node is SidebarGroupNode;
|
|
27
|
+
export declare function isDataNode(node: SidebarDataNode | SidebarGroupNode): node is SidebarDataNode;
|
|
28
|
+
export declare function sortSidebarData(sidebarData: SidebarData[]): (SidebarDataNode | SidebarGroupNode)[];
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export function isGroupNode(node) {
|
|
2
|
+
return node.kind === 'group';
|
|
3
|
+
}
|
|
4
|
+
export function isDataNode(node) {
|
|
5
|
+
return node.kind === 'data';
|
|
6
|
+
}
|
|
7
|
+
const isNumber = (fieldData) => typeof fieldData === 'number';
|
|
8
|
+
function doSort(a, b) {
|
|
9
|
+
if (isNumber(a) && isNumber(b)) {
|
|
10
|
+
return a - b;
|
|
11
|
+
}
|
|
12
|
+
if (a > b) {
|
|
13
|
+
return 1;
|
|
14
|
+
}
|
|
15
|
+
if (a < b) {
|
|
16
|
+
return -1;
|
|
17
|
+
}
|
|
18
|
+
return 0;
|
|
19
|
+
}
|
|
20
|
+
function sortBySharedSortConfig(nodeA, nodeB) {
|
|
21
|
+
if (!isDataNode(nodeA) || !isDataNode(nodeB)) {
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
if (nodeA.sharedSortConfig === undefined || nodeB.sharedSortConfig === undefined) {
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
if (nodeA.sharedSortConfig?.arrange === 'asc') {
|
|
28
|
+
return doSort(nodeA.sharedSortConfig.fieldData, nodeB.sharedSortConfig.fieldData);
|
|
29
|
+
}
|
|
30
|
+
return doSort(nodeB.sharedSortConfig.fieldData, nodeA.sharedSortConfig.fieldData);
|
|
31
|
+
}
|
|
32
|
+
export function sortSidebarData(sidebarData) {
|
|
33
|
+
const pagesByPriority = sidebarData.map(group => {
|
|
34
|
+
if (!isGroupNode(group)) {
|
|
35
|
+
return group;
|
|
36
|
+
}
|
|
37
|
+
if (group?.childNodes?.length > 1) {
|
|
38
|
+
const sortedChildNodes = group.childNodes.sort((pageA, pageB) => (pageB.priority ? pageB.priority : -1) - (pageA.priority ? pageA.priority : -1) ||
|
|
39
|
+
sortBySharedSortConfig(pageA, pageB));
|
|
40
|
+
sortSidebarData(group.childNodes);
|
|
41
|
+
return { ...group, childNodes: sortedChildNodes };
|
|
42
|
+
}
|
|
43
|
+
return group;
|
|
44
|
+
});
|
|
45
|
+
return pagesByPriority;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=sortSidebarData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortSidebarData.js","sourceRoot":"","sources":["../../src/utils/sortSidebarData.ts"],"names":[],"mappings":"AA2BA,MAAM,UAAU,WAAW,CAAC,IAAwC;IAClE,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;AAC/B,CAAC;AACD,MAAM,UAAU,UAAU,CAAC,IAAwC;IACjE,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,SAAoB,EAAuB,EAAE,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC;AAE9F,SAAS,MAAM,CAAC,CAAY,EAAE,CAAY;IACxC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,CAAC;KACd;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,CAAC,CAAC;KACV;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,CAAC,CAAC,CAAC;KACX;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAkB,EAAE,KAAkB;IACpE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QAC5C,OAAO,CAAC,CAAC;KACV;IACD,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE;QAChF,OAAO,CAAC,CAAC;KACV;IACD,IAAI,KAAK,CAAC,gBAAgB,EAAE,OAAO,KAAK,KAAK,EAAE;QAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;KACnF;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAA0B;IACxD,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAC9C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO,KAAK,CAAC;SACd;QACD,IAAI,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAC5C,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACf,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CACvC,CAAC;YACF,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAClC,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;SACnD;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,49 +1,71 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jpmorganchase/mosaic-plugins",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.80",
|
|
4
4
|
"author": "",
|
|
5
5
|
"description": "Mosaic plugins for core file system",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
|
-
"
|
|
7
|
+
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
"./*": {
|
|
10
|
+
"types": "./dist/*.d.ts",
|
|
11
|
+
"import": "./dist/*.js",
|
|
12
|
+
"node": "./dist/*.js",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./PluginError": {
|
|
16
|
+
"types": "./dist/utils/PluginError.d.ts",
|
|
17
|
+
"import": "./dist/utils/PluginError.js",
|
|
18
|
+
"node": "./dist/utils/PluginError.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
8
21
|
"engines": {
|
|
9
|
-
"node": ">=
|
|
22
|
+
"node": ">=16.10.0 || >=18.0.0"
|
|
10
23
|
},
|
|
11
24
|
"files": [
|
|
12
25
|
"dist"
|
|
13
26
|
],
|
|
14
27
|
"scripts": {
|
|
15
|
-
"build": "
|
|
16
|
-
"clean": "rm -fr dist"
|
|
28
|
+
"build": "tsc",
|
|
29
|
+
"clean": "rm -fr dist",
|
|
30
|
+
"lint": "eslint --ignore-pattern \"**/__tests__/**\""
|
|
17
31
|
},
|
|
18
32
|
"repository": {
|
|
19
33
|
"type": "git",
|
|
20
|
-
"url": "git@github.com:jpmorganchase/mosaic.git"
|
|
34
|
+
"url": "git@github.com:jpmorganchase/mosaic.git",
|
|
35
|
+
"directory": "packages/plugins"
|
|
21
36
|
},
|
|
22
37
|
"devDependencies": {
|
|
23
|
-
"@
|
|
24
|
-
"@swc/core": "^1.2.237",
|
|
25
|
-
"@types/fs-extra": "^9.0.13",
|
|
26
|
-
"renamer": "^4.0.0"
|
|
38
|
+
"@types/fs-extra": "^9.0.13"
|
|
27
39
|
},
|
|
28
40
|
"dependencies": {
|
|
29
|
-
"@apidevtools/json-schema-ref-parser": "^
|
|
30
|
-
"@jpmorganchase/mosaic-
|
|
31
|
-
"@jpmorganchase/mosaic-
|
|
32
|
-
"@jpmorganchase/mosaic-source-
|
|
33
|
-
"@jpmorganchase/mosaic-
|
|
41
|
+
"@apidevtools/json-schema-ref-parser": "^10.1.0",
|
|
42
|
+
"@jpmorganchase/mosaic-schemas": "^0.1.0-beta.80",
|
|
43
|
+
"@jpmorganchase/mosaic-serialisers": "^0.1.0-beta.80",
|
|
44
|
+
"@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.80",
|
|
45
|
+
"@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.80",
|
|
46
|
+
"@jpmorganchase/mosaic-types": "^0.1.0-beta.80",
|
|
34
47
|
"@types/github-slugger": "^1.3.0",
|
|
35
48
|
"@vcarl/remark-headings": "^0.1.0",
|
|
49
|
+
"check-links": "^2.0.0",
|
|
50
|
+
"deepmerge": "^4.3.1",
|
|
36
51
|
"fs-extra": "^10.1.0",
|
|
37
52
|
"github-slugger": "^1.4.0",
|
|
38
|
-
"
|
|
39
|
-
"
|
|
53
|
+
"https-proxy-agent": "^5.0.1",
|
|
54
|
+
"lodash-es": "^4.17.21",
|
|
55
|
+
"memfs": "^3.4.12",
|
|
56
|
+
"react-docgen-typescript": "^2.2.2",
|
|
40
57
|
"reading-time": "^1.5.0",
|
|
58
|
+
"remark": "^14.0.2",
|
|
59
|
+
"remark-directive": "^2.0.1",
|
|
60
|
+
"remark-gfm": "^3.0.1",
|
|
41
61
|
"remark-mdx": "^2.1.5",
|
|
42
62
|
"remark-parse": "^10.0.1",
|
|
43
63
|
"remark-stringify": "^10.0.2",
|
|
44
64
|
"rxjs": "^7.5.5",
|
|
45
65
|
"unified": "^10.1.2",
|
|
46
|
-
"unist-util-visit": "^
|
|
47
|
-
"
|
|
66
|
+
"unist-util-visit": "^5.0.0",
|
|
67
|
+
"mdast-util-directive": "^3.0.0",
|
|
68
|
+
"uuid": "^7.0.3",
|
|
69
|
+
"vfile-reporter": "^7.0.5"
|
|
48
70
|
}
|
|
49
71
|
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
# @jpmorganchase/mosaic-plugins
|
|
2
|
-
|
|
3
|
-
## 0.1.0-beta.8
|
|
4
|
-
|
|
5
|
-
### Minor Changes
|
|
6
|
-
|
|
7
|
-
- 2dca0b1: initial release of Mosaic store package
|
|
8
|
-
|
|
9
|
-
### Patch Changes
|
|
10
|
-
|
|
11
|
-
- Updated dependencies [2dca0b1]
|
|
12
|
-
- @jpmorganchase/mosaic-serialisers@0.1.0-beta.8
|
|
13
|
-
- @jpmorganchase/mosaic-source-git-repo@0.1.0-beta.8
|
|
14
|
-
- @jpmorganchase/mosaic-source-local-folder@0.1.0-beta.8
|
|
15
|
-
- @jpmorganchase/mosaic-types@0.1.0-beta.8
|
|
16
|
-
|
|
17
|
-
## 0.1.0-beta.7
|
|
18
|
-
|
|
19
|
-
### Minor Changes
|
|
20
|
-
|
|
21
|
-
- f82c397: Initial release of theme and client side search
|
|
22
|
-
|
|
23
|
-
We are iterating towards deploying our site code.
|
|
24
|
-
|
|
25
|
-
This release includes
|
|
26
|
-
|
|
27
|
-
- initial work for client-side search support
|
|
28
|
-
- Mosaic theme.
|
|
29
|
-
|
|
30
|
-
### Patch Changes
|
|
31
|
-
|
|
32
|
-
- Updated dependencies [f82c397]
|
|
33
|
-
- @jpmorganchase/mosaic-serialisers@0.1.0-beta.7
|
|
34
|
-
- @jpmorganchase/mosaic-source-git-repo@0.1.0-beta.7
|
|
35
|
-
- @jpmorganchase/mosaic-source-local-folder@0.1.0-beta.7
|
|
36
|
-
- @jpmorganchase/mosaic-types@0.1.0-beta.7
|
|
37
|
-
|
|
38
|
-
## 0.1.0-beta.6
|
|
39
|
-
|
|
40
|
-
### Patch Changes
|
|
41
|
-
|
|
42
|
-
- c103b24: Release fixes for snapshot serve
|
|
43
|
-
- Updated dependencies [c103b24]
|
|
44
|
-
- @jpmorganchase/mosaic-types@0.1.0-beta.6
|
|
45
|
-
|
|
46
|
-
## 0.1.0-beta.5
|
|
47
|
-
|
|
48
|
-
### Patch Changes
|
|
49
|
-
|
|
50
|
-
- 61a246c: This releases add support for generate / build and serve snapshots
|
|
51
|
-
- Updated dependencies [61a246c]
|
|
52
|
-
- @jpmorganchase/mosaic-types@0.1.0-beta.5
|
|
53
|
-
|
|
54
|
-
## 0.1.0-beta.4
|
|
55
|
-
|
|
56
|
-
### Patch Changes
|
|
57
|
-
|
|
58
|
-
- bd285df: added dist to package.json
|
|
59
|
-
- Updated dependencies [bd285df]
|
|
60
|
-
- @jpmorganchase/mosaic-types@0.1.0-beta.4
|
|
61
|
-
|
|
62
|
-
## 0.1.0-beta.3
|
|
63
|
-
|
|
64
|
-
### Patch Changes
|
|
65
|
-
|
|
66
|
-
- 457df5e: switch to public package
|
|
67
|
-
- Updated dependencies [457df5e]
|
|
68
|
-
- @jpmorganchase/mosaic-types@0.1.0-beta.3
|
|
69
|
-
|
|
70
|
-
## 0.1.0-beta.2
|
|
71
|
-
|
|
72
|
-
### Patch Changes
|
|
73
|
-
|
|
74
|
-
- e1bbbe7: Initial release of Mosaic Core file-system.
|
|
75
|
-
|
|
76
|
-
Mosaic is a content aggregating service which pulls content from heterogeneous data sources.
|
|
77
|
-
|
|
78
|
-
- 4b2bc51: pipped to 0.1.0-beta.1 for publishing to NPM
|
|
79
|
-
- Updated dependencies [e1bbbe7]
|
|
80
|
-
- Updated dependencies [4b2bc51]
|
|
81
|
-
- @jpmorganchase/mosaic-types@0.1.0-beta.2
|
|
82
|
-
|
|
83
|
-
## 0.1.0
|
|
84
|
-
|
|
85
|
-
### Patch Changes
|
|
86
|
-
|
|
87
|
-
- e1bbbe7: Initial release of Mosaic Core file-system.
|
|
88
|
-
|
|
89
|
-
Mosaic is a content aggregating service which pulls content from heterogeneous data sources.
|
|
90
|
-
|
|
91
|
-
- Updated dependencies [e1bbbe7]
|
|
92
|
-
- Updated dependencies [bbc853c]
|
|
93
|
-
- @jpmorganchase/mosaic-types@0.1.0
|