@redocly/reef 0.130.1 → 0.131.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.
Files changed (191) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/bin.d.ts +1 -0
  3. package/dist/bin.js +1 -1
  4. package/dist/cli/develop.js +1 -1
  5. package/dist/cli/prepare/copy-env-files.js +1 -1
  6. package/dist/cli/prepare/index.js +1 -1
  7. package/dist/cli/telemetry/index.js +1 -1
  8. package/dist/client/App.js +1 -1
  9. package/dist/client/ErrorBoundary.js +1 -1
  10. package/dist/client/app/Sidebar/helpers/filter-out-versioned-items.js +1 -1
  11. package/dist/client/app/hooks/useRouteChangeTracker.js +1 -1
  12. package/dist/client/app/search/useAiSearch.js +1 -1
  13. package/dist/client/browser-entry.js +5 -5
  14. package/dist/client/providers/hooks.js +1 -1
  15. package/dist/client/runtime/loader.js +1 -1
  16. package/dist/config/env-config.d.ts +17 -0
  17. package/dist/config/env-config.js +1 -0
  18. package/dist/config/env-schema.d.ts +242 -0
  19. package/dist/config/env-schema.js +3 -0
  20. package/dist/config/env-schemas/api-urls.d.ts +24 -0
  21. package/dist/config/env-schemas/api-urls.js +1 -0
  22. package/dist/config/env-schemas/auth.d.ts +42 -0
  23. package/dist/config/env-schemas/auth.js +1 -0
  24. package/dist/config/env-schemas/catalog.d.ts +12 -0
  25. package/dist/config/env-schemas/catalog.js +1 -0
  26. package/dist/config/env-schemas/database.d.ts +15 -0
  27. package/dist/config/env-schemas/database.js +1 -0
  28. package/dist/config/env-schemas/environment-detection.d.ts +24 -0
  29. package/dist/config/env-schemas/environment-detection.js +1 -0
  30. package/dist/config/env-schemas/feature-flags.d.ts +24 -0
  31. package/dist/config/env-schemas/feature-flags.js +1 -0
  32. package/dist/config/env-schemas/organization-project.d.ts +27 -0
  33. package/dist/config/env-schemas/organization-project.js +1 -0
  34. package/dist/config/env-schemas/scorecards.d.ts +12 -0
  35. package/dist/config/env-schemas/scorecards.js +1 -0
  36. package/dist/config/env-schemas/search.d.ts +21 -0
  37. package/dist/config/env-schemas/search.js +1 -0
  38. package/dist/config/env-schemas/server-config.d.ts +51 -0
  39. package/dist/config/env-schemas/server-config.js +1 -0
  40. package/dist/config/env-schemas/site.d.ts +12 -0
  41. package/dist/config/env-schemas/site.js +1 -0
  42. package/dist/config/env-schemas/ssr.d.ts +18 -0
  43. package/dist/config/env-schemas/ssr.js +1 -0
  44. package/dist/config/env-schemas/telemetry.d.ts +15 -0
  45. package/dist/config/env-schemas/telemetry.js +1 -0
  46. package/dist/config/env-schemas/test.d.ts +22 -0
  47. package/dist/config/env-schemas/test.js +1 -0
  48. package/dist/constants/common.d.ts +1 -1
  49. package/dist/constants/common.js +1 -1
  50. package/dist/server/api-routes/import-api-routes-handlers.js +1 -1
  51. package/dist/server/api-routes/run-api-routes-worker.js +1 -1
  52. package/dist/server/constants/common.js +1 -1
  53. package/dist/server/entitlements/entitlements-provider.js +1 -1
  54. package/dist/server/esbuild/esbuild-logger.js +2 -2
  55. package/dist/server/esbuild/esbuild.js +2 -2
  56. package/dist/server/esbuild/plugins/assets-resolver.js +1 -1
  57. package/dist/server/esbuild/plugins/esbuild-compile-resolver.js +1 -1
  58. package/dist/server/esbuild/plugins/styled-components-ssr.js +1 -1
  59. package/dist/server/fs/last-modified-tracker.js +1 -1
  60. package/dist/server/fs/utils/is-loader-cache-enabled.js +1 -1
  61. package/dist/server/node-bundle-entry.js +1 -1
  62. package/dist/server/plugins/analytics/adobe/index.js +1 -1
  63. package/dist/server/plugins/analytics/amplitude/index.js +1 -1
  64. package/dist/server/plugins/analytics/fullstory/index.js +1 -1
  65. package/dist/server/plugins/analytics/ga/index.js +1 -1
  66. package/dist/server/plugins/analytics/gtm/browser-hooks.js +1 -1
  67. package/dist/server/plugins/analytics/gtm/index.js +1 -1
  68. package/dist/server/plugins/analytics/heap/index.js +1 -1
  69. package/dist/server/plugins/analytics/rudderstack/index.js +1 -1
  70. package/dist/server/plugins/analytics/segment/index.js +1 -1
  71. package/dist/server/plugins/catalog-entities/database/catalog-entities-service.d.ts +4 -52
  72. package/dist/server/plugins/catalog-entities/database/catalog-entities-service.js +1 -1
  73. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-db-record.d.ts +1 -0
  74. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-read-model.js +1 -1
  75. package/dist/server/plugins/catalog-entities/database/mappers/{create-entity-relation.d.ts → create-entity-relation-read-model.d.ts} +2 -2
  76. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation-read-model.js +1 -0
  77. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.js +3 -3
  78. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-repository.d.ts +5 -31
  79. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-write-repository.js +1 -1
  80. package/dist/server/plugins/catalog-entities/database/repositories/remote/catalog-entities-remote-repository.d.ts +3 -4
  81. package/dist/server/plugins/catalog-entities/database/repositories/remote/catalog-entities-remote-repository.js +1 -1
  82. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/asyncapi-entities-extractor.js +1 -1
  83. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.d.ts +2 -1
  84. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.js +1 -1
  85. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.js +1 -1
  86. package/dist/server/plugins/catalog-entities/extensions/extractors/fs-entities-extractor.js +1 -1
  87. package/dist/server/plugins/catalog-entities/plugin.js +1 -1
  88. package/dist/server/plugins/catalog-entities/schemas/read-model-schemas.d.ts +25 -164
  89. package/dist/server/plugins/catalog-entities/schemas/read-model-schemas.js +0 -1
  90. package/dist/server/plugins/config-parser/loaders/utils/read-and-validate-config.js +1 -1
  91. package/dist/server/plugins/default-theme/index.js +1 -1
  92. package/dist/server/plugins/entitlements/index.js +1 -1
  93. package/dist/server/plugins/lifecycle.js +2 -2
  94. package/dist/server/plugins/markdown/markdoc/import-user-tags.js +1 -1
  95. package/dist/server/plugins/markdown/markdoc/plugins/render-mermaid.js +1 -1
  96. package/dist/server/plugins/mcp/auth/auth-handlers.js +1 -1
  97. package/dist/server/plugins/mcp/handlers/handle-mcp-request.js +1 -1
  98. package/dist/server/plugins/nav-utils.js +1 -1
  99. package/dist/server/plugins/openapi-docs/index.js +1 -1
  100. package/dist/server/plugins/scorecard-classic/index.js +1 -1
  101. package/dist/server/plugins/scorecards/plugin.js +1 -1
  102. package/dist/server/plugins/scorecards/workers/run-scorecards-worker.js +1 -1
  103. package/dist/server/plugins/search/ai-indexer/prepare-ai-search-documents.js +1 -1
  104. package/dist/server/plugins/search/documents/search-documents.js +1 -1
  105. package/dist/server/plugins/search/engines/flexsearch/index.js +1 -1
  106. package/dist/server/plugins/search/engines/typesense/index.js +1 -1
  107. package/dist/server/plugins/search/index.js +1 -1
  108. package/dist/server/plugins/search/llmstxt/index.js +5 -5
  109. package/dist/server/plugins/search/utils.js +1 -1
  110. package/dist/server/plugins/sidebars/index.js +2 -2
  111. package/dist/server/plugins/sso/index.js +1 -1
  112. package/dist/server/providers/database/base-repository.js +1 -1
  113. package/dist/server/providers/database/database-connection-factory.js +1 -1
  114. package/dist/server/providers/database/database-preconnect-service.js +1 -1
  115. package/dist/server/providers/database/databases/sqld-sqlite/drizzle.config.js +1 -1
  116. package/dist/server/ssr/render.js +1 -1
  117. package/dist/server/ssr/server-side-props/get-server-props-from-user-handler.js +1 -1
  118. package/dist/server/ssr/utils.js +8 -8
  119. package/dist/server/store.d.ts +4 -4
  120. package/dist/server/store.js +1 -1
  121. package/dist/server/telemetry/index.js +1 -1
  122. package/dist/server/tools/notifiers/formatter.js +3 -3
  123. package/dist/server/tools/notifiers/helpers/colors.js +1 -1
  124. package/dist/server/tools/notifiers/logger.js +2 -2
  125. package/dist/server/tools/notifiers/reporter.js +6 -6
  126. package/dist/server/tools/notifiers/terminal-manager.js +4 -4
  127. package/dist/server/utils/envs/load-env-variables.js +1 -1
  128. package/dist/server/utils/is-catalog-entities-enabled.js +1 -1
  129. package/dist/server/utils/is-scorecards-enabled.js +1 -1
  130. package/dist/server/utils/lifecycle-hooks.js +1 -1
  131. package/dist/server/utils/report-all-errors.js +1 -1
  132. package/dist/server/utils/set-execution-mode.d.ts +5 -0
  133. package/dist/server/utils/set-execution-mode.js +1 -0
  134. package/dist/server/version.js +1 -1
  135. package/dist/server/web-server/handle-api-route-request.js +1 -1
  136. package/dist/server/web-server/http.js +2 -2
  137. package/dist/server/web-server/middleware/apiKeyMiddleware.js +1 -1
  138. package/dist/server/web-server/middleware/catalogAuthMiddleware.js +1 -1
  139. package/dist/server/web-server/middleware/corsMiddleware.js +1 -1
  140. package/dist/server/web-server/middleware/dynamic-middleware/dynamic-middleware.js +1 -1
  141. package/dist/server/web-server/middleware/idleTimeoutMiddleware.js +1 -1
  142. package/dist/server/web-server/routes/auth.js +1 -1
  143. package/dist/server/web-server/routes/catalog/catalog-relations.js +1 -1
  144. package/dist/server/web-server/routes/catalog/catalog.js +1 -1
  145. package/dist/server/web-server/routes/catalog/dto/read-entity-dto.d.ts +3 -0
  146. package/dist/server/web-server/routes/catalog/dto/read-entity-dto.js +0 -0
  147. package/dist/server/web-server/routes/catalog/helpers/create-entity-relation-update-schema.d.ts +43 -0
  148. package/dist/server/web-server/routes/catalog/helpers/create-entity-relation-update-schema.js +1 -0
  149. package/dist/server/web-server/routes/catalog/helpers/create-entity-schema.d.ts +6823 -0
  150. package/dist/server/web-server/routes/catalog/helpers/create-entity-schema.js +1 -0
  151. package/dist/server/web-server/routes/catalog/helpers/create-entity-update-schema.d.ts +1102 -0
  152. package/dist/server/web-server/routes/catalog/helpers/create-entity-update-schema.js +1 -0
  153. package/dist/server/web-server/routes/catalog/mappers/map-entity-read-model-schema-to-entity-read-dto.d.ts +4 -0
  154. package/dist/server/web-server/routes/catalog/mappers/map-entity-read-model-schema-to-entity-read-dto.js +1 -0
  155. package/dist/server/web-server/routes/catalog/parsers/entities/parse-entities.d.ts +4 -0
  156. package/dist/server/web-server/routes/catalog/parsers/entities/parse-entities.js +1 -0
  157. package/dist/server/web-server/routes/catalog/parsers/entities/parse-entity-update-data.d.ts +4 -0
  158. package/dist/server/web-server/routes/catalog/parsers/entities/parse-entity-update-data.js +1 -0
  159. package/dist/server/web-server/routes/catalog/parsers/entities/parse-entity.d.ts +4 -0
  160. package/dist/server/web-server/routes/catalog/parsers/entities/parse-entity.js +1 -0
  161. package/dist/server/web-server/routes/catalog/parsers/relations/parse-entities-relations.d.ts +13 -0
  162. package/dist/server/web-server/routes/catalog/parsers/relations/parse-entities-relations.js +1 -0
  163. package/dist/server/web-server/routes/catalog/parsers/relations/parse-entity-relation-update-data.d.ts +13 -0
  164. package/dist/server/web-server/routes/catalog/parsers/relations/parse-entity-relation-update-data.js +1 -0
  165. package/dist/server/web-server/routes/catalog/parsers/relations/parse-entity-relation.d.ts +13 -0
  166. package/dist/server/web-server/routes/catalog/parsers/relations/parse-entity-relation.js +1 -0
  167. package/dist/server/web-server/routes/dynamic-route.js +1 -1
  168. package/dist/server/web-server/routes/error.js +1 -1
  169. package/dist/server/web-server/routes/index.js +1 -1
  170. package/dist/server/web-server/routes/info.js +1 -1
  171. package/dist/server/web-server/routes/mcp-oauth.js +1 -1
  172. package/dist/server/web-server/routes/otel/otel.js +1 -1
  173. package/dist/server/web-server/routes/page-data.js +1 -1
  174. package/dist/server/web-server/routes/path-prefix-redirect.js +1 -1
  175. package/dist/server/workers/worker-pool.js +1 -1
  176. package/package.json +11 -10
  177. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-relation.js +0 -1
  178. package/dist/server/plugins/catalog-entities/entities/validate-entity.d.ts +0 -8
  179. package/dist/server/plugins/catalog-entities/entities/validate-entity.js +0 -1
  180. package/dist/server/utils/envs/is-build-mode.d.ts +0 -2
  181. package/dist/server/utils/envs/is-build-mode.js +0 -1
  182. package/dist/server/utils/envs/is-develop-mode.d.ts +0 -7
  183. package/dist/server/utils/envs/is-develop-mode.js +0 -1
  184. package/dist/server/utils/envs/is-production-mode.d.ts +0 -10
  185. package/dist/server/utils/envs/is-production-mode.js +0 -1
  186. package/dist/utils/env/is-local-development.d.ts +0 -13
  187. package/dist/utils/env/is-local-development.js +0 -1
  188. package/dist/utils/env/is-production.d.ts +0 -13
  189. package/dist/utils/env/is-production.js +0 -1
  190. package/dist/utils/env/is-web-view.d.ts +0 -14
  191. package/dist/utils/env/is-web-view.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,11 +1,44 @@
