@scalar/workspace-store 0.21.0 → 0.22.0

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.
Files changed (154) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/client.d.ts +14 -2
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +8 -6
  5. package/dist/client.js.map +2 -2
  6. package/dist/events/bus.d.ts +1 -1
  7. package/dist/events/bus.d.ts.map +1 -1
  8. package/dist/events/bus.js.map +1 -1
  9. package/dist/events/definitions/auth.d.ts +2 -1
  10. package/dist/events/definitions/auth.d.ts.map +1 -1
  11. package/dist/events/definitions/document.d.ts +11 -0
  12. package/dist/events/definitions/document.d.ts.map +1 -1
  13. package/dist/events/definitions/index.d.ts +3 -1
  14. package/dist/events/definitions/index.d.ts.map +1 -1
  15. package/dist/events/definitions/operation.d.ts +20 -1
  16. package/dist/events/definitions/operation.d.ts.map +1 -1
  17. package/dist/events/definitions/tabs.d.ts +16 -1
  18. package/dist/events/definitions/tabs.d.ts.map +1 -1
  19. package/dist/events/definitions/tag.d.ts +15 -0
  20. package/dist/events/definitions/tag.d.ts.map +1 -0
  21. package/dist/events/definitions/tag.js +1 -0
  22. package/dist/events/definitions/tag.js.map +7 -0
  23. package/dist/events/definitions/ui.d.ts +118 -61
  24. package/dist/events/definitions/ui.d.ts.map +1 -1
  25. package/dist/events/index.d.ts +1 -1
  26. package/dist/events/index.d.ts.map +1 -1
  27. package/dist/events/index.js.map +2 -2
  28. package/dist/mutators/auth.d.ts +6 -1
  29. package/dist/mutators/auth.d.ts.map +1 -1
  30. package/dist/mutators/document.d.ts +3 -0
  31. package/dist/mutators/document.d.ts.map +1 -1
  32. package/dist/mutators/document.js +24 -0
  33. package/dist/mutators/document.js.map +2 -2
  34. package/dist/mutators/index.d.ts +28 -8
  35. package/dist/mutators/index.d.ts.map +1 -1
  36. package/dist/mutators/index.js +24 -1
  37. package/dist/mutators/index.js.map +2 -2
  38. package/dist/mutators/operation.d.ts +27 -8
  39. package/dist/mutators/operation.d.ts.map +1 -1
  40. package/dist/mutators/operation.js +75 -7
  41. package/dist/mutators/operation.js.map +2 -2
  42. package/dist/mutators/request.d.ts +2 -1
  43. package/dist/mutators/request.d.ts.map +1 -1
  44. package/dist/mutators/request.js.map +1 -1
  45. package/dist/mutators/server.d.ts.map +1 -1
  46. package/dist/mutators/server.js +1 -1
  47. package/dist/mutators/server.js.map +2 -2
  48. package/dist/mutators/tabs.d.ts +44 -0
  49. package/dist/mutators/tabs.d.ts.map +1 -0
  50. package/dist/mutators/tabs.js +133 -0
  51. package/dist/mutators/tabs.js.map +7 -0
  52. package/dist/mutators/tag.d.ts +12 -0
  53. package/dist/mutators/tag.d.ts.map +1 -0
  54. package/dist/mutators/tag.js +19 -0
  55. package/dist/mutators/tag.js.map +7 -0
  56. package/dist/navigation/helpers/get-openapi-object.d.ts +35 -0
  57. package/dist/navigation/helpers/get-openapi-object.d.ts.map +1 -0
  58. package/dist/navigation/helpers/get-openapi-object.js +31 -0
  59. package/dist/navigation/helpers/get-openapi-object.js.map +7 -0
  60. package/dist/navigation/helpers/get-operation-entries.d.ts +24 -0
  61. package/dist/navigation/helpers/get-operation-entries.d.ts.map +1 -0
  62. package/dist/navigation/helpers/get-operation-entries.js +33 -0
  63. package/dist/navigation/helpers/get-operation-entries.js.map +7 -0
  64. package/dist/navigation/helpers/get-parent-entry.d.ts +15 -0
  65. package/dist/navigation/helpers/get-parent-entry.d.ts.map +1 -0
  66. package/dist/navigation/helpers/get-parent-entry.js +13 -0
  67. package/dist/navigation/helpers/get-parent-entry.js.map +7 -0
  68. package/dist/navigation/helpers/traverse-description.d.ts +0 -1
  69. package/dist/navigation/helpers/traverse-description.d.ts.map +1 -1
  70. package/dist/navigation/helpers/traverse-description.js +0 -1
  71. package/dist/navigation/helpers/traverse-description.js.map +2 -2
  72. package/dist/navigation/helpers/traverse-document.js +1 -1
  73. package/dist/navigation/helpers/traverse-document.js.map +2 -2
  74. package/dist/navigation/helpers/traverse-paths.js +1 -1
  75. package/dist/navigation/helpers/traverse-paths.js.map +1 -1
  76. package/dist/navigation/helpers/traverse-tags.d.ts.map +1 -1
  77. package/dist/navigation/helpers/traverse-tags.js +2 -2
  78. package/dist/navigation/helpers/traverse-tags.js.map +2 -2
  79. package/dist/navigation/helpers/utils.d.ts +2 -1
  80. package/dist/navigation/helpers/utils.d.ts.map +1 -1
  81. package/dist/navigation/helpers/utils.js.map +1 -1
  82. package/dist/navigation/index.d.ts +2 -1
  83. package/dist/navigation/index.d.ts.map +1 -1
  84. package/dist/navigation/index.js +5 -3
  85. package/dist/navigation/index.js.map +2 -2
  86. package/dist/schemas/extensions/operation/index.d.ts +4 -1
  87. package/dist/schemas/extensions/operation/index.d.ts.map +1 -1
  88. package/dist/schemas/extensions/operation/index.js +22 -0
  89. package/dist/schemas/extensions/operation/index.js.map +3 -3
  90. package/dist/schemas/extensions/operation/x-code-samples.d.ts +0 -5
  91. package/dist/schemas/extensions/operation/x-code-samples.d.ts.map +1 -1
  92. package/dist/schemas/extensions/operation/x-code-samples.js +0 -1
  93. package/dist/schemas/extensions/operation/x-code-samples.js.map +2 -2
  94. package/dist/schemas/extensions/operation/x-post-response.d.ts +0 -18
  95. package/dist/schemas/extensions/operation/x-post-response.d.ts.map +1 -1
  96. package/dist/schemas/extensions/operation/x-post-response.js.map +1 -1
  97. package/dist/schemas/extensions/tag/x-tag-groups.d.ts +2 -13
  98. package/dist/schemas/extensions/tag/x-tag-groups.d.ts.map +1 -1
  99. package/dist/schemas/extensions/tag/x-tag-groups.js +0 -1
  100. package/dist/schemas/extensions/tag/x-tag-groups.js.map +2 -2
  101. package/dist/schemas/extensions/workspace/index.d.ts +4 -0
  102. package/dist/schemas/extensions/workspace/index.d.ts.map +1 -0
  103. package/dist/schemas/extensions/workspace/index.js +15 -0
  104. package/dist/schemas/extensions/workspace/index.js.map +7 -0
  105. package/dist/schemas/extensions/workspace/x-scalar-tabs.d.ts +36 -0
  106. package/dist/schemas/extensions/workspace/x-scalar-tabs.d.ts.map +1 -0
  107. package/dist/schemas/extensions/workspace/x-scalar-tabs.js +16 -0
  108. package/dist/schemas/extensions/workspace/x-scalar-tabs.js.map +7 -0
  109. package/dist/schemas/inmemory-workspace.d.ts +5 -6
  110. package/dist/schemas/inmemory-workspace.d.ts.map +1 -1
  111. package/dist/schemas/navigation.d.ts +8 -0
  112. package/dist/schemas/navigation.d.ts.map +1 -1
  113. package/dist/schemas/navigation.js.map +1 -1
  114. package/dist/schemas/reference-config/index.d.ts +2 -3
  115. package/dist/schemas/reference-config/index.d.ts.map +1 -1
  116. package/dist/schemas/reference-config/settings.d.ts +2 -3
  117. package/dist/schemas/reference-config/settings.d.ts.map +1 -1
  118. package/dist/schemas/v3.1/strict/header.d.ts +0 -45
  119. package/dist/schemas/v3.1/strict/header.d.ts.map +1 -1
  120. package/dist/schemas/v3.1/strict/header.js +1 -3
  121. package/dist/schemas/v3.1/strict/header.js.map +2 -2
  122. package/dist/schemas/v3.1/strict/oauth-flow.d.ts +0 -99
  123. package/dist/schemas/v3.1/strict/oauth-flow.d.ts.map +1 -1
  124. package/dist/schemas/v3.1/strict/oauth-flow.js +0 -7
  125. package/dist/schemas/v3.1/strict/oauth-flow.js.map +2 -2
  126. package/dist/schemas/v3.1/strict/openapi-document.d.ts +71 -104
  127. package/dist/schemas/v3.1/strict/openapi-document.d.ts.map +1 -1
  128. package/dist/schemas/v3.1/strict/openapi-document.js +0 -1
  129. package/dist/schemas/v3.1/strict/openapi-document.js.map +2 -2
  130. package/dist/schemas/v3.1/strict/parameter.d.ts +1 -101
  131. package/dist/schemas/v3.1/strict/parameter.d.ts.map +1 -1
  132. package/dist/schemas/v3.1/strict/parameter.js +1 -4
  133. package/dist/schemas/v3.1/strict/parameter.js.map +2 -2
  134. package/dist/schemas/v3.1/strict/ref-definitions.d.ts +0 -1
  135. package/dist/schemas/v3.1/strict/ref-definitions.d.ts.map +1 -1
  136. package/dist/schemas/v3.1/strict/ref-definitions.js +0 -2
  137. package/dist/schemas/v3.1/strict/ref-definitions.js.map +2 -2
  138. package/dist/schemas/v3.1/strict/schema.d.ts +28 -11
  139. package/dist/schemas/v3.1/strict/schema.d.ts.map +1 -1
  140. package/dist/schemas/v3.1/strict/schema.js +2 -2
  141. package/dist/schemas/v3.1/strict/schema.js.map +2 -2
  142. package/dist/schemas/v3.1/strict/security-scheme.d.ts +1 -54
  143. package/dist/schemas/v3.1/strict/security-scheme.d.ts.map +1 -1
  144. package/dist/schemas/v3.1/strict/security-scheme.js +0 -5
  145. package/dist/schemas/v3.1/strict/security-scheme.js.map +2 -2
  146. package/dist/schemas/workspace-specification/config.d.ts +2 -3
  147. package/dist/schemas/workspace-specification/config.d.ts.map +1 -1
  148. package/dist/schemas/workspace-specification/index.d.ts +2 -3
  149. package/dist/schemas/workspace-specification/index.d.ts.map +1 -1
  150. package/dist/schemas/workspace.d.ts +35 -22
  151. package/dist/schemas/workspace.d.ts.map +1 -1
  152. package/dist/schemas/workspace.js +11 -6
  153. package/dist/schemas/workspace.js.map +2 -2
  154. package/package.json +50 -36
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/navigation/helpers/traverse-paths.ts"],
4
- "sourcesContent": ["import type { HttpMethod } from '@scalar/helpers/http/http-methods'\nimport { isHttpMethod } from '@scalar/helpers/http/is-http-method'\nimport { objectKeys } from '@scalar/helpers/object/object-keys'\nimport { escapeJsonPointer } from '@scalar/json-magic/helpers/escape-json-pointer'\n\nimport { getResolvedRef } from '@/helpers/get-resolved-ref'\nimport { traverseOperationExamples } from '@/navigation/helpers/traverse-examples'\nimport type { TagsMap, TraverseSpecOptions } from '@/navigation/types'\nimport { XScalarStabilityValues } from '@/schemas/extensions/operation/x-scalar-stability'\nimport type { ParentTag, TraversedExample, TraversedOperation } from '@/schemas/navigation'\nimport type { OpenApiDocument, OperationObject } from '@/schemas/v3.1/strict/openapi-document'\n\nimport { getTag } from './get-tag'\n\nexport const isDeprecatedOperation = (operation: OperationObject) => {\n return operation.deprecated || operation['x-scalar-stability'] === XScalarStabilityValues.Deprecated\n}\n\n/**\n * Creates a traversed operation entry from an OpenAPI operation object.\n *\n * @param ref - JSON pointer reference to the operation in the OpenAPI document\n * @param operation - The OpenAPI operation object\n * @param method - HTTP method of the operation\n * @param path - API path of the operation, defaults to 'Unknown'\n * @param tag - Tag object associated with the operation\n * @param entitiesMap - Map to store operation IDs and titles for mobile header navigation\n * @param getOperationId - Function to generate unique IDs for operations\n * @returns A traversed operation entry with ID, title, path, method and reference\n */\nconst createOperationEntry = ({\n ref,\n operation,\n method,\n path,\n generateId,\n parentId,\n parentTag,\n}: {\n ref: string\n operation: OperationObject\n method: HttpMethod\n path: string\n parentTag?: ParentTag\n generateId: TraverseSpecOptions['generateId']\n parentId: string\n}): TraversedOperation => {\n const id = generateId({\n type: 'operation',\n operation,\n parentTag,\n method: method,\n path: path,\n parentId: parentId,\n })\n const title = operation.summary?.trim() ? operation.summary : path\n\n const isDeprecated = isDeprecatedOperation(operation)\n\n const examples: TraversedExample[] = traverseOperationExamples(operation).map((example) => ({\n type: 'example',\n id: generateId({\n type: 'example',\n parentId: id,\n name: example,\n }),\n title: example,\n name: example,\n }))\n\n const entry = {\n id,\n title,\n path,\n method,\n ref,\n type: 'operation',\n isDeprecated,\n children: examples.length ? examples : undefined,\n } satisfies TraversedOperation\n\n return entry\n}\n\n/**\n * Traverses the paths in an OpenAPI document to build a map of operations organized by tags.\n *\n * This function processes each path and its operations to:\n * - Filter out internal operations (marked with x-internal) and operations to ignore (marked with x-scalar-ignore)\n * - Group operations by their tags\n * - Collect operations without tags to be added at the document level\n * - Generate unique references and IDs for each operation\n *\n * TODO: filter out internal and scalar-ignore tags\n *\n * @param content - The OpenAPI document to traverse\n * @param tagsDict - Dictionary mapping tag names to their OpenAPI tag objects\n * @param entitiesMap - Map to store operation IDs and titles for mobile header navigation\n * @param getOperationId - Function to generate unique IDs for operations\n * @returns Object containing the tagsMap and an array of untagged operations\n */\nexport const traversePaths = ({\n document,\n tagsMap,\n generateId,\n documentId,\n}: {\n document: OpenApiDocument\n /** Map of tags and their entries */\n tagsMap: TagsMap\n /** Function used to generate unique IDs for operations */\n generateId: TraverseSpecOptions['generateId']\n /** Document ID */\n documentId: string\n}): { untaggedOperations: TraversedOperation[] } => {\n const untaggedOperations: TraversedOperation[] = []\n\n // Traverse paths\n Object.entries(document.paths ?? {}).forEach(([path, pathItemObject]) => {\n const pathKeys = objectKeys(pathItemObject ?? {}).filter((key) => isHttpMethod(key))\n\n pathKeys.forEach((method) => {\n const _operation = pathItemObject?.[method]\n const operation = getResolvedRef(_operation)\n if (!operation) {\n return\n }\n\n // Skip if the operation is internal or scalar-ignore\n if (operation['x-internal'] || operation['x-scalar-ignore'] || !isHttpMethod(method)) {\n return\n }\n\n const ref = `#/paths/${escapeJsonPointer(path)}/${method}`\n\n // Traverse tags\n if (operation.tags?.length) {\n operation.tags.forEach((tagName: string) => {\n const { tag, id: tagId } = getTag({\n tagsMap,\n name: tagName,\n documentId,\n generateId,\n })\n tagsMap.get(tagName)?.entries.push(\n createOperationEntry({\n ref,\n operation,\n method,\n path,\n parentTag: { tag, id: tagId },\n generateId,\n parentId: tagId,\n }),\n )\n })\n } else {\n // Collect operations without tags (no parentTag)\n untaggedOperations.push(\n createOperationEntry({\n ref,\n operation,\n method,\n path,\n generateId,\n parentId: documentId,\n }),\n )\n }\n })\n })\n\n return { untaggedOperations }\n}\n"],
4
+ "sourcesContent": ["import type { HttpMethod } from '@scalar/helpers/http/http-methods'\nimport { isHttpMethod } from '@scalar/helpers/http/is-http-method'\nimport { objectKeys } from '@scalar/helpers/object/object-keys'\nimport { escapeJsonPointer } from '@scalar/json-magic/helpers/escape-json-pointer'\n\nimport { getResolvedRef } from '@/helpers/get-resolved-ref'\nimport { traverseOperationExamples } from '@/navigation/helpers/traverse-examples'\nimport type { TagsMap, TraverseSpecOptions } from '@/navigation/types'\nimport { XScalarStabilityValues } from '@/schemas/extensions/operation'\nimport type { ParentTag, TraversedExample, TraversedOperation } from '@/schemas/navigation'\nimport type { OpenApiDocument, OperationObject } from '@/schemas/v3.1/strict/openapi-document'\n\nimport { getTag } from './get-tag'\n\nexport const isDeprecatedOperation = (operation: OperationObject) => {\n return operation.deprecated || operation['x-scalar-stability'] === XScalarStabilityValues.Deprecated\n}\n\n/**\n * Creates a traversed operation entry from an OpenAPI operation object.\n *\n * @param ref - JSON pointer reference to the operation in the OpenAPI document\n * @param operation - The OpenAPI operation object\n * @param method - HTTP method of the operation\n * @param path - API path of the operation, defaults to 'Unknown'\n * @param tag - Tag object associated with the operation\n * @param entitiesMap - Map to store operation IDs and titles for mobile header navigation\n * @param getOperationId - Function to generate unique IDs for operations\n * @returns A traversed operation entry with ID, title, path, method and reference\n */\nconst createOperationEntry = ({\n ref,\n operation,\n method,\n path,\n generateId,\n parentId,\n parentTag,\n}: {\n ref: string\n operation: OperationObject\n method: HttpMethod\n path: string\n parentTag?: ParentTag\n generateId: TraverseSpecOptions['generateId']\n parentId: string\n}): TraversedOperation => {\n const id = generateId({\n type: 'operation',\n operation,\n parentTag,\n method: method,\n path: path,\n parentId: parentId,\n })\n const title = operation.summary?.trim() ? operation.summary : path\n\n const isDeprecated = isDeprecatedOperation(operation)\n\n const examples: TraversedExample[] = traverseOperationExamples(operation).map((example) => ({\n type: 'example',\n id: generateId({\n type: 'example',\n parentId: id,\n name: example,\n }),\n title: example,\n name: example,\n }))\n\n const entry = {\n id,\n title,\n path,\n method,\n ref,\n type: 'operation',\n isDeprecated,\n children: examples.length ? examples : undefined,\n } satisfies TraversedOperation\n\n return entry\n}\n\n/**\n * Traverses the paths in an OpenAPI document to build a map of operations organized by tags.\n *\n * This function processes each path and its operations to:\n * - Filter out internal operations (marked with x-internal) and operations to ignore (marked with x-scalar-ignore)\n * - Group operations by their tags\n * - Collect operations without tags to be added at the document level\n * - Generate unique references and IDs for each operation\n *\n * TODO: filter out internal and scalar-ignore tags\n *\n * @param content - The OpenAPI document to traverse\n * @param tagsDict - Dictionary mapping tag names to their OpenAPI tag objects\n * @param entitiesMap - Map to store operation IDs and titles for mobile header navigation\n * @param getOperationId - Function to generate unique IDs for operations\n * @returns Object containing the tagsMap and an array of untagged operations\n */\nexport const traversePaths = ({\n document,\n tagsMap,\n generateId,\n documentId,\n}: {\n document: OpenApiDocument\n /** Map of tags and their entries */\n tagsMap: TagsMap\n /** Function used to generate unique IDs for operations */\n generateId: TraverseSpecOptions['generateId']\n /** Document ID */\n documentId: string\n}): { untaggedOperations: TraversedOperation[] } => {\n const untaggedOperations: TraversedOperation[] = []\n\n // Traverse paths\n Object.entries(document.paths ?? {}).forEach(([path, pathItemObject]) => {\n const pathKeys = objectKeys(pathItemObject ?? {}).filter((key) => isHttpMethod(key))\n\n pathKeys.forEach((method) => {\n const _operation = pathItemObject?.[method]\n const operation = getResolvedRef(_operation)\n if (!operation) {\n return\n }\n\n // Skip if the operation is internal or scalar-ignore\n if (operation['x-internal'] || operation['x-scalar-ignore'] || !isHttpMethod(method)) {\n return\n }\n\n const ref = `#/paths/${escapeJsonPointer(path)}/${method}`\n\n // Traverse tags\n if (operation.tags?.length) {\n operation.tags.forEach((tagName: string) => {\n const { tag, id: tagId } = getTag({\n tagsMap,\n name: tagName,\n documentId,\n generateId,\n })\n tagsMap.get(tagName)?.entries.push(\n createOperationEntry({\n ref,\n operation,\n method,\n path,\n parentTag: { tag, id: tagId },\n generateId,\n parentId: tagId,\n }),\n )\n })\n } else {\n // Collect operations without tags (no parentTag)\n untaggedOperations.push(\n createOperationEntry({\n ref,\n operation,\n method,\n path,\n generateId,\n parentId: documentId,\n }),\n )\n }\n })\n })\n\n return { untaggedOperations }\n}\n"],
5
5
  "mappings": "AACA,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,yBAAyB;AAElC,SAAS,sBAAsB;AAC/B,SAAS,iCAAiC;AAE1C,SAAS,8BAA8B;AAIvC,SAAS,cAAc;AAEhB,MAAM,wBAAwB,CAAC,cAA+B;AACnE,SAAO,UAAU,cAAc,UAAU,oBAAoB,MAAM,uBAAuB;AAC5F;AAcA,MAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAQ0B;AACxB,QAAM,KAAK,WAAW;AAAA,IACpB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,QAAQ,UAAU,SAAS,KAAK,IAAI,UAAU,UAAU;AAE9D,QAAM,eAAe,sBAAsB,SAAS;AAEpD,QAAM,WAA+B,0BAA0B,SAAS,EAAE,IAAI,CAAC,aAAa;AAAA,IAC1F,MAAM;AAAA,IACN,IAAI,WAAW;AAAA,MACb,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM;AAAA,IACR,CAAC;AAAA,IACD,OAAO;AAAA,IACP,MAAM;AAAA,EACR,EAAE;AAEF,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA,UAAU,SAAS,SAAS,WAAW;AAAA,EACzC;AAEA,SAAO;AACT;AAmBO,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAQoD;AAClD,QAAM,qBAA2C,CAAC;AAGlD,SAAO,QAAQ,SAAS,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,cAAc,MAAM;AACvE,UAAM,WAAW,WAAW,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,aAAa,GAAG,CAAC;AAEnF,aAAS,QAAQ,CAAC,WAAW;AAC3B,YAAM,aAAa,iBAAiB,MAAM;AAC1C,YAAM,YAAY,eAAe,UAAU;AAC3C,UAAI,CAAC,WAAW;AACd;AAAA,MACF;AAGA,UAAI,UAAU,YAAY,KAAK,UAAU,iBAAiB,KAAK,CAAC,aAAa,MAAM,GAAG;AACpF;AAAA,MACF;AAEA,YAAM,MAAM,WAAW,kBAAkB,IAAI,CAAC,IAAI,MAAM;AAGxD,UAAI,UAAU,MAAM,QAAQ;AAC1B,kBAAU,KAAK,QAAQ,CAAC,YAAoB;AAC1C,gBAAM,EAAE,KAAK,IAAI,MAAM,IAAI,OAAO;AAAA,YAChC;AAAA,YACA,MAAM;AAAA,YACN;AAAA,YACA;AAAA,UACF,CAAC;AACD,kBAAQ,IAAI,OAAO,GAAG,QAAQ;AAAA,YAC5B,qBAAqB;AAAA,cACnB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,WAAW,EAAE,KAAK,IAAI,MAAM;AAAA,cAC5B;AAAA,cACA,UAAU;AAAA,YACZ,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AAEL,2BAAmB;AAAA,UACjB,qBAAqB;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,UAAU;AAAA,UACZ,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,SAAO,EAAE,mBAAmB;AAC9B;",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"traverse-tags.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/traverse-tags.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,sBAAsB,CAAA;AACxE,OAAO,KAAK,EAAE,eAAe,EAAa,MAAM,wCAAwC,CAAA;AAIxF,KAAK,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,kBAAkB,GAAG,YAAY,CAAC,CAAA;AA6K1F;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAI,2FAK1B;IACD,QAAQ,EAAE,eAAe,CAAA;IACzB,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,cAAc,EAyCjB,CAAA"}
