@redocly/realm 0.137.0-next.0 → 0.137.0-next.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 CHANGED
@@ -1,5 +1,25 @@
1
1
  # @redocly/realm
2
2
 
3
+ ## 0.137.0-next.1
4
+
5
+ ### Minor Changes
6
+
7
+ - 73e4213006c: Added `accordion` and `accordion-group` Markdoc tags to organize content into collapsible sections.
8
+
9
+ ### Patch Changes
10
+
11
+ - 778ec4397e0: Fixed an issue in OpenAPI docs where object-valued path item extensions, such as `x-okta-lifecycle`, rendered as extra HTTP operations in the navigation.
12
+ - Updated dependencies [73e4213006c]
13
+ - Updated dependencies [778ec4397e0]
14
+ - Updated dependencies [ea1ead5b3fc]
15
+ - @redocly/theme@0.69.0-next.1
16
+ - @redocly/api-docs@0.2.0-next.1
17
+ - @redocly/realm-asyncapi-sdk@0.15.0-next.0
18
+ - @redocly/asyncapi-docs@1.14.0-next.1
19
+ - @redocly/graphql-docs@1.14.0-next.1
20
+ - @redocly/openapi-docs@3.25.0-next.1
21
+ - @redocly/portal-plugin-mock-server@0.22.0-next.1
22
+
3
23
  ## 0.137.0-next.0
4
24
 
5
25
  ### Patch Changes
@@ -27,6 +47,23 @@
27
47
  - @redocly/graphql-docs@1.14.0-next.0
28
48
  - @redocly/portal-plugin-mock-server@0.22.0-next.0
29
49
 
50
+ ## 0.136.1
51
+
52
+ ### Patch Changes
53
+
54
+ - b81385f1b9: Fixed an issue where legacy `#operation` deep links to operation sub-sections (such as callbacks or responses) did not scroll correctly.
55
+ - bfc9d675f4: Fixed an issue in API docs where Markdown in MCP tool, resource, and prompt descriptions rendered as raw text.
56
+ - 5c4011308d: Fixed an issue where the **Try it** button in OpenAPI docs was displayed after a delay.
57
+ - Updated dependencies [b81385f1b9]
58
+ - Updated dependencies [bfc9d675f4]
59
+ - Updated dependencies [5c4011308d]
60
+ - @redocly/api-docs@0.1.1
61
+ - @redocly/theme@0.68.1
62
+ - @redocly/asyncapi-docs@1.13.1
63
+ - @redocly/graphql-docs@1.13.1
64
+ - @redocly/openapi-docs@3.24.1
65
+ - @redocly/portal-plugin-mock-server@0.21.1
66
+
30
67
  ## 0.136.0
31
68
 
32
69
  ### Minor Changes
@@ -0,0 +1,9 @@
1
+ import type { LifecycleContext } from '../../../../server/types';
2
+ /**
3
+ * Reports how many route slugs the project had to rename because the slug was already taken.
4
+ *
5
+ * The event is sent even when every counter is zero: the zero rows are the denominator for
6
+ * "what share of projects are affected", so suppressing them makes the metric unanswerable.
7
+ */
8
+ export declare function collectPageSlugsStatistics(lifecycleContext: LifecycleContext, telemetryEnabled: boolean): Promise<void>;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ import{logger as o}from"../../../../server/tools/notifiers/logger.js";import{envConfig as l}from"../../../../server/config/env-config.js";import{telemetryTraceStep as i}from"../../../telemetry/helpers/trace-step.js";import{telemetry as u}from"../../../telemetry/index.js";async function f(c,a){await i("com.redocly.stats.pageSlugs",async()=>{o.info("Page slugs collector: start processing content slugs...");const{fileSlugs:g,collisions:e}=(await c.cache.load("content-slugs","content-slugs")).data,t=l.PROJECT_ID||"",s={pagesTotal:g.size,collisionsTotal:Object.values(e).reduce((n,r)=>n+r,0),...e};u.sendStatsPageSlugsCollectedMessage([{id:t,object:"pageSlugs",uri:`urn:redocly:realm:cli:pageSlugs:${t}`,...s,projectBuildId:l.PROJECT_BUILD_ID||""}]),a||console.table([s]),o.info("Page slugs collector: content slugs processing completed.")})}export{f as collectPageSlugsStatistics};
@@ -1 +1 @@
1
- import{initPlugins as a}from"../../server/plugins/lifecycle.js";import{configParserPlugin as c}from"../../server/plugins/config-parser/index.js";import{apiDocsPlugin as n}from"../../server/plugins/api-docs/index.js";import{shutdowner as s}from"../../server/tools/shutdowner.js";import{PORTAL_VERSION as p}from"../../server/version.js";import{collectOpenapiDocumentsStatistics as l}from"./collectors/openapi/index.js";import{telemetry as f}from"../telemetry/index.js";import{telemetryTraceStep as y}from"../telemetry/helpers/trace-step.js";async function O(e){const{"project-dir":o,telemetry:t,verbose:i}=e;f.initialize(p,t,i),await y("com.redocly.stats.started",async()=>{const r=[c,n],{lifecycleContext:m}=await a({contentDir:o},r);await l(m,t)}),await s.exitWithCode(0)}export{O as stats};
1
+ import{initPlugins as m}from"../../server/plugins/lifecycle.js";import{configParserPlugin as c}from"../../server/plugins/config-parser/index.js";import{apiDocsPlugin as s}from"../../server/plugins/api-docs/index.js";import{shutdowner as n}from"../../server/tools/shutdowner.js";import{PORTAL_VERSION as l}from"../../server/version.js";import{collectOpenapiDocumentsStatistics as p}from"./collectors/openapi/index.js";import{collectPageSlugsStatistics as f}from"./collectors/page-slugs/index.js";import{telemetry as y}from"../telemetry/index.js";import{telemetryTraceStep as u}from"../telemetry/helpers/trace-step.js";async function h(o){const{"project-dir":e,telemetry:t,verbose:r}=o;y.initialize(l,t,r),await u("com.redocly.stats.started",async()=>{const a=[c,s],{lifecycleContext:i}=await m({contentDir:e},a);await p(i,t),await f(i,t)}),await n.exitWithCode(0)}export{h as stats};
@@ -1,7 +1,12 @@
1
1
  import type { LoaderFn } from '../../../types';
