@redocly/realm 0.130.0-next.1 → 0.130.0-next.11

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 (249) hide show
  1. package/CHANGELOG.md +179 -0
  2. package/dist/bin.js +1 -1
  3. package/dist/cli/develop.js +1 -1
  4. package/dist/cli/eject/resolveEjectParams.js +1 -1
  5. package/dist/cli/prepare/copy-env-files.js +1 -1
  6. package/dist/cli/stats/collectors/openapi.d.ts +3 -0
  7. package/dist/cli/stats/collectors/openapi.js +1 -0
  8. package/dist/cli/stats/index.d.ts +7 -0
  9. package/dist/cli/stats/index.js +1 -0
  10. package/dist/cli/stats/options.d.ts +3 -0
  11. package/dist/cli/stats/options.js +1 -0
  12. package/dist/cli/telemetry/index.d.ts +2 -2
  13. package/dist/cli/telemetry/index.js +1 -1
  14. package/dist/client/ErrorBoundary.js +1 -1
  15. package/dist/client/app/Sidebar/RequestAccessButton.js +2 -2
  16. package/dist/client/app/Sidebar/Sidebar.js +2 -2
  17. package/dist/client/app/hooks/catalog/useCatalogClassic.js +1 -1
  18. package/dist/client/app/hooks/catalog/useCatalogFilter.js +1 -1
  19. package/dist/client/app/hooks/catalog/useCatalogViewMode.js +1 -1
  20. package/dist/client/app/hooks/catalog/useSearchTracker.js +1 -1
  21. package/dist/client/app/hooks/usePageTimeTracker.js +1 -1
  22. package/dist/client/app/hooks/useRouteChangeTracker.js +1 -1
  23. package/dist/client/app/hooks/useTelemetry.d.ts +2 -2
  24. package/dist/client/app/pages/DevLogin/DevLogin.js +1 -1
  25. package/dist/client/app/search/useAiSearch.js +1 -1
  26. package/dist/client/app/search/useSearch.js +1 -1
  27. package/dist/client/app/telemetry/index.d.ts +11 -1
  28. package/dist/client/app/telemetry/index.js +1 -1
  29. package/dist/client/browser-entry.js +3 -3
  30. package/dist/constants/common.d.ts +3 -1
  31. package/dist/constants/common.js +1 -1
  32. package/dist/constants/l10n/langs/ar.js +1 -1
  33. package/dist/constants/l10n/langs/de.js +1 -1
  34. package/dist/constants/l10n/langs/en.js +1 -1
  35. package/dist/constants/l10n/langs/es.js +1 -1
  36. package/dist/constants/l10n/langs/fr.js +1 -1
  37. package/dist/constants/l10n/langs/hi.js +1 -1
  38. package/dist/constants/l10n/langs/it.js +1 -1
  39. package/dist/constants/l10n/langs/ja.js +1 -1
  40. package/dist/constants/l10n/langs/ko.js +1 -1
  41. package/dist/constants/l10n/langs/pl.js +1 -1
  42. package/dist/constants/l10n/langs/pt-BR.js +1 -1
  43. package/dist/constants/l10n/langs/pt.js +1 -1
  44. package/dist/constants/l10n/langs/ru.js +1 -1
  45. package/dist/constants/l10n/langs/uk.js +1 -1
  46. package/dist/constants/l10n/langs/zh.js +1 -1
  47. package/dist/server/api-routes/execute-api-route.js +1 -1
  48. package/dist/server/api-routes/run-api-routes-worker.js +1 -1
  49. package/dist/server/constants/plugins/catalog-entities.d.ts +1 -0
  50. package/dist/server/constants/plugins/catalog-entities.js +1 -1
  51. package/dist/server/esbuild/esbuild.js +3 -3
  52. package/dist/server/fs/cache.js +1 -1
  53. package/dist/server/node-bundle-entry.js +1 -1
  54. package/dist/server/persistence/kv/repositories/kv-remote-repository.d.ts +1 -0
  55. package/dist/server/persistence/kv/repositories/kv-remote-repository.js +2 -1
  56. package/dist/server/persistence/kv/services/kv-service.js +1 -1
  57. package/dist/server/plugins/asyncapi-docs/store-definition-bundles.js +1 -1
  58. package/dist/server/plugins/asyncapi-docs/template/AsyncApiDocs.js +5 -3
  59. package/dist/server/plugins/catalog-entities/database/catalog-entities-service.d.ts +38 -16
  60. package/dist/server/plugins/catalog-entities/database/catalog-entities-service.js +1 -1
  61. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-attributes-db-record.d.ts +8 -0
  62. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-attributes-db-record.js +1 -0
  63. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-db-record.d.ts +1 -1
  64. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-read-model.js +1 -1
  65. package/dist/server/plugins/catalog-entities/database/mappers/map-entity-relation-row.js +1 -1
  66. package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.d.ts +27 -0
  67. package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.js +1 -0
  68. package/dist/server/plugins/catalog-entities/database/repositories/common/version-repository.d.ts +36 -0
  69. package/dist/server/plugins/catalog-entities/database/repositories/common/version-repository.js +1 -0
  70. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-bff-repository.d.ts +15 -4
  71. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-bff-repository.js +38 -27
  72. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.d.ts +36 -9
  73. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.js +37 -21
  74. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-repository.d.ts +36 -11
  75. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-repository.js +1 -1
  76. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-write-repository.d.ts +3 -1
  77. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-write-repository.js +1 -1
  78. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-relations-repository.d.ts +7 -1
  79. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-relations-repository.js +1 -1
  80. package/dist/server/plugins/catalog-entities/database/repositories/remote/catalog-entities-remote-repository.d.ts +2 -5
  81. package/dist/server/plugins/catalog-entities/database/repositories/remote/catalog-entities-remote-repository.js +1 -1
  82. package/dist/server/plugins/catalog-entities/database/repositories/utils/build-entities-exclusion-filter.d.ts +13 -0
  83. package/dist/server/plugins/catalog-entities/database/repositories/utils/build-entities-exclusion-filter.js +1 -0
  84. package/dist/server/plugins/catalog-entities/database/repositories/utils/build-rbac-filter.d.ts +31 -0
  85. package/dist/server/plugins/catalog-entities/database/repositories/utils/build-rbac-filter.js +9 -0
  86. package/dist/server/plugins/catalog-entities/database/repositories/utils/create-merged-entity-fields-for-select.d.ts +34 -0
  87. package/dist/server/plugins/catalog-entities/database/repositories/utils/create-merged-entity-fields-for-select.js +13 -0
  88. package/dist/server/plugins/catalog-entities/database/repositories/utils/normalize-revision-flags.d.ts +23 -0
  89. package/dist/server/plugins/catalog-entities/database/repositories/utils/normalize-revision-flags.js +1 -0
  90. package/dist/server/plugins/catalog-entities/database/repositories/utils/semantic-version-sort.d.ts +78 -0
  91. package/dist/server/plugins/catalog-entities/database/repositories/utils/semantic-version-sort.js +34 -0
  92. package/dist/server/plugins/catalog-entities/entities/validate-entity.d.ts +3 -1
  93. package/dist/server/plugins/catalog-entities/entities/validate-entity.js +1 -1
  94. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/arazzo-entities-extractor.js +1 -1
  95. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/asyncapi-entities-extractor.js +1 -1
  96. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.d.ts +4 -3
  97. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/base.js +1 -1
  98. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/graphql-entities-extractor.js +2 -2
  99. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.d.ts +1 -1
  100. package/dist/server/plugins/catalog-entities/extensions/extractors/api-description/openapi-entities-extractor.js +1 -1
  101. package/dist/server/plugins/catalog-entities/extensions/extractors/fs-entities-extractor.js +1 -1
  102. package/dist/server/plugins/catalog-entities/get-server-props.js +1 -1
  103. package/dist/server/plugins/catalog-entities/plugin.js +1 -1
  104. package/dist/server/plugins/catalog-entities/schemas/database-schemas.d.ts +3 -0
  105. package/dist/server/plugins/catalog-entities/schemas/database-schemas.js +1 -1
  106. package/dist/server/plugins/catalog-entities/schemas/dto-schemas.d.ts +15 -1
  107. package/dist/server/plugins/catalog-entities/schemas/dto-schemas.js +1 -1
  108. package/dist/server/plugins/catalog-entities/schemas/read-model-schemas.d.ts +1 -0
  109. package/dist/server/plugins/catalog-entities/types/extractors.d.ts +4 -4
  110. package/dist/server/plugins/catalog-entities/types/openapi.d.ts +11 -0
  111. package/dist/server/plugins/catalog-entities/types/openapi.js +0 -0
  112. package/dist/server/plugins/catalog-entities/types/params.d.ts +6 -0
  113. package/dist/server/plugins/catalog-entities/types/params.js +0 -0
  114. package/dist/server/plugins/catalog-entities/utils/ajv-validator.js +1 -1
  115. package/dist/server/plugins/catalog-entities/utils/catalog-data-collector.js +1 -1
  116. package/dist/server/plugins/catalog-entities/utils/get-not-accessible-catalog-resources.d.ts +11 -0
  117. package/dist/server/plugins/catalog-entities/utils/get-not-accessible-catalog-resources.js +1 -0
  118. package/dist/server/plugins/config-parser/loaders/content-slugs-loader.js +1 -1
  119. package/dist/server/plugins/config-parser/loaders/utils/read-and-validate-config.js +1 -1
  120. package/dist/server/plugins/default-theme/index.js +1 -1
  121. package/dist/server/plugins/mcp/docs-mcp/tools/docs-mcp-tool.d.ts +54 -0
  122. package/dist/server/plugins/mcp/docs-mcp/tools/docs-mcp-tool.js +1 -0
  123. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.d.ts +9 -8
  124. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoint-info.js +1 -1
  125. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoints.d.ts +9 -8
  126. package/dist/server/plugins/mcp/docs-mcp/tools/get-endpoints.js +1 -1
  127. package/dist/server/plugins/mcp/docs-mcp/tools/get-full-api-description.d.ts +9 -8
  128. package/dist/server/plugins/mcp/docs-mcp/tools/get-full-api-description.js +1 -1
  129. package/dist/server/plugins/mcp/docs-mcp/tools/get-security-schemes.d.ts +9 -8
  130. package/dist/server/plugins/mcp/docs-mcp/tools/get-security-schemes.js +1 -1
  131. package/dist/server/plugins/mcp/docs-mcp/tools/index.d.ts +7 -13
  132. package/dist/server/plugins/mcp/docs-mcp/tools/index.js +1 -1
  133. package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.d.ts +9 -6
  134. package/dist/server/plugins/mcp/docs-mcp/tools/list-apis.js +1 -1
  135. package/dist/server/plugins/mcp/docs-mcp/tools/search.d.ts +9 -2
  136. package/dist/server/plugins/mcp/docs-mcp/tools/search.js +1 -1
  137. package/dist/server/plugins/mcp/docs-mcp/tools/utils.d.ts +2 -1
  138. package/dist/server/plugins/mcp/docs-mcp/tools/utils.js +6 -6
  139. package/dist/server/plugins/mcp/docs-mcp/tools/whoami.d.ts +9 -2
  140. package/dist/server/plugins/mcp/docs-mcp/tools/whoami.js +1 -1
  141. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  142. package/dist/server/plugins/mcp/handlers/errors.js +1 -1
  143. package/dist/server/plugins/mcp/handlers/handle-mcp-request.d.ts +5 -0
  144. package/dist/server/plugins/mcp/handlers/handle-mcp-request.js +1 -0
  145. package/dist/server/plugins/mcp/handlers/mcp-request-handler.d.ts +0 -1
  146. package/dist/server/plugins/mcp/handlers/mcp-request-handler.js +1 -1
  147. package/dist/server/plugins/mcp/servers/base-server.js +1 -1
  148. package/dist/server/plugins/mcp/types.d.ts +40 -0
  149. package/dist/server/plugins/mcp/workers/execute-mcp-tool.d.ts +3 -0
  150. package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -0
  151. package/dist/server/plugins/openapi-docs/index.js +1 -1
  152. package/dist/server/plugins/openapi-docs/template/OpenAPIDocs.js +8 -4
  153. package/dist/server/plugins/openapi-docs/template/helpers.d.ts +1 -1
  154. package/dist/server/plugins/openapi-docs/template/helpers.js +3 -3
  155. package/dist/server/plugins/scorecard-classic/loaders/scorecard-config.js +1 -1
  156. package/dist/server/plugins/scorecard-classic/types.d.ts +3 -3
  157. package/dist/server/plugins/scorecard-classic/types.js +1 -1
  158. package/dist/server/plugins/scorecards/database/repositories/local/scorecards-config-local-repository.d.ts +12 -0
  159. package/dist/server/plugins/scorecards/database/repositories/local/scorecards-config-local-repository.js +1 -0
  160. package/dist/server/plugins/scorecards/database/scorecards-config-service.d.ts +11 -0
  161. package/dist/server/plugins/scorecards/database/scorecards-config-service.js +1 -0
  162. package/dist/server/plugins/scorecards/workers/run-scorecards-worker.d.ts +2 -1
  163. package/dist/server/plugins/scorecards/workers/run-scorecards-worker.js +1 -1
  164. package/dist/server/plugins/scorecards/workers/scorecards.d.ts +1 -12
  165. package/dist/server/plugins/scorecards/workers/scorecards.js +1 -1
  166. package/dist/server/plugins/search/ai-indexer/prepare-ai-search-documents.js +1 -1
  167. package/dist/server/plugins/search/documents/search-documents.js +1 -1
  168. package/dist/server/plugins/search/llmstxt/index.js +4 -4
  169. package/dist/server/plugins/sso/index.js +1 -1
  170. package/dist/server/providers/database/base-repository.d.ts +1 -0
  171. package/dist/server/providers/database/base-repository.js +1 -1
  172. package/dist/server/providers/database/database-connection-factory.js +1 -1
  173. package/dist/server/providers/database/databases/catalog-sqlite/migrations/0005_catalog-relations-constraint-fix.sql +2 -0
  174. package/dist/server/providers/database/databases/catalog-sqlite/migrations/0006_add-catalog-entitities-attributes-table.sql +11 -0
  175. package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/0005_snapshot.json +393 -0
  176. package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/0006_snapshot.json +458 -0
  177. package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/_journal.json +14 -0
  178. package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-attributes-table.d.ts +143 -0
  179. package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-attributes-table.js +1 -0
  180. package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-relations-table.js +1 -1
  181. package/dist/server/providers/database/databases/main-sqlite/migrations/0006_change-scorecards-config-timestamps-field-types.sql +19 -0
  182. package/dist/server/providers/database/databases/main-sqlite/migrations/meta/0006_snapshot.json +261 -0
  183. package/dist/server/providers/database/databases/main-sqlite/migrations/meta/_journal.json +7 -0
  184. package/dist/server/providers/database/databases/main-sqlite/schemas/scorecards-config-table.d.ts +24 -18
  185. package/dist/server/providers/database/databases/main-sqlite/schemas/scorecards-config-table.js +1 -1
  186. package/dist/server/providers/database/databases/sqld-sqlite/migrations/0007_catalog-relations-constraint-fix.sql +2 -0
  187. package/dist/server/providers/database/databases/sqld-sqlite/migrations/0008_add-catalog-entitities-attributes-table.sql +11 -0
  188. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/0007_snapshot.json +833 -0
  189. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/0008_snapshot.json +898 -0
  190. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/_journal.json +14 -0
  191. package/dist/server/providers/database/pagination/entities-to-filter.d.ts +15 -0
  192. package/dist/server/providers/database/pagination/entities-to-filter.js +1 -0
  193. package/dist/server/providers/database/pagination/utils/index.d.ts +4 -0
  194. package/dist/server/providers/database/pagination/utils/index.js +1 -1
  195. package/dist/server/providers/database/pagination/utils/is-nested-condition.d.ts +16 -0
  196. package/dist/server/providers/database/pagination/utils/is-nested-condition.js +1 -0
  197. package/dist/server/providers/database/pagination/utils/is-simple-condition.d.ts +18 -0
  198. package/dist/server/providers/database/pagination/utils/is-simple-condition.js +1 -0
  199. package/dist/server/providers/database/pagination/utils/map-operator.d.ts +10 -0
  200. package/dist/server/providers/database/pagination/utils/map-operator.js +1 -0
  201. package/dist/server/providers/database/pagination/utils/transform-condition.d.ts +12 -0
  202. package/dist/server/providers/database/pagination/utils/transform-condition.js +1 -0
  203. package/dist/server/ssr/server-side-props/get-server-props-from-user-handler.js +1 -1
  204. package/dist/server/store.d.ts +3 -1
  205. package/dist/server/store.js +1 -1
  206. package/dist/server/tools/notifiers/logger.js +1 -1
  207. package/dist/server/tools/notifiers/reporter.js +7 -7
  208. package/dist/server/types/plugins/common.d.ts +3 -1
  209. package/dist/server/types/plugins/scorecards.d.ts +30 -0
  210. package/dist/server/types/plugins/scorecards.js +0 -0
  211. package/dist/server/utils/envs/load-env-variables.d.ts +1 -1
  212. package/dist/server/utils/envs/load-env-variables.js +1 -1
  213. package/dist/server/utils/envs/sanitize-branch-name.d.ts +6 -0
  214. package/dist/server/utils/envs/sanitize-branch-name.js +1 -0
  215. package/dist/server/utils/lifecycle-hooks.js +1 -1
  216. package/dist/server/utils/rbac.d.ts +76 -7
  217. package/dist/server/utils/rbac.js +1 -1
  218. package/dist/server/utils/time/with-timestamp.d.ts +42 -10
  219. package/dist/server/utils/time/with-timestamp.js +1 -1
  220. package/dist/server/web-server/auth.js +3 -3
  221. package/dist/server/web-server/dev-server.js +1 -1
  222. package/dist/server/web-server/handle-api-route-request.js +1 -1
  223. package/dist/server/web-server/middleware/catalogAuthMiddleware.d.ts +4 -6
  224. package/dist/server/web-server/middleware/catalogAuthMiddleware.js +1 -1
  225. package/dist/server/web-server/routes/auth.js +1 -1
  226. package/dist/server/web-server/routes/catalog/bff-catalog-related-entities.js +1 -1
  227. package/dist/server/web-server/routes/catalog/bff-catalog.js +1 -1
  228. package/dist/server/web-server/routes/catalog/catalog.js +1 -1
  229. package/dist/server/web-server/routes/catalog/helpers/has-access-to-entity.d.ts +10 -0
  230. package/dist/server/web-server/routes/catalog/helpers/has-access-to-entity.js +1 -0
  231. package/dist/server/web-server/routes/dynamic-route.js +1 -1
  232. package/dist/server/web-server/routes/helpers/get-current-rbac-teams.d.ts +3 -0
  233. package/dist/server/web-server/routes/helpers/get-current-rbac-teams.js +1 -0
  234. package/dist/server/web-server/routes/helpers/get-rbac-restrictions-data-for-catalog.d.ts +11 -0
  235. package/dist/server/web-server/routes/helpers/get-rbac-restrictions-data-for-catalog.js +1 -0
  236. package/dist/server/web-server/routes/index.js +1 -1
  237. package/dist/server/web-server/routes/mcp-oauth.js +1 -1
  238. package/dist/server/web-server/routes/page-data.js +1 -1
  239. package/dist/server/workers/mcp-tool-worker-pool.d.ts +4 -0
  240. package/dist/server/workers/mcp-tool-worker-pool.js +1 -0
  241. package/dist/server/workers/mcp-tool-worker.d.ts +2 -0
  242. package/dist/server/workers/mcp-tool-worker.js +1 -0
  243. package/dist/server/workers/types.d.ts +7 -1
  244. package/dist/utils/env/is-local-development.js +1 -1
  245. package/package.json +16 -19
  246. package/dist/server/plugins/mcp/workers/run-api-routes-worker.d.ts +0 -5
  247. package/dist/server/plugins/mcp/workers/run-api-routes-worker.js +0 -1
  248. package/dist/server/workers/mcp-worker-pool.d.ts +0 -4
  249. package/dist/server/workers/mcp-worker-pool.js +0 -1