1
+ {"version":3,"file":"traverse-tags.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/traverse-tags.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,sBAAsB,CAAA;AACxE,OAAO,KAAK,EAAE,eAAe,EAAa,MAAM,wCAAwC,CAAA;AAIxF,KAAK,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,kBAAkB,GAAG,YAAY,CAAC,CAAA;AA2K1F;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAI,2FAK1B;IACD,QAAQ,EAAE,eAAe,CAAA;IACzB,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,cAAc,EAyCjB,CAAA"}
@@ -63,13 +63,13 @@ const getSortedTagEntries = ({
63
63
  });
64
64
  }
65
65
  }
66
- return entries2.length ? createTagEntry({
66
+ return createTagEntry({
67
67
  tag,
68
68
  generateId,
69
69
  children: sortOrder2 ? sortByOrder(entries2, sortOrder2, "id") : entries2,
70
70
  parentId: documentId,
71
71
  isGroup: false
72
- }) : [];
72
+ });
73
73
  });
74
74
  if (sortOrder) {
75
75
  return sortByOrder(entries, sortOrder, "id");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/navigation/helpers/traverse-tags.ts"],
4
- "sourcesContent": ["import { sortByOrder } from '@scalar/object-utils/arrays'\n\nimport { unpackProxyObject } from '@/helpers/unpack-proxy'\nimport { getXKeysFromObject } from '@/navigation/helpers/get-x-keys'\nimport type { TagsMap, TraverseSpecOptions } from '@/navigation/types'\nimport type { TraversedEntry, TraversedTag } from '@/schemas/navigation'\nimport type { OpenApiDocument, TagObject } from '@/schemas/v3.1/strict/openapi-document'\n\nimport { getTag } from './get-tag'\n\ntype Options = Pick<TraverseSpecOptions, 'tagsSorter' | 'operationsSorter' | 'generateId'>\n\n/** Creates a traversed tag entry from an OpenAPI tag object.\n *\n * @param tag - The OpenAPI tag object\n * @param entriesMap - Map to store tag IDs and titles for mobile header navigation\n * @param getTagId - Function to generate unique IDs for tags\n * @param children - Array of child entries (operations, webhooks, etc.)\n * @param isGroup - Whether this tag represents a group of tags\n * @returns A traversed tag entry with ID, title, name and children\n */\nconst createTagEntry = ({\n tag,\n generateId,\n children,\n isGroup = false,\n parentId,\n}: {\n tag: TagObject\n generateId: TraverseSpecOptions['generateId']\n children: TraversedEntry[]\n isGroup: boolean\n parentId: string\n}): TraversedTag => {\n const id = generateId({\n type: 'tag',\n tag,\n parentId,\n })\n const title = tag['x-displayName'] ?? tag.name ?? 'Untitled Tag'\n\n // Update the order of the children based on the items\n // This will ensure that the sort order is always in sync with the items\n tag['x-scalar-order'] = children.map((child) => child.id)\n\n const entry = {\n id,\n title,\n name: tag.name || title,\n description: tag.description,\n children,\n isGroup,\n isWebhooks: false,\n type: 'tag',\n xKeys: getXKeysFromObject(unpackProxyObject(tag)),\n } satisfies TraversedTag\n\n return entry\n}\n\n/** Sorts and processes tags to create a hierarchical structure of tag entries.\n *\n * This function handles:\n * - Sorting tags alphabetically or using a custom sort function\n * - Sorting operations within tags by title, method, or custom function\n * - Filtering out internal and ignored tags\n * - Creating tag entries with their associated operations\n *\n * @param _keys - Array of tag keys to process\n * @param tagsMap - Map of tags and their entries\n * @param tagsDict - Dictionary of OpenAPI tags by name\n * @param titlesMap - Map of titles for the mobile header\n * @param options - Sorting and ID generation options\n * @returns Array of processed and sorted tag entries\n */\n/** Sorts tags and returns entries */\nconst getSortedTagEntries = ({\n _keys,\n tagsMap,\n options: { tagsSorter, operationsSorter, generateId },\n documentId,\n sortOrder,\n}: {\n _keys: string[]\n /** Map of tags and their entries */\n tagsMap: TagsMap\n options: Options\n documentId: string\n sortOrder: string[] | undefined\n}) => {\n /**\n * Process each tag and its entries:\n * - Skip internal and ignored tags\n * - Sort operations within tags\n * - Create tag entries with sorted operations\n */\n const entries = _keys.flatMap((key) => {\n const { tag, entries } = getTag({ tagsMap, name: key, documentId, generateId })\n\n // Skip if the tag is internal or scalar-ignore\n if (tag['x-internal'] || tag['x-scalar-ignore']) {\n return []\n }\n\n const sortOrder = tag['x-scalar-order']\n\n if (sortOrder === undefined) {\n // Alpha sort\n if (operationsSorter === 'alpha') {\n entries.sort((a, b) => (a.type === 'operation' && b.type === 'operation' ? a.title.localeCompare(b.title) : 0))\n }\n // Method sort\n else if (operationsSorter === 'method') {\n entries.sort((a, b) =>\n a.type === 'operation' && b.type === 'operation' ? a.method.localeCompare(b.method) : 0,\n )\n }\n // Custom sort\n else if (typeof operationsSorter === 'function') {\n entries.sort((a, b) => {\n // Guard against tags\n if (!(a.type === 'operation' || a.type === 'webhook') || !(b.type === 'operation' || b.type === 'webhook')) {\n return 0\n }\n\n // Handle webhooks as well as operations\n const pathA = a.type === 'operation' ? a.path : a.name\n const pathB = b.type === 'operation' ? b.path : b.name\n\n return operationsSorter(\n { method: a.method, path: pathA, ref: a.ref, httpVerb: a.method },\n { method: b.method, path: pathB, ref: b.ref, httpVerb: b.method },\n )\n })\n }\n }\n\n return entries.length\n ? createTagEntry({\n tag,\n generateId,\n children: sortOrder ? sortByOrder(entries, sortOrder, 'id') : entries,\n parentId: documentId,\n isGroup: false,\n })\n : []\n })\n\n // If a custom 'x-scalar-order' is specified in the tag, sort the entries by this order using sortByOrder\n if (sortOrder) {\n return sortByOrder(entries, sortOrder, 'id')\n }\n\n // Alpha sort\n if (tagsSorter === 'alpha') {\n entries.sort((a, b) => {\n const nameA =\n getTag({\n tagsMap,\n name: a.title,\n documentId,\n generateId,\n }).tag['x-displayName'] ||\n a.title ||\n 'Untitled Tag'\n const nameB =\n getTag({ tagsMap, name: b.title, documentId, generateId }).tag['x-displayName'] || b.title || 'Untitled Tag'\n return nameA.localeCompare(nameB)\n })\n }\n // Custom sort\n else if (typeof tagsSorter === 'function') {\n entries.sort((a, b) =>\n tagsSorter(\n getTag({ tagsMap, name: a.name, documentId, generateId }).tag,\n getTag({ tagsMap, name: b.name, documentId, generateId }).tag,\n ),\n )\n }\n\n return entries\n}\n\n/**\n * Traverses the tags map to create navigation entries, handling both grouped and ungrouped tags.\n *\n * This function processes the OpenAPI document's tags to:\n * - Handle tag groups if specified via x-tagGroups\n * - Sort tags and their operations according to provided sorters\n * - Create navigation entries for each tag or tag group\n */\nexport const traverseTags = ({\n document,\n tagsMap,\n documentId,\n options: { generateId, tagsSorter, operationsSorter },\n}: {\n document: OpenApiDocument\n /** Map of tags and their entries */\n tagsMap: TagsMap\n documentId: string\n options: Options\n}): TraversedEntry[] => {\n // x-tagGroups\n if (document['x-tagGroups']) {\n const tagGroups = document['x-tagGroups']\n\n return tagGroups.flatMap((tagGroup) => {\n const entries = getSortedTagEntries({\n _keys: tagGroup.tags,\n tagsMap,\n options: { tagsSorter, operationsSorter, generateId },\n documentId: documentId,\n sortOrder: tagGroup['x-scalar-order'],\n })\n\n // Try to update the sort order of the tag group to keep it in sync with the items\n tagGroup['x-scalar-order'] = entries.map((entry) => entry.id)\n\n return entries.length\n ? createTagEntry({\n tag: tagGroup,\n generateId,\n children: entries,\n parentId: documentId,\n isGroup: true,\n })\n : []\n })\n }\n\n // Ungrouped regular tags\n const keys = Array.from(tagsMap.keys())\n\n const tags = getSortedTagEntries({\n _keys: keys,\n tagsMap,\n options: { generateId, tagsSorter, operationsSorter },\n documentId: documentId,\n sortOrder: document['x-scalar-order'],\n })\n\n return tags\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { sortByOrder } from '@scalar/object-utils/arrays'\n\nimport { unpackProxyObject } from '@/helpers/unpack-proxy'\nimport { getXKeysFromObject } from '@/navigation/helpers/get-x-keys'\nimport type { TagsMap, TraverseSpecOptions } from '@/navigation/types'\nimport type { TraversedEntry, TraversedTag } from '@/schemas/navigation'\nimport type { OpenApiDocument, TagObject } from '@/schemas/v3.1/strict/openapi-document'\n\nimport { getTag } from './get-tag'\n\ntype Options = Pick<TraverseSpecOptions, 'tagsSorter' | 'operationsSorter' | 'generateId'>\n\n/** Creates a traversed tag entry from an OpenAPI tag object.\n *\n * @param tag - The OpenAPI tag object\n * @param entriesMap - Map to store tag IDs and titles for mobile header navigation\n * @param getTagId - Function to generate unique IDs for tags\n * @param children - Array of child entries (operations, webhooks, etc.)\n * @param isGroup - Whether this tag represents a group of tags\n * @returns A traversed tag entry with ID, title, name and children\n */\nconst createTagEntry = ({\n tag,\n generateId,\n children,\n isGroup = false,\n parentId,\n}: {\n tag: TagObject\n generateId: TraverseSpecOptions['generateId']\n children: TraversedEntry[]\n isGroup: boolean\n parentId: string\n}): TraversedTag => {\n const id = generateId({\n type: 'tag',\n tag,\n parentId,\n })\n const title = tag['x-displayName'] ?? tag.name ?? 'Untitled Tag'\n\n // Update the order of the children based on the items\n // This will ensure that the sort order is always in sync with the items\n tag['x-scalar-order'] = children.map((child) => child.id)\n\n const entry = {\n id,\n title,\n name: tag.name || title,\n description: tag.description,\n children,\n isGroup,\n isWebhooks: false,\n type: 'tag',\n xKeys: getXKeysFromObject(unpackProxyObject(tag)),\n } satisfies TraversedTag\n\n return entry\n}\n\n/** Sorts and processes tags to create a hierarchical structure of tag entries.\n *\n * This function handles:\n * - Sorting tags alphabetically or using a custom sort function\n * - Sorting operations within tags by title, method, or custom function\n * - Filtering out internal and ignored tags\n * - Creating tag entries with their associated operations\n *\n * @param _keys - Array of tag keys to process\n * @param tagsMap - Map of tags and their entries\n * @param tagsDict - Dictionary of OpenAPI tags by name\n * @param titlesMap - Map of titles for the mobile header\n * @param options - Sorting and ID generation options\n * @returns Array of processed and sorted tag entries\n */\n/** Sorts tags and returns entries */\nconst getSortedTagEntries = ({\n _keys,\n tagsMap,\n options: { tagsSorter, operationsSorter, generateId },\n documentId,\n sortOrder,\n}: {\n _keys: string[]\n /** Map of tags and their entries */\n tagsMap: TagsMap\n options: Options\n documentId: string\n sortOrder: string[] | undefined\n}) => {\n /**\n * Process each tag and its entries:\n * - Skip internal and ignored tags\n * - Sort operations within tags\n * - Create tag entries with sorted operations\n */\n const entries = _keys.flatMap((key) => {\n const { tag, entries } = getTag({ tagsMap, name: key, documentId, generateId })\n\n // Skip if the tag is internal or scalar-ignore\n if (tag['x-internal'] || tag['x-scalar-ignore']) {\n return []\n }\n\n const sortOrder = tag['x-scalar-order']\n\n if (sortOrder === undefined) {\n // Alpha sort\n if (operationsSorter === 'alpha') {\n entries.sort((a, b) => (a.type === 'operation' && b.type === 'operation' ? a.title.localeCompare(b.title) : 0))\n }\n // Method sort\n else if (operationsSorter === 'method') {\n entries.sort((a, b) =>\n a.type === 'operation' && b.type === 'operation' ? a.method.localeCompare(b.method) : 0,\n )\n }\n // Custom sort\n else if (typeof operationsSorter === 'function') {\n entries.sort((a, b) => {\n // Guard against tags\n if (!(a.type === 'operation' || a.type === 'webhook') || !(b.type === 'operation' || b.type === 'webhook')) {\n return 0\n }\n\n // Handle webhooks as well as operations\n const pathA = a.type === 'operation' ? a.path : a.name\n const pathB = b.type === 'operation' ? b.path : b.name\n\n return operationsSorter(\n { method: a.method, path: pathA, ref: a.ref, httpVerb: a.method },\n { method: b.method, path: pathB, ref: b.ref, httpVerb: b.method },\n )\n })\n }\n }\n\n return createTagEntry({\n tag,\n generateId,\n children: sortOrder ? sortByOrder(entries, sortOrder, 'id') : entries,\n parentId: documentId,\n isGroup: false,\n })\n })\n\n // If a custom 'x-scalar-order' is specified in the tag, sort the entries by this order using sortByOrder\n if (sortOrder) {\n return sortByOrder(entries, sortOrder, 'id')\n }\n\n // Alpha sort\n if (tagsSorter === 'alpha') {\n entries.sort((a, b) => {\n const nameA =\n getTag({\n tagsMap,\n name: a.title,\n documentId,\n generateId,\n }).tag['x-displayName'] ||\n a.title ||\n 'Untitled Tag'\n const nameB =\n getTag({ tagsMap, name: b.title, documentId, generateId }).tag['x-displayName'] || b.title || 'Untitled Tag'\n return nameA.localeCompare(nameB)\n })\n }\n // Custom sort\n else if (typeof tagsSorter === 'function') {\n entries.sort((a, b) =>\n tagsSorter(\n getTag({ tagsMap, name: a.name, documentId, generateId }).tag,\n getTag({ tagsMap, name: b.name, documentId, generateId }).tag,\n ),\n )\n }\n\n return entries\n}\n\n/**\n * Traverses the tags map to create navigation entries, handling both grouped and ungrouped tags.\n *\n * This function processes the OpenAPI document's tags to:\n * - Handle tag groups if specified via x-tagGroups\n * - Sort tags and their operations according to provided sorters\n * - Create navigation entries for each tag or tag group\n */\nexport const traverseTags = ({\n document,\n tagsMap,\n documentId,\n options: { generateId, tagsSorter, operationsSorter },\n}: {\n document: OpenApiDocument\n /** Map of tags and their entries */\n tagsMap: TagsMap\n documentId: string\n options: Options\n}): TraversedEntry[] => {\n // x-tagGroups\n if (document['x-tagGroups']) {\n const tagGroups = document['x-tagGroups']\n\n return tagGroups.flatMap((tagGroup) => {\n const entries = getSortedTagEntries({\n _keys: tagGroup.tags,\n tagsMap,\n options: { tagsSorter, operationsSorter, generateId },\n documentId: documentId,\n sortOrder: tagGroup['x-scalar-order'],\n })\n\n // Try to update the sort order of the tag group to keep it in sync with the items\n tagGroup['x-scalar-order'] = entries.map((entry) => entry.id)\n\n return entries.length\n ? createTagEntry({\n tag: tagGroup,\n generateId,\n children: entries,\n parentId: documentId,\n isGroup: true,\n })\n : []\n })\n }\n\n // Ungrouped regular tags\n const keys = Array.from(tagsMap.keys())\n\n const tags = getSortedTagEntries({\n _keys: keys,\n tagsMap,\n options: { generateId, tagsSorter, operationsSorter },\n documentId: documentId,\n sortOrder: document['x-scalar-order'],\n })\n\n return tags\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["entries", "sortOrder"]
7
7
  }
@@ -21,7 +21,7 @@ import type { Heading } from '../../navigation/types.js';
21
21
  * // ]
22
22
  */
23
23
  export declare function getHeadingsFromMarkdown(input: string): Heading[];
24
- export type HeadingLevels = 1 | 2 | 3 | 4 | 5 | 6;
24
+ type HeadingLevels = 1 | 2 | 3 | 4 | 5 | 6;
25
25
  /**
26
26
  * Returns the lowest heading level from a list of headings.
27
27
  *
@@ -36,4 +36,5 @@ export type HeadingLevels = 1 | 2 | 3 | 4 | 5 | 6;
36
36
  * getLowestHeadingLevel(headings) // Returns: 1
37
37
  */
38
38
  export declare const getLowestHeadingLevel: (headings: Heading[]) => HeadingLevels;
39
+ export {};
39
40
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AA+BjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAMhE;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAEjD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,GAAI,UAAU,OAAO,EAAE,KAAG,aAQ3D,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AA+BjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAMhE;AAED,KAAK,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAE1C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,GAAI,UAAU,OAAO,EAAE,KAAG,aAQ3D,CAAA"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/navigation/helpers/utils.ts"],
4
- "sourcesContent": ["import { getHeadings } from '@scalar/code-highlight/markdown'\nimport GithubSlugger from 'github-slugger'\n\nimport type { Heading } from '@/navigation/types'\n\n/**\n * Adds URL-friendly slugs to each heading in the array.\n * Uses GithubSlugger to generate consistent slugs that match GitHub's heading anchor format.\n *\n * @param headings - Array of heading objects containing value and depth\n * @param slugger - GithubSlugger instance for generating consistent slugs\n * @returns Array of headings with added slug property\n *\n * @example\n * const headings = [\n * { value: 'Getting Started', depth: 1 },\n * { value: 'Installation', depth: 2 }\n * ]\n * const slugger = new GithubSlugger()\n * withSlugs(headings, slugger)\n * // Returns:\n * // [\n * // { value: 'Getting Started', depth: 1, slug: 'getting-started' },\n * // { value: 'Installation', depth: 2, slug: 'installation' }\n * // ]\n */\nconst withSlugs = (headings: Heading[], slugger: GithubSlugger): Heading[] =>\n headings.map((heading) => {\n return {\n ...heading,\n slug: slugger.slug(heading.value),\n }\n })\n\n/**\n * Extracts all headings from a Markdown string and adds URL-friendly slugs to each heading.\n * Uses GithubSlugger to generate consistent slugs that match GitHub's heading anchor format.\n *\n * @param input - The Markdown string to extract headings from\n * @returns Array of heading objects containing value, depth, and slug\n *\n * @example\n * const markdown = `\n * # Getting Started\n * ## Installation\n * ### Requirements\n * `\n * const headings = getHeadingsFromMarkdown(markdown)\n * // Returns:\n * // [\n * // { value: 'Getting Started', depth: 1, slug: 'getting-started' },\n * // { value: 'Installation', depth: 2, slug: 'installation' },\n * // { value: 'Requirements', depth: 3, slug: 'requirements' }\n * // ]\n */\nexport function getHeadingsFromMarkdown(input: string): Heading[] {\n const slugger = new GithubSlugger()\n\n const headings = getHeadings(input)\n\n return withSlugs(headings as Heading[], slugger)\n}\n\nexport type HeadingLevels = 1 | 2 | 3 | 4 | 5 | 6\n\n/**\n * Returns the lowest heading level from a list of headings.\n *\n * @param headings - Array of heading objects containing depth property\n * @returns The lowest heading level (1-6) or 1 if no valid headings found\n *\n * @example\n * const headings = [\n * { value: 'Getting Started', depth: 1 },\n * { value: 'Installation', depth: 2 }\n * ]\n * getLowestHeadingLevel(headings) // Returns: 1\n */\nexport const getLowestHeadingLevel = (headings: Heading[]): HeadingLevels => {\n const lowestLevel = Math.min(...headings.map((heading) => heading.depth))\n\n if (lowestLevel >= 1 && lowestLevel <= 6) {\n return lowestLevel as HeadingLevels\n }\n\n return 1\n}\n"],
4
+ "sourcesContent": ["import { getHeadings } from '@scalar/code-highlight/markdown'\nimport GithubSlugger from 'github-slugger'\n\nimport type { Heading } from '@/navigation/types'\n\n/**\n * Adds URL-friendly slugs to each heading in the array.\n * Uses GithubSlugger to generate consistent slugs that match GitHub's heading anchor format.\n *\n * @param headings - Array of heading objects containing value and depth\n * @param slugger - GithubSlugger instance for generating consistent slugs\n * @returns Array of headings with added slug property\n *\n * @example\n * const headings = [\n * { value: 'Getting Started', depth: 1 },\n * { value: 'Installation', depth: 2 }\n * ]\n * const slugger = new GithubSlugger()\n * withSlugs(headings, slugger)\n * // Returns:\n * // [\n * // { value: 'Getting Started', depth: 1, slug: 'getting-started' },\n * // { value: 'Installation', depth: 2, slug: 'installation' }\n * // ]\n */\nconst withSlugs = (headings: Heading[], slugger: GithubSlugger): Heading[] =>\n headings.map((heading) => {\n return {\n ...heading,\n slug: slugger.slug(heading.value),\n }\n })\n\n/**\n * Extracts all headings from a Markdown string and adds URL-friendly slugs to each heading.\n * Uses GithubSlugger to generate consistent slugs that match GitHub's heading anchor format.\n *\n * @param input - The Markdown string to extract headings from\n * @returns Array of heading objects containing value, depth, and slug\n *\n * @example\n * const markdown = `\n * # Getting Started\n * ## Installation\n * ### Requirements\n * `\n * const headings = getHeadingsFromMarkdown(markdown)\n * // Returns:\n * // [\n * // { value: 'Getting Started', depth: 1, slug: 'getting-started' },\n * // { value: 'Installation', depth: 2, slug: 'installation' },\n * // { value: 'Requirements', depth: 3, slug: 'requirements' }\n * // ]\n */\nexport function getHeadingsFromMarkdown(input: string): Heading[] {\n const slugger = new GithubSlugger()\n\n const headings = getHeadings(input)\n\n return withSlugs(headings as Heading[], slugger)\n}\n\ntype HeadingLevels = 1 | 2 | 3 | 4 | 5 | 6\n\n/**\n * Returns the lowest heading level from a list of headings.\n *\n * @param headings - Array of heading objects containing depth property\n * @returns The lowest heading level (1-6) or 1 if no valid headings found\n *\n * @example\n * const headings = [\n * { value: 'Getting Started', depth: 1 },\n * { value: 'Installation', depth: 2 }\n * ]\n * getLowestHeadingLevel(headings) // Returns: 1\n */\nexport const getLowestHeadingLevel = (headings: Heading[]): HeadingLevels => {\n const lowestLevel = Math.min(...headings.map((heading) => heading.depth))\n\n if (lowestLevel >= 1 && lowestLevel <= 6) {\n return lowestLevel as HeadingLevels\n }\n\n return 1\n}\n"],
5
5
  "mappings": "AAAA,SAAS,mBAAmB;AAC5B,OAAO,mBAAmB;AAyB1B,MAAM,YAAY,CAAC,UAAqB,YACtC,SAAS,IAAI,CAAC,YAAY;AACxB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM,QAAQ,KAAK,QAAQ,KAAK;AAAA,EAClC;AACF,CAAC;AAuBI,SAAS,wBAAwB,OAA0B;AAChE,QAAM,UAAU,IAAI,cAAc;AAElC,QAAM,WAAW,YAAY,KAAK;AAElC,SAAO,UAAU,UAAuB,OAAO;AACjD;AAiBO,MAAM,wBAAwB,CAAC,aAAuC;AAC3E,QAAM,cAAc,KAAK,IAAI,GAAG,SAAS,IAAI,CAAC,YAAY,QAAQ,KAAK,CAAC;AAExE,MAAI,eAAe,KAAK,eAAe,GAAG;AACxC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,5 @@
