@scalar/workspace-store 0.17.1 → 0.18.1
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/CHANGELOG.md +53 -0
- package/dist/client.d.ts +31 -19
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +267 -88
- package/dist/client.js.map +3 -3
- package/dist/events/bus.d.ts +96 -0
- package/dist/events/bus.d.ts.map +1 -0
- package/dist/events/bus.js +60 -0
- package/dist/events/bus.js.map +7 -0
- package/dist/events/definitions/analytics.d.ts +27 -0
- package/dist/events/definitions/analytics.d.ts.map +1 -0
- package/dist/events/definitions/analytics.js +1 -0
- package/dist/events/definitions/analytics.js.map +7 -0
- package/dist/events/definitions/auth.d.ts +30 -0
- package/dist/events/definitions/auth.d.ts.map +1 -0
- package/dist/events/definitions/auth.js +1 -0
- package/dist/events/definitions/auth.js.map +7 -0
- package/dist/events/definitions/common.d.ts +5 -0
- package/dist/events/definitions/common.d.ts.map +1 -0
- package/dist/events/definitions/common.js +1 -0
- package/dist/events/definitions/common.js.map +7 -0
- package/dist/events/definitions/document.d.ts +14 -0
- package/dist/events/definitions/document.d.ts.map +1 -0
- package/dist/events/definitions/document.js +1 -0
- package/dist/events/definitions/document.js.map +7 -0
- package/dist/events/definitions/environment.d.ts +37 -0
- package/dist/events/definitions/environment.d.ts.map +1 -0
- package/dist/events/definitions/environment.js +1 -0
- package/dist/events/definitions/environment.js.map +7 -0
- package/dist/events/definitions/index.d.ts +12 -0
- package/dist/events/definitions/index.d.ts.map +1 -0
- package/dist/events/definitions/index.js +1 -0
- package/dist/events/definitions/index.js.map +7 -0
- package/dist/events/definitions/meta.d.ts +17 -0
- package/dist/events/definitions/meta.d.ts.map +1 -0
- package/dist/events/definitions/meta.js +1 -0
- package/dist/events/definitions/meta.js.map +7 -0
- package/dist/events/definitions/operation.d.ts +11 -0
- package/dist/events/definitions/operation.d.ts.map +1 -0
- package/dist/events/definitions/operation.js +1 -0
- package/dist/events/definitions/operation.js.map +7 -0
- package/dist/events/definitions/server.d.ts +50 -0
- package/dist/events/definitions/server.d.ts.map +1 -0
- package/dist/events/definitions/server.js +1 -0
- package/dist/events/definitions/server.js.map +7 -0
- package/dist/events/definitions/ui.d.ts +52 -0
- package/dist/events/definitions/ui.d.ts.map +1 -0
- package/dist/events/definitions/ui.js +1 -0
- package/dist/events/definitions/ui.js.map +7 -0
- package/dist/events/index.d.ts +3 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +3 -1
- package/dist/events/index.js.map +2 -2
- package/dist/events/listeners.d.ts +2 -1
- package/dist/events/listeners.d.ts.map +1 -1
- package/dist/events/listeners.js.map +2 -2
- package/dist/events/{definitions.d.ts → old-definitions.d.ts} +35 -11
- package/dist/events/old-definitions.d.ts.map +1 -0
- package/dist/events/{definitions.js → old-definitions.js} +1 -1
- package/dist/events/old-definitions.js.map +7 -0
- package/dist/helpers/debounce.d.ts +28 -0
- package/dist/helpers/debounce.d.ts.map +1 -0
- package/dist/helpers/debounce.js +31 -0
- package/dist/helpers/debounce.js.map +7 -0
- package/dist/helpers/detect-changes-proxy.d.ts +47 -0
- package/dist/helpers/detect-changes-proxy.d.ts.map +1 -0
- package/dist/helpers/detect-changes-proxy.js +59 -0
- package/dist/helpers/detect-changes-proxy.js.map +7 -0
- package/dist/helpers/overrides-proxy.d.ts +17 -6
- package/dist/helpers/overrides-proxy.d.ts.map +1 -1
- package/dist/helpers/overrides-proxy.js +33 -18
- package/dist/helpers/overrides-proxy.js.map +3 -3
- package/dist/helpers/unpack-proxy.d.ts +6 -0
- package/dist/helpers/unpack-proxy.d.ts.map +1 -0
- package/dist/helpers/unpack-proxy.js +9 -0
- package/dist/helpers/unpack-proxy.js.map +7 -0
- package/dist/mutators/environment.d.ts +21 -13
- package/dist/mutators/environment.d.ts.map +1 -1
- package/dist/mutators/environment.js +46 -25
- package/dist/mutators/environment.js.map +2 -2
- package/dist/mutators/index.d.ts +4 -12
- package/dist/mutators/index.d.ts.map +1 -1
- package/dist/mutators/index.js +7 -4
- package/dist/mutators/index.js.map +2 -2
- package/dist/navigation/get-navigation-options.d.ts +1 -1
- package/dist/navigation/get-navigation-options.d.ts.map +1 -1
- package/dist/navigation/get-navigation-options.js +66 -54
- package/dist/navigation/get-navigation-options.js.map +2 -2
- package/dist/navigation/helpers/get-tag.d.ts +7 -2
- package/dist/navigation/helpers/get-tag.d.ts.map +1 -1
- package/dist/navigation/helpers/get-tag.js +16 -2
- package/dist/navigation/helpers/get-tag.js.map +2 -2
- package/dist/navigation/helpers/traverse-description.d.ts +7 -2
- package/dist/navigation/helpers/traverse-description.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-description.js +24 -6
- package/dist/navigation/helpers/traverse-description.js.map +2 -2
- package/dist/navigation/helpers/traverse-document.d.ts +5 -2
- package/dist/navigation/helpers/traverse-document.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-document.js +53 -15
- package/dist/navigation/helpers/traverse-document.js.map +2 -2
- package/dist/navigation/helpers/traverse-paths.d.ts +9 -3
- package/dist/navigation/helpers/traverse-paths.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-paths.js +63 -9
- package/dist/navigation/helpers/traverse-paths.js.map +2 -2
- package/dist/navigation/helpers/traverse-schemas.d.ts +7 -8
- package/dist/navigation/helpers/traverse-schemas.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-schemas.js +35 -7
- package/dist/navigation/helpers/traverse-schemas.js.map +2 -2
- package/dist/navigation/helpers/traverse-tags.d.ts +8 -4
- package/dist/navigation/helpers/traverse-tags.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-tags.js +65 -17
- package/dist/navigation/helpers/traverse-tags.js.map +2 -2
- package/dist/navigation/helpers/traverse-webhooks.d.ts +9 -3
- package/dist/navigation/helpers/traverse-webhooks.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-webhooks.js +43 -17
- package/dist/navigation/helpers/traverse-webhooks.js.map +2 -2
- package/dist/navigation/types.d.ts +5 -24
- package/dist/navigation/types.d.ts.map +1 -1
- package/dist/persistence/index.d.ts +86 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +196 -0
- package/dist/persistence/index.js.map +7 -0
- package/dist/persistence/indexdb.d.ts +87 -0
- package/dist/persistence/indexdb.d.ts.map +1 -0
- package/dist/persistence/indexdb.js +125 -0
- package/dist/persistence/indexdb.js.map +7 -0
- package/dist/{plugins.d.ts → plugins/bundler/index.d.ts} +1 -1
- package/dist/plugins/bundler/index.d.ts.map +1 -0
- package/dist/{plugins.js → plugins/bundler/index.js} +2 -2
- package/dist/{plugins.js.map → plugins/bundler/index.js.map} +1 -1
- package/dist/plugins/client/index.d.ts +3 -0
- package/dist/plugins/client/index.d.ts.map +1 -0
- package/dist/plugins/client/index.js +5 -0
- package/dist/plugins/client/index.js.map +7 -0
- package/dist/plugins/client/persistence.d.ts +13 -0
- package/dist/plugins/client/persistence.d.ts.map +1 -0
- package/dist/plugins/client/persistence.js +57 -0
- package/dist/plugins/client/persistence.js.map +7 -0
- package/dist/schemas/extensions/document/x-scalar-environments.d.ts +52 -0
- package/dist/schemas/extensions/document/x-scalar-environments.d.ts.map +1 -0
- package/dist/schemas/extensions/document/x-scalar-environments.js +25 -0
- package/dist/schemas/extensions/document/x-scalar-environments.js.map +7 -0
- package/dist/schemas/extensions/workspace/x-scalar-active-environment.d.ts +8 -0
- package/dist/schemas/extensions/workspace/x-scalar-active-environment.d.ts.map +1 -0
- package/dist/schemas/extensions/workspace/x-scalar-active-environment.js +8 -0
- package/dist/schemas/extensions/workspace/x-scalar-active-environment.js.map +7 -0
- package/dist/schemas/extensions.d.ts +1 -0
- package/dist/schemas/extensions.d.ts.map +1 -1
- package/dist/schemas/extensions.js +1 -0
- package/dist/schemas/extensions.js.map +2 -2
- package/dist/schemas/inmemory-workspace.d.ts +95 -28
- package/dist/schemas/inmemory-workspace.d.ts.map +1 -1
- package/dist/schemas/inmemory-workspace.js +1 -9
- package/dist/schemas/inmemory-workspace.js.map +2 -2
- package/dist/schemas/navigation.d.ts +128 -1
- package/dist/schemas/navigation.d.ts.map +1 -1
- package/dist/schemas/navigation.js +20 -1
- package/dist/schemas/navigation.js.map +2 -2
- package/dist/schemas/reference-config/index.d.ts +243 -206
- package/dist/schemas/reference-config/index.d.ts.map +1 -1
- package/dist/schemas/reference-config/index.js.map +2 -2
- package/dist/schemas/reference-config/settings.d.ts +45 -9
- package/dist/schemas/reference-config/settings.d.ts.map +1 -1
- package/dist/schemas/reference-config/settings.js +1 -1
- package/dist/schemas/reference-config/settings.js.map +1 -1
- package/dist/schemas/v3.1/strict/openapi-document.d.ts +1540 -311
- package/dist/schemas/v3.1/strict/openapi-document.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/openapi-document.js +20 -13
- package/dist/schemas/v3.1/strict/openapi-document.js.map +2 -2
- package/dist/schemas/v3.1/strict/parameter.d.ts +23 -1
- package/dist/schemas/v3.1/strict/parameter.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/parameter.js +5 -1
- package/dist/schemas/v3.1/strict/parameter.js.map +2 -2
- package/dist/schemas/v3.1/strict/ref-definitions.d.ts +2 -0
- package/dist/schemas/v3.1/strict/ref-definitions.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/ref-definitions.js +4 -1
- package/dist/schemas/v3.1/strict/ref-definitions.js.map +2 -2
- package/dist/schemas/workspace-specification/config.d.ts +46 -15
- package/dist/schemas/workspace-specification/config.d.ts.map +1 -1
- package/dist/schemas/workspace-specification/config.js.map +1 -1
- package/dist/schemas/workspace-specification/index.d.ts +48 -11
- package/dist/schemas/workspace-specification/index.d.ts.map +1 -1
- package/dist/schemas/workspace.d.ts +353 -85
- package/dist/schemas/workspace.d.ts.map +1 -1
- package/dist/schemas/workspace.js +19 -11
- package/dist/schemas/workspace.js.map +2 -2
- package/dist/server.d.ts +4 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +7 -6
- package/dist/server.js.map +2 -2
- package/dist/workspace-plugin.d.ts +49 -0
- package/dist/workspace-plugin.d.ts.map +1 -0
- package/dist/workspace-plugin.js +1 -0
- package/dist/workspace-plugin.js.map +7 -0
- package/package.json +26 -9
- package/dist/events/definitions.d.ts.map +0 -1
- package/dist/events/definitions.js.map +0 -7
- package/dist/plugins.d.ts.map +0 -1
- package/dist/schemas/v3.1/strict/client-config-extensions/x-scalar-client-config-environments.d.ts +0 -33
- package/dist/schemas/v3.1/strict/client-config-extensions/x-scalar-client-config-environments.d.ts.map +0 -1
- package/dist/schemas/v3.1/strict/client-config-extensions/x-scalar-client-config-environments.js +0 -23
- package/dist/schemas/v3.1/strict/client-config-extensions/x-scalar-client-config-environments.js.map +0 -7
|
@@ -1,62 +1,78 @@
|
|
|
1
1
|
import { slug } from "github-slugger";
|
|
2
|
-
const getNavigationOptions = (config) => {
|
|
2
|
+
const getNavigationOptions = (documentName, config) => {
|
|
3
3
|
const referenceConfig = config?.["x-scalar-reference-config"];
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
if (
|
|
7
|
-
|
|
4
|
+
const generateId = (props) => {
|
|
5
|
+
const documentId = `${slug(documentName)}`;
|
|
6
|
+
if (props.type === "text") {
|
|
7
|
+
if (referenceConfig?.generateHeadingSlug) {
|
|
8
|
+
return referenceConfig?.generateHeadingSlug({ slug: props.slug });
|
|
9
|
+
}
|
|
10
|
+
if (props.slug) {
|
|
11
|
+
return `${documentId}/description/${props.slug}`;
|
|
12
|
+
}
|
|
13
|
+
return `${documentId}/`;
|
|
8
14
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return `${generateHeadingSlug(heading)}`;
|
|
15
|
+
if (props.type === "tag") {
|
|
16
|
+
if (referenceConfig?.generateTagSlug) {
|
|
17
|
+
return `${documentId}/tag/${referenceConfig.generateTagSlug(props.tag)}`;
|
|
18
|
+
}
|
|
19
|
+
return `${documentId}/tag/${slug(props.tag.name ?? "")}`;
|
|
15
20
|
}
|
|
16
|
-
if (
|
|
17
|
-
|
|
21
|
+
if (props.type === "operation") {
|
|
22
|
+
const tagId = `${generateId({
|
|
23
|
+
type: "tag",
|
|
24
|
+
tag: props.parentTag.tag,
|
|
25
|
+
parentId: props.parentTag.id
|
|
26
|
+
})}`;
|
|
27
|
+
if (referenceConfig?.generateOperationSlug) {
|
|
28
|
+
return `${tagId}/${referenceConfig.generateOperationSlug({
|
|
29
|
+
path: props.path,
|
|
30
|
+
operationId: props.operation.operationId,
|
|
31
|
+
method: props.method,
|
|
32
|
+
summary: props.operation.summary
|
|
33
|
+
})}`;
|
|
34
|
+
}
|
|
35
|
+
return `${tagId}/${props.method}${props.path}`;
|
|
18
36
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
37
|
+
if (props.type === "webhook") {
|
|
38
|
+
const prefixTag = props.parentTag ? `${generateId({
|
|
39
|
+
type: "tag",
|
|
40
|
+
parentId: props.parentTag.id,
|
|
41
|
+
tag: props.parentTag.tag
|
|
42
|
+
})}/` : `${documentId}/`;
|
|
43
|
+
if (referenceConfig?.generateWebhookSlug) {
|
|
44
|
+
return `${prefixTag}webhook/${referenceConfig.generateWebhookSlug({
|
|
45
|
+
name: props.name,
|
|
46
|
+
method: props.method
|
|
47
|
+
})}`;
|
|
48
|
+
}
|
|
49
|
+
return `${prefixTag}webhook/${props.method}/${slug(props.name)}`;
|
|
25
50
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
51
|
+
if (props.type === "model") {
|
|
52
|
+
if (!props.name) {
|
|
53
|
+
return `${documentId}/models`;
|
|
54
|
+
}
|
|
55
|
+
const prefixTag = props.parentTag ? `${generateId({
|
|
56
|
+
type: "tag",
|
|
57
|
+
parentId: props.parentTag.id,
|
|
58
|
+
tag: props.parentTag.tag
|
|
59
|
+
})}/` : `${documentId}/`;
|
|
60
|
+
if (referenceConfig?.generateModelSlug) {
|
|
61
|
+
return `${prefixTag}model/${referenceConfig.generateModelSlug({
|
|
62
|
+
name: props.name
|
|
63
|
+
})}`;
|
|
64
|
+
}
|
|
65
|
+
return `${prefixTag}model/${slug(props.name)}`;
|
|
29
66
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const getOperationIdDefault = (operation, parentTag) => {
|
|
33
|
-
const generateOperationSlug = referenceConfig?.generateOperationSlug;
|
|
34
|
-
if (generateOperationSlug) {
|
|
35
|
-
return `${getTagId(parentTag)}/${generateOperationSlug({
|
|
36
|
-
path: operation.path,
|
|
37
|
-
operationId: operation.operationId,
|
|
38
|
-
method: operation.method,
|
|
39
|
-
summary: operation.summary
|
|
40
|
-
})}`;
|
|
41
|
-
}
|
|
42
|
-
return `${getTagId(parentTag)}/${operation.method}${operation.path}`;
|
|
43
|
-
};
|
|
44
|
-
const getWebhookIdDefault = (webhook, parentTag) => {
|
|
45
|
-
const generateWebhookSlug = referenceConfig?.generateWebhookSlug;
|
|
46
|
-
if (!webhook?.name) {
|
|
47
|
-
return "webhooks";
|
|
67
|
+
if (props.type === "example") {
|
|
68
|
+
return `${props.parentId}/example/${slug(props.name)}`;
|
|
48
69
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return `${prefixTag}webhook/${generateWebhookSlug(webhook)}`;
|
|
70
|
+
if (props.type === "document") {
|
|
71
|
+
return documentId;
|
|
52
72
|
}
|
|
53
|
-
|
|
73
|
+
console.warn("[WARNING]: unhandled id generation for navigation item:", props);
|
|
74
|
+
return "unknown-id";
|
|
54
75
|
};
|
|
55
|
-
const getHeadingId = referenceConfig?.getHeadingId ?? getHeadingIdDefault;
|
|
56
|
-
const getModelId = referenceConfig?.getModelId ?? getModelIdDefault;
|
|
57
|
-
const getOperationId = referenceConfig?.getOperationId ?? getOperationIdDefault;
|
|
58
|
-
const getWebhookId = referenceConfig?.getWebhookId ?? getWebhookIdDefault;
|
|
59
|
-
const getTagId = referenceConfig?.getTagId ?? getTagIdDefault;
|
|
60
76
|
const hideModels = referenceConfig?.features?.showModels === false;
|
|
61
77
|
const operationsSorter = referenceConfig?.operationsSorter;
|
|
62
78
|
const tagsSorter = referenceConfig?.tagSort;
|
|
@@ -64,11 +80,7 @@ const getNavigationOptions = (config) => {
|
|
|
64
80
|
hideModels,
|
|
65
81
|
operationsSorter,
|
|
66
82
|
tagsSorter,
|
|
67
|
-
|
|
68
|
-
getModelId,
|
|
69
|
-
getOperationId,
|
|
70
|
-
getWebhookId,
|
|
71
|
-
getTagId
|
|
83
|
+
generateId
|
|
72
84
|
};
|
|
73
85
|
};
|
|
74
86
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/navigation/get-navigation-options.ts"],
|
|
4
|
-
"sourcesContent": ["import { slug } from 'github-slugger'\n\nimport type { TraverseSpecOptions } from '@/navigation/types'\nimport type { DocumentConfiguration } from '@/schemas/workspace-specification/config'\n\n/**\n * Returns options for traversing an OpenAPI document, allowing customization of\n * how IDs and slugs are generated for tags, headings, models, operations, and webhooks.\n * The returned options can be influenced by the provided DocumentConfiguration\n */\nexport const getNavigationOptions = (config?: DocumentConfiguration): TraverseSpecOptions => {\n const referenceConfig = config?.['x-scalar-reference-config']\n\n
|
|
5
|
-
"mappings": "AAAA,SAAS,YAAY;
|
|
4
|
+
"sourcesContent": ["import { slug } from 'github-slugger'\n\nimport type { TraverseSpecOptions } from '@/navigation/types'\nimport type { IdGenerator } from '@/schemas/navigation'\nimport type { DocumentConfiguration } from '@/schemas/workspace-specification/config'\n\n/**\n * Returns options for traversing an OpenAPI document, allowing customization of\n * how IDs and slugs are generated for tags, headings, models, operations, and webhooks.\n * The returned options can be influenced by the provided DocumentConfiguration\n */\nexport const getNavigationOptions = (documentName: string, config?: DocumentConfiguration): TraverseSpecOptions => {\n const referenceConfig = config?.['x-scalar-reference-config']\n\n const generateId: IdGenerator = (props) => {\n const documentId = `${slug(documentName)}`\n\n // -------- Default text id generation logic --------\n if (props.type === 'text') {\n if (referenceConfig?.generateHeadingSlug) {\n return referenceConfig?.generateHeadingSlug({ slug: props.slug })\n }\n\n if (props.slug) {\n return `${documentId}/description/${props.slug}`\n }\n\n return `${documentId}/`\n }\n\n // -------- Default tag id generation logic --------\n if (props.type === 'tag') {\n if (referenceConfig?.generateTagSlug) {\n return `${documentId}/tag/${referenceConfig.generateTagSlug(props.tag)}`\n }\n\n return `${documentId}/tag/${slug(props.tag.name ?? '')}`\n }\n\n // -------- Default operation id generation logic --------\n if (props.type === 'operation') {\n const tagId = `${generateId({\n type: 'tag',\n tag: props.parentTag.tag,\n parentId: props.parentTag.id,\n })}`\n\n if (referenceConfig?.generateOperationSlug) {\n return `${tagId}/${referenceConfig.generateOperationSlug({\n path: props.path,\n operationId: props.operation.operationId,\n method: props.method,\n summary: props.operation.summary,\n })}`\n }\n\n return `${tagId}/${props.method}${props.path}`\n }\n\n // -------- Default webhook id generation logic --------\n if (props.type === 'webhook') {\n const prefixTag = props.parentTag\n ? `${generateId({\n type: 'tag',\n parentId: props.parentTag.id,\n tag: props.parentTag.tag,\n })}/`\n : `${documentId}/`\n\n if (referenceConfig?.generateWebhookSlug) {\n return `${prefixTag}webhook/${referenceConfig.generateWebhookSlug({\n name: props.name,\n method: props.method,\n })}`\n }\n\n return `${prefixTag}webhook/${props.method}/${slug(props.name)}`\n }\n\n // -------- Default model id generation logic --------\n if (props.type === 'model') {\n if (!props.name) {\n return `${documentId}/models`\n }\n\n const prefixTag = props.parentTag\n ? `${generateId({\n type: 'tag',\n parentId: props.parentTag.id,\n tag: props.parentTag.tag,\n })}/`\n : `${documentId}/`\n\n if (referenceConfig?.generateModelSlug) {\n return `${prefixTag}model/${referenceConfig.generateModelSlug({\n name: props.name,\n })}`\n }\n\n return `${prefixTag}model/${slug(props.name)}`\n }\n\n if (props.type === 'example') {\n return `${props.parentId}/example/${slug(props.name)}`\n }\n\n if (props.type === 'document') {\n // -------- Default document id generation logic --------\n return documentId\n }\n\n console.warn('[WARNING]: unhandled id generation for navigation item:', props)\n return 'unknown-id'\n }\n\n const hideModels = referenceConfig?.features?.showModels === false\n const operationsSorter: TraverseSpecOptions['operationsSorter'] = referenceConfig?.operationsSorter\n const tagsSorter: TraverseSpecOptions['tagsSorter'] = referenceConfig?.tagSort\n\n return {\n hideModels,\n operationsSorter,\n tagsSorter,\n generateId,\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TagsMap } from '../../navigation/types.js';
|
|
1
|
+
import type { TagsMap, TraverseSpecOptions } from '../../navigation/types.js';
|
|
2
2
|
type TagMapValue = NonNullable<TagsMap extends Map<string, infer V> ? V : never>;
|
|
3
3
|
/**
|
|
4
4
|
* Gets or creates a tag in the tags dictionary.
|
|
@@ -8,6 +8,11 @@ type TagMapValue = NonNullable<TagsMap extends Map<string, infer V> ? V : never>
|
|
|
8
8
|
* @param name - Name of the tag to get or create
|
|
9
9
|
* @returns The tag object for the given name
|
|
10
10
|
*/
|
|
11
|
-
export declare const getTag: (tagsMap
|
|
11
|
+
export declare const getTag: ({ tagsMap, name, documentId, generateId, }: {
|
|
12
|
+
tagsMap: TagsMap;
|
|
13
|
+
name: string;
|
|
14
|
+
documentId: string;
|
|
15
|
+
generateId: TraverseSpecOptions["generateId"];
|
|
16
|
+
}) => TagMapValue;
|
|
12
17
|
export {};
|
|
13
18
|
//# sourceMappingURL=get-tag.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-tag.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/get-tag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"get-tag.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/get-tag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAEtE,KAAK,WAAW,GAAG,WAAW,CAAC,OAAO,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;AAEhF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,GAAI,4CAKpB;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAA;CAC9C,KAAG,WAeH,CAAA"}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
|
-
const getTag = (
|
|
1
|
+
const getTag = ({
|
|
2
|
+
tagsMap,
|
|
3
|
+
name,
|
|
4
|
+
documentId,
|
|
5
|
+
generateId
|
|
6
|
+
}) => {
|
|
2
7
|
if (!tagsMap.get(name)) {
|
|
3
|
-
tagsMap.set(name, {
|
|
8
|
+
tagsMap.set(name, {
|
|
9
|
+
id: generateId({
|
|
10
|
+
type: "tag",
|
|
11
|
+
tag: { name },
|
|
12
|
+
parentId: documentId
|
|
13
|
+
}),
|
|
14
|
+
parentId: documentId,
|
|
15
|
+
entries: [],
|
|
16
|
+
tag: { name }
|
|
17
|
+
});
|
|
4
18
|
}
|
|
5
19
|
return tagsMap.get(name);
|
|
6
20
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/navigation/helpers/get-tag.ts"],
|
|
4
|
-
"sourcesContent": ["import type { TagsMap } from '@/navigation/types'\n\ntype TagMapValue = NonNullable<TagsMap extends Map<string, infer V> ? V : never>\n\n/**\n * Gets or creates a tag in the tags dictionary.\n * If the tag doesn't exist, it creates a new tag object with the given name.\n *\n * @param tagsDict - Map of tag names to tag objects\n * @param name - Name of the tag to get or create\n * @returns The tag object for the given name\n */\nexport const getTag = (tagsMap: TagsMap
|
|
5
|
-
"mappings": "AAYO,MAAM,SAAS,CAAC,
|
|
4
|
+
"sourcesContent": ["import type { TagsMap, TraverseSpecOptions } from '@/navigation/types'\n\ntype TagMapValue = NonNullable<TagsMap extends Map<string, infer V> ? V : never>\n\n/**\n * Gets or creates a tag in the tags dictionary.\n * If the tag doesn't exist, it creates a new tag object with the given name.\n *\n * @param tagsDict - Map of tag names to tag objects\n * @param name - Name of the tag to get or create\n * @returns The tag object for the given name\n */\nexport const getTag = ({\n tagsMap,\n name,\n documentId,\n generateId,\n}: {\n tagsMap: TagsMap\n name: string\n documentId: string\n generateId: TraverseSpecOptions['generateId']\n}): TagMapValue => {\n if (!tagsMap.get(name)) {\n tagsMap.set(name, {\n id: generateId({\n type: 'tag',\n tag: { name },\n parentId: documentId,\n }),\n parentId: documentId,\n entries: [],\n tag: { name },\n })\n }\n\n return tagsMap.get(name)! // We can safely assert non-null since we just set the value if it didn't exist\n}\n"],
|
|
5
|
+
"mappings": "AAYO,MAAM,SAAS,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAKmB;AACjB,MAAI,CAAC,QAAQ,IAAI,IAAI,GAAG;AACtB,YAAQ,IAAI,MAAM;AAAA,MAChB,IAAI,WAAW;AAAA,QACb,MAAM;AAAA,QACN,KAAK,EAAE,KAAK;AAAA,QACZ,UAAU;AAAA,MACZ,CAAC;AAAA,MACD,UAAU;AAAA,MACV,SAAS,CAAC;AAAA,MACV,KAAK,EAAE,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AAEA,SAAO,QAAQ,IAAI,IAAI;AACzB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TraverseSpecOptions } from '../../navigation/types.js';
|
|
2
2
|
import type { TraversedDescription } from '../../schemas/navigation.js';
|
|
3
|
+
import type { InfoObject } from '../../schemas/v3.1/strict/info.js';
|
|
3
4
|
export declare const DEFAULT_INTRODUCTION_SLUG = "introduction";
|
|
4
5
|
/**
|
|
5
6
|
* Creates a hierarchical navigation structure from markdown headings in an OpenAPI description.
|
|
@@ -16,5 +17,9 @@ export declare const DEFAULT_INTRODUCTION_SLUG = "introduction";
|
|
|
16
17
|
* @param getHeadingId - Function to generate unique IDs for headings
|
|
17
18
|
* @returns Array of navigation entries with their hierarchy
|
|
18
19
|
*/
|
|
19
|
-
export declare const traverseDescription: (
|
|
20
|
+
export declare const traverseDescription: ({ generateId, parentId, info, }: {
|
|
21
|
+
generateId: TraverseSpecOptions["generateId"];
|
|
22
|
+
parentId: string;
|
|
23
|
+
info: InfoObject;
|
|
24
|
+
}) => TraversedDescription[];
|
|
20
25
|
//# sourceMappingURL=traverse-description.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse-description.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/traverse-description.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"traverse-description.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/traverse-description.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAE5D,eAAO,MAAM,yBAAyB,iBAAiB,CAAA;AAEvD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,GAAI,iCAIjC;IACD,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAA;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,UAAU,CAAA;CACjB,KAAG,oBAAoB,EAoEvB,CAAA"}
|
|
@@ -1,20 +1,31 @@
|
|
|
1
1
|
import { getHeadingsFromMarkdown, getLowestHeadingLevel } from "../../navigation/helpers/utils.js";
|
|
2
2
|
const DEFAULT_INTRODUCTION_SLUG = "introduction";
|
|
3
|
-
const traverseDescription = (
|
|
4
|
-
|
|
3
|
+
const traverseDescription = ({
|
|
4
|
+
generateId,
|
|
5
|
+
parentId,
|
|
6
|
+
info
|
|
7
|
+
}) => {
|
|
8
|
+
if (!info.description?.trim()) {
|
|
5
9
|
return [];
|
|
6
10
|
}
|
|
7
|
-
const headings = getHeadingsFromMarkdown(description);
|
|
11
|
+
const headings = getHeadingsFromMarkdown(info.description);
|
|
8
12
|
const lowestLevel = getLowestHeadingLevel(headings);
|
|
9
13
|
const entries = [];
|
|
10
14
|
let currentParent = null;
|
|
11
|
-
if (description && !description.trim().startsWith("#")) {
|
|
15
|
+
if (info.description && !info.description.trim().startsWith("#")) {
|
|
12
16
|
const heading = {
|
|
13
17
|
depth: 1,
|
|
14
18
|
value: "Introduction",
|
|
15
19
|
slug: DEFAULT_INTRODUCTION_SLUG
|
|
16
20
|
};
|
|
17
|
-
const id =
|
|
21
|
+
const id = generateId({
|
|
22
|
+
type: "text",
|
|
23
|
+
depth: heading.depth,
|
|
24
|
+
slug: heading.slug,
|
|
25
|
+
parentId,
|
|
26
|
+
info,
|
|
27
|
+
value: heading.value
|
|
28
|
+
});
|
|
18
29
|
const title = heading.value;
|
|
19
30
|
const entry = {
|
|
20
31
|
id,
|
|
@@ -28,7 +39,14 @@ const traverseDescription = (description, getHeadingId) => {
|
|
|
28
39
|
continue;
|
|
29
40
|
}
|
|
30
41
|
const entry = {
|
|
31
|
-
id:
|
|
42
|
+
id: generateId({
|
|
43
|
+
type: "text",
|
|
44
|
+
depth: heading.depth,
|
|
45
|
+
slug: heading.slug,
|
|
46
|
+
parentId,
|
|
47
|
+
info,
|
|
48
|
+
value: heading.value
|
|
49
|
+
}),
|
|
32
50
|
title: heading.value,
|
|
33
51
|
type: "text"
|
|
34
52
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/navigation/helpers/traverse-description.ts"],
|
|
4
|
-
"sourcesContent": ["import { getHeadingsFromMarkdown, getLowestHeadingLevel } from '@/navigation/helpers/utils'\nimport type { Heading } from '@/navigation/types'\nimport type { TraversedDescription } from '@/schemas/navigation'\n\nexport const DEFAULT_INTRODUCTION_SLUG = 'introduction'\n\n/**\n * Creates a hierarchical navigation structure from markdown headings in an OpenAPI description.\n *\n * The function processes markdown headings to create a two-level navigation tree:\n * - Level 1: Main sections (based on the lowest heading level found)\n * - Level 2: Subsections (one level deeper than the main sections)\n *\n * If the description starts with content rather than a heading, an \"Introduction\" section\n * is automatically added as the first entry.\n *\n * @param description - The markdown description text to process\n * @param entitiesMap - Map to store heading IDs and titles for mobile header navigation\n * @param getHeadingId - Function to generate unique IDs for headings\n * @returns Array of navigation entries with their hierarchy\n */\nexport const traverseDescription = (\n
|
|
5
|
-
"mappings": "AAAA,SAAS,yBAAyB,6BAA6B;
|
|
4
|
+
"sourcesContent": ["import { getHeadingsFromMarkdown, getLowestHeadingLevel } from '@/navigation/helpers/utils'\nimport type { Heading, TraverseSpecOptions } from '@/navigation/types'\nimport type { TraversedDescription } from '@/schemas/navigation'\nimport type { InfoObject } from '@/schemas/v3.1/strict/info'\n\nexport const DEFAULT_INTRODUCTION_SLUG = 'introduction'\n\n/**\n * Creates a hierarchical navigation structure from markdown headings in an OpenAPI description.\n *\n * The function processes markdown headings to create a two-level navigation tree:\n * - Level 1: Main sections (based on the lowest heading level found)\n * - Level 2: Subsections (one level deeper than the main sections)\n *\n * If the description starts with content rather than a heading, an \"Introduction\" section\n * is automatically added as the first entry.\n *\n * @param description - The markdown description text to process\n * @param entitiesMap - Map to store heading IDs and titles for mobile header navigation\n * @param getHeadingId - Function to generate unique IDs for headings\n * @returns Array of navigation entries with their hierarchy\n */\nexport const traverseDescription = ({\n generateId,\n parentId,\n info,\n}: {\n generateId: TraverseSpecOptions['generateId']\n parentId: string\n info: InfoObject\n}): TraversedDescription[] => {\n if (!info.description?.trim()) {\n return []\n }\n\n const headings = getHeadingsFromMarkdown(info.description)\n const lowestLevel = getLowestHeadingLevel(headings)\n\n const entries: TraversedDescription[] = []\n let currentParent: TraversedDescription | null = null\n\n // Add \"Introduction\" as the first heading\n if (info.description && !info.description.trim().startsWith('#')) {\n const heading: Heading = {\n depth: 1,\n value: 'Introduction',\n slug: DEFAULT_INTRODUCTION_SLUG,\n }\n\n const id = generateId({\n type: 'text',\n depth: heading.depth,\n slug: heading.slug,\n parentId: parentId,\n info: info,\n value: heading.value,\n })\n const title = heading.value\n\n const entry = {\n id,\n title,\n type: 'text',\n } satisfies TraversedDescription\n\n // Push to entries\n entries.push(entry)\n }\n\n // Traverse for the rest\n for (const heading of headings) {\n if (heading.depth !== lowestLevel && heading.depth !== lowestLevel + 1) {\n continue\n }\n\n const entry: TraversedDescription = {\n id: generateId({\n type: 'text',\n depth: heading.depth,\n slug: heading.slug,\n parentId: parentId,\n info: info,\n value: heading.value,\n }),\n title: heading.value,\n type: 'text',\n }\n\n if (heading.depth === lowestLevel) {\n entry.children = []\n entries.push(entry)\n currentParent = entry\n } else if (currentParent) {\n currentParent.children?.push(entry)\n }\n }\n\n return entries\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,yBAAyB,6BAA6B;AAKxD,MAAM,4BAA4B;AAiBlC,MAAM,sBAAsB,CAAC;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AACF,MAI8B;AAC5B,MAAI,CAAC,KAAK,aAAa,KAAK,GAAG;AAC7B,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,WAAW,wBAAwB,KAAK,WAAW;AACzD,QAAM,cAAc,sBAAsB,QAAQ;AAElD,QAAM,UAAkC,CAAC;AACzC,MAAI,gBAA6C;AAGjD,MAAI,KAAK,eAAe,CAAC,KAAK,YAAY,KAAK,EAAE,WAAW,GAAG,GAAG;AAChE,UAAM,UAAmB;AAAA,MACvB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAEA,UAAM,KAAK,WAAW;AAAA,MACpB,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA,MACd;AAAA,MACA;AAAA,MACA,OAAO,QAAQ;AAAA,IACjB,CAAC;AACD,UAAM,QAAQ,QAAQ;AAEtB,UAAM,QAAQ;AAAA,MACZ;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR;AAGA,YAAQ,KAAK,KAAK;AAAA,EACpB;AAGA,aAAW,WAAW,UAAU;AAC9B,QAAI,QAAQ,UAAU,eAAe,QAAQ,UAAU,cAAc,GAAG;AACtE;AAAA,IACF;AAEA,UAAM,QAA8B;AAAA,MAClC,IAAI,WAAW;AAAA,QACb,MAAM;AAAA,QACN,OAAO,QAAQ;AAAA,QACf,MAAM,QAAQ;AAAA,QACd;AAAA,QACA;AAAA,QACA,OAAO,QAAQ;AAAA,MACjB,CAAC;AAAA,MACD,OAAO,QAAQ;AAAA,MACf,MAAM;AAAA,IACR;AAEA,QAAI,QAAQ,UAAU,aAAa;AACjC,YAAM,WAAW,CAAC;AAClB,cAAQ,KAAK,KAAK;AAClB,sBAAgB;AAAA,IAClB,WAAW,eAAe;AACxB,oBAAc,UAAU,KAAK,KAAK;AAAA,IACpC;AAAA,EACF;AAEA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -10,7 +10,10 @@ import type { DocumentConfiguration } from '../../schemas/workspace-specificatio
|
|
|
10
10
|
* - Tag-based organization of operations and webhooks
|
|
11
11
|
* - Optional schema/model documentation
|
|
12
12
|
*/
|
|
13
|
-
export declare const traverseDocument: (document: OpenApiDocument, config?: DocumentConfiguration) => {
|
|
14
|
-
|
|
13
|
+
export declare const traverseDocument: (documentName: string, document: OpenApiDocument, config?: DocumentConfiguration) => {
|
|
14
|
+
id: string;
|
|
15
|
+
type: "document";
|
|
16
|
+
title: string;
|
|
17
|
+
children: TraversedEntry[];
|
|
15
18
|
};
|
|
16
19
|
//# sourceMappingURL=traverse-document.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse-document.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/traverse-document.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"traverse-document.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/traverse-document.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AAQrF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAAI,cAAc,MAAM,EAAE,UAAU,eAAe,EAAE,SAAS,qBAAqB;;;;;CA6F/G,CAAA"}
|
|
@@ -4,24 +4,48 @@ import { traversePaths } from "./traverse-paths.js";
|
|
|
4
4
|
import { traverseSchemas } from "./traverse-schemas.js";
|
|
5
5
|
import { traverseTags } from "./traverse-tags.js";
|
|
6
6
|
import { traverseWebhooks } from "./traverse-webhooks.js";
|
|
7
|
-
const traverseDocument = (document, config) => {
|
|
8
|
-
const { hideModels, tagsSorter, operationsSorter,
|
|
7
|
+
const traverseDocument = (documentName, document, config) => {
|
|
8
|
+
const { hideModels, tagsSorter, operationsSorter, generateId } = getNavigationOptions(documentName, config);
|
|
9
|
+
const documentId = generateId({
|
|
10
|
+
type: "document",
|
|
11
|
+
info: document.info,
|
|
12
|
+
name: documentName
|
|
13
|
+
});
|
|
9
14
|
const tagsMap = new Map(
|
|
10
|
-
document.tags?.map((tag) => [
|
|
15
|
+
document.tags?.map((tag) => [
|
|
16
|
+
tag.name ?? "Untitled Tag",
|
|
17
|
+
{ id: generateId({ type: "tag", tag, parentId: documentId }), parentId: documentId, tag, entries: [] }
|
|
18
|
+
]) ?? []
|
|
11
19
|
);
|
|
12
|
-
const entries = traverseDescription(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
const entries = traverseDescription({
|
|
21
|
+
generateId,
|
|
22
|
+
parentId: documentId,
|
|
23
|
+
info: document.info
|
|
24
|
+
});
|
|
25
|
+
traversePaths({ document, tagsMap, generateId, documentId });
|
|
26
|
+
const untaggedWebhooksParentId = generateId({
|
|
27
|
+
type: "webhook",
|
|
28
|
+
name: "",
|
|
29
|
+
parentId: documentId
|
|
30
|
+
});
|
|
31
|
+
const untaggedWebhooks = traverseWebhooks({
|
|
32
|
+
document,
|
|
33
|
+
generateId,
|
|
34
|
+
tagsMap,
|
|
35
|
+
untaggedWebhooksParentId,
|
|
36
|
+
documentId
|
|
37
|
+
});
|
|
38
|
+
const tagsEntries = traverseTags({
|
|
39
|
+
document,
|
|
40
|
+
tagsMap,
|
|
41
|
+
documentId,
|
|
42
|
+
options: { tagsSorter, operationsSorter, generateId }
|
|
19
43
|
});
|
|
20
44
|
entries.push(...tagsEntries);
|
|
21
45
|
if (untaggedWebhooks.length) {
|
|
22
46
|
entries.push({
|
|
23
47
|
type: "tag",
|
|
24
|
-
id:
|
|
48
|
+
id: untaggedWebhooksParentId,
|
|
25
49
|
title: "Webhooks",
|
|
26
50
|
name: "Webhooks",
|
|
27
51
|
children: untaggedWebhooks,
|
|
@@ -30,17 +54,31 @@ const traverseDocument = (document, config) => {
|
|
|
30
54
|
});
|
|
31
55
|
}
|
|
32
56
|
if (!hideModels && document.components?.schemas) {
|
|
33
|
-
const untaggedModels = traverseSchemas(
|
|
57
|
+
const untaggedModels = traverseSchemas({
|
|
58
|
+
documentId,
|
|
59
|
+
document,
|
|
60
|
+
generateId,
|
|
61
|
+
tagsMap
|
|
62
|
+
});
|
|
34
63
|
if (untaggedModels.length) {
|
|
35
64
|
entries.push({
|
|
36
|
-
type: "
|
|
37
|
-
id:
|
|
65
|
+
type: "models",
|
|
66
|
+
id: generateId({
|
|
67
|
+
type: "model",
|
|
68
|
+
parentId: documentId
|
|
69
|
+
}),
|
|
38
70
|
title: "Models",
|
|
71
|
+
name: "Models",
|
|
39
72
|
children: untaggedModels
|
|
40
73
|
});
|
|
41
74
|
}
|
|
42
75
|
}
|
|
43
|
-
return {
|
|
76
|
+
return {
|
|
77
|
+
id: documentId,
|
|
78
|
+
type: "document",
|
|
79
|
+
title: documentName,
|
|
80
|
+
children: entries
|
|
81
|
+
};
|
|
44
82
|
};
|
|
45
83
|
export {
|
|
46
84
|
traverseDocument
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/navigation/helpers/traverse-document.ts"],
|
|
4
|
-
"sourcesContent": ["import { getNavigationOptions } from '@/navigation/get-navigation-options'\nimport type { TagsMap } from '@/navigation/types'\nimport type { TraversedEntry } from '@/schemas/navigation'\nimport type { OpenApiDocument } from '@/schemas/v3.1/strict/openapi-document'\nimport type { DocumentConfiguration } from '@/schemas/workspace-specification/config'\n\nimport { traverseDescription } from './traverse-description'\nimport { traversePaths } from './traverse-paths'\nimport { traverseSchemas } from './traverse-schemas'\nimport { traverseTags } from './traverse-tags'\nimport { traverseWebhooks } from './traverse-webhooks'\n\n/**\n * Traverses an OpenAPI Document to generate navigation structure and metadata.\n *\n * This function processes the OpenAPI document to create:\n * - A hierarchical navigation structure for the sidebar\n * - A mapping of IDs to titles for mobile header navigation\n * - Tag-based organization of operations and webhooks\n * - Optional schema/model documentation\n */\nexport const traverseDocument = (document: OpenApiDocument, config?: DocumentConfiguration) => {\n const { hideModels, tagsSorter, operationsSorter,
|
|
5
|
-
"mappings": "AAAA,SAAS,4BAA4B;AAMrC,SAAS,2BAA2B;AACpC,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AAW1B,MAAM,mBAAmB,CAAC,UAA2B,WAAmC;
|
|
4
|
+
"sourcesContent": ["import { getNavigationOptions } from '@/navigation/get-navigation-options'\nimport type { TagsMap } from '@/navigation/types'\nimport type { TraversedDocument, TraversedEntry } from '@/schemas/navigation'\nimport type { OpenApiDocument } from '@/schemas/v3.1/strict/openapi-document'\nimport type { DocumentConfiguration } from '@/schemas/workspace-specification/config'\n\nimport { traverseDescription } from './traverse-description'\nimport { traversePaths } from './traverse-paths'\nimport { traverseSchemas } from './traverse-schemas'\nimport { traverseTags } from './traverse-tags'\nimport { traverseWebhooks } from './traverse-webhooks'\n\n/**\n * Traverses an OpenAPI Document to generate navigation structure and metadata.\n *\n * This function processes the OpenAPI document to create:\n * - A hierarchical navigation structure for the sidebar\n * - A mapping of IDs to titles for mobile header navigation\n * - Tag-based organization of operations and webhooks\n * - Optional schema/model documentation\n */\nexport const traverseDocument = (documentName: string, document: OpenApiDocument, config?: DocumentConfiguration) => {\n const { hideModels, tagsSorter, operationsSorter, generateId } = getNavigationOptions(documentName, config)\n\n const documentId = generateId({\n type: 'document',\n info: document.info,\n name: documentName,\n })\n\n /** Map of tags and their entries */\n const tagsMap: TagsMap = new Map(\n document.tags?.map((tag) => [\n tag.name ?? 'Untitled Tag',\n { id: generateId({ type: 'tag', tag, parentId: documentId }), parentId: documentId, tag, entries: [] },\n ]) ?? [],\n )\n\n /** Generate entries for the document info description field */\n const entries: TraversedEntry[] = traverseDescription({\n generateId,\n parentId: documentId,\n info: document.info,\n })\n\n /** Traverse all the document path */\n traversePaths({ document, tagsMap, generateId, documentId })\n\n const untaggedWebhooksParentId = generateId({\n type: 'webhook',\n name: '',\n parentId: documentId,\n })\n\n const untaggedWebhooks = traverseWebhooks({\n document,\n generateId,\n tagsMap,\n untaggedWebhooksParentId,\n documentId,\n })\n\n const tagsEntries = traverseTags({\n document,\n tagsMap,\n documentId,\n options: { tagsSorter, operationsSorter, generateId },\n })\n\n // Add tagged operations, webhooks and tagGroups\n entries.push(...tagsEntries)\n\n // Add untagged webhooks\n if (untaggedWebhooks.length) {\n entries.push({\n type: 'tag',\n id: untaggedWebhooksParentId,\n title: 'Webhooks',\n name: 'Webhooks',\n children: untaggedWebhooks,\n isGroup: false,\n isWebhooks: true,\n })\n }\n\n // Add models if they are not hidden\n if (!hideModels && document.components?.schemas) {\n const untaggedModels = traverseSchemas({\n documentId,\n document,\n generateId,\n tagsMap,\n })\n\n if (untaggedModels.length) {\n entries.push({\n type: 'models',\n id: generateId({\n type: 'model',\n parentId: documentId,\n }),\n title: 'Models',\n name: 'Models',\n children: untaggedModels,\n })\n }\n }\n\n return {\n id: documentId,\n type: 'document',\n title: documentName,\n children: entries,\n } satisfies TraversedDocument\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,4BAA4B;AAMrC,SAAS,2BAA2B;AACpC,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AAW1B,MAAM,mBAAmB,CAAC,cAAsB,UAA2B,WAAmC;AACnH,QAAM,EAAE,YAAY,YAAY,kBAAkB,WAAW,IAAI,qBAAqB,cAAc,MAAM;AAE1G,QAAM,aAAa,WAAW;AAAA,IAC5B,MAAM;AAAA,IACN,MAAM,SAAS;AAAA,IACf,MAAM;AAAA,EACR,CAAC;AAGD,QAAM,UAAmB,IAAI;AAAA,IAC3B,SAAS,MAAM,IAAI,CAAC,QAAQ;AAAA,MAC1B,IAAI,QAAQ;AAAA,MACZ,EAAE,IAAI,WAAW,EAAE,MAAM,OAAO,KAAK,UAAU,WAAW,CAAC,GAAG,UAAU,YAAY,KAAK,SAAS,CAAC,EAAE;AAAA,IACvG,CAAC,KAAK,CAAC;AAAA,EACT;AAGA,QAAM,UAA4B,oBAAoB;AAAA,IACpD;AAAA,IACA,UAAU;AAAA,IACV,MAAM,SAAS;AAAA,EACjB,CAAC;AAGD,gBAAc,EAAE,UAAU,SAAS,YAAY,WAAW,CAAC;AAE3D,QAAM,2BAA2B,WAAW;AAAA,IAC1C,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,mBAAmB,iBAAiB;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,cAAc,aAAa;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,EAAE,YAAY,kBAAkB,WAAW;AAAA,EACtD,CAAC;AAGD,UAAQ,KAAK,GAAG,WAAW;AAG3B,MAAI,iBAAiB,QAAQ;AAC3B,YAAQ,KAAK;AAAA,MACX,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AAGA,MAAI,CAAC,cAAc,SAAS,YAAY,SAAS;AAC/C,UAAM,iBAAiB,gBAAgB;AAAA,MACrC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,QAAI,eAAe,QAAQ;AACzB,cAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,IAAI,WAAW;AAAA,UACb,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,CAAC;AAAA,QACD,OAAO;AAAA,QACP,MAAM;AAAA,QACN,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -18,7 +18,13 @@ export declare const isDeprecatedOperation: (operation: OperationObject) => bool
|
|
|
18
18
|
* @param getOperationId - Function to generate unique IDs for operations
|
|
19
19
|
* @returns Map of tag names to arrays of traversed operations
|
|
20
20
|
*/
|
|
21
|
-
export declare const traversePaths: (
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
export declare const traversePaths: ({ document, tagsMap, generateId, documentId, }: {
|
|
22
|
+
document: OpenApiDocument;
|
|
23
|
+
/** Map of tags and their entries */
|
|
24
|
+
tagsMap: TagsMap;
|
|
25
|
+
/** Function used to generate unique IDs for operations */
|
|
26
|
+
generateId: TraverseSpecOptions["generateId"];
|
|
27
|
+
/** Document ID */
|
|
28
|
+
documentId: string;
|
|
29
|
+
}) => void;
|
|
24
30
|
//# sourceMappingURL=traverse-paths.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse-paths.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/traverse-paths.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAGtE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"traverse-paths.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/traverse-paths.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAGtE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAI9F,eAAO,MAAM,qBAAqB,GAAI,WAAW,eAAe,YAE/D,CAAA;AAoED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,GAAI,gDAK3B;IACD,QAAQ,EAAE,eAAe,CAAA;IACzB,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,0DAA0D;IAC1D,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAA;IAC7C,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB,SA+DA,CAAA"}
|