1
1
  # @redocly/reef
2
2
 
3
+ ## 0.131.0-next.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 713994c780: Fixed an issue where the execution environment wasn't recognized correctly causing build failures.
8
+ - 1fa1e85405: Fixed an issue where the login button was not displayed when a default identity provider was configured.
9
+
3
10
  ## 0.130.1
4
11
 
5
12
  ### Patch Changes
6
13
 
7
14
  - 69f13ea40c: Fixed an issue where the login button was not displayed when a default identity provider was configured.
8
15
 
16
+ ## 0.131.0-next.0
17
+
18
+ ### Minor Changes
19
+
20
+ - 1d7c82d350: Added support for `badges` option in `sidebars.yaml` to display visual indicators next to sidebar item labels.
21
+
22
+ ### Patch Changes
23
+
24
+ - 7f8301f1ed: Fixed an issue where the **Connect to MCP** button ignored the configured prefix path.
25
+ - 8b42559201: Fixed an issue where sidebar groups were displayed even though they contained no valid items in the active version.
26
+ - 7e3400d4a8: Fixed page actions overlapping the navbar.
27
+ - 9241c37455: Enter prerelease mode.
28
+ - 1497f955ca: Updated `@redocly/openapi-core` to version `2.17.0`.
29
+ - Updated dependencies [7f8301f1ed]
30
+ - Updated dependencies [7e3400d4a8]
31
+ - Updated dependencies [aca4d30c49]
32
+ - Updated dependencies [9241c37455]
33
+ - Updated dependencies [1497f955ca]
34
+ - @redocly/theme@0.63.0-next.0
35
+ - @redocly/portal-plugin-mock-server@0.16.0-next.0
36
+ - @redocly/realm-asyncapi-sdk@0.9.0-next.0
37
+ - @redocly/portal-legacy-ui@0.14.0-next.0
38
+ - @redocly/asyncapi-docs@1.8.0-next.0
39
+ - @redocly/graphql-docs@1.8.0-next.0
40
+ - @redocly/openapi-docs@3.19.0-next.0
41
+
9
42
  ## 0.130.0
10
43
 
11
44
  ### Minor Changes
package/dist/bin.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
+ import './server/utils/set-execution-mode.js';
2
3
  import './cli/utils/node-version-check.js';
3
4
  import './server/node-fetch-polyfill.js';
4
5
  //# sourceMappingURL=bin.d.ts.map