@@ -1,2 +1,3 @@
1
- export declare function runScorecardsWorker(baseDbDir: string): Promise<void>;
1
+ import type { ScorecardsConfig } from '@redocly/config';
2
+ export declare function runScorecardsWorker(baseDbDir: string, scorecardsConfig: ScorecardsConfig): Promise<void>;
2
3
  //# sourceMappingURL=run-scorecards-worker.d.ts.map
@@ -1 +1 @@
1
- import{SCORECARDS_WORKER_KEY as n,scorecardsWorker as i}from"../../../workers/scorecards-worker-pool.js";import{logger as r}from"../../../tools/notifiers/logger.js";const c=5;async function t(s,e){try{const o=await i.exec(n,[{baseDbDir:s,pollingIntervalMs:parseInt(process.env.SCORECARDS_POLLING_INTERVAL_MS||"3000",10)}]);return o.success?r.info(`${o.message}`):r.error(`Scorecards Worker error (attempt ${e}/${c}):`,o.error),Promise.resolve()}catch(o){r.error(`Scorecards Worker execution failed (attempt ${e}/${c}):`,o)}return e<c?(r.info(`Retrying Scorecards Worker (attempt ${e+1}/${c})...`),t(s,e+1)):(r.error(`All ${c} attempts failed. Scorecards Worker could not be started.`),Promise.resolve())}async function l(s){return r.info("Starting continuous Scorecards Worker..."),t(s,1)}export{l as runScorecardsWorker};
1
+ import{SCORECARDS_WORKER_KEY as u,scorecardsWorker as f}from"../../../workers/scorecards-worker-pool.js";import{logger as e}from"../../../tools/notifiers/logger.js";const o=5;async function n(c){const{baseDbDir:s,scorecardsConfig:a,attempt:t}=c;try{const r=await f.exec(u,[{baseDbDir:s,scorecardsConfig:a,pollingIntervalMs:parseInt(process.env.SCORECARDS_POLLING_INTERVAL_MS||"3000",10)}]);if(r.success)return e.info(`${r.message}`),Promise.resolve();e.error(`Execute Scorecards Worker: failed (attempt ${t}/${o}): ${r.error}`)}catch(r){const i=r instanceof Error?r.message:String(r);e.error(`Execute Scorecards Worker: failed (attempt ${t}/${o}): ${i}`)}return t<o?(e.info(`Execute Scorecards Worker: retrying... (attempt ${t+1}/${o})`),n({baseDbDir:s,scorecardsConfig:a,attempt:t+1})):(e.error(`Execute Scorecards Worker: failed. Scorecards Worker could not be started after all ${o} attempts`),Promise.resolve())}async function S(c,s){return e.info("Start Scorecards Worker: executing..."),n({baseDbDir:c,scorecardsConfig:s,attempt:1})}export{S as runScorecardsWorker};
@@ -1,14 +1,3 @@
1
- export type ScorecardsWorkerParams = {
2
- baseDbDir: string;
3
- pollingIntervalMs?: number;
4
- };
5
- export type ScorecardsWorkerResponse = {
6
- success: true;
7
- message: string;
8
- } | {
9
- success: false;
10
- message: string;
11
- error: string;
12
- };
1
+ import type { ScorecardsWorkerParams, ScorecardsWorkerResponse } from '../../../types/plugins/scorecards.js';
13
2
  export declare function startScorecardsWorker(params: ScorecardsWorkerParams): Promise<ScorecardsWorkerResponse>;