1
- export { DEFAULT_INTRODUCTION_SLUG } from './helpers/traverse-description.js';
1
+ export { getOpenapiObject } from './helpers/get-openapi-object.js';
2
+ export { getParentEntry } from './helpers/get-parent-entry.js';
2
3
  export { traverseDocument as createNavigation } from './helpers/traverse-document.js';
3
4
  export type { TraverseSpecOptions as createNavigationOptions } from './types.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,EAAE,gBAAgB,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAClF,YAAY,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,gBAAgB,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAClF,YAAY,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,SAAS,CAAA"}
@@ -1,7 +1,9 @@
1
- import { DEFAULT_INTRODUCTION_SLUG } from "./helpers/traverse-description.js";
1
+ import { getOpenapiObject } from "./helpers/get-openapi-object.js";
2
+ import { getParentEntry } from "./helpers/get-parent-entry.js";
2
3
  import { traverseDocument } from "./helpers/traverse-document.js";
3
4
  export {
4
- DEFAULT_INTRODUCTION_SLUG,
5
- traverseDocument as createNavigation
5
+ traverseDocument as createNavigation,
6
+ getOpenapiObject,
7
+ getParentEntry
6
8
  };
7
9
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/navigation/index.ts"],
4
- "sourcesContent": ["// biome-ignore lint/performance/noBarrelFile: Entry point for /navigation\nexport { DEFAULT_INTRODUCTION_SLUG } from './helpers/traverse-description'\nexport { traverseDocument as createNavigation } from './helpers/traverse-document'\nexport type { TraverseSpecOptions as createNavigationOptions } from './types'\n"],
5
- "mappings": "AACA,SAAS,iCAAiC;AAC1C,SAA6B,wBAAwB;",
4
+ "sourcesContent": ["export { getOpenapiObject } from './helpers/get-openapi-object'\nexport { getParentEntry } from './helpers/get-parent-entry'\nexport { traverseDocument as createNavigation } from './helpers/traverse-document'\nexport type { TraverseSpecOptions as createNavigationOptions } from './types'\n"],
5
+ "mappings": "AAAA,SAAS,wBAAwB;AACjC,SAAS,sBAAsB;AAC/B,SAA6B,wBAAwB;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,5 @@
1
- export type { XCodeSample } from './x-code-samples.js';
1
+ export { type XBadge, XBadgeSchema, type XBadges, XBadgesSchema, } from './x-badge.js';
2
+ export { type XCodeSample, XCodeSamplesSchema, } from './x-code-samples.js';
3
+ export { type XScalarSelectedContentType, XScalarSelectedContentTypeSchema, } from './x-scalar-selected-content-type.js';
4
+ export { XScalarStabilitySchema, XScalarStabilityValues, } from './x-scalar-stability.js';
2
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/operation/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EACX,YAAY,EACZ,KAAK,OAAO,EACZ,aAAa,GACd,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,KAAK,WAAW,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,KAAK,0BAA0B,EAC/B,gCAAgC,GACjC,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sBAAsB,CAAA"}
@@ -1 +1,23 @@
1
+ import {
2
+ XBadgeSchema,
3
+ XBadgesSchema
4
+ } from "./x-badge.js";
5
+ import {
6
+ XCodeSamplesSchema
7
+ } from "./x-code-samples.js";
8
+ import {
9
+ XScalarSelectedContentTypeSchema
10
+ } from "./x-scalar-selected-content-type.js";
11
+ import {
12
+ XScalarStabilitySchema,
13
+ XScalarStabilityValues
14
+ } from "./x-scalar-stability.js";
15
+ export {
16
+ XBadgeSchema,
17
+ XBadgesSchema,
18
+ XCodeSamplesSchema,
19
+ XScalarSelectedContentTypeSchema,
20
+ XScalarStabilitySchema,
21
+ XScalarStabilityValues
22
+ };
1
23
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
3
+ "sources": ["../../../../src/schemas/extensions/operation/index.ts"],
4
+ "sourcesContent": ["export {\n type XBadge,\n XBadgeSchema,\n type XBadges,\n XBadgesSchema,\n} from './x-badge'\nexport {\n type XCodeSample,\n XCodeSamplesSchema,\n} from './x-code-samples'\nexport {\n type XScalarSelectedContentType,\n XScalarSelectedContentTypeSchema,\n} from './x-scalar-selected-content-type'\nexport {\n XScalarStabilitySchema,\n XScalarStabilityValues,\n} from './x-scalar-stability'\n"],
5
+ "mappings": "AAAA;AAAA,EAEE;AAAA,EAEA;AAAA,OACK;AACP;AAAA,EAEE;AAAA,OACK;AACP;AAAA,EAEE;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;",
6
6
  "names": []