package/dist/bin.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import"./cli/utils/node-version-check.js";import o from"mri";import*as r from"node:path";import{tmpdir as A}from"node:os";import*as x from"node:fs";import"./server/node-fetch-polyfill.js";import{cliCommandNames as g}from"./constants/common.js";import{initPlugins as T}from"./server/plugins/lifecycle.js";import{loadEnvVariables as y}from"./server/utils/envs/load-env-variables.js";import{PORTAL_VERSION as k}from"./server/version.js";import{logger as p}from"./server/tools/notifiers/logger.js";import{reporter as t}from"./server/tools/notifiers/reporter.js";import{sha as R}from"./server/utils/crypto/sha.js";import{develop as S}from"./cli/develop.js";import{eject as V}from"./cli/eject/index.js";import{beforeCommand as w}from"./server/utils/lifecycle-hooks.js";import{Store as C}from"./server/store.js";import{prepare as I}from"./cli/prepare/index.js";import{fromCurrentDir as L}from"./server/utils/paths.js";import{translationsCliOpts as _}from"./cli/translations/options.js";import{generateTranslations as M}from"./cli/translations/index.js";import{EntitlementsProvider as N}from"./server/entitlements/entitlements-provider.js";import{isValidPlan as F}from"./server/entitlements/is-valid-plan.js";import{stopAllCompilers as U}from"./server/esbuild/esbuild.js";import{copyLibsqlPrebuiltBinary as $}from"./cli/prepare/libsql/copy-prebuilt-binary.js";import{telemetry as d}from"./cli/telemetry/index.js";import{stats as q}from"./cli/stats/index.js";import{statsCliOpts as B}from"./cli/stats/options.js";const n=process.argv[2];let i;const f={alias:{d:"project-dir",p:"port"},default:{"project-dir":process.env.REDOCLY_CONTENT_DIR||process.cwd(),outdir:"public"}},G={alias:f.alias,default:{...f.default,plan:"enterprise"}},Y={alias:{d:"prepareDir"},default:{prepareDir:"public"}},z={boolean:["force"],alias:{f:"force",d:"project-dir"},default:{"project-dir":process.cwd()}};process.on("uncaughtException",async function(e){e?.code==="ERR_INVALID_STATE"?console.log("Ignore premature close error"):(p.error("Uncaught exception occurred. Stopping compilers."),await U(),p.error("Exiting due to uncaught exception"),await t.panic(e))});try{n||await t.panicOnContentError("Command not specified.");const e=N.instance();switch(["prepare","serve","stats"].includes(n)&&await e.init(),["eject","translate"].includes(n)&&await e.init({developModePlan:"enterprise"}),n){case"develop":case"preview":const a=o(process.argv.slice(3),G),E=r.resolve(a["project-dir"]),j=r.join(A(),"redocly-public-"+R(E)),l=a.plan.toLowerCase();F(l)||await t.panicOnContentError(`Invalid --plan argument value '${l}'.`),await e.init({developModePlan:l}),i=new C({contentDir:r.resolve(a["project-dir"]),outdir:j,serverOutDir:L(import.meta.url,"./server/esbuild/cache/server")}),await w(g.DEVELOP,a,i),await S(a,i);break;case"prepare":const s=o(process.argv.slice(3),f),u=r.resolve(r.join(s.outdir,"server"));i=new C({contentDir:r.resolve(s["project-dir"]),outdir:r.resolve(s.outdir,"client"),serverOutDir:u}),await w(g.PREPARE,s,i),$(u),await I(s,i);break;case"serve":await y();const b=o(process.argv.slice(3),Y),O=r.resolve(b.prepareDir);d.sendServeCliCommandExecutedMessage();const v=r.join(O,"server","index.mjs");x.existsSync(v)||await t.panic("Server not found. Please run `realm prepare` first"),import(v).catch(async c=>{await t.panic("Failed to load server",c)});break;case"eject":e.canAccessFeature("themeEjecting")||await t.panicOnContentError('The "eject" command is not available for this project');const m=o(process.argv.slice(3),z),{lifecycleContext:{getConfig:h,fs:D}}=await T({outdir:"",contentDir:r.resolve(m["project-dir"]),setGlobalConfig:()=>null});D.dispose(),d.sendCliCommandEjectExecutedMessage([{object:"cli_command",arguments:m}]),await V({...m,config:await h()}),p.clearAllTimeouts();break;case"translate":if(e.canAccessFeature("l10n")){const c=o(process.argv.slice(3),_);d.sendCliCommandTranslateExecutedMessage({arguments:c}),await M(c)}else await t.panicOnContentError('The "translate" command is not available for this project');break;case"stats":const P=o(process.argv.slice(3),B);await q(P);break;case"--version":console.log(k);break;default:await t.panicOnContentError(`Unknown command "${n}"`)}}catch(e){p.error("Exiting due to uncaught exception"),await t.panic(e)}
2
+ import"./server/utils/set-execution-mode.js";import"./cli/utils/node-version-check.js";import o from"mri";import*as r from"node:path";import{tmpdir as A}from"node:os";import*as x from"node:fs";import"./server/node-fetch-polyfill.js";import{cliCommandNames as g}from"./constants/common.js";import{initPlugins as T}from"./server/plugins/lifecycle.js";import{loadEnvVariables as y}from"./server/utils/envs/load-env-variables.js";import{PORTAL_VERSION as k}from"./server/version.js";import{logger as p}from"./server/tools/notifiers/logger.js";import{reporter as t}from"./server/tools/notifiers/reporter.js";import{sha as R}from"./server/utils/crypto/sha.js";import{envConfig as S}from"./config/env-config.js";import{develop as V}from"./cli/develop.js";import{eject as I}from"./cli/eject/index.js";import{beforeCommand as w}from"./server/utils/lifecycle-hooks.js";import{Store as C}from"./server/store.js";import{prepare as L}from"./cli/prepare/index.js";import{fromCurrentDir as _}from"./server/utils/paths.js";import{translationsCliOpts as M}from"./cli/translations/options.js";import{generateTranslations as N}from"./cli/translations/index.js";import{EntitlementsProvider as F}from"./server/entitlements/entitlements-provider.js";import{isValidPlan as U}from"./server/entitlements/is-valid-plan.js";import{stopAllCompilers as $}from"./server/esbuild/esbuild.js";import{copyLibsqlPrebuiltBinary as q}from"./cli/prepare/libsql/copy-prebuilt-binary.js";import{telemetry as d}from"./cli/telemetry/index.js";import{stats as B}from"./cli/stats/index.js";import{statsCliOpts as G}from"./cli/stats/options.js";const n=process.argv[2];let i;const f={alias:{d:"project-dir",p:"port"},default:{"project-dir":S.REDOCLY_CONTENT_DIR||process.cwd(),outdir:"public"}},Y={alias:f.alias,default:{...f.default,plan:"enterprise"}},z={alias:{d:"prepareDir"},default:{prepareDir:"public"}},H={boolean:["force"],alias:{f:"force",d:"project-dir"},default:{"project-dir":process.cwd()}};process.on("uncaughtException",async function(e){e?.code==="ERR_INVALID_STATE"?console.log("Ignore premature close error"):(p.error("Uncaught exception occurred. Stopping compilers."),await $(),p.error("Exiting due to uncaught exception"),await t.panic(e))});try{n||await t.panicOnContentError("Command not specified.");const e=F.instance();switch(["prepare","serve","stats"].includes(n)&&await e.init(),["eject","translate"].includes(n)&&await e.init({developModePlan:"enterprise"}),n){case"develop":case"preview":const a=o(process.argv.slice(3),Y),E=r.resolve(a["project-dir"]),j=r.join(A(),"redocly-public-"+R(E)),l=a.plan.toLowerCase();U(l)||await t.panicOnContentError(`Invalid --plan argument value '${l}'.`),await e.init({developModePlan:l}),i=new C({contentDir:r.resolve(a["project-dir"]),outdir:j,serverOutDir:_(import.meta.url,"./server/esbuild/cache/server")}),await w(g.DEVELOP,a,i),await V(a,i);break;case"prepare":const s=o(process.argv.slice(3),f),u=r.resolve(r.join(s.outdir,"server"));i=new C({contentDir:r.resolve(s["project-dir"]),outdir:r.resolve(s.outdir,"client"),serverOutDir:u}),await w(g.PREPARE,s,i),q(u),await L(s,i);break;case"serve":await y();const b=o(process.argv.slice(3),z),O=r.resolve(b.prepareDir);d.sendServeCliCommandExecutedMessage();const v=r.join(O,"server","index.mjs");x.existsSync(v)||await t.panic("Server not found. Please run `realm prepare` first"),import(v).catch(async c=>{await t.panic("Failed to load server",c)});break;case"eject":e.canAccessFeature("themeEjecting")||await t.panicOnContentError('The "eject" command is not available for this project');const m=o(process.argv.slice(3),H),{lifecycleContext:{getConfig:h,fs:D}}=await T({outdir:"",contentDir:r.resolve(m["project-dir"]),setGlobalConfig:()=>null});D.dispose(),d.sendCliCommandEjectExecutedMessage([{object:"cli_command",arguments:m}]),await I({...m,config:await h()}),p.clearAllTimeouts();break;case"translate":if(e.canAccessFeature("l10n")){const c=o(process.argv.slice(3),M);d.sendCliCommandTranslateExecutedMessage({arguments:c}),await N(c)}else await t.panicOnContentError('The "translate" command is not available for this project');break;case"stats":const P=o(process.argv.slice(3),G);await B(P);break;case"--version":console.log(k);break;default:await t.panicOnContentError(`Unknown command "${n}"`)}}catch(e){p.error("Exiting due to uncaught exception"),await t.panic(e)}
@@ -1 +1 @@
1
- import{logger as t}from"../server/tools/notifiers/logger.js";import{reporter as u}from"../server/tools/notifiers/reporter.js";import{green as v}from"../server/tools/notifiers/helpers/colors.js";import{resolveCache as g}from"../server/esbuild/plugins/themes-resolver.js";import{getBilledPagesCount as m}from"../server/utils/index.js";import{createClientCompiler as w,createServerCompiler as C}from"../server/esbuild/esbuild.js";import{initPlugins as h,runPlugins as p,writeClientEntries as S}from"../server/plugins/lifecycle.js";import{startDevServer as E}from"../server/web-server/dev-server.js";import{validateAllMarkdowns as f}from"../server/plugins/markdown/compiler.js";import{reportAllErrors as b}from"../server/utils/report-all-errors.js";import{copyMigrationsFolder as R}from"../server/providers/database/copy-migrations.js";async function j(i,e){t.info("Starting project preview mode."),S(e),t.startTiming("initial-js"),await y(e),t.infoTime("initial-js","JavaScript compiled");const{pluginInstances:a,lifecycleContext:n}=await h({contentDir:e.contentDir,outdir:e.outdir,serverOutDir:void 0,devLogin:i["dev-login"]!==!1,setGlobalConfig:e.setGlobalConfig});e.lifecycleContext=n,R(e),await p(a,e,n,{failFast:!0});const s=async()=>{const r=performance.now();u.clearErrors(),await p(a,e,n),process.env.REDOCLY_EXP_DISABLE_MD_VALIDATION!=="true"?await f(e,n):t.info("Skipping markdown validation step"),L().then(async()=>{await b(n);const l=m(e.getAllRoutes()),o=u.summary(` \u{1F440} Last change processed in ${v(Math.round(performance.now()-r)+"ms")}`,l);e.runListeners("errors-updated",void 0,o),e.runListeners("pages-updated",void 0,l),e.runListeners("routes-updated")})};process.env.REDOCLY_EXP_DISABLE_MD_VALIDATION!=="true"?await f(e,n):t.info("Skipping markdown validation step"),await b(n);const d=m(e.getAllRoutes());u.summary(" \u{1F440} Watching for changes...",d),e.runListeners("pages-updated",void 0,d),n.fs.watch(async()=>{g.clear(),await s()}),t.verbose("Starting development server."),await E(e,n,{port:Number(i.port||4e3)}),u.listenStdin()}async function y(i){let e=!0,a=!0;const n=r=>{r==="client"?e=!0:a=!0,i.runListeners("build-started"),e!=a&&(i.startEsbuildRun(),t.startTiming("rebuild"))},s=async r=>{r==="client"?e=!1:a=!1,!(e||a)&&(i.finishEsbuildRun(),i.buildRevision++,t.infoTime("rebuild","JavaScript re-compiled"),await i.reloadMarkdocOptions(),i.markUserCodeReady(),i.runListeners("build-updated"),i.lifecycleContext&&i.buildRevision>1&&i.lifecycleContext.fs.emitCodeUpdated())},d=[new Promise((r,l)=>{const o={label:"client",buildStart(){t.verbose("Start compiling client code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Client compiled"),r(!0)},rebuildStart:()=>n("client"),rebuildEnd:()=>s("client")};w(i,i.outdir,"development",o).then(c=>c.watch()).catch(l)}),new Promise((r,l)=>{const o={label:"server",buildStart(){t.verbose("Start compiling server code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Server compiled"),r(!0)},rebuildStart:()=>n("server"),rebuildEnd:()=>s("server")};C(i,i.serverOutDir,"development",o).then(c=>c.watch()).catch(l)})];await Promise.all(d),await i.reloadMarkdocOptions()}function L(){return new Promise(i=>{setTimeout(i,0)})}export{j as develop};
1
+ import{logger as t}from"../server/tools/notifiers/logger.js";import{reporter as u}from"../server/tools/notifiers/reporter.js";import{green as v}from"../server/tools/notifiers/helpers/colors.js";import{envConfig as m}from"../config/env-config.js";import{resolveCache as w}from"../server/esbuild/plugins/themes-resolver.js";import{getBilledPagesCount as p}from"../server/utils/index.js";import{createClientCompiler as C,createServerCompiler as h}from"../server/esbuild/esbuild.js";import{initPlugins as S,runPlugins as f,writeClientEntries as E}from"../server/plugins/lifecycle.js";import{startDevServer as R}from"../server/web-server/dev-server.js";import{validateAllMarkdowns as b}from"../server/plugins/markdown/compiler.js";import{reportAllErrors as g}from"../server/utils/report-all-errors.js";import{copyMigrationsFolder as y}from"../server/providers/database/copy-migrations.js";async function F(i,e){t.info("Starting project preview mode."),E(e),t.startTiming("initial-js"),await L(e),t.infoTime("initial-js","JavaScript compiled");const{pluginInstances:a,lifecycleContext:n}=await S({contentDir:e.contentDir,outdir:e.outdir,serverOutDir:void 0,devLogin:i["dev-login"]!==!1,setGlobalConfig:e.setGlobalConfig});e.lifecycleContext=n,y(e),await f(a,e,n,{failFast:!0});const d=async()=>{const r=performance.now();u.clearErrors(),await f(a,e,n),m.REDOCLY_EXP_DISABLE_MD_VALIDATION!=="true"?await b(e,n):t.info("Skipping markdown validation step"),D().then(async()=>{await g(n);const l=p(e.getAllRoutes()),o=u.summary(` \u{1F440} Last change processed in ${v(Math.round(performance.now()-r)+"ms")}`,l);e.runListeners("errors-updated",void 0,o),e.runListeners("pages-updated",void 0,l),e.runListeners("routes-updated")})};m.REDOCLY_EXP_DISABLE_MD_VALIDATION!=="true"?await b(e,n):t.info("Skipping markdown validation step"),await g(n);const s=p(e.getAllRoutes());u.summary(" \u{1F440} Watching for changes...",s),e.runListeners("pages-updated",void 0,s),n.fs.watch(async()=>{w.clear(),await d()}),t.verbose("Starting development server."),await R(e,n,{port:Number(i.port||4e3)}),u.listenStdin()}async function L(i){let e=!0,a=!0;const n=r=>{r==="client"?e=!0:a=!0,i.runListeners("build-started"),e!=a&&(i.startEsbuildRun(),t.startTiming("rebuild"))},d=async r=>{r==="client"?e=!1:a=!1,!(e||a)&&(i.finishEsbuildRun(),i.buildRevision++,t.infoTime("rebuild","JavaScript re-compiled"),await i.reloadMarkdocOptions(),i.markUserCodeReady(),i.runListeners("build-updated"),i.lifecycleContext&&i.buildRevision>1&&i.lifecycleContext.fs.emitCodeUpdated())},s=[new Promise((r,l)=>{const o={label:"client",buildStart(){t.verbose("Start compiling client code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Client compiled"),r(!0)},rebuildStart:()=>n("client"),rebuildEnd:()=>d("client")};C(i,i.outdir,"development",o).then(c=>c.watch()).catch(l)}),new Promise((r,l)=>{const o={label:"server",buildStart(){t.verbose("Start compiling server code."),t.startTiming(this.label)},buildEnd(){t.verboseTime(this.label,"Server compiled"),r(!0)},rebuildStart:()=>n("server"),rebuildEnd:()=>d("server")};h(i,i.serverOutDir,"development",o).then(c=>c.watch()).catch(l)})];await Promise.all(s),await i.reloadMarkdocOptions()}function D(){return new Promise(i=>{setTimeout(i,0)})}export{F as develop};
@@ -1 +1 @@
1
- import t from"node:path";import{copyFileSync as a,existsSync as s,mkdirSync as v}from"node:fs";import{readEnvVariable as c}from"../../server/utils/envs/read-env-variable.js";import{logger as l}from"../../server/tools/notifiers/logger.js";import{sanitizeBranchName as u}from"../../server/utils/envs/sanitize-branch-name.js";const F=n=>{const i=m();s(n.serverOutDir)||v(n.serverOutDir,{recursive:!0});const e=[];for(const o of i){const r=t.join(n.contentDir,o);if(!s(r))continue;const p=t.join(n.serverOutDir,o);a(r,p),e.push(o)}e.length>0&&l.info(`Env files included in bundle: ${e.map(()=>"%rp").join(", ")}`,...e)},m=()=>{const n=c("REDOCLY_ENV"),i=c("PUBLIC_REDOCLY_BRANCH_NAME"),e=[".env"];switch(i&&e.push(`.env.branch.${u(i)}`),n){case"production":e.push(".env.production");break;case"preview":e.push(".env.preview");break;case"development":default:e.push(".env.development");break}return e};export{F as copyEnvFiles};
1
+ import t from"node:path";import{copyFileSync as v,existsSync as s,mkdirSync as u}from"node:fs";import{envConfig as c}from"../../config/env-config.js";import{logger as l}from"../../server/tools/notifiers/logger.js";import{sanitizeBranchName as a}from"../../server/utils/envs/sanitize-branch-name.js";const F=n=>{const i=f();s(n.serverOutDir)||u(n.serverOutDir,{recursive:!0});const e=[];for(const o of i){const r=t.join(n.contentDir,o);if(!s(r))continue;const p=t.join(n.serverOutDir,o);v(r,p),e.push(o)}e.length>0&&l.info(`Env files included in bundle: ${e.map(()=>"%rp").join(", ")}`,...e)},f=()=>{const n=c.redoclyEnv,i=c.PUBLIC_REDOCLY_BRANCH_NAME,e=[".env"];switch(i&&e.push(`.env.branch.${a(i)}`),n){case"production":e.push(".env.production");break;case"preview":e.push(".env.preview");break;default:e.push(".env.development");break}return e};export{F as copyEnvFiles};
@@ -1 +1 @@
1
- import T from"node:path";import{unlink as h}from"node:fs/promises";import{writeFileSync as y}from"node:fs";import{readEnvVariable as S}from"../../server/utils/envs/read-env-variable.js";import{PORTAL_VERSION as A}from"../../server/version.js";import{logger as e}from"../../server/tools/notifiers/logger.js";import{reporter as b}from"../../server/tools/notifiers/reporter.js";import{shutdowner as O}from"../../server/tools/shutdowner.js";import{promiseMapLimit as E}from"../../server/utils/async/promise-map-limit.js";import{validateReactPages as D}from"../../server/plugins/pages/validators/validate-react-pages.js";import{ensureDir as v}from"../../server/utils/index.js";import{initPlugins as M,runPlugins as _,writeClientEntries as x}from"../../server/plugins/lifecycle.js";import{createClientCompiler as L,createNodeBundleCompiler as J}from"../../server/esbuild/esbuild.js";import{validateAllMarkdowns as j}from"../../server/plugins/markdown/compiler.js";import{copyEnvFiles as k}from"./copy-env-files.js";import{EsbuildError as l,esbuildLogger as p}from"../../server/esbuild/esbuild-logger.js";import{reportAllErrors as F}from"../../server/utils/report-all-errors.js";import{collectAnalytics as U}from"./analytics/collect-analytics.js";import{copyMigrationsFolder as z}from"../../server/providers/database/copy-migrations.js";import{telemetry as c}from"../telemetry/index.js";import{telemetryTraceStep as m}from"../telemetry/helpers/trace-step.js";async function si(C,i){c.initialize(A),e.info("Starting project build.");const P=e.startTiming();await m("build.start",async R=>{x(i);const d=await L(i,i.outdir,"production"),u=await J(i,i.serverOutDir,"production");let n,f;try{await m("build.client_compilation",async()=>{const s=e.startTiming(),o=await d.rebuild().catch(a=>{throw new l(a)});Array.isArray(o.warnings)&&p(new l({warnings:o.warnings}));const r=e.infoTime(s,"Client JavaScript compiled");r&&c.sendTimingPerformedMessage(r)}),await m("build.server_compilation",async()=>{const s=e.startTiming(),o=await u.rebuild().catch(a=>{throw new l(a)});Array.isArray(o.warnings)&&p(new l({warnings:o.warnings}));const r=e.infoTime(s,"Server JavaScript compiled");r&&c.sendTimingPerformedMessage({message:r.message,timeMs:r.timeMs})}),await i.reloadMarkdocOptions();let t;({pluginInstances:t,lifecycleContext:n}=await M({outdir:i.outdir,serverOutDir:i.serverOutDir,contentDir:i.contentDir,devLogin:C.devLogin,setGlobalConfig:i.setGlobalConfig})),n.fs.dispose(),i.lifecycleContext=n,z(i),await _(t,i,n),f=U(i,n),await m("build.client_server_recompile",async()=>{const s=e.startTiming();e.info("Re-compiling JavaScript with user code"),(await Promise.all([d.rebuild(),u.rebuild()]).catch(a=>{throw new l(a)})).forEach(({warnings:a})=>{Array.isArray(a)&&p(new l({warnings:a}))});const r=e.infoTime(s,"JavaScript re-compiled");r&&c.sendTimingPerformedMessage(r)}),await m("build.pages_validation",async()=>{await D(i,n),await j(i,n)}),await F(n),i.markUserCodeReady()}catch(t){R?.error(t),t instanceof l&&p(t)}finally{f&&await f.catch(()=>{}),await d.dispose(),await u.dispose()}b.printErrors(),e.info("Rendering pages..."),await m("build.prepare_static_data",async t=>{const s=e.startTiming(),o=[...i.getAllRoutes(),...i.getAllApiRoutes()];t?.setAttribute("totalRoutes",o.length.toString()),await E(o,15,a=>i.writeRouteStaticData(a,n));const r=e.successTime(s,"Page static data prepared.");r&&c.sendTimingPerformedMessage(r)}),await m("build.store_serialization",async()=>{const t=e.startTiming();v(i.serverOutDir),y(T.join(i.serverOutDir,"store.json"),JSON.stringify(await i.toJson())),e.successTime(t,"Store serialized and written."),k(i)});const g=S("REDOCLY_PROBLEMS_OUTPUT_FILE");if(g){const t=e.startTiming();y(v(g),JSON.stringify(b.getProblems()),"utf-8"),e.successTime(t,"Broken links written.")}await h(T.join(i.serverOutDir,"index.css"));const w=e.successTime(P,"All done");w&&c.sendTimingPerformedMessage(w)}),await O.exitWithCode(0)}export{si as prepare};
1
+ import T from"node:path";import{unlink as h}from"node:fs/promises";import{writeFileSync as y}from"node:fs";import{envConfig as S}from"../../config/env-config.js";import{PORTAL_VERSION as A}from"../../server/version.js";import{logger as e}from"../../server/tools/notifiers/logger.js";import{reporter as b}from"../../server/tools/notifiers/reporter.js";import{shutdowner as O}from"../../server/tools/shutdowner.js";import{promiseMapLimit as D}from"../../server/utils/async/promise-map-limit.js";import{validateReactPages as E}from"../../server/plugins/pages/validators/validate-react-pages.js";import{ensureDir as v}from"../../server/utils/index.js";import{initPlugins as M,runPlugins as _,writeClientEntries as x}from"../../server/plugins/lifecycle.js";import{createClientCompiler as L,createNodeBundleCompiler as J}from"../../server/esbuild/esbuild.js";import{validateAllMarkdowns as j}from"../../server/plugins/markdown/compiler.js";import{copyEnvFiles as k}from"./copy-env-files.js";import{EsbuildError as l,esbuildLogger as p}from"../../server/esbuild/esbuild-logger.js";import{reportAllErrors as F}from"../../server/utils/report-all-errors.js";import{collectAnalytics as U}from"./analytics/collect-analytics.js";import{copyMigrationsFolder as z}from"../../server/providers/database/copy-migrations.js";import{telemetry as c}from"../telemetry/index.js";import{telemetryTraceStep as m}from"../telemetry/helpers/trace-step.js";async function si(C,i){c.initialize(A),e.info("Starting project build.");const P=e.startTiming();await m("build.start",async R=>{x(i);const d=await L(i,i.outdir,"production"),u=await J(i,i.serverOutDir,"production");let n,f;try{await m("build.client_compilation",async()=>{const s=e.startTiming(),o=await d.rebuild().catch(a=>{throw new l(a)});Array.isArray(o.warnings)&&p(new l({warnings:o.warnings}));const r=e.infoTime(s,"Client JavaScript compiled");r&&c.sendTimingPerformedMessage(r)}),await m("build.server_compilation",async()=>{const s=e.startTiming(),o=await u.rebuild().catch(a=>{throw new l(a)});Array.isArray(o.warnings)&&p(new l({warnings:o.warnings}));const r=e.infoTime(s,"Server JavaScript compiled");r&&c.sendTimingPerformedMessage({message:r.message,timeMs:r.timeMs})}),await i.reloadMarkdocOptions();let t;({pluginInstances:t,lifecycleContext:n}=await M({outdir:i.outdir,serverOutDir:i.serverOutDir,contentDir:i.contentDir,devLogin:C.devLogin,setGlobalConfig:i.setGlobalConfig})),n.fs.dispose(),i.lifecycleContext=n,z(i),await _(t,i,n),f=U(i,n),await m("build.client_server_recompile",async()=>{const s=e.startTiming();e.info("Re-compiling JavaScript with user code"),(await Promise.all([d.rebuild(),u.rebuild()]).catch(a=>{throw new l(a)})).forEach(({warnings:a})=>{Array.isArray(a)&&p(new l({warnings:a}))});const r=e.infoTime(s,"JavaScript re-compiled");r&&c.sendTimingPerformedMessage(r)}),await m("build.pages_validation",async()=>{await E(i,n),await j(i,n)}),await F(n),i.markUserCodeReady()}catch(t){R?.error(t),t instanceof l&&p(t)}finally{f&&await f.catch(()=>{}),await d.dispose(),await u.dispose()}b.printErrors(),e.info("Rendering pages..."),await m("build.prepare_static_data",async t=>{const s=e.startTiming(),o=[...i.getAllRoutes(),...i.getAllApiRoutes()];t?.setAttribute("totalRoutes",o.length.toString()),await D(o,15,a=>i.writeRouteStaticData(a,n));const r=e.successTime(s,"Page static data prepared.");r&&c.sendTimingPerformedMessage(r)}),await m("build.store_serialization",async()=>{const t=e.startTiming();v(i.serverOutDir),y(T.join(i.serverOutDir,"store.json"),JSON.stringify(await i.toJson())),e.successTime(t,"Store serialized and written."),k(i)});const g=S.REDOCLY_PROBLEMS_OUTPUT_FILE;if(g){const t=e.startTiming();y(v(g),JSON.stringify(b.getProblems()),"utf-8"),e.successTime(t,"Broken links written.")}await h(T.join(i.serverOutDir,"index.css"));const w=e.successTime(P,"All done");w&&c.sendTimingPerformedMessage(w)}),await O.exitWithCode(0)}export{si as prepare};
@@ -1 +1 @@
1
- import{AsyncApiRealmCLI as c}from"@redocly/realm-asyncapi-sdk";import{TELEMETRY_ENABLED as s}from"../../server/constants/common.js";import{shutdowner as i}from"../../server/tools/shutdowner.js";import{PACKAGE_NAME as a}from"../../config/product-gates.js";class l extends c.Telemetry{#e=new Map;constructor(){super(),this.updateCloudEventData(()=>({organization:{id:process.env.ORGANIZATION_ID||"",slug:process.env.ORGANIZATION_SLUG||""},project:{id:process.env.PROJECT_ID||"",slug:""},productType:"cli",sourceDetails:{user:"Anonymous",object:"user",uri:""},request:{source:"cli"}}))}initialize(e,r,t){const o=r!==void 0?!(r&&s):!s;this.init({otel:{serviceName:"realm-cli",serviceVersion:`${a}@${e}`,collectorTraceUrl:process.env.OTEL_TRACES_URL||"https://otel.cloud.redocly.com/v1/traces",isProd:process.env.REDOCLY_ENV==="production",version:"1.0",tracerName:"cli-telemetry"},disabled:o,verbose:t}),i.registerShutdownCallback(this.#r.bind(this))}addTraceStepCallbacks(e,{error:r,end:t}){this.#e.set(e,{error:r,end:t})}removeTraceStepCallbacks(e){this.#e.delete(e)}async#r(e){for(const[,{error:r,end:t}]of this.#e)e&&r(e),t();this.#e.clear(),await this.forceFlush(),await this.shutdown()}}const n=new l,T=n.tracer;export{n as telemetry,T as telemetryTracer};
1
+ import{AsyncApiRealmCLI as c}from"@redocly/realm-asyncapi-sdk";import{TELEMETRY_ENABLED as i}from"../../server/constants/common.js";import{shutdowner as a}from"../../server/tools/shutdowner.js";import{envConfig as o}from"../../config/env-config.js";import{PACKAGE_NAME as l}from"../../config/product-gates.js";class n extends c.Telemetry{#e=new Map;constructor(){super(),this.updateCloudEventData(()=>({organization:{id:o.ORGANIZATION_ID||"",slug:o.ORGANIZATION_SLUG||""},project:{id:o.PROJECT_ID||"",slug:""},productType:"cli",sourceDetails:{user:"Anonymous",object:"user",uri:""},request:{source:"cli"}}))}initialize(e,r,t){const s=r!==void 0?!(r&&i):!i;this.init({otel:{serviceName:"realm-cli",serviceVersion:`${l}@${e}`,collectorTraceUrl:o.OTEL_TRACES_URL||"https://otel.cloud.redocly.com/v1/traces",isProd:o.isProductionEnv,version:"1.0",tracerName:"cli-telemetry"},disabled:s,verbose:t}),a.registerShutdownCallback(this.#r.bind(this))}addTraceStepCallbacks(e,{error:r,end:t}){this.#e.set(e,{error:r,end:t})}removeTraceStepCallbacks(e){this.#e.delete(e)}async#r(e){for(const[,{error:r,end:t}]of this.#e)e&&r(e),t();this.#e.clear(),await this.forceFlush(),await this.shutdown()}}const d=new n,f=d.tracer;export{d as telemetry,f as telemetryTracer};
@@ -1 +1 @@
1
- import*as o from"react";import{useEffect as l}from"react";import{Outlet as f,useLocation as g,useNavigate as d}from"react-router-dom";import{components as P}from"@redocly-markdoc/components";import h from"@markdoc/markdoc/dist/react";import{withoutPathPrefix as T}from"@redocly/theme/core/utils";import{InternalServerErrorLayout as D}from"@redocly/theme/layouts/InternalServerErrorLayout";import{RootLayout as S}from"@redocly/theme/layouts/RootLayout";import{PageLayout as L}from"@redocly/theme/layouts/PageLayout";import{components as i}from"@redocly/theme/markdoc/default";import{Sidebar as _}from"./app/Sidebar/Sidebar";import{loadAndNavigate as v}from"./app/utils/loadAndNavigate";import{useActions as C}from"./app/Sidebar/useActions";import{useScrollTracker as A}from"./app/hooks/useScrollTracker";import{useAutoScroll as N}from"./app/hooks/useAutoScroll";import{OPENAPI_DOCS_TEMPLATE_ID as O,ASYNC_API_DOCS_TEMPLATE_ID as y,GRAPHQL_TEMPLATE_ID as R}from"../constants/common";import{removeTrailingSlash as I}from"../utils/url/remove-trailing-slash";import{removeLeadingSlash as b}from"../utils/url/remove-leading-slash";import*as k from"../server/plugins/markdown/markdoc/custom-components/index";import{ErrorBubble as x}from"./app/ErrorBubble";import{DefaultStyles as M}from"./styling/default-styles";import{ThemeDataProvider as V}from"./providers/theme/ThemeDataProvider";import{PageDataContext as B}from"./providers/page-data/PageDataContext";import{SeoTags as G}from"./app/seo/SeoTags";import{useRouterForLocalLinks as $,useRunningEnvironmentCheck as w}from"./providers/hooks";import{usePageData as F,usePageDataLoader as H}from"./providers/page-data/hooks";import{ErrorBoundary as Q}from"./ErrorBoundary";import{ErrorDetails as c,Loader as U}from"./server-entry";import"@styles";import{useRouteChangeTracker as Y}from"./app/hooks/useRouteChangeTracker";import{isInIframe as j}from"./utils";import{useL10n as q}from"./app/l10n";import{PostMessageProvider as z}from"./providers/post-message/PostMessageProvider";import{ScriptLoader as J}from"./ScriptLoader";import{clientRoutes as K}from"./runtime/generated/routes.js";import{PageCounter as W}from"./app/PageCounter";import{usePageTimeTracker as X}from"./app/hooks/usePageTimeTracker";globalThis.__LOADER.markdocComponents={...k,...i};function Me(){const e=H(),[t,a]=o.useState(e),r=g(),m=d();q(),l(()=>{e?a(e):v({navigate:m,to:r.pathname+r.search+r.hash}).then(()=>a(U.loadSync(r.pathname)))},[r,m]),$();const n=w();return n?(console.log(n),o.createElement(c,{error:{message:n,name:""}})):t?o.createElement(Q,null,o.createElement(M,null),o.createElement(B.Provider,{value:e||t},o.createElement(V,null,o.createElement(z,{enabled:process.env.NODE_ENV==="development"||j()},o.createElement(f,null))))):null}function u(){Y(),X(),A(),N();const e=F(),t=C(),{layout:a}=t,r={layout:a},m=process.env.NODE_ENV!=="production",n=globalThis.SSR_OMIT_SUSPENSE,s=e?.props.ast&&e.props.ast.$$mdtype==="Tag"?h(e.props.ast,o,{components:{...globalThis.__LOADER.markdocComponents,...i,...P}}):null,E=I(e?.slug||"");if(l(()=>{document.documentElement.classList.add("ready")},[]),e?.props.pagePropGetterError?.message)return m?o.createElement(c,{error:{...e?.props?.pagePropGetterError}}):o.createElement(D,null);if(!!e?.props?.compilationErrors?.length)return e?.Template?o.createElement(e.Template,{pageProps:e?.props,children:s}):null;const p=()=>o.createElement(S,null,o.createElement(L,{sidebar:o.createElement(_,{layoutControls:t})},o.createElement(G,{seo:e?.props.seo,slug:E}),e?.Template?o.createElement(e.Template,{pageProps:[O,y,R].includes(e.templateId)?{...e.props,apiOptions:r}:e?.props,children:s}):null),process.env.NODE_ENV!=="production"&&o.createElement(x,null),process.env.NODE_ENV!=="production"&&o.createElement(W,null),o.createElement(J,null));return n?p():o.createElement(o.Suspense,null,p())}const Ve=[...K.map(e=>({Component:u,path:b(T(e).substring(1)+"/*")})),{Component:u,path:"*"}];export{Me as App,u as Page,Ve as routes};
1
+ import*as o from"react";import{useEffect as i}from"react";import{Outlet as g,useLocation as d,useNavigate as P}from"react-router-dom";import{components as h}from"@redocly-markdoc/components";import T from"@markdoc/markdoc/dist/react";import{withoutPathPrefix as D}from"@redocly/theme/core/utils";import{InternalServerErrorLayout as S}from"@redocly/theme/layouts/InternalServerErrorLayout";import{RootLayout as L}from"@redocly/theme/layouts/RootLayout";import{PageLayout as _}from"@redocly/theme/layouts/PageLayout";import{components as c}from"@redocly/theme/markdoc/default";import{Sidebar as C}from"./app/Sidebar/Sidebar";import{loadAndNavigate as v}from"./app/utils/loadAndNavigate";import{useActions as A}from"./app/Sidebar/useActions";import{useScrollTracker as N}from"./app/hooks/useScrollTracker";import{useAutoScroll as O}from"./app/hooks/useAutoScroll";import{OPENAPI_DOCS_TEMPLATE_ID as y,ASYNC_API_DOCS_TEMPLATE_ID as R,GRAPHQL_TEMPLATE_ID as I}from"../constants/common";import{removeTrailingSlash as b}from"../utils/url/remove-trailing-slash";import{removeLeadingSlash as k}from"../utils/url/remove-leading-slash";import{envConfig as s}from"../config/env-config";import*as x from"../server/plugins/markdown/markdoc/custom-components/index";import{ErrorBubble as M}from"./app/ErrorBubble";import{DefaultStyles as V}from"./styling/default-styles";import{ThemeDataProvider as B}from"./providers/theme/ThemeDataProvider";import{PageDataContext as G}from"./providers/page-data/PageDataContext";import{SeoTags as $}from"./app/seo/SeoTags";import{useRouterForLocalLinks as w,useRunningEnvironmentCheck as F}from"./providers/hooks";import{usePageData as H,usePageDataLoader as Q}from"./providers/page-data/hooks";import{ErrorBoundary as U}from"./ErrorBoundary";import{ErrorDetails as u,Loader as Y}from"./server-entry";import"@styles";import{useRouteChangeTracker as j}from"./app/hooks/useRouteChangeTracker";import{isInIframe as q}from"./utils";import{useL10n as z}from"./app/l10n";import{PostMessageProvider as J}from"./providers/post-message/PostMessageProvider";import{ScriptLoader as K}from"./ScriptLoader";import{clientRoutes as W}from"./runtime/generated/routes.js";import{PageCounter as X}from"./app/PageCounter";import{usePageTimeTracker as Z}from"./app/hooks/usePageTimeTracker";globalThis.__LOADER.markdocComponents={...x,...c};function Be(){const e=Q(),[t,a]=o.useState(e),r=d(),m=P();z(),i(()=>{e?a(e):v({navigate:m,to:r.pathname+r.search+r.hash}).then(()=>a(Y.loadSync(r.pathname)))},[r,m]),w();const n=F();return n?(console.log(n),o.createElement(u,{error:{message:n,name:""}})):t?o.createElement(U,null,o.createElement(V,null),o.createElement(G.Provider,{value:e||t},o.createElement(B,null,o.createElement(J,{enabled:s.NODE_ENV==="development"||q()},o.createElement(g,null))))):null}function f(){j(),Z(),N(),O();const e=H(),t=A(),{layout:a}=t,r={layout:a},m=s.NODE_ENV!=="production",n=globalThis.SSR_OMIT_SUSPENSE,p=e?.props.ast&&e.props.ast.$$mdtype==="Tag"?T(e.props.ast,o,{components:{...globalThis.__LOADER.markdocComponents,...c,...h}}):null,E=b(e?.slug||"");if(i(()=>{document.documentElement.classList.add("ready")},[]),e?.props.pagePropGetterError?.message)return m?o.createElement(u,{error:{...e?.props?.pagePropGetterError}}):o.createElement(S,null);if(!!e?.props?.compilationErrors?.length)return e?.Template?o.createElement(e.Template,{pageProps:e?.props,children:p}):null;const l=()=>o.createElement(L,null,o.createElement(_,{sidebar:o.createElement(C,{layoutControls:t})},o.createElement($,{seo:e?.props.seo,slug:E}),e?.Template?o.createElement(e.Template,{pageProps:[y,R,I].includes(e.templateId)?{...e.props,apiOptions:r}:e?.props,children:p}):null),s.NODE_ENV!=="production"&&o.createElement(M,null),s.NODE_ENV!=="production"&&o.createElement(X,null),o.createElement(K,null));return n?l():o.createElement(o.Suspense,null,l())}const Ge=[...W.map(e=>({Component:f,path:k(D(e).substring(1)+"/*")})),{Component:f,path:"*"}];export{Be as App,f as Page,Ge as routes};
@@ -1 +1 @@
1
- import*as s from"react";import{ErrorDetails as a}from"./app/Error/ErrorDetails";import{telemetry as n}from"./app/telemetry/index.js";class p extends s.Component{constructor(r){super(r),this.state={error:void 0}}componentDidCatch(r,c){const{name:e,message:t}=r,o={name:e,message:t,stack:c.componentStack??void 0};this.setState({error:o}),n.sendClientErrorMessage([{object:"client",message:`${e}: ${t}`,url:location.href}]),n.sendError(o,"ReactErrorBoundary"),process.env.NODE_ENV!=="production"&&console.log(r)}render(){return this.state.error&&process.env.NODE_ENV!=="production"?s.createElement(a,{error:this.state.error}):this.props.children}}export{p as ErrorBoundary};
1
+ import*as n from"react";import{envConfig as s}from"../config/env-config.js";import{ErrorDetails as a}from"./app/Error/ErrorDetails";import{telemetry as i}from"./app/telemetry/index.js";class u extends n.Component{constructor(r){super(r),this.state={error:void 0}}componentDidCatch(r,c){const{name:e,message:t}=r,o={name:e,message:t,stack:c.componentStack??void 0};this.setState({error:o}),i.sendClientErrorMessage([{object:"client",message:`${e}: ${t}`,url:location.href}]),i.sendError(o,"ReactErrorBoundary"),s.NODE_ENV!=="production"&&console.log(r)}render(){return this.state.error&&s.NODE_ENV!=="production"?n.createElement(a,{error:this.state.error}):this.props.children}}export{u as ErrorBoundary};
@@ -1 +1 @@
1
- function o(s,e,n={}){for(const r of s)r.versionFolderId&&r.version&&(n[r.versionFolderId]=n[r.versionFolderId]??new Set).add(r.version);return s.filter(r=>r.version==null?r:e?r.version===e.version?!0:r.versionFolderId&&n[r.versionFolderId]?.has(e.version)?!1:r.isDefault:r.isDefault).map(r=>Array.isArray(r.items)&&r.items.length?{...r,items:o(r.items,e,n)}:r)}export{o as filterOutVersionedItems};
1
+ function l(f,e,n={}){for(const r of f)r.versionFolderId&&r.version&&(n[r.versionFolderId]=n[r.versionFolderId]??new Set).add(r.version);return f.filter(r=>r.version==null?r:e?r.version===e.version?!0:r.versionFolderId&&n[r.versionFolderId]?.has(e.version)?!1:r.isDefault:r.isDefault).map(r=>{if(Array.isArray(r.items)&&r.items.length){const s=l(r.items,e,n);return s.length===0?null:{...r,items:s}}return r}).filter(r=>r!==null)}export{l as filterOutVersionedItems};
@@ -1 +1 @@
1
- import{useLocation as u,useNavigate as d,useNavigationType as l}from"react-router-dom";import{useEffect as v,useState as P}from"react";import{useThemeConfig as w}from"@redocly/theme/core/hooks";import{removeTrailingSlash as E}from"../../../utils/url/remove-trailing-slash";import{onRouteChange as M}from"../../runtime/generated/browser-plugins.js";import{resolveRouteBySlug as y}from"../utils/resolveRouteBySlug.js";import{usePageData as b}from"./usePageData.js";import{usePostMessage as C}from"../../providers/post-message/use-post-message.js";import{isInIframe as T}from"../../utils/utils.js";import{waitForContentScripts as I}from"../../ScriptLoader.js";import{telemetry as N}from"../telemetry/index.js";const F=()=>{const e=u(),n=d(),a=l(),r=b(),[t,i]=P(),m=w(),{sendMessage:h}=C();v(()=>{I().then(()=>{if(e.pathname!==t?.pathname||e.search!==t.search){M({location:e,prevLocation:t},m);const o=`${window.origin}${e.pathname+e.search+e.hash}`,s=t?`${window.origin}${t.pathname+t.search+t.hash}`:void 0;N.sendPageViewedMessage([{object:"view_stats",uri:o,referrer:s||document.referrer||void 0}])}});const c=!!t;i(e);const{pathname:p,hash:g,state:f}=e;if(e?.pathname.endsWith("/")&&e?.pathname!=="/"){const o=E(e.pathname);n({pathname:o,search:e.search,hash:e.hash},{replace:!0})}(process.env.NODE_ENV==="development"||T())&&c&&y(p+g,r?.templateId).then(o=>{const s=a==="POP"?"browser":f?.origin;s&&h({type:"route-updated",origin:s,...o})}).catch(o=>console.log("Resolve route by slug failed with error: ",o.message))},[e,a])};export{F as useRouteChangeTracker};
1
+ import{useLocation as u,useNavigate as d,useNavigationType as l}from"react-router-dom";import{useEffect as v,useState as P}from"react";import{useThemeConfig as w}from"@redocly/theme/core/hooks";import{removeTrailingSlash as E}from"../../../utils/url/remove-trailing-slash";import{envConfig as M}from"../../../config/env-config.js";import{onRouteChange as y}from"../../runtime/generated/browser-plugins.js";import{resolveRouteBySlug as C}from"../utils/resolveRouteBySlug.js";import{usePageData as b}from"./usePageData.js";import{usePostMessage as T}from"../../providers/post-message/use-post-message.js";import{isInIframe as I}from"../../utils/utils.js";import{waitForContentScripts as N}from"../../ScriptLoader.js";import{telemetry as R}from"../telemetry/index.js";const W=()=>{const e=u(),n=d(),a=l(),r=b(),[t,i]=P(),m=w(),{sendMessage:h}=T();v(()=>{N().then(()=>{if(e.pathname!==t?.pathname||e.search!==t.search){y({location:e,prevLocation:t},m);const o=`${window.origin}${e.pathname+e.search+e.hash}`,s=t?`${window.origin}${t.pathname+t.search+t.hash}`:void 0;R.sendPageViewedMessage([{object:"view_stats",uri:o,referrer:s||document.referrer||void 0}])}});const c=!!t;i(e);const{pathname:p,hash:g,state:f}=e;if(e?.pathname.endsWith("/")&&e?.pathname!=="/"){const o=E(e.pathname);n({pathname:o,search:e.search,hash:e.hash},{replace:!0})}(M.NODE_ENV==="development"||I())&&c&&C(p+g,r?.templateId).then(o=>{const s=a==="POP"?"browser":f?.origin;s&&h({type:"route-updated",origin:s,...o})}).catch(o=>console.log("Resolve route by slug failed with error: ",o.message))},[e,a])};export{W as useRouteChangeTracker};
@@ -1 +1 @@
1
- import{useCallback as h,useEffect as J,useMemo as N,useRef as f,useState as C}from"react";import{AiSearchError as m}from"@redocly/theme/core/constants";import{withPathPrefix as V,splitContentByToolCalls as j}from"@redocly/theme/core/utils";import{ServerRoutes as B}from"../../../constants/common";import{useSearchSession as D}from"@redocly/theme/core/contexts";import{AI_SEARCH_REQUEST_HEADERS as G,HTTP_ERROR_MAP as K}from"../../constants";import{useI18nConfig as L,useCurrentProduct as U,usePageVersions as z}from"../hooks";import{telemetry as W}from"../telemetry/index.js";import{streamSSEMessages as X}from"./sse-parser";import{handleSSEMessage as Y}from"./message-handlers";function ue(E){const{searchSessionId:d}=D(),[e,s]=C({status:"idle"}),[w,p]=C([]),[g,b]=C([]),t=f(null),u=f(""),o=f(""),c=f([]),{currentLocale:y}=L(),A=U(),{versions:M=[]}=z()||{},a=M.find(r=>r?.active),i=h(()=>{s({status:"idle",response:""}),b([]),u.current="",o.current="",c.current=[]},[]),O=h(()=>{t.current?.abort(),t.current=null,i(),p([])},[i]);J(()=>()=>{t.current?.abort()},[]);const k=h(async(r,F)=>{if(!r)return;t.current?.abort();const R=new AbortController;t.current=R,i(),s({status:"loading",question:r,response:"",resources:[]});try{const n=await fetch(V(B.ASK_AI),{method:"POST",headers:G,body:JSON.stringify({text:r,history:F||[],locale:y,product:A?.name,filter:E?.filter,version:a&&{folder:a.folderId,label:a.label},searchSessionId:d}),signal:R.signal});if(!n.ok){s({status:"error",question:r,error:K[n.status]??m.HttpRequestFailed});return}const I=n.body;if(!I){s({status:"error",question:r,error:m.HttpRequestFailed});return}for await(const l of X(I,R.signal)){const Q={messageId:u.current,resources:c.current,accumulatedResponse:o.current,setConversation:p,setState:s,setToolCalls:b},{messageId:H,resources:P,accumulatedResponse:_}=Y(l,Q);H&&(u.current=H),P&&(c.current=P),_&&(o.current=_)}t.current=null;let v=!1;s(l=>l.status==="error"?l:o.current?(v=!0,{status:"success",question:r,response:o.current,resources:c.current}):{status:"error",question:r,error:m.EmptyResponse}),v&&r.trim()&&u.current&&W.sendSearchAIQueryMessage([{object:"search",question:r,answer:o.current,resources:JSON.stringify(c.current),searchSessionId:d,messageId:u.current}])}catch(n){if(n instanceof Error&&n.name==="AbortError")return;t.current=null,s({status:"error",question:r,error:m.HttpRequestFailed})}},[i,y,A?.name,E?.filter,a,d]),S=e.status==="loading"||e.status==="success"||e.status==="idle"?e.response:void 0,q=N(()=>j(S,g),[S,g]);return{askQuestion:k,isGeneratingResponse:e.status==="loading",response:S,resources:e.status==="loading"||e.status==="success"?e.resources:[],question:e.status!=="idle"?e.question:"",error:e.status==="error"?e.error:null,clearConversation:O,conversation:w,setConversation:p,toolCalls:g,contentSegments:q}}export{ue as useAiSearch};
1
+ import{useCallback as h,useEffect as J,useMemo as N,useRef as f,useState as E}from"react";import{AiSearchError as m}from"@redocly/theme/core/constants";import{withPathPrefix as V,splitContentByToolCalls as j}from"@redocly/theme/core/utils";import{ServerRoutes as B}from"../../../constants/common";import{useSearchSession as D}from"@redocly/theme/core/contexts";import{AI_SEARCH_REQUEST_HEADERS as G,HTTP_ERROR_MAP as K}from"../../constants";import{useI18nConfig as L,useCurrentProduct as U,usePageVersions as z}from"../hooks";import{telemetry as W}from"../telemetry/index.js";import{streamSSEMessages as X}from"./sse-parser";import{handleSSEMessage as Y}from"./message-handlers";function ur(C){const{searchSessionId:d}=D(),[r,s]=E({status:"idle"}),[w,p]=E([]),[g,b]=E([]),t=f(null),u=f(""),o=f(""),a=f([]),{currentLocale:y}=L(),A=U(),{versions:M=[]}=z()||{},i=M.find(e=>e?.active),l=h(()=>{s({status:"idle",response:""}),b([]),u.current="",o.current="",a.current=[]},[]),O=h(()=>{t.current?.abort(),t.current=null,l(),p([])},[l]);J(()=>()=>{t.current?.abort()},[]);const k=h(async(e,F)=>{if(!e)return;t.current?.abort();const R=new AbortController;t.current=R,l(),s({status:"loading",question:e,response:"",resources:[]});try{const n=await fetch(V(B.ASK_AI),{method:"POST",headers:G,body:JSON.stringify({text:e,history:F||[],locale:y,product:A?.name,filter:C?.filter,version:i&&{folder:i.folderId,label:i.label},searchSessionId:d}),signal:R.signal});if(!n.ok){s({status:"error",question:e,error:K[n.status]??m.HttpRequestFailed});return}const I=n.body;if(!I){s({status:"error",question:e,error:m.HttpRequestFailed});return}let v=!1;for await(const c of X(I,R.signal)){const Q={messageId:u.current,resources:a.current,accumulatedResponse:o.current,setConversation:p,setState:s,setToolCalls:b},{messageId:H,resources:P,accumulatedResponse:_}=Y(c,Q);H&&(u.current=H),P&&(a.current=P),_&&(o.current=_),c.type==="error"&&(v=!0)}t.current=null,s(c=>c.status==="error"?c:o.current?{status:"success",question:e,response:o.current,resources:a.current}:{status:"error",question:e,error:m.EmptyResponse}),!v&&o.current&&e.trim()&&u.current&&W.sendSearchAIQueryMessage([{object:"search",question:e,answer:o.current,resources:JSON.stringify(a.current),searchSessionId:d,messageId:u.current}])}catch(n){if(n instanceof Error&&n.name==="AbortError")return;t.current=null,s({status:"error",question:e,error:m.HttpRequestFailed})}},[l,y,A?.name,C?.filter,i,d]),S=r.status==="loading"||r.status==="success"||r.status==="idle"?r.response:void 0,q=N(()=>j(S,g),[S,g]);return{askQuestion:k,isGeneratingResponse:r.status==="loading",response:S,resources:r.status==="loading"||r.status==="success"?r.resources:[],question:r.status!=="idle"?r.question:"",error:r.status==="error"?r.error:null,clearConversation:O,conversation:w,setConversation:p,toolCalls:g,contentSegments:q}}export{ur as useAiSearch};
@@ -1,7 +1,7 @@
1
- import{telemetry as s}from"./app/telemetry/index.js";s.init({otel:{isProd:process.env.NODE_ENV==="production",serviceVersion:`${x}@${process.env.REDOCLY_PORTAL_VERSION}`,version:"1.0.0",collectorTraceUrl:new URL(r(L.OTEL_TRACES),location.origin).toString(),serviceName:"realm-ui",tracerName:"client-telemetry"},disabled:!O});import e from"react";import{hydrateRoot as p}from"react-dom/client";import{RouterProvider as m,createBrowserRouter as d}from"react-router-dom";import{HelmetProvider as f}from"@dr.pogodin/react-helmet";import{getLocaleFromPathname as u,withoutPathPrefix as E,withPathPrefix as r}from"@redocly/theme/core/utils";import{DEFAULT_LOCALE_PLACEHOLDER as R,ServerRoutes as L}from"../constants/common";import{TELEMETRY_ENABLED as O}from"../server/constants/common.js";import{initL10n as _}from"./app/l10n/initL10n";import{Loader as D,useRefresh as g,globalData as t}from"./runtime/loader";import{App as h,routes as v}from"./App";import{PACKAGE_NAME as x,PRODUCT_NAME as A}from"../config/product-gates";import"./polyfills";import{ServerStyleSheet as z,StyleSheetManager as G}from"styled-components";function P(){return g(),e.createElement(f,{context:{}},e.createElement(h,null))}function b(){t?.removeAttribution&&process.env.REDOCLY_PORTAL_VERSION?console.log(`
2
- %c Version: ${process.env.REDOCLY_PORTAL_VERSION} %c
3
- `,"background:#ffffff ; padding: 1px; border:1px solid #0044D4; border-radius: 3px; color: #0044D4","background:transparent"):process.env.REDOCLY_PORTAL_VERSION&&console.log(`
4
- %c Redocly ${A} %c ${process.env.REDOCLY_PORTAL_VERSION} %c
1
+ import{telemetry as f}from"./app/telemetry/index.js";f.init({otel:{isProd:o.NODE_ENV==="production",serviceVersion:`${D}@${o.REDOCLY_PORTAL_VERSION}`,version:"1.0.0",collectorTraceUrl:new URL(t(O.OTEL_TRACES),location.origin).toString(),serviceName:"realm-ui",tracerName:"client-telemetry"},disabled:!_});import e from"react";import{hydrateRoot as p}from"react-dom/client";import{RouterProvider as d,createBrowserRouter as s}from"react-router-dom";import{HelmetProvider as u}from"@dr.pogodin/react-helmet";import{getLocaleFromPathname as E,withoutPathPrefix as R,withPathPrefix as t}from"@redocly/theme/core/utils";import{DEFAULT_LOCALE_PLACEHOLDER as L,ServerRoutes as O}from"../constants/common";import{TELEMETRY_ENABLED as _}from"../server/constants/common.js";import"./polyfills";import{envConfig as o}from"../config/env-config";import{PACKAGE_NAME as D,PRODUCT_NAME as g}from"../config/product-gates";import{App as h,routes as x}from"./App";import{Loader as A,useRefresh as P,globalData as n}from"./runtime/loader";import{initL10n as b}from"./app/l10n/initL10n";import{ServerStyleSheet as K,StyleSheetManager as W}from"styled-components";function N(){return P(),e.createElement(u,{context:{}},e.createElement(h,null))}function T(){n?.removeAttribution&&o.REDOCLY_PORTAL_VERSION?console.log(`
2
+ %c Version: ${o.REDOCLY_PORTAL_VERSION} %c
3
+ `,"background:#ffffff ; padding: 1px; border:1px solid #0044D4; border-radius: 3px; color: #0044D4","background:transparent"):o.REDOCLY_PORTAL_VERSION&&console.log(`
4
+ %c Redocly ${g} %c ${o.REDOCLY_PORTAL_VERSION} %c
5
5
 
6
6
  %chttps://redocly.com
7
- `,"background:#0044D4 ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff; border:1px solid #0044D4","background:#ffffff ; padding: 1px; border:1px solid #0044D4; border-radius: 0 3px 3px 0; color: #0044D4","background:transparent","font-size: 10px; font-style: italic;")}async function N(){process.env.NODE_ENV!=="production"&&import("./runtime/ws-client").then(l=>l.listenWs()),await D.load(window.location.pathname,void 0,window.location.search),b();const o=t?.l10n,n=o?.locales||[],i=o?.defaultLocale||R,a=u(E(location.pathname),i,n);await _(o,a);const c=d([{Component:P,path:r("/*"),children:v}]);p(document.getElementById("app_root"),e.createElement(m,{future:{v7_startTransition:!1},router:c}))}N();export{z as ServerStyleSheet,G as StyleSheetManager};
7
+ `,"background:#0044D4 ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff; border:1px solid #0044D4","background:#ffffff ; padding: 1px; border:1px solid #0044D4; border-radius: 0 3px 3px 0; color: #0044D4","background:transparent","font-size: 10px; font-style: italic;")}async function C(){o.NODE_ENV!=="production"&&import("./runtime/ws-client").then(m=>m.listenWs()),await A.load(window.location.pathname,void 0,window.location.search),T();const r=n?.l10n,i=r?.locales||[],a=r?.defaultLocale||L,c=E(R(location.pathname),a,i);await b(r,c);const l=s([{Component:N,path:t("/*"),children:x}]);p(document.getElementById("app_root"),e.createElement(d,{future:{v7_startTransition:!1},router:l}))}C();export{K as ServerStyleSheet,W as StyleSheetManager};
@@ -1 +1 @@
1
- import{useEffect as c,useState as s}from"react";import{useNavigate as l}from"react-router-dom";import{isLocalLink as m}from"../../utils/path/is-local-link.js";import{isJsProtocolLink as a}from"../../utils/path/is-js-protocol-link.js";import{isAssetsLink as u}from"../../utils/path/is-assets-link.js";import{isHostnameOnDomain as f}from"../app/utils/isHostnameOnDomain.js";import{loadAndNavigate as d}from"../app/utils/loadAndNavigate.js";import{isForcedNavigationLinkClick as p}from"../utils/utils.js";export*from"./page-data/hooks.js";function E(){const e=l();c(()=>{const t=n=>{const i=n.target;if(i.tagName!=="A"||p(n,i.getAttribute("target")||""))return;const r=i.getAttribute("href");!m(r)||u(r)||a(r)||(n.preventDefault(),d({navigate:e,to:r||""}))};return document.addEventListener("click",t),()=>{document.removeEventListener("click",t)}},[e])}function b(){const[e,t]=s(null);return c(()=>{if(process.env.NODE_ENV==="development"&&typeof window<"u"&&!o("localhost")&&!o("127.0.0.1")&&!o("")&&!o("redocly-local.com")&&!o("editor.redocly.xyz")&&!o("apps.codespaces.githubusercontent.com")&&!o("blueharvest.cloud")&&!o("bhstage.cloud")&&!o("cloud.redocly.com")&&!o("cloud.eu.redocly.com")&&!o("cba.au.redocly.com"))return t("Development mode is only allowed in localhost")},[typeof window]),e}function o(e){return f(window.location.hostname,e)}export{E as useRouterForLocalLinks,b as useRunningEnvironmentCheck};
1
+ import{useEffect as c,useState as s}from"react";import{useNavigate as m}from"react-router-dom";import{isLocalLink as l}from"../../utils/path/is-local-link.js";import{isJsProtocolLink as a}from"../../utils/path/is-js-protocol-link.js";import{isAssetsLink as u}from"../../utils/path/is-assets-link.js";import{envConfig as f}from"../../config/env-config.js";import{isHostnameOnDomain as d}from"../app/utils/isHostnameOnDomain.js";import{loadAndNavigate as p}from"../app/utils/loadAndNavigate.js";import{isForcedNavigationLinkClick as g}from"../utils/utils.js";export*from"./page-data/hooks.js";function N(){const e=m();c(()=>{const t=n=>{const i=n.target;if(i.tagName!=="A"||g(n,i.getAttribute("target")||""))return;const r=i.getAttribute("href");!l(r)||u(r)||a(r)||(n.preventDefault(),p({navigate:e,to:r||""}))};return document.addEventListener("click",t),()=>{document.removeEventListener("click",t)}},[e])}function A(){const[e,t]=s(null);return c(()=>{if(f.NODE_ENV==="development"&&typeof window<"u"&&!o("localhost")&&!o("127.0.0.1")&&!o("")&&!o("redocly-local.com")&&!o("editor.redocly.xyz")&&!o("apps.codespaces.githubusercontent.com")&&!o("blueharvest.cloud")&&!o("bhstage.cloud")&&!o("cloud.redocly.com")&&!o("cloud.eu.redocly.com")&&!o("cba.au.redocly.com"))return t("Development mode is only allowed in localhost")},[typeof window]),e}function o(e){return d(window.location.hostname,e)}export{N as useRouterForLocalLinks,A as useRunningEnvironmentCheck};
@@ -1 +1 @@
1
- import*as I from"react";import{withPathPrefix as v}from"@redocly/theme/core/utils";import{appendSearchParams as j}from"../utils";import{mapObject as z}from"../../utils/object/map-object.js";import{mapObjectAsync as A}from"../../utils/object/map-object-async.js";import{isFunction as G}from"../../utils/guards/is-function.js";import{isBrowser as N}from"../../utils/env/is-browser.js";import{GLOBAL_DATA_URL as $}from"../../constants/common.js";import{getClientPageDataUrl as V}from"../../utils/url/get-client-page-data-url.js";import{getSharedDataUrl as B}from"../../utils/url/get-shared-data-url.js";import{normalizeRouteSlug as l}from"../../utils/path/normalize-route-slug.js";import{templates as g}from"./generated/templates.js";import{AsyncCache as S}from"./cache.js";import{fetch as y}from"./fetch.js";import{updateTranslations as K}from"../app/l10n";import{PageMissingDefaultExportError as b}from"./errors/page-missing-default-export-error.js";const d=new S,i=new S;let D=null,m,W;const u=new Set;async function q(){const o=await(await y(v($))).json();return m=o,o}async function C(o){const t=v(B(o)),e=process.env.NODE_ENV==="development"?t:encodeURI(t);return await(await y(e)).json()}async function F(o){return i.has(o)||i.set(o,C(o)),i.get(o)}function lt(){const[,o]=I.useReducer(t=>t+1,0);typeof window>"u"||process.env.NODE_ENV!=="production"&&(window.__redoclyRefresh=o)}function _(o,t){const e=t?new URLSearchParams(t).get("revision"):null,a=t?new URLSearchParams(t).get("version"):null;return e||a?`${o}?${e?`revision=${encodeURIComponent(e)}`:""}${a?`&version=${encodeURIComponent(a)}`:""}`.trim():o}class p{static markdocComponents={};static async updateTemplate(t,e,a){const n=l(t);g[a]=()=>e;const r=l(window.location.pathname);n===r&&(await this.load(t,!0),window.__redoclyRefresh())}static async update(t){const e=l(t),a=l(window.location.pathname);if(e!==a){d.delete(e);return}await this.load(t,!0),window.__redoclyRefresh()}static async updateSharedData(t){await i.set(t,C(t)),window.__redoclyRefresh()}static addGlobalDataListener(t){u.add(t)}static removeGlobalDataListener(t){u.delete(t)}static updateGlobalData(t){u.forEach(e=>e(t)),m=t,K(m.l10n)}static async tryLoad(t,e,a){try{return await this.load(t,e,a)}catch{return null}}static async loadDynamicMarkdocComponents(t){const e=this.markdocComponents?.[t];e&&G(e)&&Object.assign(this.markdocComponents,await e())}static async load(t,e,a){const n=l(t),r=_(n,a),s=await d.get(r);if(!m&&!D&&(D=q()),s&&!e)return s;{const[f]=await Promise.all([d.set(r,c(a)),D]);return f}async function c(f){const U=V(n),k=j(U,f),E=await y(k),{templateId:R,sharedDataIds:w,props:P,userData:T,versions:L,redirectTo:M,isPublic:O}=await E.json(),[x]=await Promise.all([(async()=>p.loadTemplate(R))(),Promise.all((P.dynamicMarkdocComponents||[]).map(h=>p.loadDynamicMarkdocComponents(h))),w?A(w,h=>F(h)):Promise.resolve({})]);return{templateId:R,slug:n,sharedDataIds:w,redirectTo:M,props:P,Template:x,userData:T,versions:L,isPublic:O}}}static loadSync(t){const e=l(t),a=_(e,typeof window<"u"?window.location.search:void 0),n=d.tryGetSync(a);if(!n)return;const r=z(n.sharedDataIds,s=>i.getSync(s,"Data dependency not cached ahead of time: "+s));return{...n,sharedData:r}}static async prepare(t,e,a,n){const r=t.templateId;if(await Promise.all((t.props.dynamicMarkdocComponents||[]).map(c=>this.loadDynamicMarkdocComponents(c))),e)for(const c of Object.keys(e))i.setSync(c,e[c]);const s=await p.loadTemplate(r);s&&d.setSync(t.slug,{templateId:r,slug:t.slug,props:t.props,sharedDataIds:t.sharedDataIds||{},Template:s,userData:t.userInfo,versions:t.versions,isPublic:t.isPublic}),m=a,W=n}static async loadTemplate(t){try{const e=await g[t]();if(t.endsWith("page.tsx")&&!e.default)throw new b(t);const a=e.default;return typeof a=="function"?a:a.default}catch(e){if(!(process.env.NODE_ENV==="development")||!N())throw e;return e instanceof b?()=>(window.location.reload(),null):(window.location.reload(),null)}}static clear(){u.clear(),i.clear(),d.clear()}}(typeof window<"u"?window:global).__LOADER=p;export{p as Loader,F as getSharedData,m as globalData,W as initLocale,lt as useRefresh};
1
+ import*as j from"react";import{withPathPrefix as v}from"@redocly/theme/core/utils";import{appendSearchParams as z}from"../utils";import{mapObject as A}from"../../utils/object/map-object.js";import{mapObjectAsync as G}from"../../utils/object/map-object-async.js";import{isFunction as N}from"../../utils/guards/is-function.js";import{isBrowser as $}from"../../utils/env/is-browser.js";import{GLOBAL_DATA_URL as V}from"../../constants/common.js";import{getClientPageDataUrl as B}from"../../utils/url/get-client-page-data-url.js";import{getSharedDataUrl as K}from"../../utils/url/get-shared-data-url.js";import{normalizeRouteSlug as l}from"../../utils/path/normalize-route-slug.js";import{envConfig as y}from"../../config/env-config.js";import{templates as S}from"./generated/templates.js";import{AsyncCache as b}from"./cache.js";import{fetch as D}from"./fetch.js";import{updateTranslations as W}from"../app/l10n";import{PageMissingDefaultExportError as C}from"./errors/page-missing-default-export-error.js";const d=new b,i=new b;let R=null,m,q;const u=new Set;async function F(){const o=await(await D(v(V))).json();return m=o,o}async function _(o){const t=v(K(o)),e=y.NODE_ENV==="development"?t:encodeURI(t);return await(await D(e)).json()}async function H(o){return i.has(o)||i.set(o,_(o)),i.get(o)}function mt(){const[,o]=j.useReducer(t=>t+1,0);typeof window>"u"||y.NODE_ENV!=="production"&&(window.__redoclyRefresh=o)}function U(o,t){const e=t?new URLSearchParams(t).get("revision"):null,a=t?new URLSearchParams(t).get("version"):null;return e||a?`${o}?${e?`revision=${encodeURIComponent(e)}`:""}${a?`&version=${encodeURIComponent(a)}`:""}`.trim():o}class p{static markdocComponents={};static async updateTemplate(t,e,a){const n=l(t);S[a]=()=>e;const r=l(window.location.pathname);n===r&&(await this.load(t,!0),window.__redoclyRefresh())}static async update(t){const e=l(t),a=l(window.location.pathname);if(e!==a){d.delete(e);return}await this.load(t,!0),window.__redoclyRefresh()}static async updateSharedData(t){await i.set(t,_(t)),window.__redoclyRefresh()}static addGlobalDataListener(t){u.add(t)}static removeGlobalDataListener(t){u.delete(t)}static updateGlobalData(t){u.forEach(e=>e(t)),m=t,W(m.l10n)}static async tryLoad(t,e,a){try{return await this.load(t,e,a)}catch{return null}}static async loadDynamicMarkdocComponents(t){const e=this.markdocComponents?.[t];e&&N(e)&&Object.assign(this.markdocComponents,await e())}static async load(t,e,a){const n=l(t),r=U(n,a),s=await d.get(r);if(!m&&!R&&(R=F()),s&&!e)return s;{const[f]=await Promise.all([d.set(r,c(a)),R]);return f}async function c(f){const k=B(n),E=z(k,f),T=await D(E),{templateId:P,sharedDataIds:w,props:g,userData:L,versions:M,redirectTo:O,isPublic:x}=await T.json(),[I]=await Promise.all([(async()=>p.loadTemplate(P))(),Promise.all((g.dynamicMarkdocComponents||[]).map(h=>p.loadDynamicMarkdocComponents(h))),w?G(w,h=>H(h)):Promise.resolve({})]);return{templateId:P,slug:n,sharedDataIds:w,redirectTo:O,props:g,Template:I,userData:L,versions:M,isPublic:x}}}static loadSync(t){const e=l(t),a=U(e,typeof window<"u"?window.location.search:void 0),n=d.tryGetSync(a);if(!n)return;const r=A(n.sharedDataIds,s=>i.getSync(s,"Data dependency not cached ahead of time: "+s));return{...n,sharedData:r}}static async prepare(t,e,a,n){const r=t.templateId;if(await Promise.all((t.props.dynamicMarkdocComponents||[]).map(c=>this.loadDynamicMarkdocComponents(c))),e)for(const c of Object.keys(e))i.setSync(c,e[c]);const s=await p.loadTemplate(r);s&&d.setSync(t.slug,{templateId:r,slug:t.slug,props:t.props,sharedDataIds:t.sharedDataIds||{},Template:s,userData:t.userInfo,versions:t.versions,isPublic:t.isPublic}),m=a,q=n}static async loadTemplate(t){try{const e=await S[t]();if(t.endsWith("page.tsx")&&!e.default)throw new C(t);const a=e.default;return typeof a=="function"?a:a.default}catch(e){if(!(y.NODE_ENV==="development")||!$())throw e;return e instanceof C?()=>(window.location.reload(),null):(window.location.reload(),null)}}static clear(){u.clear(),i.clear(),d.clear()}}(typeof window<"u"?window:global).__LOADER=p;export{p as Loader,H as getSharedData,m as globalData,q as initLocale,mt as useRefresh};
@@ -0,0 +1,17 @@
1
+ import type { EnvConfig } from './env-schema.js';
2
+ export type { EnvConfig };
3
+ export type RedoclyEnv = 'production' | 'preview' | 'development';
4
+ export type RedoclyExecutionMode = 'build' | 'develop' | 'runtime';
5
+ export type EnvConfigDerived = {
6
+ redoclyEnv: RedoclyEnv;
7
+ executionMode: RedoclyExecutionMode;
8
+ isProductionEnv: boolean;
9
+ isPreviewEnv: boolean;
10
+ isReunite: boolean;
11
+ isBuildMode: boolean;
12
+ isDevelopMode: boolean;
13
+ isRuntimeMode: boolean;
14
+ };
15
+ export type EnvConfigWithDerived = EnvConfig & EnvConfigDerived;
16
+ export declare const envConfig: EnvConfigWithDerived;
17
+ //# sourceMappingURL=env-config.d.ts.map
@@ -0,0 +1 @@
1
+ import{readEnvVariable as u}from"../server/utils/envs/read-env-variable.js";import{envSchema as c}from"./env-schema.js";function o(){const n=Object.fromEntries(Object.keys(process.env).map(e=>[e,u(e)]));return c.parse(n)}function r(){return o().REDOCLY_ENV??"development"}function i(){const n=process.env.REDOCLY_EXECUTION_MODE;return n==="build"||n==="develop"||n==="runtime"?n:"develop"}function s(){const e=o().REDOCLY_INTERNAL_DEV;return e==="true"||e==="1"}function v(n){switch(n){case"redoclyEnv":return r();case"executionMode":return i();case"isProductionEnv":return r()==="production";case"isPreviewEnv":return r()==="preview";case"isReunite":{const e=r(),t=s();return e==="production"||e==="preview"||e==="development"&&!t}case"isBuildMode":return i()==="build";case"isDevelopMode":return i()==="develop";case"isRuntimeMode":return i()==="runtime";default:return n}}const d=new Set(["redoclyEnv","executionMode","isProductionEnv","isPreviewEnv","isReunite","isBuildMode","isDevelopMode","isRuntimeMode"]),E=Object.freeze(new Proxy({},{get(n,e){if(typeof e!="string")return;const t=e;return d.has(t)?v(t):o()[e]}}));export{E as envConfig};
@@ -0,0 +1,242 @@
1
+ import { z } from 'zod';
2
+ export declare const envSchema: z.ZodObject<{
3
+ NODE_ENV: z.ZodOptional<z.ZodEnum<["development", "production", "test"]>>;
4
+ REDOCLY_ENV: z.ZodOptional<z.ZodEnum<["production", "preview", "development"]>>;
5
+ REDOCLY_EXECUTION_MODE: z.ZodOptional<z.ZodEnum<["build", "develop", "runtime"]>>;
6
+ REDOCLY_INTERNAL_DEV: z.ZodOptional<z.ZodString>;
7
+ CI: z.ZodOptional<z.ZodString>;
8
+ } & {
9
+ PORT: z.ZodOptional<z.ZodNumber>;
10
+ PORTAL_LOG_FORMAT: z.ZodOptional<z.ZodString>;
11
+ REDOCLY_LOG_LEVEL: z.ZodOptional<z.ZodString>;
12
+ TERM: z.ZodOptional<z.ZodString>;
13
+ INSPECT_MODE: z.ZodOptional<z.ZodString>;
14
+ REDOCLY_PREFIX_PATHS: z.ZodOptional<z.ZodString>;
15
+ REDOCLY_CONTENT_DIR: z.ZodOptional<z.ZodString>;
16
+ REDOCLY_PORTAL_VERSION: z.ZodOptional<z.ZodString>;
17
+ REDOCLY_TELEMETRY: z.ZodOptional<z.ZodString>;
18
+ REDOCLY_TELEMETRY_ENDPOINT: z.ZodOptional<z.ZodString>;
19
+ TELEMETRY_DEV_DEBUG: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
20
+ WEB_SERVER_IDLE_TIMEOUT: z.ZodOptional<z.ZodString>;
21
+ REDOCLY_PROBLEMS_OUTPUT_FILE: z.ZodOptional<z.ZodString>;
22
+ REDOCLY_METADATA_OUTPUT_FOLDER: z.ZodOptional<z.ZodString>;
23
+ } & {
24
+ ORGANIZATION_ID: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>;
25
+ ORGANIZATION_SLUG: z.ZodOptional<z.ZodString>;
26
+ ORG_SLUG: z.ZodOptional<z.ZodString>;
27
+ PROJECT_ID: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>;
28
+ PROJECT_SLUG: z.ZodOptional<z.ZodString>;
29
+ PROJECT_URL: z.ZodOptional<z.ZodString>;
30
+ PUBLIC_REDOCLY_BRANCH_NAME: z.ZodOptional<z.ZodString>;
31
+ } & {
32
+ JWT_SECRET_KEY: z.ZodOptional<z.ZodString>;
33
+ AUTH_URL: z.ZodOptional<z.ZodString>;
34
+ BH_API_URL: z.ZodOptional<z.ZodString>;
35
+ ENTITLEMENTS_JWKS_CDN_URL: z.ZodOptional<z.ZodString>;
36
+ OAUTH_CLIENT_ID: z.ZodOptional<z.ZodString>;
37
+ OAUTH_CLIENT_SECRET: z.ZodOptional<z.ZodString>;
38
+ OIDC_CLIENT_ID: z.ZodOptional<z.ZodString>;
39
+ OIDC_CLIENT_SECRET: z.ZodOptional<z.ZodString>;
40
+ OIDC_ISSUER_URL: z.ZodOptional<z.ZodString>;
41
+ LOCALHOST_LOGIN: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
42
+ REDOCLY_OAUTH_USE_INTROSPECT: z.ZodOptional<z.ZodString>;
43
+ } & {
44
+ REDOCLY_SSR_RENDER_MODE: z.ZodOptional<z.ZodEnum<["worker", "main"]>>;
45
+ REDOCLY_SSR_WORKERS_MIN: z.ZodOptional<z.ZodNumber>;
46
+ REDOCLY_SSR_WORKERS_MAX: z.ZodOptional<z.ZodNumber>;
47
+ } & {
48
+ NEW_CATALOG_ENABLED: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
49
+ NEW_SCORECARDS_ENABLED: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
50
+ ENABLE_COMMENTS: z.ZodOptional<z.ZodString>;
51
+ ENABLE_SOURCE_MAPS: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
52
+ PLAN_GATES: z.ZodOptional<z.ZodString>;
53
+ } & {
54
+ SEARCH_DEV_REINIT: z.ZodOptional<z.ZodString>;
55
+ SEARCH_DEV_DEBUG: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
56
+ TYPESENSE_API_URL: z.ZodOptional<z.ZodString>;
57
+ TYPESENSE_API_KEY: z.ZodOptional<z.ZodString>;
58
+ } & {
59
+ MAIN_API_URL: z.ZodOptional<z.ZodString>;
60
+ SERVER_EDITOR_APP_URL: z.ZodOptional<z.ZodString>;
61
+ REDOCLY_PUBLIC_URL: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
62
+ REDOCLY_MERMAID_MICROSERVICE_URL: z.ZodOptional<z.ZodString>;
63
+ REDOCLY_CORS_ORIGINS: z.ZodOptional<z.ZodString>;
64
+ } & {
65
+ SQLD_REMOTE_DATABASE_URL: z.ZodOptional<z.ZodString>;
66
+ SQLD_REMOTE_DATABASE_AUTH_TOKEN: z.ZodOptional<z.ZodString>;
67
+ } & {
68
+ FORCE_CATALOG_CACHE_REVALIDATE: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
69
+ } & {
70
+ SCORECARDS_POLLING_INTERVAL_MS: z.ZodOptional<z.ZodString>;
71
+ } & {
72
+ OTEL_TRACES_URL: z.ZodOptional<z.ZodString>;
73
+ REQUEST_ID: z.ZodOptional<z.ZodString>;
74
+ } & {
75
+ SITE_URL: z.ZodOptional<z.ZodString>;
76
+ } & {
77
+ TEST_API_KEY: z.ZodOptional<z.ZodString>;
78
+ TEST_SERVER_URL: z.ZodOptional<z.ZodString>;
79
+ DECORATOR_CONFIG: z.ZodOptional<z.ZodString>;
80
+ SECRET_VALUE: z.ZodOptional<z.ZodString>;
81
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
82
+ NODE_ENV: z.ZodOptional<z.ZodEnum<["development", "production", "test"]>>;
83
+ REDOCLY_ENV: z.ZodOptional<z.ZodEnum<["production", "preview", "development"]>>;
84
+ REDOCLY_EXECUTION_MODE: z.ZodOptional<z.ZodEnum<["build", "develop", "runtime"]>>;
85
+ REDOCLY_INTERNAL_DEV: z.ZodOptional<z.ZodString>;
86
+ CI: z.ZodOptional<z.ZodString>;
87
+ } & {
88
+ PORT: z.ZodOptional<z.ZodNumber>;
89
+ PORTAL_LOG_FORMAT: z.ZodOptional<z.ZodString>;
90
+ REDOCLY_LOG_LEVEL: z.ZodOptional<z.ZodString>;
91
+ TERM: z.ZodOptional<z.ZodString>;
92
+ INSPECT_MODE: z.ZodOptional<z.ZodString>;
93
+ REDOCLY_PREFIX_PATHS: z.ZodOptional<z.ZodString>;
94
+ REDOCLY_CONTENT_DIR: z.ZodOptional<z.ZodString>;
95
+ REDOCLY_PORTAL_VERSION: z.ZodOptional<z.ZodString>;
96
+ REDOCLY_TELEMETRY: z.ZodOptional<z.ZodString>;
97
+ REDOCLY_TELEMETRY_ENDPOINT: z.ZodOptional<z.ZodString>;
98
+ TELEMETRY_DEV_DEBUG: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
99
+ WEB_SERVER_IDLE_TIMEOUT: z.ZodOptional<z.ZodString>;
100
+ REDOCLY_PROBLEMS_OUTPUT_FILE: z.ZodOptional<z.ZodString>;
101
+ REDOCLY_METADATA_OUTPUT_FOLDER: z.ZodOptional<z.ZodString>;
102
+ } & {
103
+ ORGANIZATION_ID: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>;
104
+ ORGANIZATION_SLUG: z.ZodOptional<z.ZodString>;
105
+ ORG_SLUG: z.ZodOptional<z.ZodString>;
106
+ PROJECT_ID: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>;
107
+ PROJECT_SLUG: z.ZodOptional<z.ZodString>;
108
+ PROJECT_URL: z.ZodOptional<z.ZodString>;
109
+ PUBLIC_REDOCLY_BRANCH_NAME: z.ZodOptional<z.ZodString>;
110
+ } & {
111
+ JWT_SECRET_KEY: z.ZodOptional<z.ZodString>;
112
+ AUTH_URL: z.ZodOptional<z.ZodString>;
113
+ BH_API_URL: z.ZodOptional<z.ZodString>;
114
+ ENTITLEMENTS_JWKS_CDN_URL: z.ZodOptional<z.ZodString>;
115
+ OAUTH_CLIENT_ID: z.ZodOptional<z.ZodString>;
116
+ OAUTH_CLIENT_SECRET: z.ZodOptional<z.ZodString>;
117
+ OIDC_CLIENT_ID: z.ZodOptional<z.ZodString>;
118
+ OIDC_CLIENT_SECRET: z.ZodOptional<z.ZodString>;
119
+ OIDC_ISSUER_URL: z.ZodOptional<z.ZodString>;
120
+ LOCALHOST_LOGIN: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
121
+ REDOCLY_OAUTH_USE_INTROSPECT: z.ZodOptional<z.ZodString>;
122
+ } & {
123
+ REDOCLY_SSR_RENDER_MODE: z.ZodOptional<z.ZodEnum<["worker", "main"]>>;
124
+ REDOCLY_SSR_WORKERS_MIN: z.ZodOptional<z.ZodNumber>;
125
+ REDOCLY_SSR_WORKERS_MAX: z.ZodOptional<z.ZodNumber>;
126
+ } & {
127
+ NEW_CATALOG_ENABLED: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
128
+ NEW_SCORECARDS_ENABLED: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
129
+ ENABLE_COMMENTS: z.ZodOptional<z.ZodString>;
130
+ ENABLE_SOURCE_MAPS: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
131
+ PLAN_GATES: z.ZodOptional<z.ZodString>;
132
+ } & {
133
+ SEARCH_DEV_REINIT: z.ZodOptional<z.ZodString>;
134
+ SEARCH_DEV_DEBUG: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
135
+ TYPESENSE_API_URL: z.ZodOptional<z.ZodString>;
136
+ TYPESENSE_API_KEY: z.ZodOptional<z.ZodString>;
137
+ } & {
138
+ MAIN_API_URL: z.ZodOptional<z.ZodString>;
139
+ SERVER_EDITOR_APP_URL: z.ZodOptional<z.ZodString>;
140
+ REDOCLY_PUBLIC_URL: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
141
+ REDOCLY_MERMAID_MICROSERVICE_URL: z.ZodOptional<z.ZodString>;
142
+ REDOCLY_CORS_ORIGINS: z.ZodOptional<z.ZodString>;
143
+ } & {
144
+ SQLD_REMOTE_DATABASE_URL: z.ZodOptional<z.ZodString>;
145
+ SQLD_REMOTE_DATABASE_AUTH_TOKEN: z.ZodOptional<z.ZodString>;
146
+ } & {
147
+ FORCE_CATALOG_CACHE_REVALIDATE: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
148
+ } & {
149
+ SCORECARDS_POLLING_INTERVAL_MS: z.ZodOptional<z.ZodString>;
150
+ } & {
151
+ OTEL_TRACES_URL: z.ZodOptional<z.ZodString>;
152
+ REQUEST_ID: z.ZodOptional<z.ZodString>;
153
+ } & {
154
+ SITE_URL: z.ZodOptional<z.ZodString>;
155
+ } & {
156
+ TEST_API_KEY: z.ZodOptional<z.ZodString>;
157
+ TEST_SERVER_URL: z.ZodOptional<z.ZodString>;
158
+ DECORATOR_CONFIG: z.ZodOptional<z.ZodString>;
159
+ SECRET_VALUE: z.ZodOptional<z.ZodString>;
160
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
161
+ NODE_ENV: z.ZodOptional<z.ZodEnum<["development", "production", "test"]>>;
162
+ REDOCLY_ENV: z.ZodOptional<z.ZodEnum<["production", "preview", "development"]>>;
163
+ REDOCLY_EXECUTION_MODE: z.ZodOptional<z.ZodEnum<["build", "develop", "runtime"]>>;
164
+ REDOCLY_INTERNAL_DEV: z.ZodOptional<z.ZodString>;
165
+ CI: z.ZodOptional<z.ZodString>;
166
+ } & {
167
+ PORT: z.ZodOptional<z.ZodNumber>;
168
+ PORTAL_LOG_FORMAT: z.ZodOptional<z.ZodString>;
169
+ REDOCLY_LOG_LEVEL: z.ZodOptional<z.ZodString>;
170
+ TERM: z.ZodOptional<z.ZodString>;
171
+ INSPECT_MODE: z.ZodOptional<z.ZodString>;
172
+ REDOCLY_PREFIX_PATHS: z.ZodOptional<z.ZodString>;
173
+ REDOCLY_CONTENT_DIR: z.ZodOptional<z.ZodString>;
174
+ REDOCLY_PORTAL_VERSION: z.ZodOptional<z.ZodString>;
175
+ REDOCLY_TELEMETRY: z.ZodOptional<z.ZodString>;
176
+ REDOCLY_TELEMETRY_ENDPOINT: z.ZodOptional<z.ZodString>;
177
+ TELEMETRY_DEV_DEBUG: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
178
+ WEB_SERVER_IDLE_TIMEOUT: z.ZodOptional<z.ZodString>;
179
+ REDOCLY_PROBLEMS_OUTPUT_FILE: z.ZodOptional<z.ZodString>;
180
+ REDOCLY_METADATA_OUTPUT_FOLDER: z.ZodOptional<z.ZodString>;
181
+ } & {
182
+ ORGANIZATION_ID: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>;
183
+ ORGANIZATION_SLUG: z.ZodOptional<z.ZodString>;
184
+ ORG_SLUG: z.ZodOptional<z.ZodString>;
185
+ PROJECT_ID: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>;
186
+ PROJECT_SLUG: z.ZodOptional<z.ZodString>;
187
+ PROJECT_URL: z.ZodOptional<z.ZodString>;
188
+ PUBLIC_REDOCLY_BRANCH_NAME: z.ZodOptional<z.ZodString>;
189
+ } & {
190
+ JWT_SECRET_KEY: z.ZodOptional<z.ZodString>;
191
+ AUTH_URL: z.ZodOptional<z.ZodString>;
192
+ BH_API_URL: z.ZodOptional<z.ZodString>;
193
+ ENTITLEMENTS_JWKS_CDN_URL: z.ZodOptional<z.ZodString>;
194
+ OAUTH_CLIENT_ID: z.ZodOptional<z.ZodString>;
195
+ OAUTH_CLIENT_SECRET: z.ZodOptional<z.ZodString>;
196
+ OIDC_CLIENT_ID: z.ZodOptional<z.ZodString>;
197
+ OIDC_CLIENT_SECRET: z.ZodOptional<z.ZodString>;
198
+ OIDC_ISSUER_URL: z.ZodOptional<z.ZodString>;
199
+ LOCALHOST_LOGIN: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
200
+ REDOCLY_OAUTH_USE_INTROSPECT: z.ZodOptional<z.ZodString>;
201
+ } & {
202
+ REDOCLY_SSR_RENDER_MODE: z.ZodOptional<z.ZodEnum<["worker", "main"]>>;
203
+ REDOCLY_SSR_WORKERS_MIN: z.ZodOptional<z.ZodNumber>;
204
+ REDOCLY_SSR_WORKERS_MAX: z.ZodOptional<z.ZodNumber>;
205
+ } & {
206
+ NEW_CATALOG_ENABLED: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
207
+ NEW_SCORECARDS_ENABLED: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
208
+ ENABLE_COMMENTS: z.ZodOptional<z.ZodString>;
209
+ ENABLE_SOURCE_MAPS: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
210
+ PLAN_GATES: z.ZodOptional<z.ZodString>;
211
+ } & {
212
+ SEARCH_DEV_REINIT: z.ZodOptional<z.ZodString>;
213
+ SEARCH_DEV_DEBUG: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
214
+ TYPESENSE_API_URL: z.ZodOptional<z.ZodString>;
215
+ TYPESENSE_API_KEY: z.ZodOptional<z.ZodString>;
216
+ } & {
217
+ MAIN_API_URL: z.ZodOptional<z.ZodString>;
218
+ SERVER_EDITOR_APP_URL: z.ZodOptional<z.ZodString>;
219
+ REDOCLY_PUBLIC_URL: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
220
+ REDOCLY_MERMAID_MICROSERVICE_URL: z.ZodOptional<z.ZodString>;
221
+ REDOCLY_CORS_ORIGINS: z.ZodOptional<z.ZodString>;
222
+ } & {
223
+ SQLD_REMOTE_DATABASE_URL: z.ZodOptional<z.ZodString>;
224
+ SQLD_REMOTE_DATABASE_AUTH_TOKEN: z.ZodOptional<z.ZodString>;
225
+ } & {
226
+ FORCE_CATALOG_CACHE_REVALIDATE: z.ZodOptional<z.ZodEnum<["true", "false"]>>;
227
+ } & {
228
+ SCORECARDS_POLLING_INTERVAL_MS: z.ZodOptional<z.ZodString>;
229
+ } & {
230
+ OTEL_TRACES_URL: z.ZodOptional<z.ZodString>;
231
+ REQUEST_ID: z.ZodOptional<z.ZodString>;
232
+ } & {
233
+ SITE_URL: z.ZodOptional<z.ZodString>;
234
+ } & {
235
+ TEST_API_KEY: z.ZodOptional<z.ZodString>;
236
+ TEST_SERVER_URL: z.ZodOptional<z.ZodString>;
237
+ DECORATOR_CONFIG: z.ZodOptional<z.ZodString>;
238
+ SECRET_VALUE: z.ZodOptional<z.ZodString>;
239
+ }, z.ZodTypeAny, "passthrough">>;
240
+ export type EnvConfig = z.infer<typeof envSchema>;
241
+ export declare function validateEnv(): EnvConfig;
242
+ //# sourceMappingURL=env-schema.d.ts.map
@@ -0,0 +1,3 @@
1
+ import{z as o}from"zod";import{environmentDetectionSchema as t}from"./env-schemas/environment-detection.js";import{serverConfigSchema as a}from"./env-schemas/server-config.js";import{organizationProjectSchema as i}from"./env-schemas/organization-project.js";import{authSchema as c}from"./env-schemas/auth.js";import{ssrSchema as n}from"./env-schemas/ssr.js";import{featureFlagsSchema as s}from"./env-schemas/feature-flags.js";import{searchSchema as h}from"./env-schemas/search.js";import{apiUrlsSchema as p}from"./env-schemas/api-urls.js";import{databaseSchema as f}from"./env-schemas/database.js";import{catalogSchema as g}from"./env-schemas/catalog.js";import{scorecardsSchema as S}from"./env-schemas/scorecards.js";import{telemetrySchema as v}from"./env-schemas/telemetry.js";import{siteSchema as l}from"./env-schemas/site.js";import{testSchema as d}from"./env-schemas/test.js";const u=t.merge(a).merge(i).merge(c).merge(n).merge(s).merge(h).merge(p).merge(f).merge(g).merge(S).merge(v).merge(l).merge(d).passthrough();function q(){try{return u.parse(process.env)}catch(r){if(r instanceof o.ZodError){const m=r.issues.map(e=>`${e.path.join(".")}: ${e.message}`).join(`
2
+ `);throw new Error(`Environment validation failed:
3
+ ${m}`)}throw r}}export{u as envSchema,q as validateEnv};
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Schema for API URL configuration variables.
4
+ */
5
+ export declare const apiUrlsSchema: z.ZodObject<{
6
+ MAIN_API_URL: z.ZodOptional<z.ZodString>;
7
+ SERVER_EDITOR_APP_URL: z.ZodOptional<z.ZodString>;
8
+ REDOCLY_PUBLIC_URL: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodLiteral<"">]>>;
9
+ REDOCLY_MERMAID_MICROSERVICE_URL: z.ZodOptional<z.ZodString>;
10
+ REDOCLY_CORS_ORIGINS: z.ZodOptional<z.ZodString>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ MAIN_API_URL?: string | undefined;
13
+ SERVER_EDITOR_APP_URL?: string | undefined;
14
+ REDOCLY_PUBLIC_URL?: string | undefined;
15
+ REDOCLY_MERMAID_MICROSERVICE_URL?: string | undefined;
16
+ REDOCLY_CORS_ORIGINS?: string | undefined;
17
+ }, {
18
+ MAIN_API_URL?: string | undefined;
19
+ SERVER_EDITOR_APP_URL?: string | undefined;
20
+ REDOCLY_PUBLIC_URL?: string | undefined;
21
+ REDOCLY_MERMAID_MICROSERVICE_URL?: string | undefined;
22
+ REDOCLY_CORS_ORIGINS?: string | undefined;
23
+ }>;
24
+ //# sourceMappingURL=api-urls.d.ts.map
@@ -0,0 +1 @@
1
+ import{z as o}from"zod";const R=o.object({MAIN_API_URL:o.string().url().optional(),SERVER_EDITOR_APP_URL:o.string().url().optional(),REDOCLY_PUBLIC_URL:o.union([o.string().url(),o.literal("")]).optional(),REDOCLY_MERMAID_MICROSERVICE_URL:o.string().url().optional(),REDOCLY_CORS_ORIGINS:o.string().optional()});export{R as apiUrlsSchema};