@mintlify/validation 0.1.739 → 0.1.741
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/editor-navigation/conversion/common.js +2 -1
- package/dist/editor-navigation/conversion/docsjson-to-tree.js +2 -1
- package/dist/editor-navigation/index.d.ts +1 -0
- package/dist/editor-navigation/index.js +1 -0
- package/dist/editor-navigation/order.d.ts +17 -0
- package/dist/editor-navigation/order.js +98 -0
- package/dist/editor-navigation/types.d.ts +1 -0
- package/dist/mint-config/schemas/v2/index.d.ts +330 -0
- package/dist/mint-config/schemas/v2/properties/integrations.d.ts +23 -0
- package/dist/mint-config/schemas/v2/properties/integrations.js +10 -0
- package/dist/mint-config/schemas/v2/themes/almond.d.ts +33 -0
- package/dist/mint-config/schemas/v2/themes/aspen.d.ts +33 -0
- package/dist/mint-config/schemas/v2/themes/linden.d.ts +33 -0
- package/dist/mint-config/schemas/v2/themes/luma.d.ts +33 -0
- package/dist/mint-config/schemas/v2/themes/maple.d.ts +33 -0
- package/dist/mint-config/schemas/v2/themes/mint.d.ts +33 -0
- package/dist/mint-config/schemas/v2/themes/palm.d.ts +33 -0
- package/dist/mint-config/schemas/v2/themes/reusable/index.d.ts +23 -0
- package/dist/mint-config/schemas/v2/themes/sequoia.d.ts +33 -0
- package/dist/mint-config/schemas/v2/themes/willow.d.ts +33 -0
- package/dist/mint-config/validateConfig.d.ts +90 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { compareNodes } from '../order.js';
|
|
1
2
|
import { generateNodeId } from '../utils.js';
|
|
2
3
|
export const createIdGenerator = () => {
|
|
3
4
|
let counter = 0;
|
|
@@ -35,7 +36,7 @@ export function buildChildrenMap(tree) {
|
|
|
35
36
|
childrenMap.set(node.parent, children);
|
|
36
37
|
});
|
|
37
38
|
childrenMap.forEach((children) => {
|
|
38
|
-
children.sort(
|
|
39
|
+
children.sort(compareNodes);
|
|
39
40
|
});
|
|
40
41
|
return childrenMap;
|
|
41
42
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import traverse from 'neotraverse';
|
|
2
|
+
import { compareNodes } from '../order.js';
|
|
2
3
|
import { isGlobalNode } from '../schema.js';
|
|
3
4
|
import { createIdGenerator, isProductConfig, isLanguageConfig, isVersionConfig, isTabConfig, isMenuItemConfig, isDropdownConfig, isAnchorConfig, isGroupConfig, } from './common.js';
|
|
4
5
|
function pickDefined(obj) {
|
|
@@ -412,7 +413,7 @@ function reorderGlobalNodesFirst(nodes) {
|
|
|
412
413
|
return -1;
|
|
413
414
|
if (!aIsGlobal && bIsGlobal)
|
|
414
415
|
return 1;
|
|
415
|
-
return a
|
|
416
|
+
return compareNodes(a, b);
|
|
416
417
|
});
|
|
417
418
|
siblings.forEach((node, index) => {
|
|
418
419
|
node.order = index;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { generateKeyBetween, generateNKeysBetween } from 'fractional-indexing';
|
|
2
|
+
import type { NavigationOrder } from './types.js';
|
|
3
|
+
export { generateKeyBetween, generateNKeysBetween };
|
|
4
|
+
type OrderedNode = {
|
|
5
|
+
id: string;
|
|
6
|
+
order: NavigationOrder;
|
|
7
|
+
};
|
|
8
|
+
type OrderedTreeNode = OrderedNode & {
|
|
9
|
+
parent: string | 0;
|
|
10
|
+
};
|
|
11
|
+
type WithNavigationOrder<T extends OrderedNode> = Omit<T, 'order'> & {
|
|
12
|
+
order: NavigationOrder;
|
|
13
|
+
};
|
|
14
|
+
export declare function compareNodes(a: OrderedNode, b: OrderedNode): number;
|
|
15
|
+
export declare function sortByOrder<T extends OrderedNode>(nodes: readonly T[]): T[];
|
|
16
|
+
export declare function normalizeTreeOrder<T extends OrderedTreeNode>(tree: readonly T[]): WithNavigationOrder<T>[];
|
|
17
|
+
export declare function alignTreeOrderKeys<T extends OrderedTreeNode>(tree: readonly T[], reference: readonly OrderedTreeNode[]): WithNavigationOrder<T>[];
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { generateKeyBetween, generateNKeysBetween } from 'fractional-indexing';
|
|
2
|
+
export { generateKeyBetween, generateNKeysBetween };
|
|
3
|
+
function compareOrder(a, b) {
|
|
4
|
+
if (typeof a === 'number' && typeof b === 'number')
|
|
5
|
+
return a - b;
|
|
6
|
+
if (typeof a === 'number')
|
|
7
|
+
return -1;
|
|
8
|
+
if (typeof b === 'number')
|
|
9
|
+
return 1;
|
|
10
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
11
|
+
}
|
|
12
|
+
export function compareNodes(a, b) {
|
|
13
|
+
const byOrder = compareOrder(a.order, b.order);
|
|
14
|
+
if (byOrder !== 0)
|
|
15
|
+
return byOrder;
|
|
16
|
+
return a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
|
|
17
|
+
}
|
|
18
|
+
export function sortByOrder(nodes) {
|
|
19
|
+
return [...nodes].sort(compareNodes);
|
|
20
|
+
}
|
|
21
|
+
function groupByParent(nodes) {
|
|
22
|
+
var _a;
|
|
23
|
+
const byParent = new Map();
|
|
24
|
+
for (const node of nodes) {
|
|
25
|
+
const group = (_a = byParent.get(node.parent)) !== null && _a !== void 0 ? _a : [];
|
|
26
|
+
group.push(node);
|
|
27
|
+
byParent.set(node.parent, group);
|
|
28
|
+
}
|
|
29
|
+
return byParent;
|
|
30
|
+
}
|
|
31
|
+
function applyOrderUpdates(tree, orderById) {
|
|
32
|
+
if (orderById.size === 0)
|
|
33
|
+
return tree;
|
|
34
|
+
return tree.map((node) => {
|
|
35
|
+
const order = orderById.get(node.id);
|
|
36
|
+
return order === undefined ? node : Object.assign(Object.assign({}, node), { order });
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export function normalizeTreeOrder(tree) {
|
|
40
|
+
const orderById = new Map();
|
|
41
|
+
for (const group of groupByParent(tree).values()) {
|
|
42
|
+
if (!group.some((node) => typeof node.order === 'number'))
|
|
43
|
+
continue;
|
|
44
|
+
const sorted = sortByOrder(group);
|
|
45
|
+
const keys = generateNKeysBetween(null, null, sorted.length);
|
|
46
|
+
sorted.forEach((node, index) => {
|
|
47
|
+
const key = keys[index];
|
|
48
|
+
if (key !== undefined && node.order !== key)
|
|
49
|
+
orderById.set(node.id, key);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return applyOrderUpdates(tree, orderById);
|
|
53
|
+
}
|
|
54
|
+
export function alignTreeOrderKeys(tree, reference) {
|
|
55
|
+
var _a, _b, _c;
|
|
56
|
+
const referenceKeys = new Map();
|
|
57
|
+
for (const node of reference) {
|
|
58
|
+
if (typeof node.order !== 'string')
|
|
59
|
+
continue;
|
|
60
|
+
referenceKeys.set(`${node.parent}::${node.id}`, node.order);
|
|
61
|
+
}
|
|
62
|
+
const orderById = new Map();
|
|
63
|
+
for (const group of groupByParent(tree).values()) {
|
|
64
|
+
const sorted = sortByOrder(group);
|
|
65
|
+
const keys = sorted.map(() => null);
|
|
66
|
+
let lastReused = null;
|
|
67
|
+
sorted.forEach((node, index) => {
|
|
68
|
+
const key = referenceKeys.get(`${node.parent}::${node.id}`);
|
|
69
|
+
if (key !== undefined && (lastReused === null || key > lastReused)) {
|
|
70
|
+
keys[index] = key;
|
|
71
|
+
lastReused = key;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
let start = 0;
|
|
75
|
+
while (start < sorted.length) {
|
|
76
|
+
if (keys[start] !== null) {
|
|
77
|
+
start++;
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
let end = start;
|
|
81
|
+
while (end < sorted.length && keys[end] === null)
|
|
82
|
+
end++;
|
|
83
|
+
const before = start > 0 ? ((_a = keys[start - 1]) !== null && _a !== void 0 ? _a : null) : null;
|
|
84
|
+
const after = end < sorted.length ? ((_b = keys[end]) !== null && _b !== void 0 ? _b : null) : null;
|
|
85
|
+
const filled = generateNKeysBetween(before, after, end - start);
|
|
86
|
+
for (let i = start; i < end; i++)
|
|
87
|
+
keys[i] = (_c = filled[i - start]) !== null && _c !== void 0 ? _c : null;
|
|
88
|
+
start = end;
|
|
89
|
+
}
|
|
90
|
+
sorted.forEach((node, index) => {
|
|
91
|
+
var _a;
|
|
92
|
+
const key = (_a = keys[index]) !== null && _a !== void 0 ? _a : null;
|
|
93
|
+
if (key !== null && node.order !== key)
|
|
94
|
+
orderById.set(node.id, key);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return applyOrderUpdates(tree, orderById);
|
|
98
|
+
}
|
|
@@ -10,6 +10,7 @@ export type NavigationNodeType = DivisionType | ContentType | FilesystemType;
|
|
|
10
10
|
export declare const ROOT_NODE: "root";
|
|
11
11
|
export type ROOT_NODE_TYPE = typeof ROOT_NODE;
|
|
12
12
|
export type ParentNodeType = NavigationNodeType | ROOT_NODE_TYPE;
|
|
13
|
+
export type NavigationOrder = number | string;
|
|
13
14
|
export interface BaseNavigationNode<TData> {
|
|
14
15
|
id: string;
|
|
15
16
|
parent: string | 0;
|