14
3
  //# sourceMappingURL=scorecards.d.ts.map
@@ -1 +1 @@
1
- import{logger as o}from"../../../tools/notifiers/logger.js";import{loadEnvVariables as l}from"../../../utils/envs/load-env-variables.js";import{CatalogEntitiesService as d}from"../../../plugins/catalog-entities/database/catalog-entities-service.js";const u=3e3;async function y(s){try{const{baseDbDir:r,pollingIntervalMs:a=u}=s;l(r),o.verbose(`Initializing Scorecards Worker: polling interval ${a}ms (${a/1e3}s)`);const t=await d.getInstance({baseDbDir:r});return g(t,a),{success:!0,message:"Scorecards Worker started successfully"}}catch(r){const a=r instanceof Error?r.message:String(r);return o.error("Failed to start Scorecards Worker:",r),{success:!1,message:"Failed to start Scorecards Worker",error:a}}}async function g(s,r){let a=0,t=null;return t=setInterval(n,r),new Promise(()=>{});async function c(e){return e&&(await s.updateEntityScorecardsStatus(e.id,"CALCULATING"),await new Promise(i=>{setTimeout(async()=>{i()},1)}),await s.updateEntityScorecardsStatusIfCalculating(e.id,"UP_TO_DATE")?o.verbose(`Catalog Entity (${e.key}) scorecard evaluation completed successfully`):(await s.updateEntityScorecardsStatus(e.id,"OUTDATED"),o.verbose(`Catalog Entity (${e.key}) was updated during calculation, scorecard evaluation in not applicable anymore`))),Promise.resolve()}async function n(){try{a++;const e=await s.getOutdatedEntity();if(!e)return t||(o.verbose(`\u{1F50D} Resuming normal polling interval ${r}ms (${r/1e3}s)`),t=setInterval(n,r)),Promise.resolve();o.verbose(`\u{1F50D} Poll #${a} in Scorecards Worker: found Catalog Entity (${e.key}) for scorecard evaluation`),t&&(clearInterval(t),t=null,o.verbose(`\u{1F50D} Stopping normal polling while processing Catalog Entity (${e.key}) for scorecard evaluation`)),await c(e),await n()}catch(e){o.error("Error during poll in Scorecards Worker:",e),t||(t=setInterval(n,r))}}}export{y as startScorecardsWorker};
1
+ import{logger as o}from"../../../tools/notifiers/logger.js";import{loadEnvVariables as g}from"../../../utils/envs/load-env-variables.js";import{CatalogEntitiesService as S}from"../../../plugins/catalog-entities/database/catalog-entities-service.js";import{ScorecardsConfigService as y}from"../../../plugins/scorecards/database/scorecards-config-service.js";import{transformEntitiesToFilter as v}from"../../../providers/database/pagination/entities-to-filter.js";const m=3e3;let c=null;async function C(i){try{const{baseDbDir:r,scorecardsConfig:t,pollingIntervalMs:a=m}=i;o.verbose(`Start Scorecards Worker: initializing (polling interval ${a}ms)`);const n=await y.getInstance({baseDbDir:r}),d=await S.getInstance({baseDbDir:r});await g(r);const s=p(t);return await E({scorecardsConfig:t,entitiesFilters:s,entitiesService:d,configService:n}),P({pollingIntervalMs:a,scorecardsConfig:t,entitiesFilters:s,entitiesService:d}),{success:!0,message:"Start Scorecards Worker: success"}}catch(r){return c&&(clearInterval(c),c=null),{success:!1,message:"Start Scorecards Worker: failed",error:r instanceof Error?r.message:String(r)}}}function p(i){const r={};for(const t of i)r[t.key]=v(t.entities);return r}async function E(i){const{configService:r,scorecardsConfig:t,entitiesFilters:a,entitiesService:n}=i,d=async s=>{await n.setEntitiesAsOutdated(a[s]),o.verbose(`Update entities as outdated: success (scorecard ${s})`)};try{await r.syncConfig(t,d),o.verbose("Sync scorecard configuration: success")}catch(s){const e=s instanceof Error?s.message:String(s);o.error(`Sync scorecard configuration: failed (${e})`)}}async function P(i){const{scorecardsConfig:r,pollingIntervalMs:t,entitiesFilters:a,entitiesService:n}=i;return c=setInterval(s,t),new Promise(()=>{});async function d(e,l){return await n.updateEntityScorecardsStatus(e.id,"CALCULATING"),await new Promise(u=>{setTimeout(async()=>{u()},1)}),await n.updateEntityScorecardsStatusIfCalculating(e.id,"UP_TO_DATE")?o.verbose(`Process entity scorecard: success (entity ${e.key}, scorecard ${l})`):(await n.updateEntityScorecardsStatus(e.id,"OUTDATED"),o.verbose(`Process entity scorecard: entity updated during calculation (entity ${e.key})`)),Promise.resolve()}async function s(){try{for(const e of r){const l=a[e.key];if(!l){o.warn(`Process scorecard: filter not found (scorecard ${e.key})`);continue}const f=await n.getOutdatedEntities(l);if(f.length===0){o.verbose(`Poll scorecards: no entities found for scorecard ${e.key}`);continue}o.verbose(`Poll scorecards: found ${f.length} entity(ies) for scorecard ${e.key}`),c&&(clearInterval(c),c=null,o.verbose(`Poll scorecards: stopped (processing ${f.length} entity(ies) for scorecard ${e.key})`));for(const u of f)await d(u,e.key)}c||(o.verbose(`Poll scorecards: resumed (interval ${t}ms)`),c=setInterval(s,t))}catch(e){const l=e instanceof Error?e.message:String(e);o.error(`Poll scorecards: failed (${l})`),c||(c=setInterval(s,t))}}}export{C as startScorecardsWorker};
@@ -1 +1 @@
1
- import p from"node:path";import{existsSync as b}from"node:fs";import{writeFile as x,access as v,rm as N,constants as X}from"fs/promises";import{REDOCLY_ROUTE_RBAC as S,REDOCLY_TEAMS_RBAC as D}from"@redocly/config";import $ from"picomatch";import{DEFAULT_LOCALE_PLACEHOLDER as _}from"../../../../constants/common.js";import{AI_INDEX_EXPORT_FOLDER as j}from"../../../constants/plugins/search.js";import{LLMS_TXT_FILE_NAME as k}from"../../../constants/common.js";import{isBuildMode as B}from"../../../utils/envs/is-build-mode.js";import{logger as a}from"../../../tools/notifiers/logger.js";import{shaHexShort as G}from"../../../utils/crypto/sha-hex-short.js";import{promiseMapLimit as M}from"../../../utils/async/promise-map-limit.js";import{ensureDir as A}from"../../../utils/fs.js";import{isResourcePubliclyAccessible as H,extractTeamsForSearch as U,getRbacTeamsForSearch as Y}from"../../../utils/rbac.js";import{validateLLMsTxtConfig as J,generateLLMsTxt as K,getLLMsTxtMdSlug as V}from"../llmstxt/index.js";const P=20,R="llms.txt:";async function pt(t,i,{aiSearchEnabled:e,llmstxtEnabled:r}){const s=p.join(t.outdir,k);if(!r){try{await v(s,X.W_OK),await N(s)}catch{}if(!e)return}e&&a.info("Preparing AI search documents..."),r&&a.info(`${R} Generating llms.txt files...`);const L=a.startTiming(),c=a.startTiming(),f=t.getGlobalConfig("seo"),l=f?.llmstxt,T=p.resolve(t.outdir,j),u=t.getConfig(),w=u.rbac??{},C=t.getAllRoutes(),F=u?.l10n?.defaultLocale||u?.i18n?.defaultLocale||_,O=(l?.excludeFiles||[]).map(o=>$(o)),d=[];if(await M(C,P,async o=>{if(o.excludeFromSearch)return;const y=await W(o,t),h=await q(o,y,i,t);if(h){if(r)for(const n of await h.getLLMsTxts()){if(O.some(m=>m(n.fsPath)))continue;const g=p.join(t.outdir,V(n.slug));A(g),await x(g,n.content),n.includeInLLMsTxt&&H(o,u)&&d.push(n)}if(e&&B()){const n=await h.getSearchDocuments();if(!n.length)return;const g=z(o,w),m=o.versions?.find(({active:I})=>I),E=m&&{folder:m.folderId,label:m.label,default:m.default};await Q(n,o.fsPath,g,T,F,E)}}}),e&&a.infoTime(c,"AI search documents prepared"),d.length)try{J(l);const o=await K(d,l,{title:f?.title,description:f?.description},i);A(s),await x(s,o),a.infoTime(L,`${R} files generated`)}catch(o){a.error(`${R} Failed to generate llms.txt file. ${o.message}`)}}async function W(t,i){return t.getStaticData?t.getStaticData(t,{...i,contentDir:i.contentDir,parseMarkdoc:(e,r,s)=>i.parseMarkdoc(e,r,s)}):{}}async function q(t,i,e,r){if(t.getAiDocumentsStore)return t.getAiDocumentsStore(t,{...i,[D]:t[D],[S]:t[S]},e,r)}function z(t,i){const e=U(t?.[D]);return e?.length?e:Y(t,i)}async function Q(t,i,e,r,s,L){await M(t,P,async c=>{const f=`${G(i+c.content)}.json`,l=A(p.join(r,f)),T=c.locale===_?s:c.locale;b(l)||await x(l,JSON.stringify({...c,rbacTeams:e||[],version:L,locale:T}),"utf-8")})}export{pt as prepareAiSearchDocuments};
1
+ import p from"node:path";import{existsSync as b}from"node:fs";import{writeFile as D,access as v,rm as N,constants as X}from"fs/promises";import{REDOCLY_ROUTE_RBAC as S,REDOCLY_TEAMS_RBAC as R}from"@redocly/config";import $ from"picomatch";import{DEFAULT_LOCALE_PLACEHOLDER as _}from"../../../../constants/common.js";import{AI_INDEX_EXPORT_FOLDER as j}from"../../../constants/plugins/search.js";import{LLMS_TXT_FILE_NAME as k}from"../../../constants/common.js";import{isBuildMode as B}from"../../../utils/envs/is-build-mode.js";import{logger as a}from"../../../tools/notifiers/logger.js";import{shaHexShort as G}from"../../../utils/crypto/sha-hex-short.js";import{promiseMapLimit as M}from"../../../utils/async/promise-map-limit.js";import{ensureDir as A}from"../../../utils/fs.js";import{isResourcePubliclyAccessible as H,extractTeamsFromScopeItems as U,getRbacTeamsListForResource as Y}from"../../../utils/rbac.js";import{validateLLMsTxtConfig as J,generateLLMsTxt as K,getLLMsTxtMdSlug as V}from"../llmstxt/index.js";const P=20,h="llms.txt:";async function pt(t,i,{aiSearchEnabled:e,llmstxtEnabled:r}){const s=p.join(t.outdir,k);if(!r){try{await v(s,X.W_OK),await N(s)}catch{}if(!e)return}e&&a.info("Preparing AI search documents..."),r&&a.info(`${h} Generating llms.txt files...`);const L=a.startTiming(),c=a.startTiming(),f=t.getGlobalConfig("seo"),l=f?.llmstxt,T=p.resolve(t.outdir,j),u=t.getConfig(),w=u.rbac??{},C=t.getAllRoutes(),F=u?.l10n?.defaultLocale||u?.i18n?.defaultLocale||_,I=(l?.excludeFiles||[]).map(o=>$(o)),d=[];if(await M(C,P,async o=>{if(o.excludeFromSearch)return;const O=await W(o,t),x=await q(o,O,i,t);if(x){if(r)for(const n of await x.getLLMsTxts()){if(I.some(m=>m(n.fsPath)))continue;const g=p.join(t.outdir,V(n.slug));A(g),await D(g,n.content),n.includeInLLMsTxt&&H(o,u)&&d.push(n)}if(e&&B()){const n=await x.getSearchDocuments();if(!n.length)return;const g=z(o,w),m=o.versions?.find(({active:E})=>E),y=m&&{folder:m.folderId,label:m.label,default:m.default};await Q(n,o.fsPath,g,T,F,y)}}}),e&&a.infoTime(c,"AI search documents prepared"),d.length)try{J(l);const o=await K(d,l,{title:f?.title,description:f?.description},i);A(s),await D(s,o),a.infoTime(L,`${h} files generated`)}catch(o){a.error(`${h} Failed to generate llms.txt file. ${o.message}`)}}async function W(t,i){return t.getStaticData?t.getStaticData(t,{...i,contentDir:i.contentDir,parseMarkdoc:(e,r,s)=>i.parseMarkdoc(e,r,s)}):{}}async function q(t,i,e,r){if(t.getAiDocumentsStore)return t.getAiDocumentsStore(t,{...i,[R]:t[R],[S]:t[S]},e,r)}function z(t,i){const e=U(t?.[R]);return e?.length?e:Y(t,i)}async function Q(t,i,e,r,s,L){await M(t,P,async c=>{const f=`${G(i+c.content)}.json`,l=A(p.join(r,f)),T=c.locale===_?s:c.locale;b(l)||await D(l,JSON.stringify({...c,rbacTeams:e||[],version:L,locale:T}),"utf-8")})}export{pt as prepareAiSearchDocuments};
@@ -1 +1 @@
1
- import{REDOCLY_ROUTE_RBAC as T,REDOCLY_TEAMS_RBAC as p}from"@redocly/config";import{existsSync as O}from"fs";import{rm as $}from"node:fs/promises";import{DEFAULT_LOCALE_PLACEHOLDER as y}from"../../../../constants/common.js";import{SEARCH_DATA_EXPORT_FOLDER as S}from"../../../constants/plugins/search.js";import{isBuildMode as A}from"../../../utils/envs/is-build-mode.js";import{logger as n}from"../../../tools/notifiers/logger.js";import{extractTeamsForSearch as M,getRbacTeamsForSearch as P}from"../../../utils/index.js";import{getSearchDocumentGroup as B}from"../utils.js";import{telemetry as I}from"../../../../cli/telemetry/index.js";import{telemetryTraceStep as _}from"../../../../cli/telemetry/helpers/trace-step.js";async function J(b,t,l){await _("build.plugin.search.prepare_search_documents",async()=>{n.info("Preparing search documents and create indexes..."),A()&&O(`${t.outdir}/${S}`)&&await $(`${t.outdir}/${S}`,{recursive:!0});const F=n.startTiming(),R=t.getConfig().rbac,v=[y,...b.localeFolders.map(a=>a.toLowerCase())];for(const a of v)await _("build.plugin.search.prepare_search_documents.locale",async s=>{const w=t.getAllRoutesForLocale(a);let g=0,h=0;for(const r of w){if(g++,r.excludeFromSearch)continue;const f=new Map,{product:m}=r,C=await r.getStaticData?.(r,{...t,contentDir:t.contentDir,parseMarkdoc:(c,e,u)=>t.parseMarkdoc(c,e,u)})||{},i=await r.getSearchDocuments?.(r,{...C,[p]:r[p],[T]:r[T]},t),o=r.versions?.find(c=>c.active),L=P(r,R??{});if(i){if(i&&i.length){h+=i.length;for(const c in i){let e=i[c];const u=M(e?.[p]),D=u?.length?u:L,x=e.tags||[];e={...e,...o&&{version:o.version,isDefaultVersion:o.default,versionFolderId:o.folderId},...m&&{product:m},rbacTeams:D,tags:[...x,...D,...o?o.default?["v:default"]:[`v:${o.folderId}:${o.version}`]:["v:default"],...m?[`p:${m.name}`]:[]],url:e.url&&(e.path&&e.path.length>1?e.url:e.url.split("#")[0])};const d=B(e.facets);if(d){const E=f.get(d)??[];f.set(d,[...E,e])}}}for(const[c,e]of f)await l.addDocuments(e,{locale:a,group:c,outDir:t.outdir})}}s?.setAttribute("locale",a),s?.setAttribute("totalDocuments",g),s?.setAttribute("totalSearchDocuments",h)});if(l.cleanupFacetValues(t),n.infoTime(F,"Search indexes created"),A()){n.info("Writing out search data...");const a=n.startTiming();await l.export(t.outdir);const s=n.infoTime(a,"Search data written");s&&I.sendTimingPerformedMessage(s)}})}export{J as prepareSearchDocuments};
1
+ import{REDOCLY_ROUTE_RBAC as T,REDOCLY_TEAMS_RBAC as p}from"@redocly/config";import{existsSync as O}from"fs";import{rm as $}from"node:fs/promises";import{DEFAULT_LOCALE_PLACEHOLDER as y}from"../../../../constants/common.js";import{SEARCH_DATA_EXPORT_FOLDER as S}from"../../../constants/plugins/search.js";import{isBuildMode as A}from"../../../utils/envs/is-build-mode.js";import{logger as n}from"../../../tools/notifiers/logger.js";import{extractTeamsFromScopeItems as M,getRbacTeamsListForResource as P}from"../../../utils/index.js";import{getSearchDocumentGroup as I}from"../utils.js";import{telemetry as B}from"../../../../cli/telemetry/index.js";import{telemetryTraceStep as R}from"../../../../cli/telemetry/helpers/trace-step.js";async function J(_,t,l){await R("build.plugin.search.prepare_search_documents",async()=>{n.info("Preparing search documents and create indexes..."),A()&&O(`${t.outdir}/${S}`)&&await $(`${t.outdir}/${S}`,{recursive:!0});const b=n.startTiming(),F=t.getConfig().rbac,v=[y,..._.localeFolders.map(a=>a.toLowerCase())];for(const a of v)await R("build.plugin.search.prepare_search_documents.locale",async c=>{const L=t.getAllRoutesForLocale(a);let g=0,D=0;for(const r of L){if(g++,r.excludeFromSearch)continue;const f=new Map,{product:m}=r,w=await r.getStaticData?.(r,{...t,contentDir:t.contentDir,parseMarkdoc:(s,e,u)=>t.parseMarkdoc(s,e,u)})||{},i=await r.getSearchDocuments?.(r,{...w,[p]:r[p],[T]:r[T]},t),o=r.versions?.find(s=>s.active),C=P(r,F??{});if(i){if(i&&i.length){D+=i.length;for(const s in i){let e=i[s];const u=M(e?.[p]),h=u?.length?u:C,x=e.tags||[];e={...e,...o&&{version:o.version,isDefaultVersion:o.default,versionFolderId:o.folderId},...m&&{product:m},rbacTeams:h,tags:[...x,...h,...o?o.default?["v:default"]:[`v:${o.folderId}:${o.version}`]:["v:default"],...m?[`p:${m.name}`]:[]],url:e.url&&(e.path&&e.path.length>1?e.url:e.url.split("#")[0])};const d=I(e.facets);if(d){const E=f.get(d)??[];f.set(d,[...E,e])}}}for(const[s,e]of f)await l.addDocuments(e,{locale:a,group:s,outDir:t.outdir})}}c?.setAttribute("locale",a),c?.setAttribute("totalDocuments",g),c?.setAttribute("totalSearchDocuments",D)});if(l.cleanupFacetValues(t),n.infoTime(b,"Search indexes created"),A()){n.info("Writing out search data...");const a=n.startTiming();await l.export(t.outdir);const c=n.infoTime(a,"Search data written");c&&B.sendTimingPerformedMessage(c)}})}export{J as prepareSearchDocuments};
@@ -1,4 +1,4 @@
1
- import a from"picomatch";import{dirname as $,resolve as x}from"node:path";import{access as E,readFile as F,constants as P}from"fs/promises";import{removeTrailingSlash as w}from"../../../../utils/url/remove-trailing-slash.js";import{logger as I}from"../../../tools/notifiers/logger.js";const l="llms.txt",u="Table of contents";async function g(e,t,n={title:l,description:void 0},o){if(!t)return{title:n.title||l,description:n.description,details:void 0,sections:[{title:u,description:void 0,llmstxts:e}]};const s=t.title||n.title||l,r=t.description||n.description,i=await y(t,o),c=t.sections?.map(d=>{const{title:f,description:h,excludeFiles:L,includeFiles:m}=d,T=p(e,{excludeFiles:L,includeFiles:m});return{title:f,description:h,llmstxts:T}});return{title:s,description:r,details:i,sections:c||[{title:u,description:void 0,llmstxts:p(e,{includeFiles:["**/*"],excludeFiles:[]})}]}}async function y(e,t){const n=await t.getConfig();if(e?.details?.path&&n.configPath)try{const o=t.fs.getFileInfo(n.configPath);if(!o)throw new Error(`Config file ${n.configPath} not found`);const s=x(t.fs.cwd,$(o.relativePath),e.details.path);return await E(s,P.R_OK),F(s,"utf-8")}catch{throw new Error(`${e.details.path} is not accessible`)}if(e?.details?.content)return e.details.content}function p(e,t){const{excludeFiles:n,includeFiles:o}=t,s=n?.map(i=>a(i)),r=o?.map(i=>a(i));return e.filter(i=>s?.some(d=>d(i.fsPath))?!1:r?.some(d=>d(i.fsPath)))}async function S(e,t,n={title:l,description:void 0},o){const s=await g(e,t,n,o),r=[`# ${s.title}
1
+ import a from"picomatch";import{dirname as $,resolve as x}from"node:path";import{access as P,readFile as E,constants as F}from"fs/promises";import{removeTrailingSlash as w}from"../../../../utils/url/remove-trailing-slash.js";import{logger as I}from"../../../tools/notifiers/logger.js";import{withPathPrefix as g}from"@redocly/theme/core/utils";const l="llms.txt",u="Table of contents";async function y(t,e,n={title:l,description:void 0},o){if(!e)return{title:n.title||l,description:n.description,details:void 0,sections:[{title:u,description:void 0,llmstxts:t}]};const s=e.title||n.title||l,r=e.description||n.description,i=await M(e,o),c=e.sections?.map(d=>{const{title:f,description:h,excludeFiles:L,includeFiles:m}=d,T=p(t,{excludeFiles:L,includeFiles:m});return{title:f,description:h,llmstxts:T}});return{title:s,description:r,details:i,sections:c||[{title:u,description:void 0,llmstxts:p(t,{includeFiles:["**/*"],excludeFiles:[]})}]}}async function M(t,e){const n=await e.getConfig();if(t?.details?.path&&n.configPath)try{const o=e.fs.getFileInfo(n.configPath);if(!o)throw new Error(`Config file ${n.configPath} not found`);const s=x(e.fs.cwd,$(o.relativePath),t.details.path);return await P(s,F.R_OK),E(s,"utf-8")}catch{throw new Error(`${t.details.path} is not accessible`)}if(t?.details?.content)return t.details.content}function p(t,e){const{excludeFiles:n,includeFiles:o}=e,s=n?.map(i=>a(i)),r=o?.map(i=>a(i));return t.filter(i=>s?.some(d=>d(i.fsPath))?!1:r?.some(d=>d(i.fsPath)))}async function N(t,e,n={title:l,description:void 0},o){const s=await y(t,e,n,o),r=[`# ${s.title}
2
2
 
3
3
  `];return s.description&&r.push(`> ${s.description}
4
4
 
@@ -8,6 +8,6 @@ import a from"picomatch";import{dirname as $,resolve as x}from"node:path";import
8
8
  `),i.description?r.push(`${i.description.replace(/\n+$/,"")}
9
9
 
10
10
  `):r.push(`
11
- `),i.llmstxts.forEach(c=>{r.push(` - ${M({title:c.title,description:c.description,slug:v(c.slug)})}`)}),r.push(`
12
- `)}),r.join("")}function M({title:e,description:t,slug:n}){return`[${e}](${w(process.env.REDOCLY_PUBLIC_URL||"")}${encodeURI(n)})${t?`: ${t}`:""}
13
- `}function A(e){if(e?.details?.path&&e?.details?.content)throw new Error('"details.path" and "details.content" are mutually exclusive. Please use only one of them.')}function v(e){return`${e}${e==="/"?"index.html.md":".md"}`}export{S as generateLLMsTxt,v as getLLMsTxtMdSlug,M as llmsTxtLink,A as validateLLMsTxtConfig};
11
+ `),i.llmstxts.forEach(c=>{r.push(` - ${v({title:c.title,description:c.description,slug:_(c.slug)})}`)}),r.push(`
12
+ `)}),r.join("")}function v({title:t,description:e,slug:n}){return`[${t}](${w(process.env.REDOCLY_PUBLIC_URL||"")}${encodeURI(g(n))})${e?`: ${e}`:""}
13
+ `}function H(t){if(t?.details?.path&&t?.details?.content)throw new Error('"details.path" and "details.content" are mutually exclusive. Please use only one of them.')}function _(t){return`${t}${t==="/"?"index.html.md":".md"}`}export{N as generateLLMsTxt,_ as getLLMsTxtMdSlug,v as llmsTxtLink,H as validateLLMsTxtConfig};
@@ -1 +1 @@
1
- import{DEFAULT_SSO_IDP_TITLE as d}from"../../../constants/common.js";import{telemetryTraceStep as u}from"../../../cli/telemetry/helpers/trace-step.js";const f="https://auth.cloud.redocly.com/oidc/.well-known/openid-configuration",y="https://auth.cloud.redocly.com/api/sso/oidc/introspect";async function O(g){return{id:"sso",async processContent(e){await u("build.plugin.sso",async c=>{const o=e.getConfig();if(c?.setAttribute("config",`{"ssoDirect": ${JSON.stringify(o.ssoDirect||{})}}, {"sso": ${JSON.stringify(o.sso||{})}}`),o.ssoDirect&&typeof o.ssoDirect=="object"&&Object.keys(o.ssoDirect).length!==0||o.sso&&Array.isArray(o.sso)&&!o.sso.length)return;const a=!!(o.rbac&&typeof o.rbac=="object"&&Object.keys(o.rbac).length!==0),p=o.requiresLogin;if(!a&&!p)return;let n=f,i=process.env.REDOCLY_OAUTH_USE_INTROSPECT?y:"";const s=o.residency;if(s){const r=s.endsWith("/")?s.slice(0,-1):s;n=`${r.replace("app.","auth.")}/oidc/.well-known/openid-configuration`,i=process.env.REDOCLY_OAUTH_USE_INTROSPECT?`${r}/api/sso/oidc/introspect`:""}let t="AUTO";o.sso&&(Array.isArray(o.sso)?t=o.sso.join(","):t=o.sso);const l={oidc:{title:d,type:"OIDC",configurationUrl:n,clientId:"{{ process.env.OAUTH_CLIENT_ID }}",clientSecret:"{{ process.env.OAUTH_CLIENT_SECRET }}",teamsClaimName:"https://redocly.com/sso/teams",scopes:["openid"],authorizationRequestCustomParams:{login_hint:"{{ process.env.ORG_ID }}",login_type:t,prompt:"login"},audience:"{{ process.env.ORG_ID }}",introspectEndpoint:i}};e.setGlobalConfig({ssoDirect:l})})},async afterRoutesCreated(e){}}}export{O as ssoPlugin};
1
+ import{DEFAULT_SSO_IDP_TITLE as d}from"../../../constants/common.js";import{telemetryTraceStep as u}from"../../../cli/telemetry/helpers/trace-step.js";const f="https://auth.cloud.redocly.com/oidc/.well-known/openid-configuration",y="https://auth.cloud.redocly.com/api/sso/oidc/introspect";async function _(g){return{id:"sso",async processContent(e){await u("build.plugin.sso",async c=>{const o=e.getConfig();if(c?.setAttribute("config",`{"ssoDirect": ${JSON.stringify(o.ssoDirect||{})}}, {"sso": ${JSON.stringify(o.sso||{})}}`),o.ssoDirect&&typeof o.ssoDirect=="object"&&Object.keys(o.ssoDirect).length!==0||o.sso&&Array.isArray(o.sso)&&!o.sso.length)return;const a=!!(o.rbac&&typeof o.rbac=="object"&&Object.keys(o.rbac).length!==0),p=o.requiresLogin;if(!a&&!p)return;let n=f,i=process.env.REDOCLY_OAUTH_USE_INTROSPECT?y:"";const s=o.residency;if(s){const r=s.endsWith("/")?s.slice(0,-1):s;n=`${r.replace("app.","auth.")}/oidc/.well-known/openid-configuration`,i=process.env.REDOCLY_OAUTH_USE_INTROSPECT?`${r}/api/sso/oidc/introspect`:""}let t="AUTO";o.sso&&(Array.isArray(o.sso)?t=o.sso.join(","):t=o.sso);const l={oidc:{title:d,type:"OIDC",configurationUrl:n,clientId:"{{ process.env.OAUTH_CLIENT_ID }}",clientSecret:"{{ process.env.OAUTH_CLIENT_SECRET }}",teamsClaimName:"https://redocly.com/sso/teams",scopes:["openid"],authorizationRequestCustomParams:{login_hint:"{{ process.env.ORGANIZATION_ID }}",login_type:t,prompt:"login"},audience:"{{ process.env.ORGANIZATION_ID }}",introspectEndpoint:i}};e.setGlobalConfig({ssoDirect:l})})},async afterRoutesCreated(e){}}}export{_ as ssoPlugin};
@@ -9,5 +9,6 @@ export declare abstract class BaseRepository {
9
9
  protected constructor(dbConnection: DatabaseConnection);
10
10
  close(): Promise<void>;
11
11
  sync(): Promise<void>;
12
+ isNonRemoteDatabaseMode: () => boolean;
12
13
  }