7
7
  }
@@ -1,8 +1,3 @@
1
- export declare const XCodeSampleSchema: import("@scalar/typebox").TObject<{
2
- lang: import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
3
- label: import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
4
- source: import("@scalar/typebox").TString;
5
- }>;
6
1
  export declare const XCodeSamplesSchema: import("@scalar/typebox").TObject<{
7
2
  'x-codeSamples': import("@scalar/typebox").TOptional<import("@scalar/typebox").TArray<import("@scalar/typebox").TObject<{
8
3
  lang: import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
@@ -1 +1 @@
1
- {"version":3,"file":"x-code-samples.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/operation/x-code-samples.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB;;;;EAI5B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;EAI7B,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,eAAe,CAAC,EAAE,WAAW,EAAE,CAAA;IAC/B,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAA;IAChC,mBAAmB,CAAC,EAAE,WAAW,EAAE,CAAA;CACpC,CAAA"}
1
+ {"version":3,"file":"x-code-samples.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/operation/x-code-samples.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;EAI7B,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,eAAe,CAAC,EAAE,WAAW,EAAE,CAAA;IAC/B,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAA;IAChC,mBAAmB,CAAC,EAAE,WAAW,EAAE,CAAA;CACpC,CAAA"}
@@ -10,7 +10,6 @@ const XCodeSamplesSchema = Type.Object({
10
10
  "x-custom-examples": Type.Optional(Type.Array(XCodeSampleSchema))
11
11
  });
12
12
  export {
13
- XCodeSampleSchema,
14
13
  XCodeSamplesSchema
15
14
  };
16
15
  //# sourceMappingURL=x-code-samples.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/schemas/extensions/operation/x-code-samples.ts"],
4
- "sourcesContent": ["import { Type } from '@scalar/typebox'\n\nexport const XCodeSampleSchema = Type.Object({\n lang: Type.Optional(Type.String()),\n label: Type.Optional(Type.String()),\n source: Type.String(),\n})\n\nexport const XCodeSamplesSchema = Type.Object({\n 'x-codeSamples': Type.Optional(Type.Array(XCodeSampleSchema)),\n 'x-code-samples': Type.Optional(Type.Array(XCodeSampleSchema)),\n 'x-custom-examples': Type.Optional(Type.Array(XCodeSampleSchema)),\n})\n\nexport type XCodeSample = {\n lang?: string\n label?: string\n source: string\n}\n\nexport type XCodeSamples = {\n 'x-codeSamples'?: XCodeSample[]\n 'x-code-samples'?: XCodeSample[]\n 'x-custom-examples'?: XCodeSample[]\n}\n"],
5
- "mappings": "AAAA,SAAS,YAAY;AAEd,MAAM,oBAAoB,KAAK,OAAO;AAAA,EAC3C,MAAM,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,EACjC,OAAO,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,EAClC,QAAQ,KAAK,OAAO;AACtB,CAAC;AAEM,MAAM,qBAAqB,KAAK,OAAO;AAAA,EAC5C,iBAAiB,KAAK,SAAS,KAAK,MAAM,iBAAiB,CAAC;AAAA,EAC5D,kBAAkB,KAAK,SAAS,KAAK,MAAM,iBAAiB,CAAC;AAAA,EAC7D,qBAAqB,KAAK,SAAS,KAAK,MAAM,iBAAiB,CAAC;AAClE,CAAC;",
4
+ "sourcesContent": ["import { Type } from '@scalar/typebox'\n\nconst XCodeSampleSchema = Type.Object({\n lang: Type.Optional(Type.String()),\n label: Type.Optional(Type.String()),\n source: Type.String(),\n})\n\nexport const XCodeSamplesSchema = Type.Object({\n 'x-codeSamples': Type.Optional(Type.Array(XCodeSampleSchema)),\n 'x-code-samples': Type.Optional(Type.Array(XCodeSampleSchema)),\n 'x-custom-examples': Type.Optional(Type.Array(XCodeSampleSchema)),\n})\n\nexport type XCodeSample = {\n lang?: string\n label?: string\n source: string\n}\n\nexport type XCodeSamples = {\n 'x-codeSamples'?: XCodeSample[]\n 'x-code-samples'?: XCodeSample[]\n 'x-custom-examples'?: XCodeSample[]\n}\n"],
5
+ "mappings": "AAAA,SAAS,YAAY;AAErB,MAAM,oBAAoB,KAAK,OAAO;AAAA,EACpC,MAAM,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,EACjC,OAAO,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,EAClC,QAAQ,KAAK,OAAO;AACtB,CAAC;AAEM,MAAM,qBAAqB,KAAK,OAAO;AAAA,EAC5C,iBAAiB,KAAK,SAAS,KAAK,MAAM,iBAAiB,CAAC;AAAA,EAC5D,kBAAkB,KAAK,SAAS,KAAK,MAAM,iBAAiB,CAAC;AAAA,EAC7D,qBAAqB,KAAK,SAAS,KAAK,MAAM,iBAAiB,CAAC;AAClE,CAAC;",
6
6
  "names": []
7
7
  }
@@ -16,22 +16,4 @@
16
16
  export declare const XPostResponseSchema: import("@scalar/typebox").TObject<{
17
17
  'x-post-response': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
18
18
  }>;
19
- export type XPostResponse = {
20
- /**
21
- * Post response scripts allow to execute arbitrary code after a response is received
22
- *
23
- * This is useful for:
24
- * - Extracting data from the response, or
25
- * - Testing the response
26
- *
27
- * @example
28
- * ```yaml
29
- * x-post-response: |
30
- * pm.test("Status code is 200", () => {
31
- * pm.response.to.have.status(200)
32
- * })
33
- * ```
34
- */
35
- 'x-post-response'?: string;
36
- };
37
19
  //# sourceMappingURL=x-post-response.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-post-response.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/operation/x-post-response.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB;;EAE9B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA"}
1
+ {"version":3,"file":"x-post-response.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/operation/x-post-response.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB;;EAE9B,CAAA"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/schemas/extensions/operation/x-post-response.ts"],
4
- "sourcesContent": ["import { Type } from '@scalar/typebox'\n\n/**\n * Post response scripts allow to execute arbitrary code after a response is received\n *\n * This is useful for:\n * - Extracting data from the response, or\n * - Testing the response\n *\n * @example\n * ```yaml\n * x-post-response: |\n * pm.test(\"Status code is 200\", () => {\n * pm.response.to.have.status(200)\n * })\n * ```\n */\nexport const XPostResponseSchema = Type.Object({\n 'x-post-response': Type.Optional(Type.String()),\n})\n\nexport type XPostResponse = {\n /**\n * Post response scripts allow to execute arbitrary code after a response is received\n *\n * This is useful for:\n * - Extracting data from the response, or\n * - Testing the response\n *\n * @example\n * ```yaml\n * x-post-response: |\n * pm.test(\"Status code is 200\", () => {\n * pm.response.to.have.status(200)\n * })\n * ```\n */\n 'x-post-response'?: string\n}\n"],
4
+ "sourcesContent": ["import { Type } from '@scalar/typebox'\n\n/**\n * Post response scripts allow to execute arbitrary code after a response is received\n *\n * This is useful for:\n * - Extracting data from the response, or\n * - Testing the response\n *\n * @example\n * ```yaml\n * x-post-response: |\n * pm.test(\"Status code is 200\", () => {\n * pm.response.to.have.status(200)\n * })\n * ```\n */\nexport const XPostResponseSchema = Type.Object({\n 'x-post-response': Type.Optional(Type.String()),\n})\n\n// Not used, kept around for consistency\n// export type XPostResponse = {\n// /**\n// * Post response scripts allow to execute arbitrary code after a response is received\n// *\n// * This is useful for:\n// * - Extracting data from the response, or\n// * - Testing the response\n// *\n// * @example\n// * ```yaml\n// * x-post-response: |\n// * pm.test(\"Status code is 200\", () => {\n// * pm.response.to.have.status(200)\n// * })\n// * ```\n// */\n// 'x-post-response'?: string\n// }\n"],
5
5
  "mappings": "AAAA,SAAS,YAAY;AAiBd,MAAM,sBAAsB,KAAK,OAAO;AAAA,EAC7C,mBAAmB,KAAK,SAAS,KAAK,OAAO,CAAC;AAChD,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,17 +1,5 @@
1
1
  import { type XScalarOrder } from '../../../schemas/extensions/general/x-scalar-order.js';
2
- export declare const XTagGroupSchema: import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
3
- /**
4
- * The group name.
5
- */
6
- name: import("@scalar/typebox").TString;
7
- /**
8
- * List of tags to include in this group.
9
- */
10
- tags: import("@scalar/typebox").TArray<import("@scalar/typebox").TString>;
11
- }>, import("@scalar/typebox").TObject<{
12
- 'x-scalar-order': import("@scalar/typebox").TOptional<import("@scalar/typebox").TArray<import("@scalar/typebox").TString>>;
13
- }>]>;
14
- export type XTagGroup = {
2
+ type XTagGroup = {
15
3
  /**
16
4
  * The group name.
17
5
  */
@@ -48,4 +36,5 @@ export type XTagGroups = {
48
36
  */
49
37
  'x-tagGroups'?: XTagGroup[];
50
38
  };
39
+ export {};
51
40
  //# sourceMappingURL=x-tag-groups.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"x-tag-groups.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/tag/x-tag-groups.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,6CAA6C,CAAA;AAEnG,eAAO,MAAM,eAAe;IAExB;;OAEG;;IAEH;;OAEG;;;;IAIN,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,EAAE,MAAM,EAAE,CAAA;CACf,GAAG,YAAY,CAAA;AAEhB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;QA5BzB;;WAEG;;QAEH;;WAEG;;;;;EAwBL,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,SAAS,EAAE,CAAA;CAC5B,CAAA"}
1
+ {"version":3,"file":"x-tag-groups.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/tag/x-tag-groups.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,6CAA6C,CAAA;AAgBnG,KAAK,SAAS,GAAG;IACf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,EAAE,MAAM,EAAE,CAAA;CACf,GAAG,YAAY,CAAA;AAEhB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;QA5BzB;;WAEG;;QAEH;;WAEG;;;;;EAwBL,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,SAAS,EAAE,CAAA;CAC5B,CAAA"}
@@ -18,7 +18,6 @@ const XTagGroupsSchema = Type.Object({
18
18
  "x-tagGroups": Type.Optional(Type.Array(XTagGroupSchema))
19
19
  });
20
20
  export {
21
- XTagGroupSchema,
22
21
  XTagGroupsSchema
23
22
  };
24
23
  //# sourceMappingURL=x-tag-groups.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/schemas/extensions/tag/x-tag-groups.ts"],
4
- "sourcesContent": ["import { Type } from '@scalar/typebox'\n\nimport { compose } from '@/schemas/compose'\nimport { type XScalarOrder, XScalarOrderSchema } from '@/schemas/extensions/general/x-scalar-order'\n\nexport const XTagGroupSchema = compose(\n Type.Object({\n /**\n * The group name.\n */\n name: Type.String(),\n /**\n * List of tags to include in this group.\n */\n tags: Type.Array(Type.String()),\n }),\n XScalarOrderSchema,\n)\n\nexport type XTagGroup = {\n /**\n * The group name.\n */\n name: string\n /**\n * List of tags to include in this group.\n */\n tags: string[]\n} & XScalarOrder\n\n/**\n * x-tagGroups\n *\n * List of tags to include in this group.\n */\nexport const XTagGroupsSchema = Type.Object({\n 'x-tagGroups': Type.Optional(Type.Array(XTagGroupSchema)),\n})\n\nexport type XTagGroups = {\n /**\n * x-tagGroups\n *\n * List of tags to include in this group.\n */\n 'x-tagGroups'?: XTagGroup[]\n}\n"],
5
- "mappings": "AAAA,SAAS,YAAY;AAErB,SAAS,eAAe;AACxB,SAA4B,0BAA0B;AAE/C,MAAM,kBAAkB;AAAA,EAC7B,KAAK,OAAO;AAAA;AAAA;AAAA;AAAA,IAIV,MAAM,KAAK,OAAO;AAAA;AAAA;AAAA;AAAA,IAIlB,MAAM,KAAK,MAAM,KAAK,OAAO,CAAC;AAAA,EAChC,CAAC;AAAA,EACD;AACF;AAkBO,MAAM,mBAAmB,KAAK,OAAO;AAAA,EAC1C,eAAe,KAAK,SAAS,KAAK,MAAM,eAAe,CAAC;AAC1D,CAAC;",
4
+ "sourcesContent": ["import { Type } from '@scalar/typebox'\n\nimport { compose } from '@/schemas/compose'\nimport { type XScalarOrder, XScalarOrderSchema } from '@/schemas/extensions/general/x-scalar-order'\n\nconst XTagGroupSchema = compose(\n Type.Object({\n /**\n * The group name.\n */\n name: Type.String(),\n /**\n * List of tags to include in this group.\n */\n tags: Type.Array(Type.String()),\n }),\n XScalarOrderSchema,\n)\n\ntype XTagGroup = {\n /**\n * The group name.\n */\n name: string\n /**\n * List of tags to include in this group.\n */\n tags: string[]\n} & XScalarOrder\n\n/**\n * x-tagGroups\n *\n * List of tags to include in this group.\n */\nexport const XTagGroupsSchema = Type.Object({\n 'x-tagGroups': Type.Optional(Type.Array(XTagGroupSchema)),\n})\n\nexport type XTagGroups = {\n /**\n * x-tagGroups\n *\n * List of tags to include in this group.\n */\n 'x-tagGroups'?: XTagGroup[]\n}\n"],
5
+ "mappings": "AAAA,SAAS,YAAY;AAErB,SAAS,eAAe;AACxB,SAA4B,0BAA0B;AAEtD,MAAM,kBAAkB;AAAA,EACtB,KAAK,OAAO;AAAA;AAAA;AAAA;AAAA,IAIV,MAAM,KAAK,OAAO;AAAA;AAAA;AAAA;AAAA,IAIlB,MAAM,KAAK,MAAM,KAAK,OAAO,CAAC;AAAA,EAChC,CAAC;AAAA,EACD;AACF;AAkBO,MAAM,mBAAmB,KAAK,OAAO;AAAA,EAC1C,eAAe,KAAK,SAAS,KAAK,MAAM,eAAe,CAAC;AAC1D,CAAC;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,4 @@
1
+ export { type XScalarActiveEnvironment, XScalarActiveEnvironmentSchema, } from './x-scalar-active-environment.js';
2
+ export { type XScalarActiveProxy, XScalarActiveProxySchema, } from './x-scalar-active-proxy.js';
3
+ export { type Tab, type XScalarTabs, XScalarTabsSchema, } from './x-scalar-tabs.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/workspace/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,EAC7B,8BAA8B,GAC/B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,KAAK,kBAAkB,EACvB,wBAAwB,GACzB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,KAAK,GAAG,EACR,KAAK,WAAW,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,15 @@
1
+ import {
2
+ XScalarActiveEnvironmentSchema
3
+ } from "./x-scalar-active-environment.js";
4
+ import {
5
+ XScalarActiveProxySchema
6
+ } from "./x-scalar-active-proxy.js";
7
+ import {
8
+ XScalarTabsSchema
9
+ } from "./x-scalar-tabs.js";
10
+ export {
11
+ XScalarActiveEnvironmentSchema,
12
+ XScalarActiveProxySchema,
13
+ XScalarTabsSchema
14
+ };
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/schemas/extensions/workspace/index.ts"],
4
+ "sourcesContent": ["export {\n type XScalarActiveEnvironment,\n XScalarActiveEnvironmentSchema,\n} from './x-scalar-active-environment'\nexport {\n type XScalarActiveProxy,\n XScalarActiveProxySchema,\n} from './x-scalar-active-proxy'\nexport {\n type Tab,\n type XScalarTabs,\n XScalarTabsSchema,\n} from './x-scalar-tabs'\n"],
5
+ "mappings": "AAAA;AAAA,EAEE;AAAA,OACK;AACP;AAAA,EAEE;AAAA,OACK;AACP;AAAA,EAGE;AAAA,OACK;",
6
+ "names": []
7
+ }
@@ -0,0 +1,36 @@
1
+ type TabIcon = 'request' | 'document';
2
+ export type Tab = {
3
+ path: string;
4
+ title: string;
5
+ icon?: TabIcon;
6
+ };
7
+ /**
8
+ * Schema for workspace tab configuration.
9
+ *
10
+ * This extension allows storing the list of open tabs and which tab is currently active.
11
+ * Useful for preserving user's workspace state across sessions.
12
+ */
13
+ export declare const XScalarTabsSchema: import("@scalar/typebox").TObject<{
14
+ /** Array of tab identifiers that are currently open in the workspace */
15
+ 'x-scalar-tabs': import("@scalar/typebox").TOptional<import("@scalar/typebox").TArray<import("@scalar/typebox").TObject<{
16
+ path: import("@scalar/typebox").TString;
17
+ title: import("@scalar/typebox").TString;
18
+ icon: import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
19
+ }>>>;
20
+ /** The identifier of the currently active/focused tab */
21
+ 'x-scalar-active-tab': import("@scalar/typebox").TOptional<import("@scalar/typebox").TNumber>;
22
+ }>;
23
+ /**
24
+ * TypeScript type for workspace tab configuration.
25
+ *
26
+ * Used to persist which tabs are open and which one is active,
27
+ * allowing users to restore their workspace state when returning to the application.
28
+ */
29
+ export type XScalarTabs = {
30
+ /** Array of tab identifiers that are currently open in the workspace */
31
+ 'x-scalar-tabs'?: Tab[];
32
+ /** The identifier of the currently active/focused tab */
33
+ 'x-scalar-active-tab'?: number;
34
+ };
35
+ export {};
36
+ //# sourceMappingURL=x-scalar-tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x-scalar-tabs.d.ts","sourceRoot":"","sources":["../../../../src/schemas/extensions/workspace/x-scalar-tabs.ts"],"names":[],"mappings":"AAEA,KAAK,OAAO,GAAG,SAAS,GAAG,UAAU,CAAA;AAQrC,MAAM,MAAM,GAAG,GAAG;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;IAC5B,wEAAwE;;;;;;IAExE,yDAAyD;;EAEzD,CAAA;AAEF;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,wEAAwE;IACxE,eAAe,CAAC,EAAE,GAAG,EAAE,CAAA;IACvB,yDAAyD;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { Type } from "@scalar/typebox";
2
+ const TabSchema = Type.Object({
3
+ path: Type.String(),
4
+ title: Type.String(),
5
+ icon: Type.Optional(Type.String())
6
+ });
7
+ const XScalarTabsSchema = Type.Object({
8
+ /** Array of tab identifiers that are currently open in the workspace */
9
+ "x-scalar-tabs": Type.Optional(Type.Array(TabSchema)),
10
+ /** The identifier of the currently active/focused tab */
11
+ "x-scalar-active-tab": Type.Optional(Type.Number())
12
+ });
13
+ export {
14
+ XScalarTabsSchema
15
+ };
16
+ //# sourceMappingURL=x-scalar-tabs.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/schemas/extensions/workspace/x-scalar-tabs.ts"],
4
+ "sourcesContent": ["import { Type } from '@scalar/typebox'\n\ntype TabIcon = 'request' | 'document'\n\nconst TabSchema = Type.Object({\n path: Type.String(),\n title: Type.String(),\n icon: Type.Optional(Type.String()),\n})\n\nexport type Tab = {\n path: string\n title: string\n icon?: TabIcon\n}\n\n/**\n * Schema for workspace tab configuration.\n *\n * This extension allows storing the list of open tabs and which tab is currently active.\n * Useful for preserving user's workspace state across sessions.\n */\nexport const XScalarTabsSchema = Type.Object({\n /** Array of tab identifiers that are currently open in the workspace */\n 'x-scalar-tabs': Type.Optional(Type.Array(TabSchema)),\n /** The identifier of the currently active/focused tab */\n 'x-scalar-active-tab': Type.Optional(Type.Number()),\n})\n\n/**\n * TypeScript type for workspace tab configuration.\n *\n * Used to persist which tabs are open and which one is active,\n * allowing users to restore their workspace state when returning to the application.\n */\nexport type XScalarTabs = {\n /** Array of tab identifiers that are currently open in the workspace */\n 'x-scalar-tabs'?: Tab[]\n /** The identifier of the currently active/focused tab */\n 'x-scalar-active-tab'?: number\n}\n"],
5
+ "mappings": "AAAA,SAAS,YAAY;AAIrB,MAAM,YAAY,KAAK,OAAO;AAAA,EAC5B,MAAM,KAAK,OAAO;AAAA,EAClB,OAAO,KAAK,OAAO;AAAA,EACnB,MAAM,KAAK,SAAS,KAAK,OAAO,CAAC;AACnC,CAAC;AAcM,MAAM,oBAAoB,KAAK,OAAO;AAAA;AAAA,EAE3C,iBAAiB,KAAK,SAAS,KAAK,MAAM,SAAS,CAAC;AAAA;AAAA,EAEpD,uBAAuB,KAAK,SAAS,KAAK,OAAO,CAAC;AACpD,CAAC;",
6
+ "names": []
7
+ }
@@ -489,9 +489,9 @@ export declare const InMemoryWorkspaceSchema: import("@scalar/typebox").TObject<
489
489
  format: import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
