@redocly/realm 0.136.0-next.8 → 0.136.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +221 -0
- package/dist/client/App.js +1 -1
- package/dist/client/ScriptLoader.js +1 -1
- package/dist/client/TestProvider.js +1 -1
- package/dist/client/app/Link.js +1 -1
- package/dist/client/app/Sidebar/useBreadcrumbs.js +1 -1
- package/dist/client/app/Sidebar/useSidebarItems.js +1 -1
- package/dist/client/app/Sidebar/utils.d.ts +1 -1
- package/dist/client/app/hooks/catalog/useCatalogClassic.js +1 -1
- package/dist/client/app/hooks/catalog/useCatalogFilter.js +1 -1
- package/dist/client/app/hooks/catalog/useCatalogSearch.js +1 -1
- package/dist/client/app/hooks/catalog/useCatalogSort.js +1 -1
- package/dist/client/app/hooks/products/useCurrentProduct.js +1 -1
- package/dist/client/app/hooks/useAutoScroll.js +1 -1
- package/dist/client/app/hooks/useBanner.js +1 -1
- package/dist/client/app/hooks/useL10nConfig.js +1 -1
- package/dist/client/app/hooks/useLoginUrl.js +1 -1
- package/dist/client/app/hooks/usePageTimeTracker.js +1 -1
- package/dist/client/app/hooks/useRouteChangeTracker.js +1 -1
- package/dist/client/app/markdoc/custom-components/openapi/replay-openapi.js +1 -1
- package/dist/client/app/pages/DevLogin/DevLogin.js +1 -1
- package/dist/client/app/search/useSearch.d.ts +1 -0
- package/dist/client/app/search/useSearch.js +1 -1
- package/dist/client/app/seo/hooks/useHreflangLinks.js +1 -1
- package/dist/client/app/useMobileMenu.js +1 -1
- package/dist/client/app/usePreloadHistory.d.ts +1 -1
- package/dist/client/app/usePreloadHistory.js +1 -1
- package/dist/client/app/utils/loadAndNavigate.d.ts +1 -1
- package/dist/client/browser-entry.js +2 -2
- package/dist/client/providers/hooks.d.ts +1 -1
- package/dist/client/providers/hooks.js +1 -1
- package/dist/client/providers/page-data/hooks.js +1 -1
- package/dist/client/providers/post-message/PostMessageProvider.js +1 -1
- package/dist/constants/api.d.ts +2 -0
- package/dist/constants/api.js +1 -1
- package/dist/server/api-routes/helpers/enhance-context.js +1 -1
- package/dist/server/api-routes/run-api-routes-worker.js +1 -1
- package/dist/server/config/env-config.d.ts +0 -2
- package/dist/server/config/env-schema.d.ts +0 -5
- package/dist/server/config/env-schemas/feature-flags.d.ts +0 -4
- package/dist/server/config/env-schemas/feature-flags.js +1 -1
- package/dist/server/constants/common.d.ts +2 -0
- package/dist/server/constants/common.js +1 -1
- package/dist/server/constants/plugins/search.d.ts +1 -1
- package/dist/server/constants/plugins/search.js +1 -1
- package/dist/server/esbuild/esbuild.js +1 -1
- package/dist/server/esbuild/plugins/themes-resolver.js +4 -2
- package/dist/server/plugins/catalog-entities/database/repositories/catalog-entities-repository.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/App.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/AppsList.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/components/ApiKeyItem.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/components/ApiLogDetails.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/components/ApiLogs.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/components/CreateApiKey.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/components/DeleteAppDialog.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/components/EditApis.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/components/EditAppDescriptionDialog.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/components/EditAppDialog.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/components/EditCallbackUrlDialog.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/components/RevokeAPIKey.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/components/RollAPIKey.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/components/UpdateApiKey.js +1 -1
- package/dist/server/plugins/dev-onboarding/template/index.js +1 -1
- package/dist/server/plugins/mcp/audit/audit-log.d.ts +36 -0
- package/dist/server/plugins/mcp/audit/audit-log.js +1 -0
- package/dist/server/plugins/mcp/audit/constants.d.ts +6 -0
- package/dist/server/plugins/mcp/audit/constants.js +1 -0
- package/dist/server/plugins/mcp/audit/secret-patterns.d.ts +2 -0
- package/dist/server/plugins/mcp/audit/secret-patterns.js +1 -0
- package/dist/server/plugins/mcp/codemode/build-tool-list.d.ts +12 -0
- package/dist/server/plugins/mcp/codemode/build-tool-list.js +2 -0
- package/dist/server/plugins/mcp/codemode/capabilities/fetch/index.js +4 -4
- package/dist/server/plugins/mcp/codemode/capabilities/types.d.ts +2 -1
- package/dist/server/plugins/mcp/codemode/capabilities/utils.d.ts +1 -1
- package/dist/server/plugins/mcp/codemode/capabilities/utils.js +3 -3
- package/dist/server/plugins/mcp/codemode/code-audit.d.ts +12 -0
- package/dist/server/plugins/mcp/codemode/code-audit.js +1 -0
- package/dist/server/plugins/mcp/codemode/code-execution-audit.d.ts +17 -0
- package/dist/server/plugins/mcp/codemode/code-execution-audit.js +1 -0
- package/dist/server/plugins/mcp/codemode/code-execution-telemetry.d.ts +11 -0
- package/dist/server/plugins/mcp/codemode/code-execution-telemetry.js +1 -0
- package/dist/server/plugins/mcp/codemode/constants.js +1 -1
- package/dist/server/plugins/mcp/codemode/prompts.d.ts +6 -3
- package/dist/server/plugins/mcp/codemode/prompts.js +7 -4
- package/dist/server/plugins/mcp/codemode/sandbox/create-sandbox-setup.js +1 -1
- package/dist/server/plugins/mcp/codemode/sandbox/polyfills/fetch-shim.d.ts +6 -0
- package/dist/server/plugins/mcp/codemode/sandbox/polyfills/fetch-shim.js +54 -0
- package/dist/server/plugins/mcp/codemode/sandbox/polyfills/form-data.d.ts +3 -0
- package/dist/server/plugins/mcp/codemode/sandbox/polyfills/form-data.js +17 -0
- package/dist/server/plugins/mcp/codemode/sandbox/polyfills/index.d.ts +3 -0
- package/dist/server/plugins/mcp/codemode/sandbox/polyfills/index.js +2 -0
- package/dist/server/plugins/mcp/codemode/sandbox/polyfills/url-search-params.d.ts +3 -0
- package/dist/server/plugins/mcp/codemode/sandbox/polyfills/url-search-params.js +64 -0
- package/dist/server/plugins/mcp/codemode/sandbox/polyfills/url.d.ts +3 -0
- package/dist/server/plugins/mcp/codemode/sandbox/polyfills/url.js +239 -0
- package/dist/server/plugins/mcp/codemode/tools/describe-tools.d.ts +2 -3
- package/dist/server/plugins/mcp/codemode/tools/describe-tools.js +1 -1
- package/dist/server/plugins/mcp/codemode/tools/execute-schema.d.ts +1 -1
- package/dist/server/plugins/mcp/codemode/tools/execute.js +1 -1
- package/dist/server/plugins/mcp/codemode/tools/manage-credentials.d.ts +19 -0
- package/dist/server/plugins/mcp/codemode/tools/manage-credentials.js +2 -0
- package/dist/server/plugins/mcp/codemode/tools/tool-errors.d.ts +4 -0
- package/dist/server/plugins/mcp/codemode/tools/tool-errors.js +1 -0
- package/dist/server/plugins/mcp/constants.d.ts +2 -1
- package/dist/server/plugins/mcp/constants.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tool-schemas.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-endpoint-info.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-endpoints.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-full-api-description.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-security-schemes.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/openapi/list-apis.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/openapi/load-api-description.d.ts +5 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/openapi/load-api-description.js +1 -1
- package/dist/server/plugins/mcp/docs-mcp/tools/openapi/types.d.ts +2 -0
- package/dist/server/plugins/mcp/docs-mcp/utils.js +1 -1
- package/dist/server/plugins/mcp/gateway-mcp/elicitation.d.ts +38 -17
- package/dist/server/plugins/mcp/gateway-mcp/elicitation.js +3 -2
- package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-audit.d.ts +24 -0
- package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-audit.js +1 -0
- package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-bridge.js +1 -1
- package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-telemetry.d.ts +2 -1
- package/dist/server/plugins/mcp/gateway-mcp/fetch/fetch-telemetry.js +1 -1
- package/dist/server/plugins/mcp/gateway-mcp/fetch/normalize-path.d.ts +6 -0
- package/dist/server/plugins/mcp/gateway-mcp/fetch/normalize-path.js +1 -0
- package/dist/server/plugins/mcp/gateway-mcp/rate-limit/apply-edge-rate-limit.js +1 -1
- package/dist/server/plugins/mcp/gateway-mcp/rate-limit/edge-limiter.d.ts +2 -2
- package/dist/server/plugins/mcp/gateway-mcp/rate-limit/edge-limiter.js +1 -1
- package/dist/server/plugins/mcp/gateway-mcp/rate-limit/rate-limit-telemetry.d.ts +8 -0
- package/dist/server/plugins/mcp/gateway-mcp/rate-limit/rate-limit-telemetry.js +1 -0
- package/dist/server/plugins/mcp/gateway-mcp/rate-limit/window-counter.d.ts +2 -2
- package/dist/server/plugins/mcp/gateway-mcp/rate-limit/window-counter.js +1 -1
- package/dist/server/plugins/mcp/gateway-mcp/secret-store.d.ts +3 -0
- package/dist/server/plugins/mcp/gateway-mcp/secret-store.js +1 -1
- package/dist/server/plugins/mcp/gateway-mcp/upstream-auth.d.ts +2 -1
- package/dist/server/plugins/mcp/gateway-mcp/upstream-auth.js +1 -1
- package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
- package/dist/server/plugins/mcp/handlers/errors.js +1 -1
- package/dist/server/plugins/mcp/handlers/mcp-credentials-handler.js +47 -24
- package/dist/server/plugins/mcp/servers/docs-server.d.ts +2 -3
- package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
- package/dist/server/plugins/mcp/servers/mcp-server.d.ts +11 -14
- package/dist/server/plugins/mcp/servers/mcp-server.js +3 -1
- package/dist/server/plugins/mcp/types.d.ts +6 -6
- package/dist/server/plugins/mcp/utils/json-schema-validator.d.ts +9 -0
- package/dist/server/plugins/mcp/utils/json-schema-validator.js +1 -0
- package/dist/server/plugins/mcp/utils/mode.js +1 -1
- package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -1
- package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.d.ts +20 -1
- package/dist/server/plugins/mcp/workers/mcp-tool-telemetry.js +1 -1
- package/dist/server/plugins/scorecard-classic/template/ApiDetailsPage.js +1 -1
- package/dist/server/plugins/scorecard-classic/template/RuleDetailsPage.js +1 -1
- package/dist/server/plugins/scorecard-classic/template/index.js +1 -1
- package/dist/server/plugins/scorecard-classic/template/utils.d.ts +1 -1
- package/dist/server/plugins/scorecard-classic/template/views.js +1 -1
- package/dist/server/plugins/search/engines/flexsearch/index.js +1 -1
- package/dist/server/plugins/search/engines/flexsearch/search-index.js +1 -1
- package/dist/server/plugins/search/engines/typesense/index.js +1 -1
- package/dist/server/ssr/render.js +1 -1
- package/dist/server/tools/notifiers/formatter.d.ts +1 -0
- package/dist/server/tools/notifiers/formatter.js +3 -3
- package/dist/server/tools/notifiers/logger.d.ts +1 -0
- package/dist/server/tools/notifiers/logger.js +2 -2
- package/dist/server/tools/notifiers/reporter.js +6 -6
- package/dist/server/types/plugin-hooks.d.ts +1 -1
- package/dist/server/types/plugins/common.d.ts +1 -1
- package/dist/server/utils/llmstxt/agent-feedback-llms-footer.js +1 -1
- package/dist/server/web-server/auth.js +3 -3
- package/dist/server/web-server/middleware/telemetry-middleware.js +1 -1
- package/dist/server/web-server/routes/ask-ai.d.ts +11 -0
- package/dist/server/web-server/routes/ask-ai.js +1 -1
- package/dist/server/web-server/routes/catalog/bff-catalog-related-entities.js +1 -1
- package/dist/server/web-server/routes/catalog/bff-catalog-revisions.js +1 -1
- package/dist/server/web-server/routes/catalog/bff-catalog.js +1 -1
- package/dist/server/web-server/routes/catalog/catalog-relations.js +1 -1
- package/dist/server/web-server/routes/catalog/catalog.js +1 -1
- package/dist/server/web-server/routes/dynamic-route.js +1 -1
- package/dist/server/web-server/routes/index.js +1 -1
- package/dist/server/web-server/routes/mcp-routes/a2a.js +1 -1
- package/dist/server/web-server/routes/mcp-routes/agent-card.js +1 -1
- package/dist/server/web-server/routes/mcp-routes/mcp-server-card.js +1 -1
- package/dist/server/web-server/routes/page-data.js +1 -1
- package/dist/server/web-server/routes/search.js +1 -1
- package/dist/server/web-server/routes/skills/skill-markdown.js +1 -1
- package/dist/server/web-server/routes/skills/skills-index.js +1 -1
- package/dist/types/api.d.ts +3 -0
- package/dist/utils/url/parse-preview-url.d.ts +22 -0
- package/dist/utils/url/parse-preview-url.js +1 -0
- package/package.json +21 -22
- package/dist/server/plugins/mcp/codemode/sandbox/polyfills.d.ts +0 -2
- package/dist/server/plugins/mcp/codemode/sandbox/polyfills.js +0 -99
- package/dist/server/plugins/mcp/handlers/sse-keepalive.d.ts +0 -15
- package/dist/server/plugins/mcp/handlers/sse-keepalive.js +0 -3
- package/dist/server/plugins/mcp/servers/session-manager.d.ts +0 -15
- package/dist/server/plugins/mcp/servers/session-manager.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import i,{useContext as a}from"react";import{useLocation as p}from"react-router
|
|
1
|
+
import i,{useContext as a}from"react";import{useLocation as p}from"react-router";import{removeLeadingSlash as m,removeTrailingSlash as f}from"@redocly/theme/core/utils";import{findDeepFirst as g}from"../../../utils/tree/find-deep-first.js";import{getSiblingPages as y}from"../../utils";import{PageDataContext as s}from"./PageDataContext.js";import{Loader as b}from"../../runtime/loader";import{useRawSidebarItems as v}from"../../app/Sidebar/useSidebarItems";import{usePageSharedData as u}from"./use-page-shared-data";export*from"./use-page-shared-data";function d(){return a(s)}function F(){return a(s)?.props||{}}function C(){const t=k(),{versions:n=[]}=a(s)||{};return{versions:i.useMemo(()=>n.map(e=>{const r=!!g(t,o=>o.version===e.version&&typeof o.link=="string"&&m(f(o.link))===m(f(e.link))),l=g(t,o=>o.version===e.version&&!!o.link);return{...e,link:(r?e.link:l?.link)||e.link}}),[n,t])}}function k(){const t=u("sidebar")?.items;return i.useMemo(()=>t||[],[t])}function R(){const t=u("sidebar")?.catalogEntity,n=d()?.props.entity;return t?{key:t.key,version:t.version}:n?.key?{key:n.key,version:n.version}:void 0}function w(){const t=u("sidebar")?.catalogEntity;return d()?.props?.catalogConfig||t?.catalogConfig}function T(){const t=p(),{versions:n=[]}=C()||{},c=n.find(r=>r?.active),e=v(c);return i.useMemo(()=>{if(e)return y(e,t.pathname)},[t.pathname,e])}function V(){const t=p();return b.loadSync(t.pathname)}export{d as usePageData,V as usePageDataLoader,F as usePageProps,C as usePageVersions,w as useSidebarConnectedCatalogConfig,R as useSidebarConnectedCatalogEntity,k as useSidebarItemsData,T as useSidebarSiblingsData};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import n,{createContext as v,useEffect as P}from"react";import{useLocation as S,useNavigate as C}from"react-router
|
|
1
|
+
import n,{createContext as v,useEffect as P}from"react";import{useLocation as S,useNavigate as C}from"react-router";import{useColorSwitcher as M}from"@redocly/theme/core/hooks";import{withPathPrefix as E}from"@redocly/theme/core/utils";import{ServerRoutes as U}from"../../../constants/api";import{removeTrailingSlash as L}from"../../../utils/url/remove-trailing-slash";import{loadAndNavigate as x}from"../../app/utils/loadAndNavigate";import{resolveRouteBySlug as O}from"../../app/utils/resolveRouteBySlug";import{isSameResolvedRoute as T}from"../../app/utils/same-resolved-route";import{syncScrollWithEditor as D}from"../../app/utils/syncScrollWithEditor";import{PostMessageConnection as I}from"./PostMessageConnection";import{isHostnameOnDomain as c}from"../../app/utils/isHostnameOnDomain";import{usePageData as N}from"../../app/hooks/usePageData";const z=v({sendMessage:()=>{}});function Z({children:l,enabled:t}){const R=C(),i=S(),s=n.useRef(null),{switchColorMode:h}=M(),p=N()?.templateId,u=n.useCallback(e=>{s.current?.send(e)},[]),f=n.useCallback(async e=>{console.info("[PM] connection initialized."),s.current=new I(e.source,e.origin);const a=await O(i.pathname+i.hash,p).catch(o=>{console.error("Initial route resolve failed with error: ",o.message)});u({type:"initialized",initialRoute:a})},[u,i.pathname,i.hash,p]),w=n.useCallback(async e=>{const{path:a="/",line:o=1,url:d}=e;let r=d;if(!d)try{const m=await fetch(E(U.RESOLVE_ROUTE_BY_PATH),{method:"POST",body:JSON.stringify(a+(o?`:${o}`:""))}),{route:y}=await m.json();r=y?.slug??y?.url??void 0}catch(m){console.error(m)}if(!r)return;r=r==="/"?"/":L(r),T(r,i,!!d)||(console.info("[PM] Update route to: ",r),await x({navigate:R,to:r,origin:"pm"}))},[i]),g=n.useCallback(async e=>{const{action:a}=e;switch(a){case"back":window.history.back();break;case"forward":window.history.forward();break;case"reload":window.location.reload();break}},[]),b=n.useCallback(e=>{window.scrollTo({top:e.position.absolute,behavior:"instant"})},[]),k=n.useCallback(e=>{h(e.colorSchema)},[h]);return P(()=>{if(!t)return;const e=async a=>{if(!A(a.origin))return;const o=a.data;switch(o.type){case"initialize":f(a);break;case"route-update":if(!s.current)return;w(o);break;case"location-update":if(!s.current)return;g(o);break;case"scroll-update":if(!s.current)return;b(o);break;case"editor-scroll-update":if(!s.current)return;D(o.percentScrolled,o.sequenceNumber);break;case"color-schema-update":if(!s.current)return;k(o);break}};return window.addEventListener("message",e),()=>{window.removeEventListener("message",e)}},[t,f,w,g,b,k]),n.createElement(z.Provider,{value:{sendMessage:u}},l)}function A(l){const t=new URL(l);return c(t.hostname,"localhost")||c(t.hostname,"127.0.0.1")||c(t.hostname,"blueharvest.cloud")||c(t.hostname,"bhstage.cloud")||c(t.hostname,"cloud.redocly.com")||c(t.hostname,"cloud.eu.redocly.com")||c(t.hostname,"cba.au.redocly.com")}export{z as PostMessageContext,Z as PostMessageProvider};
|
package/dist/constants/api.d.ts
CHANGED
|
@@ -33,6 +33,8 @@ export declare const ServerRoutes: {
|
|
|
33
33
|
readonly OTEL_TRACES: '/_otel/v1/traces';
|
|
34
34
|
readonly HEALTH: '/_health';
|
|
35
35
|
readonly ASK_AI: '/_ask-ai';
|
|
36
|
+
readonly AI_ASSISTANT_ESCALATIONS: '/_ai-assistant-escalations';
|
|
37
|
+
readonly AI_ASSISTANT_FEEDBACK: '/_ai-assistant-feedback';
|
|
36
38
|
readonly CATALOG_ENTITIES: "/catalog-entities/:entityId?";
|
|
37
39
|
readonly CATALOG_ENTITIES_RELATIONS: "/catalog-entities-relations/:entityRelationId?";
|
|
38
40
|
readonly BFF_CATALOG_ENTITIES: "/bff/catalog-entities/:entityKey?";
|
package/dist/constants/api.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _="_auth",e="entityKey",t="entityId",A="entityRelationId",T={CORS_PROXY:"/_api/cors",INFO:"/_info",EJECT_COMPONENT:"/eject-component/:componentName",SHARED_PAGE_DATA:"/page-data/shared/*",PAGE_DATA:"/page-data/*",APP_DATA:"/app-data.json",AUTHORIZATION:"/authorize",OIDC_CALLBACK:`/${_}/oidc`,SAML_CALLBACK:`/${_}/saml2`,REDOCLY_CALLBACK:`/${_}/redocly`,REPLAY_OAUTH2_CALLBACK:`/${_}/replay-oauth2`,REDOCLY_LOGIN_CALLBACK:`/${_}/redocly/redocly-login`,REDOCLY_TOKEN_LOGIN:`/${_}/redocly-token-login`,SEARCH:"/_search",SEARCH_FACETS:"/_search-facets",SEMANTIC_SEARCH:"/_semantic-search",LOGOUT:"/logout",POST_LOGOUT:"/post-logout",LOGIN:"/login",IDP_LOGIN:`/${_}/idp-login`,INVITE:"/invite/:code",RESOLVE_ROUTE_BY_PATH:"/resolve-route-by-path",RESOLVE_ROUTES_BY_PATHS:"/resolve-routes-by-paths",RESOLVE_ROUTE_BY_SLUG:"/resolve-route-by-slug",GET_ROUTES_BY_LINE:"/get-routes-by-line",FEEDBACK:"/feedback",TELEMETRY:"/_events",OTEL_TRACES:"/_otel/v1/traces",HEALTH:"/_health",ASK_AI:"/_ask-ai",AI_ASSISTANT_ESCALATIONS:"/_ai-assistant-escalations",AI_ASSISTANT_FEEDBACK:"/_ai-assistant-feedback",CATALOG_ENTITIES:`/catalog-entities/:${t}?`,CATALOG_ENTITIES_RELATIONS:`/catalog-entities-relations/:${A}?`,BFF_CATALOG_ENTITIES:`/bff/catalog-entities/:${e}?`,BFF_CATALOG_RELATED_ENTITIES:`/bff/catalog-related-entities/:${e}`,BFF_CATALOG_REVISIONS:"/bff/catalog-revisions",MCP_OAUTH_AUTHORIZATION_SERVER:"/.well-known/oauth-authorization-server",MCP_OAUTH_PROTECTED_RESOURCE:"/.well-known/oauth-protected-resource",MCP_DYNAMIC_CLIENT_REGISTRATION:"/_mcp/register",MCP_AUTHORIZATION:"/_mcp/oauth2/auth",MCP_TOKEN_PORTAL:"/_mcp/oauth2/token-portal",MCP_CALLBACK:"/_mcp/oauth/callback",SCORECARDS:"/scorecards"};export{_ as AUTH_SEGMENT,t as CATALOG_ENTITY_ID,e as CATALOG_ENTITY_KEY,A as CATALOG_ENTITY_RELATION_ID,T as ServerRoutes};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{deleteCookie as p,getCookie as
|
|
1
|
+
import{deleteCookie as p,getCookie as g,setCookie as k}from"hono/cookie";import{createQuickJsMockExecutor as b}from"../mock-server/mock-js-executor.js";import{createKvStateStore as j}from"../mock-server/kv-state-store.js";const q=new Set([101,103,204,205,304]),l=t=>t!==void 0&&q.has(t),E=({honoCtx:t,ctx:m,telemetry:u,getKv:d})=>{const c=t.req.routePath,f=t.req.param(),S=Object.fromEntries(Object.entries(f).map(([e,r])=>{if(r&&(c.includes(`/:${e}{.*}`)||c.includes(`/:${e}{.+}`))){const a=r.split("/").filter(Boolean);return[e,a.length?a:void 0]}return[e,r]}));let n;const o=e=>{n=e,t.status(e)},s={...t.res,status:e=>(o(e),s),json:e=>l(n)?t.body(null):t.json(e),text:(e,r)=>(r&&o(r),l(n)?t.body(null):t.text(e)),redirect:(e,r=302)=>t.redirect(e,r),setCookie:(e,r,i)=>(k(t,e,r,i),s),deleteCookie:e=>(p(t,e),s)};return{...m,...s,params:S,query:t.req.query()||{},cookies:g(t),telemetry:u?{sendCustomMessage:e=>u.sendCustomMessage([{...e,id:e.name,object:"customEvent",uri:`urn:redocly:realm:api:customEvent:${e.name}`}])}:void 0,getKv:d}};function A(t){return{...E(t),executor:b(),store:j(t.getKv,["mock",String(t.slug??"default")])}}export{E as enhanceContext,A as enhanceMockServerContext};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as p from"workerpool";import{withPathPrefix as E}from"@redocly/theme/core/utils";import{envConfig as u}from"../config/env-config.js";import{telemetry as a}from"../telemetry/index.js";import{TimeoutExceededError as f}from"./errors/timeout-exceeded.js";import{serializeRequest as g}from"./helpers/serialize-request.js";import{apiRoutesWorkers as A,API_ROUTES_WORKER_KEY as T}from"../workers/api-routes-worker-pool.js";import{API_FUNCTIONS_REQUEST_HANDLER_ID as
|
|
1
|
+
import*as p from"workerpool";import{withPathPrefix as E}from"@redocly/theme/core/utils";import{envConfig as u}from"../config/env-config.js";import{telemetry as a}from"../telemetry/index.js";import{TimeoutExceededError as f}from"./errors/timeout-exceeded.js";import{serializeRequest as g}from"./helpers/serialize-request.js";import{apiRoutesWorkers as A,API_ROUTES_WORKER_KEY as T}from"../workers/api-routes-worker-pool.js";import{API_FUNCTIONS_REQUEST_HANDLER_ID as m}from"../plugins/api-functions/index.js";const h=1e4,S=15;async function v(e,r,i){a.initialize();const t=r.get("auth"),s=await i.resolveRouteStaticData(e)||{},n=E(e.slug);try{const{status:o,headers:d,body:c}=await A.exec(T,[{serverOutDir:i.serverOutDir,slug:n,requestHandlerId:e.requestHandlerId,maxResponseSizeMB:S,ctxData:{user:{teams:t.teams,email:t.claims.email,claims:t.claims,idpAccessToken:t.idpAccessToken,idpId:t.claims.idpId,isAuthenticated:t.isAuthenticated},config:i.config,outdir:i.outdir,baseUrl:new URL(r.req.url).origin},staticData:{...s,props:{...s.props,routeSlug:n,outdir:i.outdir}},req:await g(r.req.raw),sqldRemoteDatabaseUrl:u.SQLD_REMOTE_DATABASE_URL,sqldRemoteDatabaseAuthToken:u.SQLD_REMOTE_DATABASE_AUTH_TOKEN}],{timeout:h});R({requestHandlerId:e.requestHandlerId,status:o,ctx:r});const l=c.data?Buffer.from(c.data):null;return new Response(l,{status:o,headers:d})}catch(o){throw _({requestHandlerId:e.requestHandlerId,error:o}),o instanceof p.Promise.TimeoutError?new f("Timeout exceeded"):o}}function R({requestHandlerId:e,status:r,ctx:i}){e.startsWith(m)?a.sendApiFunctionCalledMessage([{id:"apiFunctionId",object:"apiFunction",uri:"urn:redocly:realm:api:apiFunction:apiFunctionId",handler:e,status:r,message:null}]):a.sendMockServerCalledMessage([{id:e,object:"mockServer",uri:`urn:redocly:realm:api:mockServer:${e}`,error:null,handler:e,headers:{"user-agent":i.req.header("user-agent")??null},status:r}])}function _({requestHandlerId:e,error:r}){e.startsWith(m)?a.sendApiFunctionErrorMessage([{id:"apiFunctionId",object:"apiFunction",uri:"urn:redocly:realm:api:apiFunction:apiFunctionId",status:500,handler:e,message:r.message}]):a.sendMockServerErrorMessage([{id:e,object:"mockServer",uri:`urn:redocly:realm:api:mockServer:${e}`,handler:e,message:r.message}])}export{v as runApiRoutesWorker,_ as sendTelemetryErrorMessage};
|
|
@@ -53,7 +53,6 @@ declare function loadEnvConfig(): {
|
|
|
53
53
|
REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
|
|
54
54
|
REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
|
|
55
55
|
REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: boolean | undefined;
|
|
56
|
-
REDOCLY_EXP_MCP_ELICITATION_ENABLED?: boolean | undefined;
|
|
57
56
|
SEARCH_DEV_REINIT?: string | undefined;
|
|
58
57
|
SEARCH_DEV_DEBUG: boolean;
|
|
59
58
|
TYPESENSE_API_URL?: string | undefined;
|
|
@@ -134,7 +133,6 @@ export declare const envConfig: {
|
|
|
134
133
|
REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
|
|
135
134
|
REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
|
|
136
135
|
REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: boolean | undefined;
|
|
137
|
-
REDOCLY_EXP_MCP_ELICITATION_ENABLED?: boolean | undefined;
|
|
138
136
|
SEARCH_DEV_REINIT?: string | undefined;
|
|
139
137
|
SEARCH_DEV_DEBUG: boolean;
|
|
140
138
|
TYPESENSE_API_URL?: string | undefined;
|
|
@@ -57,7 +57,6 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
|
|
|
57
57
|
REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL: z.ZodOptional<z.ZodString>;
|
|
58
58
|
REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT: z.ZodOptional<z.ZodString>;
|
|
59
59
|
REDOCLY_DISABLE_API_FUNCTION_SANDBOX: z.ZodEffects<z.ZodOptional<z.ZodEnum<["true", "false"]>>, boolean | undefined, "false" | "true" | undefined>;
|
|
60
|
-
REDOCLY_EXP_MCP_ELICITATION_ENABLED: z.ZodEffects<z.ZodOptional<z.ZodEnum<["true", "false"]>>, boolean | undefined, "false" | "true" | undefined>;
|
|
61
60
|
} & {
|
|
62
61
|
SEARCH_DEV_REINIT: z.ZodOptional<z.ZodString>;
|
|
63
62
|
SEARCH_DEV_DEBUG: z.ZodEffects<z.ZodDefault<z.ZodEnum<["true", "false"]>>, boolean, "false" | "true" | undefined>;
|
|
@@ -135,7 +134,6 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
|
|
|
135
134
|
REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
|
|
136
135
|
REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
|
|
137
136
|
REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: boolean | undefined;
|
|
138
|
-
REDOCLY_EXP_MCP_ELICITATION_ENABLED?: boolean | undefined;
|
|
139
137
|
SEARCH_DEV_REINIT?: string | undefined;
|
|
140
138
|
SEARCH_DEV_DEBUG: boolean;
|
|
141
139
|
TYPESENSE_API_URL?: string | undefined;
|
|
@@ -206,7 +204,6 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
|
|
|
206
204
|
REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
|
|
207
205
|
REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
|
|
208
206
|
REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: "false" | "true" | undefined;
|
|
209
|
-
REDOCLY_EXP_MCP_ELICITATION_ENABLED?: "false" | "true" | undefined;
|
|
210
207
|
SEARCH_DEV_REINIT?: string | undefined;
|
|
211
208
|
SEARCH_DEV_DEBUG?: "false" | "true" | undefined;
|
|
212
209
|
TYPESENSE_API_URL?: string | undefined;
|
|
@@ -277,7 +274,6 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
|
|
|
277
274
|
REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
|
|
278
275
|
REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
|
|
279
276
|
REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: boolean | undefined;
|
|
280
|
-
REDOCLY_EXP_MCP_ELICITATION_ENABLED?: boolean | undefined;
|
|
281
277
|
SEARCH_DEV_REINIT?: string | undefined;
|
|
282
278
|
SEARCH_DEV_DEBUG: boolean;
|
|
283
279
|
TYPESENSE_API_URL?: string | undefined;
|
|
@@ -348,7 +344,6 @@ export declare const envSchema: z.ZodEffects<z.ZodObject<{
|
|
|
348
344
|
REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
|
|
349
345
|
REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
|
|
350
346
|
REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: "false" | "true" | undefined;
|
|
351
|
-
REDOCLY_EXP_MCP_ELICITATION_ENABLED?: "false" | "true" | undefined;
|
|
352
347
|
SEARCH_DEV_REINIT?: string | undefined;
|
|
353
348
|
SEARCH_DEV_DEBUG?: "false" | "true" | undefined;
|
|
354
349
|
TYPESENSE_API_URL?: string | undefined;
|
|
@@ -17,8 +17,6 @@ export declare const featureFlagsSchema: z.ZodObject<{
|
|
|
17
17
|
REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT: z.ZodOptional<z.ZodString>;
|
|
18
18
|
/** Escape hatch: disables the Node Permission Model sandbox on API function and MCP tool worker processes (hosted Reunite environments only). */
|
|
19
19
|
REDOCLY_DISABLE_API_FUNCTION_SANDBOX: z.ZodEffects<z.ZodOptional<z.ZodEnum<["true", "false"]>>, boolean | undefined, "false" | "true" | undefined>;
|
|
20
|
-
/** Prompt for upstream API credentials via URL-mode elicitation. Enabled by default wherever the gateway capability is enabled; set to `false` to disable. */
|
|
21
|
-
REDOCLY_EXP_MCP_ELICITATION_ENABLED: z.ZodEffects<z.ZodOptional<z.ZodEnum<["true", "false"]>>, boolean | undefined, "false" | "true" | undefined>;
|
|
22
20
|
}, "strip", z.ZodTypeAny, {
|
|
23
21
|
NEW_CATALOG_ENABLED?: boolean | undefined;
|
|
24
22
|
NEW_SCORECARDS_ENABLED?: boolean | undefined;
|
|
@@ -30,7 +28,6 @@ export declare const featureFlagsSchema: z.ZodObject<{
|
|
|
30
28
|
REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
|
|
31
29
|
REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
|
|
32
30
|
REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: boolean | undefined;
|
|
33
|
-
REDOCLY_EXP_MCP_ELICITATION_ENABLED?: boolean | undefined;
|
|
34
31
|
}, {
|
|
35
32
|
NEW_CATALOG_ENABLED?: "false" | "true" | undefined;
|
|
36
33
|
NEW_SCORECARDS_ENABLED?: "false" | "true" | undefined;
|
|
@@ -42,6 +39,5 @@ export declare const featureFlagsSchema: z.ZodObject<{
|
|
|
42
39
|
REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL?: string | undefined;
|
|
43
40
|
REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT?: string | undefined;
|
|
44
41
|
REDOCLY_DISABLE_API_FUNCTION_SANDBOX?: "false" | "true" | undefined;
|
|
45
|
-
REDOCLY_EXP_MCP_ELICITATION_ENABLED?: "false" | "true" | undefined;
|
|
46
42
|
}>;
|
|
47
43
|
//# sourceMappingURL=feature-flags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as _}from"zod";import{envBooleanStringOptional as E}from"../../utils/envs/env-boolean-string.js";const
|
|
1
|
+
import{z as _}from"zod";import{envBooleanStringOptional as E}from"../../utils/envs/env-boolean-string.js";const o=_.object({NEW_CATALOG_ENABLED:E(),NEW_SCORECARDS_ENABLED:E(),ENABLE_COMMENTS:_.string().optional(),REDOCLY_EXP_DISABLE_MD_VALIDATION:E(),ENABLE_SOURCE_MAPS:E(),PLAN_GATES:_.string().optional(),REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_ENABLED:E(),REDOCLY_EXP_LLMSTXT_AGENT_FEEDBACK_URL:_.string().optional(),REDOCLY_EXP_LLMSTXT_AGENT_ENDPOINT:_.string().optional(),REDOCLY_DISABLE_API_FUNCTION_SANDBOX:E()});export{o as featureFlagsSchema};
|
|
@@ -31,6 +31,8 @@ export declare const BH_API_PROJECTS_URL_V2: string | undefined;
|
|
|
31
31
|
export declare const ENTITLEMENTS_JWKS_URL: string;
|
|
32
32
|
export declare const FEEDBACK_API_URL: string;
|
|
33
33
|
export declare const ASK_AI_API_URL: string;
|
|
34
|
+
export declare const AI_ASSISTANT_ESCALATIONS_API_URL: string;
|
|
35
|
+
export declare const AI_ASSISTANT_FEEDBACK_API_URL: string;
|
|
34
36
|
export declare const SEMANTIC_SEARCH_API_URL: string;
|
|
35
37
|
export declare const CACHE_CONTROL_NO_STORE_HEADER_VALUE = "no-store";
|
|
36
38
|
export declare const DEFAULT_IMMUTABLE_CACHE_MAX_AGE: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ServerRoutes as
|
|
1
|
+
import{ServerRoutes as r}from"../../constants/api.js";import{USER_THEME_ALIAS as L}from"../../constants/common.js";import{envConfig as _}from"../config/env-config.js";const N="runtime",x="/assets",a="/_spec",U="/_bundle",M="static",P="redocly:::linkOriginal",l="@",i="default",m=new RegExp("((?!@i18n\\/|@l10n\\/)\\/?@.*?(?=\\/))","g"),F="@redocly/theme/plugin.js",H="styles.css",d=["@theme/plugin.js","@theme/plugin.cjs","@theme/plugin.mjs"],u=_.JWT_SECRET_KEY||"test_secret_key",G=3600,K=1440*60,c="@i18n",S="@l10n",Y=[L,c,S],B="https://redocly.com/auth/aud",g="catalog.json",h="scorecard.json",f="page-count.json",k="sitemap.xml",J="llms.txt",o=_.PROJECT_ID,e=_.PROJECT_SLUG,R=_.ORGANIZATION_ID,s=_.ORG_SLUG,t=_.BH_API_URL,n=t&&s&&e?`${t}/orgs/${s}/projects/${e}`:void 0,E=t&&R&&o?`${t}/orgs/${R}/projects/${o}`:void 0,p=t?`${t}/entitlements/.well-known/jwks`:"https://app.cloud.redocly.com/api/entitlements/.well-known/jwks",W=_.ENTITLEMENTS_JWKS_CDN_URL||p,$=n?`${n}/feedback`:"",j=E?`${E}/ai-agentic-conversations`:"",w=E?`${E}/ai-assistant-escalations`:"",V=E?`${E}/ai-assistant-feedback`:"",X=E?`${E}/semantic-search`:"",v="no-store",y=365*24*60*60,b="X-Redocly-Cache-Control",Z="no-cache",q="public, s-maxage=86400, max-age=10, must-revalidate",z=_.AUTH_URL,Q="Developer Documentation",T=_.REDOCLY_SSR_RENDER_MODE==="worker"?"worker":"main",__=T==="main"?0:_.REDOCLY_SSR_WORKERS_MIN!=null?Number(_.REDOCLY_SSR_WORKERS_MIN):2,E_=T==="main"?1:_.REDOCLY_SSR_WORKERS_MAX!=null?Number(_.REDOCLY_SSR_WORKERS_MAX):5,t_="-----BEGIN CERTIFICATE-----",o_="-----END CERTIFICATE-----",e_=!_.isDevelopMode&&_.REDOCLY_TELEMETRY!=="off"||_.REDOCLY_TELEMETRY==="on",R_="http://localhost:4318/v1/traces",s_=[r.HEALTH],A=_.SERVER_EDITOR_APP_URL||"http://127.0.0.1:3000",n_=_.REDOCLY_CORS_ORIGINS?_.REDOCLY_CORS_ORIGINS.split(",").map(I=>I.trim()).filter(Boolean).concat(A):[A],T_="markdown/partials",A_="markdown/partials-deps";export{w as AI_ASSISTANT_ESCALATIONS_API_URL,V as AI_ASSISTANT_FEEDBACK_API_URL,n_ as ALLOWED_CORS_ORIGINS,B as ALTERNATIVE_AUD_CLAIM_NAME,j as ASK_AI_API_URL,z as AUTH_URL,t_ as BEGIN_CERTIFICATE_DELIMITER,n as BH_API_PROJECTS_URL,E as BH_API_PROJECTS_URL_V2,v as CACHE_CONTROL_NO_STORE_HEADER_VALUE,Z as CACHE_CONTROL_PUBLIC_HTML,g as CATALOG_OUTPUT_FILE_NAME,y as DEFAULT_IMMUTABLE_CACHE_MAX_AGE,d as DEFAULT_PROJECT_PLUGIN_PATHS,F as DEFAULT_THEME_PLUGIN_PATH,Q as DEFAULT_TITLE,i as DEFAULT_VERSION_NAME,a as DEPRECATED_PUBLIC_API_DEFINITIONS_FOLDER,o_ as END_CERTIFICATE_DELIMITER,W as ENTITLEMENTS_JWKS_URL,$ as FEEDBACK_API_URL,c as I18N_DIR_NAME,u as JWT_SECRET_KEY,S as L10N_DIR_NAME,P as LINK_ORIGINAL_ATTR_NAME,J as LLMS_TXT_FILE_NAME,T_ as MARKDOC_PARTIALS_DATA_KEY,A_ as MARKDOC_PARTIALS_DEPS_KEY,G as MCP_ACCESS_TOKEN_TTL_SEC,K as MCP_REFRESH_SESSION_LIFETIME_SEC,R as ORG_ID,s as ORG_SLUG,s_ as OTEL_EXCLUDED_ROUTES,R_ as OTEL_TRACES_DEV_URL,f as PAGE_COUNT_OUTPUT_FILE_NAME,o as PROJECT_ID,e as PROJECT_SLUG,U as PUBLIC_API_DEFINITIONS_FOLDER,x as PUBLIC_ASSETS_FOLDER,M as PUBLIC_STATIC_FOLDER,Y as RESERVED_DIR_NAMES,N as RUNTIME_RESOURCES_DIR,h as SCORECARD_OUTPUT_FILE_NAME,X as SEMANTIC_SEARCH_API_URL,A as SERVER_EDITOR_APP_URL,k as SITEMAP_FILE_NAME,T as SSR_RENDER_MODE,E_ as SSR_WORKERS_MAX,__ as SSR_WORKERS_MIN,H as STYLES_FILE,e_ as TELEMETRY_ENABLED,m as VERSIONED_FOLDER_REGEXP_MATCH,l as VERSION_SEPARATOR,b as X_REDOCLY_CACHE_CONTROL_HEADER,q as X_REDOCLY_CACHE_CONTROL_PUBLIC_HTML};
|
|
@@ -5,7 +5,7 @@ export declare const SEARCH_GROUP_NAME_API = "API Reference";
|
|
|
5
5
|
export declare const SEARCH_DATA_EXPORT_FOLDER = "search";
|
|
6
6
|
export declare const SEARCH_LIMIT = 100;
|
|
7
7
|
export declare const SEARCH_GROUP_LIMIT = 10;
|
|
8
|
-
export declare const SEARCH_MAX_FACET_VALUES =
|
|
8
|
+
export declare const SEARCH_MAX_FACET_VALUES = 25;
|
|
9
9
|
export declare const SEARCH_MAX_INMEMORY_DOCUMENTS_COUNT = 100;
|
|
10
10
|
export declare const HIGHLIGHTED_TEXT_MAX_LENGTH = 150;
|
|
11
11
|
export declare const AI_INDEX_EXPORT_FOLDER = "ai-search";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{DEFAULT_ANONYMOUS_VISITOR_TEAM as e,DEFAULT_AUTHENTICATED_TEAM as t}from"../../../constants/common.js";const _=["title","text","path","httpPath","parameters[]:name","parameters[]:description","parameters[]:place","parameters[]:path"],A="Documentation",o="API Reference",r="search",p=100,T=10,a=
|
|
1
|
+
import{DEFAULT_ANONYMOUS_VISITOR_TEAM as e,DEFAULT_AUTHENTICATED_TEAM as t}from"../../../constants/common.js";const _=["title","text","path","httpPath","parameters[]:name","parameters[]:description","parameters[]:place","parameters[]:path"],A="Documentation",o="API Reference",r="search",p=100,T=10,a=25,n=100,s=150,c="ai-search",I=50,S=250,C=Symbol("metadata"),R={id:"",url:"",title:"",text:"",security:[],parameters:[{place:"",mediaType:void 0,name:"",description:"",path:[],type:"object",required:!1,example:void 0,enum:void 0}],rbacTeams:[e,t]},D=!0,H=["title"];export{c as AI_INDEX_EXPORT_FOLDER,I as AI_SEARCH_CHUNK_SIZE,S as AI_SEARCH_DOCUMENT_CHUNK_SIZE,R as BASE_SEARCH_DOCUMENT,D as DEFAULT_AI_SEARCH_ENABLED,H as DISABLE_DEEP_LINK_IF_FIELDS_EXIST,s as HIGHLIGHTED_TEXT_MAX_LENGTH,r as SEARCH_DATA_EXPORT_FOLDER,C as SEARCH_DOCUMENT_METADATA_KEY,T as SEARCH_GROUP_LIMIT,o as SEARCH_GROUP_NAME_API,A as SEARCH_GROUP_NAME_DOCUMENTATION,_ as SEARCH_INDEX_FIELDS,p as SEARCH_LIMIT,a as SEARCH_MAX_FACET_VALUES,n as SEARCH_MAX_INMEMORY_DOCUMENTS_COUNT};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{context as m}from"esbuild";import{mkdirSync as M,writeFileSync as Y,existsSync as k}from"node:fs";import*as a from"node:path";import{RUNTIME_RESOURCES_DIR as V,TELEMETRY_ENABLED as $}from"../constants/common.js";import{fromCurrentDir as r}from"../utils/paths.js";import{NodeBrowserPlugin as P}from"./plugins/node-browser.js";import{PortalImport as l}from"./plugins/portal-import.js";import{ThemesResolver as u}from"./plugins/themes-resolver.js";import{AssetsResolver as E}from"./plugins/assets-resolver.js";import{EsbuildErrorCollector as d}from"./plugins/esbuild-compile-resolver.js";import{OpenapiDocsModuleReplacer as R}from"./plugins/openapi-docs-module-replacer/index.js";import{ApiDocsModuleReplacer as _}from"./plugins/api-docs-module-replacer/index.js";import{ServerPropsResolver as f}from"./plugins/server-props-resolver.js";import{StyledComponentsSSR as v}from"./plugins/styled-components-ssr.js";import{DependencyResolver as D}from"./plugins/dependency-resolver.js";import{YamlLoader as N}from"./plugins/yaml-loader.js";import{ApiRequestHandlersResolver as S}from"./plugins/api-request-handlers-resolver.js";import{McpToolHandlersResolver as T}from"./plugins/mcp-tool-handlers-resolver.js";import{MiddlewareResolver as I}from"./plugins/middleware-resolver.js";import{OnRebuild as L}from"./plugins/on-rebuild.js";import{getPublicEnvVariables as q}from"../utils/envs/get-public-env-variables.js";import{PORTAL_VERSION as w}from"../version.js";import{AsyncApiPatch as y}from"./plugins/async-api-patch.js";import{telemetryTraceStep as g}from"../../cli/telemetry/helpers/trace-step.js";import{initServerRebuildTrigger as x}from"./generate.js";const O={bundle:!0,format:"esm",chunkNames:"chunks/[name]-[hash]"};function C(e){const o=a.join(e,"tsconfig.json");return k(o)?o:void 0}const c=new Set;async function ue(){await Promise.all([...c].map(e=>e.dispose())),c.clear()}async function Ee(e,o,t="production",n){return await g("com.redocly.build.createClientCompiler",async()=>{const p=q(),i={};Object.entries(p).map(([j,b])=>i[`process.env.${j}`]=JSON.stringify(b));const s=[...n?[L(n)]:[],P({path:"path-browserify",fs:"{}",tty:"tty-browserify",os:"os-browserify",http:"stream-http",https:"stream-http",readline:"{}",crypto:"{}",stream:"{}",zlib:"{}","https-proxy-agent":"{}"}),u(e,e.contentDir),E(e,e.contentDir),d(e,e.contentDir),f(e),D(),l(),N(),y(),v(),R(),_()],h=[r(import.meta.url,"../../client/browser-entry.js"),r(import.meta.url,"../../client/user-tags-entry.js")],A=await m({...O,entryPoints:h,outdir:a.join(o,V),sourcemap:t!=="production"&&process.env.ENABLE_SOURCE_MAPS==="true",plugins:s,tsconfig:C(e.contentDir),mainFields:["browser","module","main"],metafile:t!=="production",minify:t==="production",splitting:!0,external:["constants","zlib","stream","https","vm","module","worker_threads","child_process","@swc/core"],inject:[process.env.INSPECT_MODE==="true"?r(import.meta.url,"../../client/inspect-mode-hooks.js"):"",r(import.meta.url,"./web-shim.js")].filter(Boolean),define:{...i,"process.env.NODE_ENV":`"${t}"`,...process.env.REDOCLY_INTERNAL_DEV!==void 0&&{"process.env.REDOCLY_INTERNAL_DEV":`"${process.env.REDOCLY_INTERNAL_DEV}"`},"process.env.SERVER_EDITOR_APP_URL":`"${process.env.SERVER_EDITOR_APP_URL}"`,"process.env.ENABLE_COMMENTS":`"${process.env.ENABLE_COMMENTS}"`,"process.env.REDOCLY_TELEMETRY":$?'"on"':'"off"',"process.env.REDOCLY_PORTAL_VERSION":`"${w}"`,"process.env":`{"NODE_ENV": "${t}"}`,"process.platform":'"browser"',"process.browser":"true","module.hot":"false",global:"{}",...process.env.REDOCLY_PREFIX_PATHS&&{"process.env.REDOCLY_PREFIX_PATHS":`"${process.env.REDOCLY_PREFIX_PATHS}"`},...process.env.INSPECT_MODE==="true"&&{"process.env.INSPECT_MODE":`${process.env.INSPECT_MODE}`},...process.env.MAIN_API_URL&&{"process.env.MAIN_API_URL":`"${process.env.MAIN_API_URL}"`}},logLevel:"silent"});return c.add(A),A})}async function de(e,o,t="development",n){M(o,{recursive:!0}),x(o),Y(a.join(o,"package.json"),JSON.stringify({name:"@redocly/portal/server-cache",type:"module"}));const p=[...n?[L(n)]:[],u(e,e.contentDir),E(e,e.contentDir),d(e,e.contentDir),f(e),S(e),T(e),I(e),D(),l(),N(),y(),v(),R(),_()],i=[{in:r(import.meta.url,"../../client/server-entry.js"),out:"server-entry"},{in:r(import.meta.url,"../../client/user-tags-entry.js"),out:"user-tags-entry"},{in:r(import.meta.url,"../../client/server-props-entry.js"),out:"server-props-entry"},{in:r(import.meta.url,"../../client/api-request-handlers-entry.js"),out:"api-request-handlers-entry"},{in:r(import.meta.url,"../../client/api-docs-builder-entry.js"),out:"api-docs-builder-entry"},{in:r(import.meta.url,"../workers/mcp-tool-worker.js"),out:"mcp-tool-worker"},{in:r(import.meta.url,"../../client/middleware-entry.js"),out:"middleware-entry"}],s=await m({...O,entryPoints:i,outdir:o,plugins:p,sourcemap:t!=="production"&&process.env.ENABLE_SOURCE_MAPS==="true",minify:t==="production",tsconfig:C(e.contentDir),mainFields:["module","main"],splitting:!0,external:["react","react-router
|
|
1
|
+
import{context as m}from"esbuild";import{mkdirSync as M,writeFileSync as Y,existsSync as k}from"node:fs";import*as a from"node:path";import{RUNTIME_RESOURCES_DIR as V,TELEMETRY_ENABLED as $}from"../constants/common.js";import{fromCurrentDir as r}from"../utils/paths.js";import{NodeBrowserPlugin as P}from"./plugins/node-browser.js";import{PortalImport as l}from"./plugins/portal-import.js";import{ThemesResolver as u}from"./plugins/themes-resolver.js";import{AssetsResolver as E}from"./plugins/assets-resolver.js";import{EsbuildErrorCollector as d}from"./plugins/esbuild-compile-resolver.js";import{OpenapiDocsModuleReplacer as R}from"./plugins/openapi-docs-module-replacer/index.js";import{ApiDocsModuleReplacer as _}from"./plugins/api-docs-module-replacer/index.js";import{ServerPropsResolver as f}from"./plugins/server-props-resolver.js";import{StyledComponentsSSR as v}from"./plugins/styled-components-ssr.js";import{DependencyResolver as D}from"./plugins/dependency-resolver.js";import{YamlLoader as N}from"./plugins/yaml-loader.js";import{ApiRequestHandlersResolver as S}from"./plugins/api-request-handlers-resolver.js";import{McpToolHandlersResolver as T}from"./plugins/mcp-tool-handlers-resolver.js";import{MiddlewareResolver as I}from"./plugins/middleware-resolver.js";import{OnRebuild as L}from"./plugins/on-rebuild.js";import{getPublicEnvVariables as q}from"../utils/envs/get-public-env-variables.js";import{PORTAL_VERSION as w}from"../version.js";import{AsyncApiPatch as y}from"./plugins/async-api-patch.js";import{telemetryTraceStep as g}from"../../cli/telemetry/helpers/trace-step.js";import{initServerRebuildTrigger as x}from"./generate.js";const O={bundle:!0,format:"esm",chunkNames:"chunks/[name]-[hash]"};function C(e){const o=a.join(e,"tsconfig.json");return k(o)?o:void 0}const c=new Set;async function ue(){await Promise.all([...c].map(e=>e.dispose())),c.clear()}async function Ee(e,o,t="production",n){return await g("com.redocly.build.createClientCompiler",async()=>{const p=q(),i={};Object.entries(p).map(([j,b])=>i[`process.env.${j}`]=JSON.stringify(b));const s=[...n?[L(n)]:[],P({path:"path-browserify",fs:"{}",tty:"tty-browserify",os:"os-browserify",http:"stream-http",https:"stream-http",readline:"{}",crypto:"{}",stream:"{}",zlib:"{}","https-proxy-agent":"{}"}),u(e,e.contentDir),E(e,e.contentDir),d(e,e.contentDir),f(e),D(),l(),N(),y(),v(),R(),_()],h=[r(import.meta.url,"../../client/browser-entry.js"),r(import.meta.url,"../../client/user-tags-entry.js")],A=await m({...O,entryPoints:h,outdir:a.join(o,V),sourcemap:t!=="production"&&process.env.ENABLE_SOURCE_MAPS==="true",plugins:s,tsconfig:C(e.contentDir),mainFields:["browser","module","main"],metafile:t!=="production",minify:t==="production",splitting:!0,external:["constants","zlib","stream","https","vm","module","worker_threads","child_process","@swc/core"],inject:[process.env.INSPECT_MODE==="true"?r(import.meta.url,"../../client/inspect-mode-hooks.js"):"",r(import.meta.url,"./web-shim.js")].filter(Boolean),define:{...i,"process.env.NODE_ENV":`"${t}"`,...process.env.REDOCLY_INTERNAL_DEV!==void 0&&{"process.env.REDOCLY_INTERNAL_DEV":`"${process.env.REDOCLY_INTERNAL_DEV}"`},"process.env.SERVER_EDITOR_APP_URL":`"${process.env.SERVER_EDITOR_APP_URL}"`,"process.env.ENABLE_COMMENTS":`"${process.env.ENABLE_COMMENTS}"`,"process.env.REDOCLY_TELEMETRY":$?'"on"':'"off"',"process.env.REDOCLY_PORTAL_VERSION":`"${w}"`,"process.env":`{"NODE_ENV": "${t}"}`,"process.platform":'"browser"',"process.browser":"true","module.hot":"false",global:"{}",...process.env.REDOCLY_PREFIX_PATHS&&{"process.env.REDOCLY_PREFIX_PATHS":`"${process.env.REDOCLY_PREFIX_PATHS}"`},...process.env.INSPECT_MODE==="true"&&{"process.env.INSPECT_MODE":`${process.env.INSPECT_MODE}`},...process.env.MAIN_API_URL&&{"process.env.MAIN_API_URL":`"${process.env.MAIN_API_URL}"`}},logLevel:"silent"});return c.add(A),A})}async function de(e,o,t="development",n){M(o,{recursive:!0}),x(o),Y(a.join(o,"package.json"),JSON.stringify({name:"@redocly/portal/server-cache",type:"module"}));const p=[...n?[L(n)]:[],u(e,e.contentDir),E(e,e.contentDir),d(e,e.contentDir),f(e),S(e),T(e),I(e),D(),l(),N(),y(),v(),R(),_()],i=[{in:r(import.meta.url,"../../client/server-entry.js"),out:"server-entry"},{in:r(import.meta.url,"../../client/user-tags-entry.js"),out:"user-tags-entry"},{in:r(import.meta.url,"../../client/server-props-entry.js"),out:"server-props-entry"},{in:r(import.meta.url,"../../client/api-request-handlers-entry.js"),out:"api-request-handlers-entry"},{in:r(import.meta.url,"../../client/api-docs-builder-entry.js"),out:"api-docs-builder-entry"},{in:r(import.meta.url,"../workers/mcp-tool-worker.js"),out:"mcp-tool-worker"},{in:r(import.meta.url,"../../client/middleware-entry.js"),out:"middleware-entry"}],s=await m({...O,entryPoints:i,outdir:o,plugins:p,sourcemap:t!=="production"&&process.env.ENABLE_SOURCE_MAPS==="true",minify:t==="production",tsconfig:C(e.contentDir),mainFields:["module","main"],splitting:!0,external:["react","react-router","@dr.pogodin/react-helmet","@swc/core","pnpapi","canvas"],banner:{js:`import { createRequire as topLevelCreateRequire } from 'module';
|
|
2
2
|
const require = topLevelCreateRequire(import.meta.url);`},platform:"node",define:{"process.env.NODE_ENV":`"${t}"`,...process.env.REDOCLY_INTERNAL_DEV!==void 0&&{"process.env.REDOCLY_INTERNAL_DEV":`"${process.env.REDOCLY_INTERNAL_DEV}"`},"module.hot":"false"},logLevel:"silent"});return c.add(s),s}async function Re(e,o,t="production",n){return await g("com.redocly.build.createServerCompiler",async()=>{const p=[...n?[L(n)]:[],P({"node-fetch":"{}",webpack:"{}",swagger2openapi:"{}"}),u(e,e.contentDir),E(e,e.contentDir),d(e,e.contentDir),f(e),S(e),T(e),I(e),D(),l(),N(),y(),v(),R(),_()],i=[{in:r(import.meta.url,"../node-bundle-entry.js"),out:"index"},{in:r(import.meta.url,"../../client/user-tags-entry.js"),out:"user-tags-entry"},{in:r(import.meta.url,"../../client/api-docs-builder-entry.js"),out:"api-docs-builder-entry"},{in:r(import.meta.url,"../workers/api-routes-worker.js"),out:"api-routes-worker"},{in:r(import.meta.url,"../workers/scorecards-worker.js"),out:"scorecards-worker"},{in:r(import.meta.url,"../workers/mcp-tool-worker.js"),out:"mcp-tool-worker"}],s=await m({...O,entryPoints:i,outExtension:{".js":".mjs"},outdir:o,platform:"node",plugins:p,tsconfig:C(e.contentDir),mainFields:["module","main"],metafile:t!=="production",minify:t==="production",splitting:!1,define:{"process.env.NODE_ENV":`"${t}"`,...process.env.REDOCLY_INTERNAL_DEV!==void 0&&{"process.env.REDOCLY_INTERNAL_DEV":`"${process.env.REDOCLY_INTERNAL_DEV}"`},"process.env.REDOCLY_EXECUTION_MODE":'"runtime"',"process.env.REDOCLY_PORTAL_VERSION":`"${w}"`,"module.hot":"false",...process.env.REDOCLY_PREFIX_PATHS&&{"process.env.REDOCLY_PREFIX_PATHS":`"${process.env.REDOCLY_PREFIX_PATHS}"`}},banner:{js:`import { createRequire as topLevelCreateRequire } from 'module';
|
|
3
3
|
const require = topLevelCreateRequire(import.meta.url);`},logLevel:"silent"});return c.add(s),s})}export{Ee as createClientCompiler,Re as createNodeBundleCompiler,de as createServerCompiler,ue as stopAllCompilers};
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import*as c from"node:path";import{CONFIG_FILE_NAME as
|
|
2
|
-
`),loader:"css",resolveDir:
|
|
1
|
+
import*as c from"node:path";import{CONFIG_FILE_NAME as x}from"../../../constants/common.js";import{DEFAULT_THEME_NAME as $,USER_THEME_ALIAS as y}from"../../../constants/common.js";import{isDefined as g}from"../../../utils/guards/is-defined.js";import{slash as D}from"../../../utils/path/slash.js";import{resolveExternalPlugins as p}from"../../external-plugins/resolve-external-plugins.js";import{generateMarkdocComponentsEntry as L,generateMarkdocSchemasEntry as M}from"./codegen/index.js";const d=new Map,N=(a,o)=>{const h=c.resolve(o,y),i=c.resolve(o,x),k=["components","core","layouts","markdoc","icons","config","ext"],R="@redocly\\/theme\\/",w=k.map(s=>`${R}${s}`).join("|"),E=new RegExp(`^(@redocly/theme$|${w})`);return{name:"esbuild-redocly-custom-themes-resolver",setup:s=>{s.onResolve({filter:/@redocly-markdoc\/schema/},async e=>{const r=(await p(o,a.config.plugins)).flatMap(n=>n.markdoc?.schemaFile).filter(g);return{namespace:"markdoc-schema-ns",path:e.path,watchFiles:[...r,i],watchDirs:[c.resolve(h,"markdoc")],pluginData:{schemaFiles:r}}}),s.onLoad({filter:/@redocly-markdoc\/schema/,namespace:"markdoc-schema-ns"},({pluginData:e})=>({contents:M(e),resolveDir:"/",loader:"ts"})),s.onResolve({filter:/@redocly-markdoc\/components/},async e=>{const r=[...(await p(o,a.config.plugins)).map(n=>n.markdoc?.componentsFile).filter(g)];return{namespace:"markdoc-schema-ns",path:e.path,watchFiles:[...r,i],pluginData:{componentsFiles:r},watchDirs:[c.resolve(h,"markdoc")]}}),s.onLoad({filter:/@redocly-markdoc\/components/,namespace:"markdoc-schema-ns"},({pluginData:e})=>({contents:L(e),resolveDir:"/",loader:"ts"})),s.onResolve({filter:/@styles/},async e=>{const r=(await p(o,a.config.plugins)).map(n=>n.stylesFile).filter(Boolean);return{namespace:"user-styles-ns",path:e.path,watchFiles:[...r,i],pluginData:{styleFiles:r},watchDirs:[h]}}),s.onLoad({filter:/@styles/,namespace:"user-styles-ns"},async({pluginData:e})=>{const{styleFiles:t}=e;return{contents:t.map(n=>`@import url("${D(c.relative(o,n))}");`).join(`
|
|
2
|
+
`),loader:"css",resolveDir:o}}),s.onResolve({filter:/(^|\/)styles\.css$/},async({path:e,...t})=>{if(t.pluginData==="missing-styles-ns")return;const r=await s.resolve(e,{...t,pluginData:"missing-styles-ns"});return r.errors.length&&r.errors.some(n=>n.text.match(/^Could not resolve .*?\bstyles.css\b/))?{namespace:"missing-styles-ns",path:e}:r}),s.onLoad({filter:/(^|\/)styles\.css$/,namespace:"missing-styles-ns"},async()=>({contents:"",loader:"css"})),s.onResolve({filter:/^react-router-dom$/},()=>({namespace:"react-router-dom-ns",path:"react-router-dom"})),s.onLoad({filter:/^react-router-dom$/,namespace:"react-router-dom-ns"},async()=>{const e=await s.resolve("@redocly/theme/package.json",{resolveDir:o,kind:"require-resolve"});return{contents:`import * as ReactRouter from 'react-router';
|
|
3
|
+
export const useLocation = ReactRouter.useLocation;
|
|
4
|
+
export const useInRouterContext = ReactRouter.useInRouterContext;`,loader:"js",resolveDir:e.errors.length?o:c.dirname(e.path)}}),s.onResolve({filter:E},async e=>{if(e.resolveDir==="")return;const t=`${e.path}:${e.importer}`;if(d.has(t))return d.get(t);const{path:r,...n}=e,l=await p(o,a.config.plugins),u=e.path.replace($,"")||"index";for(let m=l.length-1;m>=0;m--){const F=l[m].isNpmPackage?[c.join(l[m].name,"src",u),{...n,resolveDir:o}]:[`./${u}`,{...n,resolveDir:l[m].pluginDirAbsolutePath}],f=C(await s.resolve(...F));if("path"in f&&f.path!==e.importer){const v={...f,watchFiles:[i,c.join(o,y,u+".tsx")]};return l[m].name===y||d.set(t,v),v}}})}}};function C(a){return a.errors.length?{errors:a.errors}:a}export{N as ThemesResolver,d as resolveCache};
|
package/dist/server/plugins/catalog-entities/database/repositories/catalog-entities-repository.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{logger as
|
|
1
|
+
import{logger as s}from"../../../../tools/notifiers/logger.js";import{telemetryTraceStep as r}from"../../../../telemetry/helpers/trace-step.js";import{BaseRepository as a}from"../../../../providers/database/base-repository.js";import{createDatabaseRepositoryInstance as n}from"../../../../providers/database/instance-cache-resolver.js";import{RelationsReadRepository as c}from"./relations/relations-read-repository.js";import{RevisionRepository as l}from"./common/revision-repository.js";import{BffEntitiesReadRepository as p}from"./bffEntities/bff-entities-read-repository.js";import{EntitiesReadRepository as y}from"./entities/entities-read-repository.js";import{EntitiesWriteRepository as R}from"./entities/entities-write-repository.js";import{RelationsWriteRepository as m}from"./relations/relations-write-repository.js";import{FiltersRepository as g}from"./common/filters-repository.js";class o extends a{entitiesRead;entitiesWrite;relationsRead;relationsWrite;bffEntitiesRead;filters;revisions;get transactionsManager(){return this.databaseClient.transactionsManager}constructor(t){super(t),this.revisions=new l(t.client),this.bffEntitiesRead=new p(t.client),this.relationsRead=new c(t.client),this.entitiesRead=new y(t.client),this.entitiesWrite=new R(t.client,this.organizationId,this.projectId),this.relationsWrite=new m(t.client,this.organizationId,this.projectId),this.filters=new g(t.client)}async sync(){return r("com.redocly.catalogEntities.repository.sync",async t=>{t?.setAttribute("id","catalogEntitiesRepositoryId"),t?.setAttribute("object","catalogEntitiesRepository"),t?.setAttribute("uri","urn:redocly:realm:api:catalogEntitiesRepository:catalogEntitiesRepositoryId"),await this.databaseClient.sync()})}static async create(t){return await r("com.redocly.catalogEntities.repository.getInstance",async i=>{i?.setAttribute("id","catalogEntitiesRepositoryId"),i?.setAttribute("object","catalogEntitiesRepository"),i?.setAttribute("uri","urn:redocly:realm:api:catalogEntitiesRepository:catalogEntitiesRepositoryId");try{return await n(t,"catalog entities",o)}catch(e){throw s.error("Error creating db connection for catalog entities repository",e),i?.error(e),e}})}}export{o as CatalogEntitiesRepository};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import*as e from"react";import a from"styled-components";import{useQuery as f}from"@tanstack/react-query";import{useParams as b}from"react-router
|
|
1
|
+
import*as e from"react";import a from"styled-components";import{useQuery as f}from"@tanstack/react-query";import{useParams as b}from"react-router";import{Box as h,Flex as v}from"@redocly/portal-legacy-ui";import{Admonition as y}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{useTranslate as E}from"../../../../client/app/hooks";import x from"../../../../client/app/CircularProgress";import{Container as A}from"./components/Container";import w from"./components/AppOverview";import T from"./components/ApiKeys";import C from"./components/ApiLogs";import k from"./components/CreateApiKey";import{Description as I}from"./components/Description";import{CallbackUrl as _}from"./components/CallbackUrl";const B="app-tab-actions-portal",m="api_keys",P="logs";function L(D){const{id:s}=b(),{isLoading:p,error:l,data:t}=f({queryKey:["APP:"+s],queryFn:()=>fetch(`/api/api-keys/apps/${s}`).then(n=>n.json())}),{translate:c}=E(),d=n=>o.findIndex(r=>r.id===n),o=[{id:m,name:c("dev.main.tab.appKeys","API keys"),content:e.createElement(e.Fragment,null,e.createElement(T,{credentials:t?.credentials,attributes:t?.attributes}),e.createElement(I,{text:t?.description}),t?.callbackUrl!==void 0&&e.createElement(_,{text:t.callbackUrl})),show:!0},{id:P,name:c("dev.main.tab.logs","Logs"),content:e.createElement(C,null),show:!!t?.supportsLogs}].filter(n=>n.show),[i,g]=e.useState(0),u=t?.canCreateKey&&i===d(m);return e.createElement(h,{my:"2rem"},e.createElement(A,null,p?e.createElement(v,{justifyContent:"center",mt:"2em"},e.createElement(x,null)):l?e.createElement(y,{type:"danger"},l?.message??"Something went wrong"):t?e.createElement(e.Fragment,null,e.createElement(w,{app:t}),e.createElement(K,null,e.createElement(S,null,o.map(({name:n},r)=>e.createElement("span",{key:n,className:i===r?"active":"",onClick:()=>g(r)},n))),e.createElement("div",{id:B}),u&&e.createElement(k,{initialEnabledApis:(t.credentials||[]).flatMap(n=>n.apiProductIds||[])})),e.createElement(z,null,o[i].content)):null))}const W=a.i`
|
|
2
2
|
display: inline-block;
|
|
3
3
|
width: 12px;
|
|
4
4
|
height: 12px;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import*as e from"react";import{useQuery as u}from"@tanstack/react-query";import a from"styled-components";import{Outlet as g,useLocation as h,useNavigate as v,useParams as y}from"react-router
|
|
1
|
+
import*as e from"react";import{useQuery as u}from"@tanstack/react-query";import a from"styled-components";import{Outlet as g,useLocation as h,useNavigate as v,useParams as y}from"react-router";import{Flex as x}from"@redocly/portal-legacy-ui";import{Button as w}from"@redocly/theme/components/Button/Button";import{Sidebar as E}from"@redocly/theme/components/Sidebar/Sidebar";import{Admonition as b}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{MenuItem as P}from"@redocly/theme/components/Menu/MenuItem";import{AddIcon as A}from"@redocly/theme/icons/AddIcon/AddIcon";import{useTranslate as C}from"../../../../client/app/hooks";import k from"../../../../client/app/CircularProgress";import{loadAndNavigate as p}from"../../../../client/app/utils/loadAndNavigate";import S from"./components/icons/PlaceholderIcon";import{ButtonWithLoading as L}from"./components/ButtonWithLoading";import{CreateAppDialog as I}from"./CreateAppDialog";function j(){const{id:n}=y(),s=v(),f=h(),i=e.useRef(null),{translate:o}=C(),{data:r,isLoading:m,isRefetching:l,error:c}=u({refetchOnWindowFocus:!1,queryKey:["APPS"],queryFn:()=>fetch("/api/api-keys/apps").then(t=>t.json().then(d=>t.ok?Promise.resolve(d):Promise.reject(d)))});return e.useEffect(()=>{const t=m||l;!n&&r?.length&&!t?p({navigate:s,to:"apps/"+r[0].id+f.search,origin:"browser",options:{replace:!0}}):n&&!t&&!r?.length&&p({navigate:s,to:"apps/"})},[n,r,l]),e.createElement(e.Fragment,null,m||l?e.createElement(x,{justifyContent:"center",mt:"2em"},e.createElement(k,null)):c?e.createElement(b,{type:"danger"},c?.message??"Something went wrong"):r?e.createElement(z,{"data-component-name":"Layout/PageLayout"},n&&e.createElement(E,{growContent:!1,menu:r?.map(t=>e.createElement(P,{key:t.id,item:{label:t.name,link:"apps/"+t.id,items:[],active:n===t.id,hasActiveSubItem:!1}})),header:e.createElement(D,{"data-translation-key":"dev.sidebar.header"},o("dev.sidebar.header","My apps")),footer:e.createElement(w,{variant:"outlined",fullWidth:!0,onClick:()=>i.current.open(),icon:e.createElement(A,null),iconPosition:"right",size:"small","data-translation-key":"dev.sidebar.footer.text"},o("dev.sidebar.footer.text","New application")),versions:null}),!n&&!r.length?e.createElement(N,null,e.createElement(R,null,e.createElement(S,null),e.createElement(W,{"data-translation-key":"dev.newApp.text"},o("dev.newApp.text","Create your first app")),e.createElement(L,{variant:"primary",onClick:()=>i.current.open(),"data-translation-key":"dev.newApp"},o("dev.newApp","New application")))):e.createElement(F,null,e.createElement(g,null)),e.createElement(I,{ref:i})):null)}const z=a.div`
|
|
2
2
|
display: flex;
|
|
3
3
|
flex-direction: row;
|
|
4
4
|
min-height: calc(100vh - var(--navbar-height));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import*as e from"react";import o from"styled-components";import{useParams as g}from"react-router
|
|
1
|
+
import*as e from"react";import o from"styled-components";import{useParams as g}from"react-router";import{useMutation as E,useQueryClient as y}from"@tanstack/react-query";import{Flex as s}from"@redocly/portal-legacy-ui";import{Button as x}from"@redocly/theme/components/Button/Button";import{H3 as h}from"@redocly/theme/components/Typography/H3";import{Admonition as v}from"@redocly/theme/markdoc/components/Admonition/Admonition";import k from"./ApiKeyOverview";import{ApiKeyProductsStatus as w}from"./ApiKeyProductStatus";import{UpdateKey as K}from"./UpdateApiKey";import{Dialog as L}from"./Dialog";import{ButtonWithLoading as D}from"./ButtonWithLoading";function S(m){const p=y(),{credential:t}=m,{id:r}=g(),[c,a]=e.useState(!1),[u,n]=e.useState(!1),{isPending:i,error:l,mutate:d}=E({mutationKey:["DELETE_CRED"+t.id],mutationFn:()=>fetch(`/api/api-keys/apps/${r}/credentials/${t.id}`,{method:"DELETE"}),onSuccess:()=>{p.invalidateQueries({queryKey:["APP:"+r]}),n(!1)}}),C=()=>{d()},f=()=>{a(!0)};return e.createElement(e.Fragment,null,e.createElement(A,null,e.createElement(k,{apiKey:t}),e.createElement(w,{apiProductsStatuses:t.apiProductsStatus,secret:t.clientSecret,id:t.id})),e.createElement(K,{credential:t,open:c,onClose:()=>a(!1),onOpen:f}),e.createElement(L,{open:u,onOpen:()=>n(!0),onClose:()=>n(!1)},e.createElement(e.Fragment,null,e.createElement(h,null,"Revoke key"),e.createElement("div",null,"Do you really want to revoke this key?"),l&&e.createElement(v,{type:"danger"},l.message),e.createElement(O,null,e.createElement(x,{onClick:()=>n(!1)},"Cancel"),e.createElement(D,{variant:"primary",onClick:C,disabled:i,loading:i},"Revoke key")))))}const A=o(s)`
|
|
2
2
|
flex-wrap: wrap;
|
|
3
3
|
gap: 32px;
|
|
4
4
|
`,W=o.span`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import*as e from"react";import{useQuery as b}from"@tanstack/react-query";import{useParams as g}from"react-router
|
|
1
|
+
import*as e from"react";import{useQuery as b}from"@tanstack/react-query";import{useParams as g}from"react-router";import t from"styled-components";import{CodeBlock as f}from"@redocly/theme/components/CodeBlock/CodeBlock";import{fetch as v}from"../../../../../client/app/utils";import y from"./LogStatusCode";import{getReadableDate as h}from"./getReadableDate";import{Headers as E}from"./Headers";function x(m){const{logId:a}=m,[s,p]=e.useState(0),{id:u}=g(),{data:r}=b({refetchOnWindowFocus:!1,queryKey:["API-LOGS-"+a],queryFn:()=>v(`/api/api-keys/apps/${u}/logs/${a}`).then(n=>n.json())}),c=[{name:"Request",content:r?.request},{name:"Response",content:r?.response}];if(!a||!r)return e.createElement(d,null);const o=c[s].content;return e.createElement(d,null,e.createElement(w,null,e.createElement(l,null,r.path)),e.createElement(k,null,e.createElement("span",null,"Status"),e.createElement("span",null,e.createElement(y,{statusCode:r.statusCode.toString()})),e.createElement("span",null,"ID"),e.createElement("span",null,r.id),e.createElement("span",null,"Time"),e.createElement("span",null,h(r.timestamp,{hour:"numeric",minute:"numeric",second:"numeric"})),e.createElement("span",null,"IP Address"),e.createElement("span",null,r.ipAddress)),e.createElement(C,null,e.createElement(T,null,c.map(({name:n},i)=>e.createElement(S,{key:n,className:s===i?"active":"",onClick:()=>p(i)},n))),e.createElement(z,null,e.createElement(l,null,"Headers"),Object.keys(o?.headers||{}).length?e.createElement(E,{headers:o?.headers||{}}):e.createElement("span",null,"No headers"))),o?.body&&e.createElement(e.Fragment,null,e.createElement(l,null,"Body"),e.createElement(A,{lang:"json",source:o.body,withLineNumbers:!0})))}const d=t.div`
|
|
2
2
|
display: flex;
|
|
3
3
|
flex-grow: 1;
|
|
4
4
|
flex-direction: column;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import*as a from"react";import v from"react-dom";import{useQuery as y}from"@tanstack/react-query";import{useParams as E}from"react-router
|
|
1
|
+
import*as a from"react";import v from"react-dom";import{useQuery as y}from"@tanstack/react-query";import{useParams as E}from"react-router";import i from"styled-components";import{fetch as D}from"../../../../../client/app/utils";import L from"../../../../../client/app/CircularProgress";import{TAB_ACTIONS_PORTAL_ID as F}from"../App";import A from"./ApiLogDetails";import x from"./ApiLogItem";import S from"./ApiLogsActions";import{getReadableDate as p}from"./getReadableDate";function C(){const[o,n]=a.useState(void 0),[e,c]=a.useState({}),s=a.useMemo(()=>R(e),[e]),{id:d}=E(),l=t=>{n(t.id)},u=()=>{const t=new URLSearchParams;return t.append("page","1"),e.api?.length&&e.api.forEach(r=>t.append("api",r.id)),e.method?.length&&e.method?.forEach(r=>t.append("method",r.id)),e.status?.length&&e.status?.forEach(r=>t.append("statusCode",r.id)),e.date?.type==="predefined"&&(e.date.fromDateOffset&&t.append("fromDate",(Date.now()-e.date.fromDateOffset).toString()),e.date.toDateOffset&&t.append("toDate",(Date.now()-e.date.toDateOffset).toString())),e.date?.type==="custom"&&(t.append("fromDate",e.date.fromDate.toString()),t.append("toDate",e.date.toDate.toString())),t.toString()},{data:m,isLoading:f}=y({queryKey:["API-LOGS-"+d,{activeFilters:e}],queryFn:()=>D(`/api/api-keys/apps/${d}/logs?${u()}`).then(t=>t.json()).then(t=>{const{data:r,total:h}=t;return h&&n(r[0].id),t}),refetchOnWindowFocus:!1}),g=a.useCallback(t=>c(t),[]);return a.createElement(a.Fragment,null,a.createElement(k,null,a.createElement(S,{onFiltersChange:g,activeFilters:e})),s.length>0?a.createElement(P,null,s.map((t,r)=>a.createElement(O,{key:r},t))):null,f?a.createElement(L,null):m?.data.length?a.createElement(I,null,a.createElement(b,null,m?.data.map(t=>a.createElement(x,{key:t.id,log:t,active:t.id===o,onClick:l}))),a.createElement(A,{logId:o})):a.createElement("p",null,"There are no logs yet."))}const I=i.div`
|
|
2
2
|
display: flex;
|
|
3
3
|
`,b=i.div`
|
|
4
4
|
display: flex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"react";import{useMutation as C,useQueryClient as v}from"@tanstack/react-query";import{useParams as E}from"react-router
|
|
1
|
+
import*as e from"react";import{useMutation as C,useQueryClient as v}from"@tanstack/react-query";import{useParams as E}from"react-router";import{Button as m}from"@redocly/theme/components/Button/Button";import{H3 as h}from"@redocly/theme/components/Typography/H3";import{Admonition as A}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{useTranslate as P}from"../../../../../client/app/hooks";import{Dialog as S}from"./Dialog";import D from"./ApisList";import{ButtonWithLoading as O}from"./ButtonWithLoading";import{ButtonsContainer as b}from"./RollAPIKey";import{DialogRow as w,DialogRowTitle as B,DialogRowContent as I,DialogBodyWrapper as R}from"./DialogStyledComponents";function T({initialEnabledApis:r}){const p=v(),[u,o]=e.useState(!1),{translate:t}=P(),{id:i}=E(),{isPending:l,error:s,mutateAsync:y}=C({mutationFn:()=>fetch(`/api/api-keys/apps/${i}/credentials`,{method:"POST",body:JSON.stringify({apiProductIds:d})}).then(n=>n.json()),onSuccess:()=>{p.invalidateQueries({queryKey:["APP:"+i]})}}),c=()=>o(!0),a=()=>o(!1),g=async()=>{await y(),a()},[d,f]=e.useState(r),k=n=>{f(n||[])};return e.createElement(e.Fragment,null,e.createElement(m,{size:"large",variant:"primary",onClick:c},t("dev.app.key.create","Create key")),e.createElement(S,{open:u,onOpen:c,onClose:a},e.createElement(R,null,e.createElement(h,{"data-translation-key":"dev.create.key.dialog.title"},t("dev.create.key.dialog.title","Create key")),e.createElement(w,null,e.createElement(B,{"data-translation-key":"dev.edit.apis.dialog.selectedAPIs"},t("dev.edit.apis.dialog.selectedAPIs","Selected APIs")),e.createElement(I,null,e.createElement(D,{initialEnabledApis:r,onChange:k}))),s?e.createElement(A,{type:"danger"}," ",s.message," "):null,e.createElement(b,null,e.createElement(m,{onClick:a,"data-translation-key":"dev.create.key.dialog.cancel",variant:"text",size:"large"},t("dev.create.key.dialog.cancel","Cancel")),e.createElement(O,{variant:"primary",onClick:g,disabled:l||d.length<1,loading:l,"data-translation-key":"dev.create.key.dialog.create"},t("dev.create.key.dialog.create","Create key"))))))}export{T as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"react";import{useMutation as f,useQueryClient as y}from"@tanstack/react-query";import{useParams as g}from"react-router
|
|
1
|
+
import*as e from"react";import{useMutation as f,useQueryClient as y}from"@tanstack/react-query";import{useParams as g}from"react-router";import{Button as E}from"@redocly/theme/components/Button/Button";import{H2 as v}from"@redocly/theme/components/Typography/H2";import{Admonition as h}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{usePreloadHistory as D}from"../../../../../client/app/usePreloadHistory";import{useTranslate as C}from"../../../../../client/app/hooks";import{Dialog as k}from"./Dialog";import{ButtonWithLoading as P}from"./ButtonWithLoading";import{ButtonsContainer as A}from"./RollAPIKey";const Q=e.forwardRef((w,p)=>{const d=D(),{id:a}=g(),{translate:t}=C(),s=y(),[m,o]=e.useState(!1),n=()=>o(!0),l=()=>o(!1);e.useImperativeHandle(p,()=>({open:n}));const c=async()=>{await u(),d.push("/apps/")},{isPending:r,error:i,mutateAsync:u}=f({mutationKey:["DELETE_APP"+a],mutationFn:()=>fetch(`/api/api-keys/apps/${a}`,{method:"DELETE"}),onSuccess:()=>{s.invalidateQueries({queryKey:["APPS"]})}});return e.createElement(k,{open:m,onOpen:n,onClose:l},e.createElement(e.Fragment,null,e.createElement(v,{"data-translation-key":"dev.delete.app.dialog.title"},t("dev.delete.app.dialog.title","Delete app")),e.createElement("div",{"data-translation-key":"dev.delete.app.dialog.confirmation"},t("dev.delete.app.dialog.confirmation","Do you really want to delete this app?")),i&&e.createElement(h,{type:"danger"},i.message),e.createElement(A,null,e.createElement(E,{onClick:l,"data-translation-key":"dev.delete.app.dialog.cancel",variant:"text",size:"large"},t("dev.delete.app.dialog.cancel","Cancel")),e.createElement(P,{variant:"primary",onClick:c,disabled:r,loading:r,"data-translation-key":"dev.delete.app.dialog.delete"},t("dev.delete.app.dialog.delete","Delete app")))))});export{Q as DeleteAppDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"react";import{useMutation as h,useQueryClient as k}from"@tanstack/react-query";import{useParams as I}from"react-router
|
|
1
|
+
import*as e from"react";import{useMutation as h,useQueryClient as k}from"@tanstack/react-query";import{useParams as I}from"react-router";import{Button as S}from"@redocly/theme/components/Button/Button";import{H2 as b}from"@redocly/theme/components/Typography/H2";import{Admonition as D}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{useTranslate as w}from"../../../../../client/app/hooks";import{Dialog as B}from"./Dialog";import K from"./ApisList";import{ButtonWithLoading as R}from"./ButtonWithLoading";import{ApiKeySecret as T}from"./ApiKeySecret";import{DialogRow as p,DialogRowContent as c,DialogRowTitle as u,DialogBodyWrapper as q}from"./DialogStyledComponents";import{ButtonsContainer as x}from"./RollAPIKey";function L(g){const{initialEnabledApis:n,secret:y,open:E,onClose:a,id:o}=g,{translate:t}=w(),f=k(),{id:l}=I(),{isPending:r,error:s,mutateAsync:v}=h({mutationFn:()=>fetch(`/api/api-keys/apps/${l}/credentials/${o}`,{method:"PUT",body:JSON.stringify({apiProductIds:[...d]})}).then(i=>i.json()),onSuccess:()=>{f.invalidateQueries({queryKey:["APP:"+l]})}}),A=async()=>{await v(),a()},[d,C]=e.useState(n),P=i=>{C(i||[])},m=o||y;return e.createElement(B,{open:E,onClose:a},e.createElement(q,null,e.createElement(b,{"data-translation-key":"dev.edit.apis.dialog.title"},t("dev.edit.apis.dialog.title","Edit APIs")),e.createElement(p,null,e.createElement(u,{"data-translation-key":"dev.edit.apis.dialog.apiKey"},t("dev.edit.apis.dialog.apiKey","API key")),e.createElement(c,null,m?e.createElement(T,{secret:m}):null)),e.createElement(p,null,e.createElement(u,{"data-translation-key":"dev.edit.apis.dialog.selectedAPIs"},t("dev.edit.apis.dialog.selectedAPIs","Selected APIs")),e.createElement(c,null,e.createElement(K,{initialEnabledApis:n,onChange:P}))),s?e.createElement(D,{type:"danger"}," ",s.message," "):null,e.createElement(x,null,e.createElement(S,{onClick:a,"data-translation-key":"dev.edit.apis.dialog.cancel",variant:"text",size:"large"},t("dev.edit.apis.dialog.cancel","Cancel")),e.createElement(R,{variant:"primary",onClick:A,disabled:r||d.length<1,loading:r,"data-translation-key":"dev.edit.apis.dialog.save"},t("dev.edit.apis.dialog.save","Save")))))}export{L as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"react";import{useMutation as h,useQueryClient as P}from"@tanstack/react-query";import{useParams as D}from"react-router
|
|
1
|
+
import*as e from"react";import{useMutation as h,useQueryClient as P}from"@tanstack/react-query";import{useParams as D}from"react-router";import{Button as k}from"@redocly/theme/components/Button/Button";import{H2 as A}from"@redocly/theme/components/Typography/H2";import{Admonition as S}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{useTranslate as T}from"../../../../../client/app/hooks";import{Dialog as w}from"./Dialog";import{ButtonWithLoading as I}from"./ButtonWithLoading";import{ButtonsContainer as K}from"./RollAPIKey";import{DialogInputMultiline as O,DialogRow as R,DialogRowContent as x}from"./DialogStyledComponents";import{MAX_DESCRIPTION_LENGTH as p,CharacterCounter as B}from"./CharacterCounter";const G=u=>{const{id:o}=D(),{initialDescription:g,open:y,onOpen:f,onClose:s}=u,t=g||"",{translate:a}=T(),[n,i]=e.useState(t);e.useEffect(()=>{i(t)},[t]);const c=async()=>{await C(),s()},E=l=>{l.key==="Enter"&&!r&&c()},d=()=>{s(),i(t)},v=P(),{mutateAsync:C,isPending:r,error:m}=h({mutationKey:["UPDATE_APP"+o],mutationFn:()=>fetch(`/api/api-keys/apps/${o}`,{method:"PUT",body:JSON.stringify({description:n})}),onSettled:()=>{v.invalidateQueries({queryKey:["APP:"+o]}),i(n)}});return e.createElement(w,{open:y,onClose:d,onOpen:f},e.createElement(e.Fragment,null,e.createElement(A,{"data-translation-key":"dev.edit.description.dialog.title"},a("dev.edit.description.dialog.title","Change description")),e.createElement(R,null,e.createElement(x,null,e.createElement(O,{maxLength:p,value:n,onChange:l=>i(l.target.value),onKeyPress:E,rows:6,cols:60}))),e.createElement(B,null,n.length,"/",p),m&&e.createElement(S,{type:"danger"},m.message," "),e.createElement(K,null,e.createElement(k,{onClick:d,"data-translation-key":"dev.edit.description.dialog.cancel",variant:"text",size:"large"},a("dev.edit.description.dialog.cancel","Cancel")),e.createElement(I,{variant:"primary",loading:r,onClick:c,disabled:r,"data-translation-key":"dev.edit.description.dialog.save"},a("dev.edit.description.dialog.save","Save changes")))))};export{G as EditAppDescriptionDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"react";import{useMutation as A,useQueryClient as D}from"@tanstack/react-query";import{useParams as S}from"react-router
|
|
1
|
+
import*as e from"react";import{useMutation as A,useQueryClient as D}from"@tanstack/react-query";import{useParams as S}from"react-router";import{Button as N}from"@redocly/theme/components/Button/Button";import{H2 as w}from"@redocly/theme/components/Typography/H2";import{Admonition as I}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{useTranslate as K}from"../../../../../client/app/hooks";import{Dialog as O}from"./Dialog";import{ButtonWithLoading as R}from"./ButtonWithLoading";import{ButtonsContainer as B}from"./RollAPIKey";import{DialogInput as T,DialogRow as $,DialogRowContent as b}from"./DialogStyledComponents";const M=e.forwardRef((g,f)=>{const{id:o}=S(),{appName:y,appDisplayName:v}=g,t=v||y||"",[a,n]=e.useState(t),[E,m]=e.useState(!1),h=s=>n(s.target.value),{translate:i}=K(),p=async()=>{await k(),l()},C=s=>{s.key==="Enter"&&!r&&u&&p()},d=()=>{m(!0)};e.useImperativeHandle(f,()=>({open:d}));const l=()=>{m(!1),n(t)};e.useEffect(()=>{n(t)},[t]);const P=D(),{mutateAsync:k,isPending:r,error:c}=A({mutationKey:["UPDATE_APP"+o],mutationFn:()=>fetch(`/api/api-keys/apps/${o}`,{method:"PUT",body:JSON.stringify({name:a})}),onSettled:()=>{P.invalidateQueries({queryKey:["APPS","APP:"+o]}),n(a)}}),u=/^(?!\s*$).{1,100}$/gi.test(a);return e.createElement(O,{open:E,onClose:l,onOpen:d},e.createElement(e.Fragment,null,e.createElement(w,{"data-translation-key":"dev.edit.app.dialog.title"},i("dev.edit.app.dialog.title","Change display name")),e.createElement($,null,e.createElement(b,null,e.createElement(T,{value:a,onChange:h,onKeyPress:C}))),c&&e.createElement(I,{type:"danger"},c.message," "),e.createElement(B,null,e.createElement(N,{onClick:l,"data-translation-key":"dev.edit.app.dialog.cancel",variant:"text",size:"large"},i("dev.edit.app.dialog.cancel","Cancel")),e.createElement(R,{variant:"primary",loading:r,onClick:p,disabled:r||!u,"data-translation-key":"dev.edit.app.dialog.save"},i("dev.edit.app.dialog.save","Save changes")))))});export{M as EditAppDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"react";import{useMutation as b,useQueryClient as U}from"@tanstack/react-query";import{useParams as C}from"react-router
|
|
1
|
+
import*as e from"react";import{useMutation as b,useQueryClient as U}from"@tanstack/react-query";import{useParams as C}from"react-router";import{Button as E}from"@redocly/theme/components/Button/Button";import{H2 as w}from"@redocly/theme/components/Typography/H2";import{Admonition as P}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{useTranslate as D}from"../../../../../client/app/hooks";import{Dialog as R}from"./Dialog";import{ButtonWithLoading as S}from"./ButtonWithLoading";import{ButtonsContainer as A}from"./RollAPIKey";import{DialogHelperText as T,DialogInputMultiline as x,DialogRow as K,DialogRowContent as j}from"./DialogStyledComponents";const z=p=>{const{id:o}=C(),{initialCallbackUrl:u,open:g,onOpen:k,onClose:s}=p,l=u||"",{translate:a}=D(),[r,n]=e.useState(l);e.useEffect(()=>{n(l)},[l]);const c=async()=>{await f(),s()},y=t=>{t.key==="Enter"&&!i&&c()},d=()=>{s(),n(l)},h=U(),{mutateAsync:f,isPending:i,error:m}=b({mutationKey:["UPDATE_APP"+o],mutationFn:async()=>{const t=await fetch(`/api/api-keys/apps/${o}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({callbackUrl:r})});if(!t.ok){const v=await t.json().catch(()=>null);throw new Error(v?.error||`Request failed with status ${t.status}`)}return t.json()},onSettled:()=>{h.invalidateQueries({queryKey:["APP:"+o]}),n(r)}});return e.createElement(R,{open:g,onClose:d,onOpen:k},e.createElement(e.Fragment,null,e.createElement(w,{"data-translation-key":"dev.edit.callbackUrls.dialog.title"},a("dev.edit.callbackUrls.dialog.title","Change callback URLs")),e.createElement(K,null,e.createElement(j,null,e.createElement(x,{value:r,onChange:t=>n(t.target.value),onKeyPress:y,placeholder:a("dev.edit.callbackUrls.dialog.placeholder","https://example.com/callback"),rows:3}),e.createElement(T,{"data-translation-key":"dev.edit.callbackUrls.dialog.hint"},a("dev.edit.callbackUrls.dialog.hint","Separate multiple URLs with a comma")))),m&&e.createElement(P,{type:"danger"},m.message," "),e.createElement(A,null,e.createElement(E,{onClick:d,"data-translation-key":"dev.edit.callbackUrls.dialog.cancel",variant:"text",size:"large"},a("dev.edit.callbackUrls.dialog.cancel","Cancel")),e.createElement(S,{variant:"primary",loading:i,onClick:c,disabled:i,"data-translation-key":"dev.edit.callbackUrls.dialog.save"},a("dev.edit.callbackUrls.dialog.save","Save changes")))))};export{z as EditCallbackUrlDialog};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import*as e from"react";import r from"styled-components";import{useMutation as h,useQueryClient as x}from"@tanstack/react-query";import{useParams as A}from"react-router
|
|
1
|
+
import*as e from"react";import r from"styled-components";import{useMutation as h,useQueryClient as x}from"@tanstack/react-query";import{useParams as A}from"react-router";import{Button as b}from"@redocly/theme/components/Button/Button";import{H2 as I}from"@redocly/theme/components/Typography/H2";import{ErrorIcon as P}from"@redocly/theme/icons/ErrorIcon/ErrorIcon";import{Admonition as C}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{useTranslate as R}from"../../../../../client/app/hooks";import{Dialog as K}from"./Dialog";import{ButtonWithLoading as w}from"./ButtonWithLoading";import{Separator as z}from"./ApiKeys";import{getReadableDate as S}from"./AppOverview";const s=5;function _({apiKey:{expiresAt:t,clientId:n,clientSecret:o,id:v}}){const{id:i}=A(),k=x(),[y,d]=e.useState(!1),{translate:a}=R(),g=Number(t)>0?S(t):"Never",u=n||o,p=()=>d(!0),l=()=>d(!1),f=async()=>{await E()},{isPending:m,error:c,mutateAsync:E}=h({mutationKey:["REVOKE_API_KEY"+i],mutationFn:()=>fetch(`/api/api-keys/apps/${i}/credentials/${v}`,{method:"DELETE",body:JSON.stringify({clientId:n,clientSecret:o})}),onSuccess:()=>{k.invalidateQueries({queryKey:["APP:"+i]}),l()}});return e.createElement(e.Fragment,null,e.createElement(D,{onClick:p},e.createElement("span",{"data-translation-key":"dev.app.key.revoke"},a("dev.app.key.revoke","Revoke API key")),e.createElement(P,{size:"24px",color:"#161616"})),e.createElement(K,{open:y,onOpen:p,onClose:l},e.createElement(F,null,e.createElement(e.Fragment,null,e.createElement(I,{"data-translation-key":"dev.revoke.key.dialog.title"},a("dev.revoke.key.dialog.title","Revoke API key")),e.createElement(O,null,e.createElement("span",{"data-translation-key":"dev.revoke.key.dialog.apiKey"},a("dev.revoke.key.dialog.apiKey","API key")),e.createElement("span",null,B(u||"")),e.createElement("span",{"data-translation-key":"dev.revoke.key.dialog.expires"},a("dev.revoke.key.dialog.expires","Expires")),e.createElement("span",null,g)),e.createElement(z,null),e.createElement("div",{"data-translation-key":"dev.revoke.key.dialog.confirmation"},a("dev.revoke.key.dialog.confirmation","Are you sure you want to revoke this API key?")),c&&e.createElement(C,{type:"danger"},c.message),e.createElement($,null,e.createElement(b,{onClick:l,"data-translation-key":"dev.revoke.key.dialog.cancel",variant:"text",size:"large"},a("dev.revoke.key.dialog.cancel","Cancel")),e.createElement(w,{variant:"primary",onClick:f,disabled:m,loading:m,"data-translation-key":"dev.revoke.key.dialog.revoke"},a("dev.revoke.key.dialog.revoke","Revoke API key")))))))}function B(t){if(t.length>s*2){const n=t.slice(0,s),o=t.slice(-s);return`${n} . . . ${o}`}return t}const O=r.div`
|
|
2
2
|
display: grid;
|
|
3
3
|
grid-template-columns: 1fr 1fr;
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import*as e from"react";import o from"styled-components";import{useMutation as E,useQueryClient as x}from"@tanstack/react-query";import{useParams as A}from"react-router
|
|
1
|
+
import*as e from"react";import o from"styled-components";import{useMutation as E,useQueryClient as x}from"@tanstack/react-query";import{useParams as A}from"react-router";import{Button as b}from"@redocly/theme/components/Button/Button";import{H2 as P}from"@redocly/theme/components/Typography/H2";import{RenewIcon as I}from"@redocly/theme/icons/RenewIcon/RenewIcon";import{Admonition as R}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{useTranslate as C}from"../../../../../client/app/l10n/hooks";import{Dialog as w}from"./Dialog";import{ButtonWithLoading as K}from"./ButtonWithLoading";import{Separator as z}from"./ApiKeys";import{getReadableDate as S}from"./AppOverview";const s=5;function _({apiKey:{expiresAt:t,clientId:n,clientSecret:l,id:y}}){const{id:r}=A(),{translate:a}=C(),g=x(),[u,d]=e.useState(!1),f=Number(t)>0?S(t):"Never",v=n||l,p=()=>d(!0),i=()=>d(!1),k=async()=>{await h()},{isPending:m,error:c,mutateAsync:h}=E({mutationKey:["ROLL_API_KEY"+r],mutationFn:()=>fetch(`/api/api-keys/apps/${r}/credentials/${y}`,{method:"PUT",body:JSON.stringify({clientId:n,clientSecret:l})}),onSuccess:()=>{g.invalidateQueries({queryKey:["APP:"+r]}),i()}});return e.createElement(e.Fragment,null,e.createElement($,{onClick:p},e.createElement("span",{"data-translation-key":"dev.app.key.roll"},a("dev.app.key.roll","Roll API key")),e.createElement(I,{size:"20px",color:"#161616"})),e.createElement(w,{open:u,onOpen:p,onClose:i},e.createElement(F,null,e.createElement(e.Fragment,null,e.createElement(P,{"data-translation-key":"dev.roll.key.dialog.title"},a("dev.roll.key.dialog.title","Roll API key")),e.createElement(O,null,e.createElement("span",{"data-translation-key":"dev.roll.key.dialog.apiKey"},a("dev.roll.key.dialog.apiKey","API key")),e.createElement("span",null,B(v||"")),e.createElement("span",{"data-translation-key":"dev.roll.key.dialog.expires"},a("dev.roll.key.dialog.expires","Expires")),e.createElement("span",null,f)),e.createElement(z,null),e.createElement("div",{"data-translation-key":"dev.roll.key.dialog.confirmation"},a("dev.roll.key.dialog.confirmation","Are you sure you want to roll this API key?")),c&&e.createElement(R,{type:"danger"},c.message),e.createElement(L,null,e.createElement(b,{onClick:i,"data-translation-key":"dev.roll.key.dialog.cancel",variant:"text",size:"large"},a("dev.roll.key.dialog.cancel","Cancel")),e.createElement(K,{variant:"primary",onClick:k,disabled:m,loading:m,"data-translation-key":"dev.roll.key.dialog.roll"},a("dev.roll.key.dialog.roll","Roll API key")))))))}function B(t){if(t.length>s*2){const n=t.slice(0,s),l=t.slice(-s);return`${n} . . . ${l}`}return t}const O=o.div`
|
|
2
2
|
display: grid;
|
|
3
3
|
grid-template-columns: 1fr 1fr;
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"react";import{useMutation as E,useQueryClient as A}from"@tanstack/react-query";import{useParams as C}from"react-router
|
|
1
|
+
import*as e from"react";import{useMutation as E,useQueryClient as A}from"@tanstack/react-query";import{useParams as C}from"react-router";import{Button as h}from"@redocly/theme/components/Button/Button";import{H3 as v}from"@redocly/theme/components/Typography/H3";import{Admonition as P}from"@redocly/theme/markdoc/components/Admonition/Admonition";import{useTranslate as S}from"../../../../../client/app/l10n/hooks";import{ButtonWithLoading as b}from"./ButtonWithLoading";import{Dialog as U}from"./Dialog";import I from"./ApisList";import{ButtonsWrapper as T}from"./ApiKeyItem";function W(p){const m=A(),{credential:a,open:c,onClose:n,onOpen:u}=p,{translate:i}=S(),{id:o}=C(),r=e.useMemo(()=>a.apiProductsStatus?.map(t=>t.apiId||t.id),[a]),[l,y]=e.useState(r),{isPending:d,error:s,mutateAsync:g}=E({mutationKey:["MUTATE_CRED"+o],mutationFn:()=>fetch(`/api/api-keys/apps/${o}/credentials/${a.id}`,{method:"PUT",body:JSON.stringify({apiProductIds:l,clientId:a.clientId,clientSecret:a.clientSecret})}).then(t=>t.json()),onSuccess:()=>{m.invalidateQueries({queryKey:["APP:"+o]})}}),f=async()=>{await g(),n()},k=t=>{y(t||[])};return e.createElement(e.Fragment,null,e.createElement(U,{open:c,onClose:n,onOpen:u},e.createElement(e.Fragment,null,e.createElement(v,{"data-translation-key":"dev.update.key.dialog.title"},i("dev.update.key.dialog.title","Update key")),e.createElement(I,{initialEnabledApis:r,onChange:k}),s?e.createElement(P,{type:"danger"}," ",s.message," "):null,e.createElement(T,null,e.createElement(h,{onClick:n,"data-translation-key":"dev.update.key.dialog.cancel"},i("dev.update.key.dialog.cancel","Cancel")),e.createElement(b,{variant:"primary",onClick:f,disabled:d||l.length<1,loading:d,"data-translation-key":"dev.update.key.dialog.update"},i("dev.update.key.dialog.update","Update key"))))))}export{W as UpdateKey};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"react";import{Navigate as r,Route as t,Routes as n}from"react-router
|
|
1
|
+
import*as e from"react";import{Navigate as r,Route as t,Routes as n}from"react-router";import{QueryClientProvider as l,QueryClient as o}from"@tanstack/react-query";import m from"./AppsList";import a from"./App";const i=new o({defaultOptions:{queries:{refetchOnWindowFocus:!1}}});function p(u){return e.createElement(l,{client:i},e.createElement(n,null,e.createElement(t,{path:"/",element:e.createElement(m,null)},e.createElement(t,{path:"/:id",element:e.createElement(a,null)})),e.createElement(t,{path:"*",element:e.createElement(r,{to:"..",replace:!0})})))}export{p as default};
|