13
14
  //# sourceMappingURL=base-repository.d.ts.map
@@ -1 +1 @@
1
- class n{static#e="ORGANIZATION_ID";static#t="PROJECT_ID";organizationId;projectId;databaseClient;path;constructor(t){const e=this.#r();this.organizationId=this.#n(e),this.projectId=this.#i(e),this.databaseClient=t.client,this.path=t.path}async close(){await this.databaseClient.close()}async sync(){await this.databaseClient.sync()}#n=t=>{const e=process.env.ORGANIZATION_ID;if(e)return e;if(t)return n.#e;throw new Error("ORGANIZATION_ID environment variable is required. Ensure it is set in your environment configuration.")};#i=t=>{const e=process.env.PROJECT_ID;if(e)return e;if(t)return n.#t;throw new Error("PROJECT_ID environment variable is required. Ensure it is set in your environment configuration.")};#r=()=>!process.env.SQLD_REMOTE_DATABASE_URL&&!process.env.SQLD_REMOTE_DATABASE_AUTH_TOKEN}export{n as BaseRepository};
1
+ import{SQLD_REMOTE_DATABASE_URL_NO_DEPLOYMENT_YET_VAR as i}from"../../constants/plugins/catalog-entities.js";class n{static#e="ORGANIZATION_ID";static#t="PROJECT_ID";organizationId;projectId;databaseClient;path;constructor(t){const e=this.isNonRemoteDatabaseMode();this.organizationId=this.#n(e),this.projectId=this.#i(e),this.databaseClient=t.client,this.path=t.path}async close(){await this.databaseClient.close()}async sync(){await this.databaseClient.sync()}#n=t=>{const e=process.env.ORGANIZATION_ID;if(e)return e;if(t)return n.#e;throw new Error("ORGANIZATION_ID environment variable is required. Ensure it is set in your environment configuration.")};#i=t=>{const e=process.env.PROJECT_ID;if(e)return e;if(t)return n.#t;throw new Error("PROJECT_ID environment variable is required. Ensure it is set in your environment configuration.")};isNonRemoteDatabaseMode=()=>process.env.SQLD_REMOTE_DATABASE_URL===i||!process.env.SQLD_REMOTE_DATABASE_AUTH_TOKEN}export{n as BaseRepository};
@@ -1 +1 @@
1
- import{logger as e}from"../../tools/notifiers/logger.js";import{CATALOG_LOCAL_DATABASE_MIGRATIONS_FOLDER as r,CATALOG_LOCAL_DATABASE_FOLDER as i,CATALOG_LOCAL_DATABASE_NAME as s,MAIN_LOCAL_DATABASE_MIGRATIONS_FOLDER as _,MAIN_LOCAL_DATABASE_FOLDER as E,MAIN_LOCAL_DATABASE_NAME as l,SQLD_REMOTE_DATABASE_FOLDER as c,SQLD_REMOTE_DATABASE_MIGRATIONS_FOLDER as D,SQLD_REMOTE_DATABASE_NAME as T}from"./constants.js";import{LocalDatabaseInitializationStrategy as n,RemoteDatabaseInitializationStrategy as L}from"./database-initialization-strategy.js";import{DatabaseConnectionsManager as O}from"./database-connections-manager.js";class g{static async create(a,t){switch(a){case"main-local":return await this.#a(t);case"catalog-local":return await this.#t(t);case"sqld-remote":return await this.#e(t);default:return null}}static async#a(a){return await new n().initialize({...a,databaseName:l,additionalFolder:E,migrationsFolder:_})}static async#t(a){return await new n().initialize({...a,databaseName:s,additionalFolder:i,migrationsFolder:r})}static async#e(a){const t=process.env.SQLD_REMOTE_DATABASE_URL&&process.env.SQLD_REMOTE_DATABASE_AUTH_TOKEN,A=a.sqldRemoteDatabaseUrl&&a.sqldRemoteDatabaseAuthToken;if(!t&&!A)return process.env.NEW_CATALOG_ENABLED==="true"&&e.warn("SQLD_REMOTE_DATABASE_URL and SQLD_REMOTE_DATABASE_AUTH_TOKEN env variables or sqldRemoteDatabaseUrl and sqldRemoteDatabaseAuthToken options not set - remote database will not be initialized"),null;try{return await O.getConnection({config:{...a,databaseName:T,additionalFolder:c,migrationsFolder:D,syncUrl:process.env.SQLD_REMOTE_DATABASE_URL||a.sqldRemoteDatabaseUrl,authToken:process.env.SQLD_REMOTE_DATABASE_AUTH_TOKEN||a.sqldRemoteDatabaseAuthToken},strategy:new L})}catch(o){return e.error("Remote database connection initialization failed",o),null}}}export{g as DatabaseConnectionFactory};
1
+ import{logger as n}from"../../tools/notifiers/logger.js";import{isLocalDevelopment as i}from"../../../utils/env/is-local-development.js";import{CATALOG_LOCAL_DATABASE_FOLDER as A,CATALOG_LOCAL_DATABASE_MIGRATIONS_FOLDER as s,CATALOG_LOCAL_DATABASE_NAME as l,MAIN_LOCAL_DATABASE_FOLDER as _,MAIN_LOCAL_DATABASE_MIGRATIONS_FOLDER as c,MAIN_LOCAL_DATABASE_NAME as E,SQLD_REMOTE_DATABASE_FOLDER as D,SQLD_REMOTE_DATABASE_MIGRATIONS_FOLDER as T,SQLD_REMOTE_DATABASE_NAME as L}from"./constants.js";import{LocalDatabaseInitializationStrategy as o,RemoteDatabaseInitializationStrategy as d}from"./database-initialization-strategy.js";import{DatabaseConnectionsManager as m}from"./database-connections-manager.js";import{SQLD_REMOTE_DATABASE_URL_NO_DEPLOYMENT_YET_VAR as O}from"../../constants/plugins/catalog-entities.js";class N{static async create(a,t){switch(a){case"main-local":return await this.#a(t);case"catalog-local":return await this.#t(t);case"sqld-remote":return await this.#e(t);default:return null}}static async#a(a){return await new o().initialize({...a,databaseName:E,additionalFolder:_,migrationsFolder:c})}static async#t(a){return await new o().initialize({...a,databaseName:l,additionalFolder:A,migrationsFolder:s})}static async#e(a){try{const t=process.env.SQLD_REMOTE_DATABASE_URL||a.sqldRemoteDatabaseUrl,e=t===O?void 0:t,r=process.env.SQLD_REMOTE_DATABASE_AUTH_TOKEN||a.sqldRemoteDatabaseAuthToken;return(!e||!r)&&!i()?(n.warn("Your remote database is not initialized yet, please wait for production deployment."),null):await m.getConnection({config:{...a,databaseName:L,additionalFolder:D,migrationsFolder:T,syncUrl:e,authToken:process.env.SQLD_REMOTE_DATABASE_AUTH_TOKEN||a.sqldRemoteDatabaseAuthToken},strategy:new d})}catch(t){return n.error("Remote database connection initialization failed",t),null}}}export{N as DatabaseConnectionFactory};
@@ -0,0 +1,2 @@
1
+ DROP INDEX `idx_entities_relations_unique`;--> statement-breakpoint
2
+ CREATE UNIQUE INDEX `idx_entities_relations_unique` ON `entities_relations` (`source_key`,`target_key`,`source_version`,`target_version`,`source_revision`,`target_revision`,`source_to_target_relation`);
@@ -0,0 +1,11 @@
1
+ CREATE TABLE `entities_attributes` (
2
+ `id` text PRIMARY KEY NOT NULL,
3
+ `organization_id` text NOT NULL,
4
+ `project_id` text NOT NULL,
5
+ `entity_key` text NOT NULL,
6
+ `rbac_teams` text,
7
+ `created_at` text NOT NULL,
8
+ `updated_at` text NOT NULL
9
+ );
10
+ --> statement-breakpoint
11
+ CREATE UNIQUE INDEX `idx_entities_attributes_key` ON `entities_attributes` (`entity_key`);
@@ -0,0 +1,393 @@
1
+ {
2
+ "version": "6",
3
+ "dialect": "sqlite",
4
+ "id": "26cb7c34-fb67-4b31-bf14-8f0ae1b63595",
5
+ "prevId": "a1b2c3d4-e5f6-4789-a012-3456789abcde",
6
+ "tables": {
7
+ "entities_relations": {
8
+ "name": "entities_relations",
9
+ "columns": {
10
+ "id": {
11
+ "name": "id",
12
+ "type": "text",
13
+ "primaryKey": true,
14
+ "notNull": true,
15
+ "autoincrement": false
16
+ },
17
+ "organization_id": {
18
+ "name": "organization_id",
19
+ "type": "text",
20
+ "primaryKey": false,
21
+ "notNull": true,
22
+ "autoincrement": false
23
+ },
24
+ "project_id": {
25
+ "name": "project_id",
26
+ "type": "text",
27
+ "primaryKey": false,
28
+ "notNull": true,
29
+ "autoincrement": false
30
+ },
31
+ "source_key": {
32
+ "name": "source_key",
33
+ "type": "text",
34
+ "primaryKey": false,
35
+ "notNull": true,
36
+ "autoincrement": false
37
+ },
38
+ "source_version": {
39
+ "name": "source_version",
40
+ "type": "text",
41
+ "primaryKey": false,
42
+ "notNull": true,
43
+ "autoincrement": false,
44
+ "default": "''"
45
+ },
46
+ "source_revision": {
47
+ "name": "source_revision",
48
+ "type": "text",
49
+ "primaryKey": false,
50
+ "notNull": true,
51
+ "autoincrement": false,
52
+ "default": "''"
53
+ },
54
+ "source_to_target_relation": {
55
+ "name": "source_to_target_relation",
56
+ "type": "text",
57
+ "primaryKey": false,
58
+ "notNull": true,
59
+ "autoincrement": false
60
+ },
61
+ "target_key": {
62
+ "name": "target_key",
63
+ "type": "text",
64
+ "primaryKey": false,
65
+ "notNull": true,
66
+ "autoincrement": false
67
+ },
68
+ "target_version": {
69
+ "name": "target_version",
70
+ "type": "text",
71
+ "primaryKey": false,
72
+ "notNull": true,
73
+ "autoincrement": false,
74
+ "default": "''"
75
+ },
76
+ "target_revision": {
77
+ "name": "target_revision",
78
+ "type": "text",
79
+ "primaryKey": false,
80
+ "notNull": true,
81
+ "autoincrement": false,
82
+ "default": "''"
83
+ },
84
+ "target_to_source_relation": {
85
+ "name": "target_to_source_relation",
86
+ "type": "text",
87
+ "primaryKey": false,
88
+ "notNull": true,
89
+ "autoincrement": false
90
+ },
91
+ "source_file": {
92
+ "name": "source_file",
93
+ "type": "text",
94
+ "primaryKey": false,
95
+ "notNull": false,
96
+ "autoincrement": false
97
+ },
98
+ "file_hash": {
99
+ "name": "file_hash",
100
+ "type": "text",
101
+ "primaryKey": false,
102
+ "notNull": false,
103
+ "autoincrement": false
104
+ },
105
+ "is_deleted": {
106
+ "name": "is_deleted",
107
+ "type": "integer",
108
+ "primaryKey": false,
109
+ "notNull": false,
110
+ "autoincrement": false,
111
+ "default": false
112
+ },
113
+ "created_at": {
114
+ "name": "created_at",
115
+ "type": "text",
116
+ "primaryKey": false,
117
+ "notNull": true,
118
+ "autoincrement": false
119
+ },
120
+ "updated_at": {
121
+ "name": "updated_at",
122
+ "type": "text",
123
+ "primaryKey": false,
124
+ "notNull": true,
125
+ "autoincrement": false
126
+ }
127
+ },
128
+ "indexes": {
129
+ "idx_entities_relations_source_key": {
130
+ "name": "idx_entities_relations_source_key",
131
+ "columns": ["source_key", "is_deleted"],
132
+ "isUnique": false
133
+ },
134
+ "idx_entities_relations_target_key": {
135
+ "name": "idx_entities_relations_target_key",
136
+ "columns": ["target_key", "is_deleted"],
137
+ "isUnique": false
138
+ },
139
+ "idx_entities_relations_source_target": {
140
+ "name": "idx_entities_relations_source_target",
141
+ "columns": ["source_to_target_relation"],
142
+ "isUnique": false
143
+ },
144
+ "idx_entities_relations_target_source": {
145
+ "name": "idx_entities_relations_target_source",
146
+ "columns": ["target_to_source_relation"],
147
+ "isUnique": false
148
+ },
149
+ "idx_entities_relations_unique": {
150
+ "name": "idx_entities_relations_unique",
151
+ "columns": [
152
+ "source_key",
153
+ "target_key",
154
+ "source_version",
155
+ "target_version",
156
+ "source_revision",
157
+ "target_revision",
158
+ "source_to_target_relation"
159
+ ],
160
+ "isUnique": true
161
+ }
162
+ },
163
+ "foreignKeys": {},
164
+ "compositePrimaryKeys": {},
165
+ "uniqueConstraints": {},
166
+ "checkConstraints": {}
167
+ },
168
+ "entities": {
169
+ "name": "entities",
170
+ "columns": {
171
+ "id": {
172
+ "name": "id",
173
+ "type": "text",
174
+ "primaryKey": true,
175
+ "notNull": true,
176
+ "autoincrement": false
177
+ },
178
+ "organization_id": {
179
+ "name": "organization_id",
180
+ "type": "text",
181
+ "primaryKey": false,
182
+ "notNull": true,
183
+ "autoincrement": false
184
+ },
185
+ "project_id": {
186
+ "name": "project_id",
187
+ "type": "text",
188
+ "primaryKey": false,
189
+ "notNull": true,
190
+ "autoincrement": false
191
+ },
192
+ "key": {
193
+ "name": "key",
194
+ "type": "text",
195
+ "primaryKey": false,
196
+ "notNull": true,
197
+ "autoincrement": false
198
+ },
199
+ "type": {
200
+ "name": "type",
201
+ "type": "text",
202
+ "primaryKey": false,
203
+ "notNull": true,
204
+ "autoincrement": false
205
+ },
206
+ "title": {
207
+ "name": "title",
208
+ "type": "text",
209
+ "primaryKey": false,
210
+ "notNull": true,
211
+ "autoincrement": false
212
+ },
213
+ "summary": {
214
+ "name": "summary",
215
+ "type": "text",
216
+ "primaryKey": false,
217
+ "notNull": false,
218
+ "autoincrement": false
219
+ },
220
+ "tags": {
221
+ "name": "tags",
222
+ "type": "text",
223
+ "primaryKey": false,
224
+ "notNull": false,
225
+ "autoincrement": false
226
+ },
227
+ "metadata": {
228
+ "name": "metadata",
229
+ "type": "text",
230
+ "primaryKey": false,
231
+ "notNull": false,
232
+ "autoincrement": false
233
+ },
234
+ "git": {
235
+ "name": "git",
236
+ "type": "text",
237
+ "primaryKey": false,
238
+ "notNull": false,
239
+ "autoincrement": false
240
+ },
241
+ "contact": {
242
+ "name": "contact",
243
+ "type": "text",
244
+ "primaryKey": false,
245
+ "notNull": false,
246
+ "autoincrement": false
247
+ },
248
+ "links": {
249
+ "name": "links",
250
+ "type": "text",
251
+ "primaryKey": false,
252
+ "notNull": false,
253
+ "autoincrement": false
254
+ },
255
+ "created_at": {
256
+ "name": "created_at",
257
+ "type": "text",
258
+ "primaryKey": false,
259
+ "notNull": true,
260
+ "autoincrement": false
261
+ },
262
+ "updated_at": {
263
+ "name": "updated_at",
264
+ "type": "text",
265
+ "primaryKey": false,
266
+ "notNull": true,
267
+ "autoincrement": false
268
+ },
269
+ "source": {
270
+ "name": "source",
271
+ "type": "text",
272
+ "primaryKey": false,
273
+ "notNull": false,
274
+ "autoincrement": false,
275
+ "default": "'file'"
276
+ },
277
+ "source_file": {
278
+ "name": "source_file",
279
+ "type": "text",
280
+ "primaryKey": false,
281
+ "notNull": false,
282
+ "autoincrement": false
283
+ },
284
+ "file_hash": {
285
+ "name": "file_hash",
286
+ "type": "text",
287
+ "primaryKey": false,
288
+ "notNull": false,
289
+ "autoincrement": false
290
+ },
291
+ "version": {
292
+ "name": "version",
293
+ "type": "text",
294
+ "primaryKey": false,
295
+ "notNull": true,
296
+ "autoincrement": false,
297
+ "default": "'not_specified_version'"
298
+ },
299
+ "revision": {
300
+ "name": "revision",
301
+ "type": "text",
302
+ "primaryKey": false,
303
+ "notNull": true,
304
+ "autoincrement": false
305
+ },
306
+ "hash": {
307
+ "name": "hash",
308
+ "type": "text",
309
+ "primaryKey": false,
310
+ "notNull": false,
311
+ "autoincrement": false
312
+ },
313
+ "is_current": {
314
+ "name": "is_current",
315
+ "type": "integer",
316
+ "primaryKey": false,
317
+ "notNull": false,
318
+ "autoincrement": false,
319
+ "default": true
320
+ },
321
+ "is_default_version": {
322
+ "name": "is_default_version",
323
+ "type": "integer",
324
+ "primaryKey": false,
325
+ "notNull": false,
326
+ "autoincrement": false,
327
+ "default": false
328
+ },
329
+ "is_deleted": {
330
+ "name": "is_deleted",
331
+ "type": "integer",
332
+ "primaryKey": false,
333
+ "notNull": false,
334
+ "autoincrement": false,
335
+ "default": false
336
+ },
337
+ "scorecards_status": {
338
+ "name": "scorecards_status",
339
+ "type": "text",
340
+ "primaryKey": false,
341
+ "notNull": false,
342
+ "autoincrement": false
343
+ }
344
+ },
345
+ "indexes": {
346
+ "idx_entities_type": {
347
+ "name": "idx_entities_type",
348
+ "columns": ["type"],
349
+ "isUnique": false
350
+ },
351
+ "idx_entities_hash": {
352
+ "name": "idx_entities_hash",
353
+ "columns": ["hash"],
354
+ "isUnique": false
355
+ },
356
+ "idx_entities_key_source_created_at": {
357
+ "name": "idx_entities_key_source_created_at",
358
+ "columns": ["key", "created_at"],
359
+ "isUnique": false
360
+ },
361
+ "idx_entities_key_source_is_current": {
362
+ "name": "idx_entities_key_source_is_current",
363
+ "columns": ["key", "is_current", "is_deleted"],
364
+ "isUnique": false
365
+ },
366
+ "idx_entities_key_source_is_default": {
367
+ "name": "idx_entities_key_source_is_default",
368
+ "columns": ["key", "is_default_version"],
369
+ "isUnique": false
370
+ },
371
+ "idx_entities_key_source": {
372
+ "name": "idx_entities_key_source",
373
+ "columns": ["key", "source", "revision", "version"],
374
+ "isUnique": true
375
+ }
376
+ },
377
+ "foreignKeys": {},
378
+ "compositePrimaryKeys": {},
379
+ "uniqueConstraints": {},
380
+ "checkConstraints": {}
381
+ }
382
+ },
383
+ "views": {},
384
+ "enums": {},
385
+ "_meta": {
386
+ "schemas": {},
387
+ "tables": {},
388
+ "columns": {}
389
+ },
390
+ "internal": {
391
+ "indexes": {}
392
+ }
393
+ }