490
490
  multipleOf: import("@scalar/typebox").TOptional<import("@scalar/typebox").TNumber>;
491
491
  maximum: import("@scalar/typebox").TOptional<import("@scalar/typebox").TNumber>;
492
- exclusiveMaximum: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TBoolean, import("@scalar/typebox").TNumber]>>;
492
+ exclusiveMaximum: import("@scalar/typebox").TOptional<import("@scalar/typebox").TNumber>;
493
493
  minimum: import("@scalar/typebox").TOptional<import("@scalar/typebox").TNumber>;
494
- exclusiveMinimum: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TBoolean, import("@scalar/typebox").TNumber]>>;
494
+ exclusiveMinimum: import("@scalar/typebox").TOptional<import("@scalar/typebox").TNumber>;
495
495
  }>, import("@scalar/typebox").TObject<{
496
496
  name: import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
497
497
  title: import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
@@ -1260,7 +1260,6 @@ export declare const InMemoryWorkspaceSchema: import("@scalar/typebox").TObject<
1260
1260
  'x-scalar-client-config-active-environment': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
1261
1261
  'x-original-oas-version': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
1262
1262
  'x-scalar-original-source-url': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
1263
- 'x-scalar-watch-mode': import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
1264
1263
  "x-scalar-navigation": import("@scalar/typebox").TOptional<import("@scalar/typebox").TRef<"TraversedDocumentObject">>;
1265
1264
  }>, import("@scalar/typebox").TObject<{
1266
1265
  'x-tagGroups': import("@scalar/typebox").TOptional<import("@scalar/typebox").TArray<import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
@@ -1467,6 +1466,7 @@ export declare const InMemoryWorkspaceSchema: import("@scalar/typebox").TObject<
1467
1466
  documents: import("@scalar/typebox").TRecord<import("@scalar/typebox").TString, import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
1468
1467
  "x-scalar-active-auth": import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
1469
1468
  "x-scalar-active-server": import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
1469
+ 'x-scalar-watch-mode': import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
1470
1470
  }>, import("@scalar/typebox").TImport<{
1471
1471
  ComponentsObject: import("@scalar/typebox").TObject<{
1472
1472
  schemas: import("@scalar/typebox").TOptional<import("@scalar/typebox").TRecord<import("@scalar/typebox").TString, import("@scalar/typebox").TUnion<[import("@scalar/typebox").TRef<"SchemaObject">, import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
@@ -1941,9 +1941,9 @@ export declare const InMemoryWorkspaceSchema: import("@scalar/typebox").TObject<
1941
1941
  format: import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
1942
1942
  multipleOf: import("@scalar/typebox").TOptional<import("@scalar/typebox").TNumber>;
1943
1943
  maximum: import("@scalar/typebox").TOptional<import("@scalar/typebox").TNumber>;
1944
- exclusiveMaximum: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TBoolean, import("@scalar/typebox").TNumber]>>;
1944
+ exclusiveMaximum: import("@scalar/typebox").TOptional<import("@scalar/typebox").TNumber>;
1945
1945
  minimum: import("@scalar/typebox").TOptional<import("@scalar/typebox").TNumber>;
1946
- exclusiveMinimum: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TBoolean, import("@scalar/typebox").TNumber]>>;
1946
+ exclusiveMinimum: import("@scalar/typebox").TOptional<import("@scalar/typebox").TNumber>;
1947
1947
  }>, import("@scalar/typebox").TObject<{
1948
1948
  name: import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
1949
1949
  title: import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
@@ -2712,7 +2712,6 @@ export declare const InMemoryWorkspaceSchema: import("@scalar/typebox").TObject<
2712
2712
  'x-scalar-client-config-active-environment': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
2713
2713
  'x-original-oas-version': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
2714
2714
  'x-scalar-original-source-url': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
2715
- 'x-scalar-watch-mode': import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
2716
2715
  "x-scalar-navigation": import("@scalar/typebox").TOptional<import("@scalar/typebox").TRef<"TraversedDocumentObject">>;
2717
2716
  }>, import("@scalar/typebox").TObject<{
2718
2717
  'x-tagGroups': import("@scalar/typebox").TOptional<import("@scalar/typebox").TArray<import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"inmemory-workspace.d.ts","sourceRoot":"","sources":["../../src/schemas/inmemory-workspace.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,aAAa,EAEnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,0CAA0C,CAAA;AAIpF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOlC,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,aAAa,CAAA;IACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAC5C,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC1D,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC9D,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC/B,CAAA"}
1
+ {"version":3,"file":"inmemory-workspace.d.ts","sourceRoot":"","sources":["../../src/schemas/inmemory-workspace.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,aAAa,EAEnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,0CAA0C,CAAA;AAIpF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOlC,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,aAAa,CAAA;IACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAC5C,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC1D,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC9D,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC/B,CAAA"}