2
+ export type SlugCollisions = {
3
+ pageVsPage: number;
4
+ dirVsDir: number;
5
+ };
2
6
  export type ContentSlugs = {
3
7
  fileSlugs: Map<string, string>;
4
8
  dirSlugs: Map<string, string>;
9
+ collisions: SlugCollisions;
5
10
  };
6
11
  export declare const IGNORED_EXTS: Set<string>;
7
12
  export declare const contentSlugsLoader: LoaderFn<ContentSlugs>;
@@ -1 +1 @@
1
- import f from"path";import{combineUrls as p}from"@redocly/theme/core/utils";import{VERSION_SEPARATOR as S}from"../../../constants/common.js";import{removeTrailingSlash as d}from"../../../../utils/url/remove-trailing-slash.js";import{slash as b}from"../../../../utils/path/slash.js";import{logger as c}from"../../../tools/notifiers/logger.js";import{getDefaultVersionByPath as v}from"./versions-config-loader.js";import{GithubSlugger as D,slug as E}from"../../../utils/index.js";import{parseBaseName as F}from"../../utils.js";const I=new Set([".jpg",".jpeg",".png",".gif",".webp",".svg",".ico",".avif",".mp3",".wav",".ogg",".m4a",".mp4",".avi",".mov",".webm",".pdf",".doc",".docx",".zip",".rar",".gz",".ttf",".woff",".woff2"]),A=async(i,{fs:e,cache:s})=>{const g=c.startTiming(),o=(await s.load("versions-config","versions-config")).data,t=new Map,n=new Map,r=new Set,l=new D;n.set(".","/"),n.set("/","/");const u=e.scan().sort((a,m)=>m.relativePath.localeCompare(a.relativePath));for(const{relativePath:a}of u){if(I.has(f.posix.extname(a)))continue;const{data:m}=await s.load(a,"is-ignored");if(m)continue;const h=b(a).replace(new RegExp("^(@i18n|@l10n)\\/"),""),w=v(a,o);N(h,{defaultVersion:w,fileSlugs:t,dirSlugs:n,allFileSlugsList:r,githubSlugger:l})}return c.verboseTime(g,"Calculated slugs. Number of file paths processed: "+u.length),{fileSlugs:t,dirSlugs:n}};function N(i,e){const s=e.fileSlugs.get(i);if(s)return s;let g=f.posix.dirname(i);const o=z(g,e)||"",{baseName:t,isIndexFile:n}=F(i),r=e.dirSlugs.has(f.posix.join(g,t));let l;if(!n&&r){const u=E(p(o,t));e.allFileSlugsList.has(u)||(l=u)}l||(l=n&&e.dirSlugs.get(g)||e.githubSlugger.slug(p(o,t))),l=d(l),e.fileSlugs.set(i,l),e.allFileSlugsList.add(l)}function z(i,e){if(e.dirSlugs.has(i))return e.dirSlugs.get(i);const s=d(f.posix.normalize(i)).split("/");let g="/",o="";for(const t of s){o=f.posix.join(o,t);const n=T(t,e.defaultVersion);let r=e.dirSlugs.get(o)||e.githubSlugger.slug(p("/",g,n));r.endsWith("/")||(r=r+"/"),e.dirSlugs.set(o,r),g=r}return e.dirSlugs.get(i)}function T(i,e){if(!i.startsWith(S))return i;const s=i.substring(S.length);return s===e?"":s}export{I as IGNORED_EXTS,A as contentSlugsLoader};
1
+ import d from"path";import{combineUrls as c}from"@redocly/theme/core/utils";import{VERSION_SEPARATOR as p}from"../../../constants/common.js";import{removeTrailingSlash as h}from"../../../../utils/url/remove-trailing-slash.js";import{slash as V}from"../../../../utils/path/slash.js";import{logger as w}from"../../../tools/notifiers/logger.js";import{getDefaultVersionByPath as D}from"./versions-config-loader.js";import{GithubSlugger as E,slug as S}from"../../../utils/index.js";import{parseBaseName as F}from"../../utils.js";const I=new Set([".jpg",".jpeg",".png",".gif",".webp",".svg",".ico",".avif",".mp3",".wav",".ogg",".m4a",".mp4",".avi",".mov",".webm",".pdf",".doc",".docx",".zip",".rar",".gz",".ttf",".woff",".woff2"]),A=async(i,{fs:e,cache:n})=>{const a=w.startTiming(),r=(await n.load("versions-config","versions-config")).data,t=new Map,l=new Map,o=new Set,s={pageVsPage:0,dirVsDir:0},g=new E;l.set(".","/"),l.set("/","/");const f=e.scan().sort((u,m)=>m.relativePath.localeCompare(u.relativePath));for(const{relativePath:u}of f){if(I.has(d.posix.extname(u)))continue;const{data:m}=await n.load(u,"is-ignored");if(m)continue;const b=V(u).replace(new RegExp("^(@i18n|@l10n)\\/"),""),v=D(u,r);N(b,{defaultVersion:v,fileSlugs:t,dirSlugs:l,allFileSlugsList:o,githubSlugger:g,collisions:s})}return w.verboseTime(a,"Calculated slugs. Number of file paths processed: "+f.length),{fileSlugs:t,dirSlugs:l,collisions:s}};function N(i,e){const n=e.fileSlugs.get(i);if(n)return n;let a=d.posix.dirname(i);const r=z(a,e)||"",{baseName:t,isIndexFile:l}=F(i),o=e.dirSlugs.has(d.posix.join(a,t));let s;if(!l&&o){const g=S(c(r,t));e.allFileSlugsList.has(g)||(s=g)}if(!s){const g=l?e.dirSlugs.get(a):void 0;if(g)s=g;else{const f=c(r,t),u=S(f);s=e.githubSlugger.slug(f),s!==u&&e.collisions.pageVsPage++}}s=h(s),e.fileSlugs.set(i,s),e.allFileSlugsList.add(s)}function z(i,e){if(e.dirSlugs.has(i))return e.dirSlugs.get(i);const n=h(d.posix.normalize(i)).split("/");let a="/",r="";for(const t of n){r=d.posix.join(r,t);const l=T(t,e.defaultVersion);let o=e.dirSlugs.get(r);if(!o){const s=c("/",a,l),g=S(s);o=e.githubSlugger.slug(s),o!==g&&e.collisions.dirVsDir++}o.endsWith("/")||(o=o+"/"),e.dirSlugs.set(r,o),a=o}return e.dirSlugs.get(i)}function T(i,e){if(!i.startsWith(p))return i;const n=i.substring(p.length);return n===e?"":n}export{I as IGNORED_EXTS,A as contentSlugsLoader};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/realm",
3
- "version": "0.137.0-next.0",
3
+ "version": "0.137.0-next.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "bin": {
@@ -93,15 +93,15 @@
93
93
  "xpath": "0.0.34",
94
94
  "yaml-ast-parser": "0.0.43",
95
95
  "zod": "^3.25.76",
96
- "@redocly/api-docs": "0.2.0-next.0",
97
- "@redocly/asyncapi-docs": "1.14.0-next.0",
96
+ "@redocly/api-docs": "0.2.0-next.1",
97
+ "@redocly/asyncapi-docs": "1.14.0-next.1",
98
98
  "@redocly/config": "0.53.1",
99
- "@redocly/graphql-docs": "1.14.0-next.0",
100
- "@redocly/openapi-docs": "3.25.0-next.0",
99
+ "@redocly/graphql-docs": "1.14.0-next.1",
100
+ "@redocly/openapi-docs": "3.25.0-next.1",
101
101
  "@redocly/portal-legacy-ui": "0.19.0",
102
- "@redocly/portal-plugin-mock-server": "0.22.0-next.0",
103
- "@redocly/realm-asyncapi-sdk": "0.14.0",
104
- "@redocly/theme": "0.69.0-next.0"
102
+ "@redocly/portal-plugin-mock-server": "0.22.0-next.1",
103
+ "@redocly/realm-asyncapi-sdk": "0.15.0-next.0",
104
+ "@redocly/theme": "0.69.0-next.1"
105
105
  },
106
106
  "peerDependencies": {
107
107
  "react": "^19.2.7",