@redocly/realm 0.138.0-next.1 → 0.138.0-next.3

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 (147) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/dist/client/App.js +1 -1
  3. package/dist/client/TestProvider.d.ts +3 -1
  4. package/dist/client/TestProvider.js +1 -1
  5. package/dist/client/app/Sidebar/Sidebar.js +1 -1
  6. package/dist/client/app/hooks/codeHighlight/useCodeHighlight.js +1 -1
  7. package/dist/client/app/hooks/index.d.ts +1 -0
  8. package/dist/client/app/hooks/index.js +1 -1
  9. package/dist/client/app/hooks/useConsent.d.ts +11 -0
  10. package/dist/client/app/hooks/useConsent.js +1 -0
  11. package/dist/client/app/l10n/L10nContext.d.ts +10 -0
  12. package/dist/client/app/l10n/L10nContext.js +1 -0
  13. package/dist/client/app/l10n/hooks/useL10n.js +1 -1
  14. package/dist/client/app/l10n/hooks/useTranslate.js +1 -1
  15. package/dist/client/app/l10n/hooks/useTranslationKeys.d.ts +2 -0
  16. package/dist/client/app/l10n/hooks/useTranslationKeys.js +1 -1
  17. package/dist/client/app/l10n/ssrL10n.d.ts +4 -0
  18. package/dist/client/app/l10n/ssrL10n.js +1 -0
  19. package/dist/client/app/webmcp/index.d.ts +2 -0
  20. package/dist/client/app/webmcp/index.js +1 -0
  21. package/dist/client/app/webmcp/tools/api-tools.d.ts +8 -0
  22. package/dist/client/app/webmcp/tools/api-tools.js +1 -0
  23. package/dist/client/app/webmcp/tools/shared.d.ts +13 -0
  24. package/dist/client/app/webmcp/tools/shared.js +1 -0
  25. package/dist/client/app/webmcp/tools/site-tools.d.ts +5 -0
  26. package/dist/client/app/webmcp/tools/site-tools.js +3 -0
  27. package/dist/client/app/webmcp/types.d.ts +36 -0
  28. package/dist/client/app/webmcp/types.js +0 -0
  29. package/dist/client/app/webmcp/useWebMcpTools.d.ts +9 -0
  30. package/dist/client/app/webmcp/useWebMcpTools.js +1 -0
  31. package/dist/client/providers/theme/ThemeDataProvider.js +1 -1
  32. package/dist/client/server-entry.d.ts +2 -1
  33. package/dist/client/server-entry.js +1 -1
  34. package/dist/constants/common.d.ts +1 -0
  35. package/dist/constants/common.js +1 -1
  36. package/dist/constants/l10n/langs/ar.js +1 -1
  37. package/dist/constants/l10n/langs/de.js +1 -1
  38. package/dist/constants/l10n/langs/en.js +1 -1
  39. package/dist/constants/l10n/langs/es.js +1 -1
  40. package/dist/constants/l10n/langs/fr.js +1 -1
  41. package/dist/constants/l10n/langs/hi.js +1 -1
  42. package/dist/constants/l10n/langs/it.js +1 -1
  43. package/dist/constants/l10n/langs/ja.js +1 -1
  44. package/dist/constants/l10n/langs/ko.js +1 -1
  45. package/dist/constants/l10n/langs/pl.js +1 -1
  46. package/dist/constants/l10n/langs/pt-BR.js +1 -1
  47. package/dist/constants/l10n/langs/pt.js +1 -1
  48. package/dist/constants/l10n/langs/ru.js +1 -1
  49. package/dist/constants/l10n/langs/uk.js +1 -1
  50. package/dist/constants/l10n/langs/zh.js +1 -1
  51. package/dist/markdoc/nodes/table.d.ts +2 -0
  52. package/dist/markdoc/nodes/table.js +1 -1
  53. package/dist/server/constants/common.d.ts +2 -0
  54. package/dist/server/constants/common.js +1 -1
  55. package/dist/server/constants/entitlements.js +1 -1
  56. package/dist/server/constants/plugins/consent.d.ts +3 -0
  57. package/dist/server/constants/plugins/consent.js +1 -0
  58. package/dist/server/constants/plugins/search.js +1 -1
  59. package/dist/server/plugins/analytics/adobe/index.js +1 -1
  60. package/dist/server/plugins/analytics/amplitude/browser-hooks.js +1 -1
  61. package/dist/server/plugins/analytics/amplitude/index.js +1 -1
  62. package/dist/server/plugins/analytics/fullstory/index.js +1 -1
  63. package/dist/server/plugins/analytics/ga/index.js +1 -1
  64. package/dist/server/plugins/analytics/gtm/browser-hooks.js +1 -1
  65. package/dist/server/plugins/analytics/gtm/index.js +1 -1
  66. package/dist/server/plugins/analytics/heap/browser-hooks.js +1 -1
  67. package/dist/server/plugins/analytics/rudderstack/index.js +1 -1
  68. package/dist/server/plugins/analytics/segment/index.js +1 -1
  69. package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.d.ts +1 -1
  70. package/dist/server/plugins/catalog-entities/database/repositories/common/revision-repository.js +1 -1
  71. package/dist/server/plugins/catalog-entities/database/repositories/common/version-repository.d.ts +5 -1
  72. package/dist/server/plugins/catalog-entities/database/repositories/common/version-repository.js +7 -1
  73. package/dist/server/plugins/catalog-entities/database/repositories/entities/entities-write-repository.js +1 -1
  74. package/dist/server/plugins/config-parser/format-custom-tags.d.ts +1 -0
  75. package/dist/server/plugins/config-parser/format-custom-tags.js +1 -1
  76. package/dist/server/plugins/config-parser/index.js +1 -1
  77. package/dist/server/plugins/config-parser/loaders/redocly-config-loader.js +1 -1
  78. package/dist/server/plugins/config-parser/loaders/versions-config-loader.js +1 -1
  79. package/dist/server/plugins/consent/build-consent-script.d.ts +6 -0
  80. package/dist/server/plugins/consent/build-consent-script.js +230 -0
  81. package/dist/server/plugins/consent/gate-ssr-components.d.ts +5 -0
  82. package/dist/server/plugins/consent/gate-ssr-components.js +1 -0
  83. package/dist/server/plugins/consent/index.d.ts +3 -0
  84. package/dist/server/plugins/consent/index.js +1 -0
  85. package/dist/server/plugins/consent/is-consent-enabled.d.ts +8 -0
  86. package/dist/server/plugins/consent/is-consent-enabled.js +1 -0
  87. package/dist/server/plugins/consent/zone-modes.d.ts +8 -0
  88. package/dist/server/plugins/consent/zone-modes.js +1 -0
  89. package/dist/server/plugins/lifecycle.js +2 -2
  90. package/dist/server/plugins/markdown/markdoc/markdoc-options.d.ts +2 -0
  91. package/dist/server/plugins/markdown/search/get-ai-search-documents.js +9 -9
  92. package/dist/server/plugins/markdown/search/nodes/tag-node.d.ts +1 -1
  93. package/dist/server/plugins/markdown/search/nodes/tag-node.js +1 -1
  94. package/dist/server/plugins/mcp/audit/audit-log.js +1 -1
  95. package/dist/server/plugins/mcp/auth/assistant-anonymous-token.d.ts +10 -0
  96. package/dist/server/plugins/mcp/auth/assistant-anonymous-token.js +1 -0
  97. package/dist/server/plugins/mcp/auth/auth-handlers.d.ts +5 -3
  98. package/dist/server/plugins/mcp/auth/auth-handlers.js +1 -1
  99. package/dist/server/plugins/mcp/codemode/build-tool-type-declarations.js +4 -4
  100. package/dist/server/plugins/mcp/codemode/capabilities/types.d.ts +0 -1
  101. package/dist/server/plugins/mcp/codemode/capabilities/utils.d.ts +1 -2
  102. package/dist/server/plugins/mcp/codemode/capabilities/utils.js +4 -4
  103. package/dist/server/plugins/mcp/codemode/tools/describe-tools.js +2 -2
  104. package/dist/server/plugins/mcp/codemode/tools/execute-schema.d.ts +0 -2
  105. package/dist/server/plugins/mcp/codemode/tools/execute-schema.js +1 -1
  106. package/dist/server/plugins/mcp/codemode/tools/execute.js +1 -1
  107. package/dist/server/plugins/mcp/codemode/tools/manage-credentials.js +2 -2
  108. package/dist/server/plugins/mcp/docs-mcp/tool-schemas.js +1 -1
  109. package/dist/server/plugins/mcp/docs-mcp/tools/core/create-anonymous-session.js +1 -1
  110. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/constants.d.ts +2 -0
  111. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/constants.js +1 -1
  112. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/endpoint-suggestions.d.ts +6 -0
  113. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/endpoint-suggestions.js +1 -1
  114. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/get-endpoint-info.js +1 -1
  115. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/load-api-description.d.ts +2 -0
  116. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/load-api-description.js +1 -1
  117. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/utils.d.ts +5 -0
  118. package/dist/server/plugins/mcp/docs-mcp/tools/openapi/utils.js +1 -1
  119. package/dist/server/plugins/mcp/docs-mcp/utils/resolve-refs.d.ts +20 -14
  120. package/dist/server/plugins/mcp/docs-mcp/utils/resolve-refs.js +1 -1
  121. package/dist/server/plugins/mcp/handlers/docs-mcp-handler.js +1 -1
  122. package/dist/server/plugins/mcp/servers/docs-server.js +1 -1
  123. package/dist/server/plugins/mcp/servers/mcp-server.js +3 -3
  124. package/dist/server/plugins/mcp/utils/disabled-tools.d.ts +3 -0
  125. package/dist/server/plugins/mcp/utils/disabled-tools.js +1 -0
  126. package/dist/server/plugins/mcp/utils/tool-registration.d.ts +2 -1
  127. package/dist/server/plugins/mcp/utils/tool-registration.js +1 -1
  128. package/dist/server/plugins/mcp/workers/execute-mcp-tool.js +1 -1
  129. package/dist/server/plugins/search/engines/flexsearch/search-index.js +1 -1
  130. package/dist/server/ssr/render.js +1 -1
  131. package/dist/server/types/plugins/search.d.ts +1 -1
  132. package/dist/server/utils/rbac-expand.js +1 -1
  133. package/dist/server/utils/rbac.js +1 -1
  134. package/dist/server/utils/redact-url.d.ts +6 -0
  135. package/dist/server/utils/redact-url.js +1 -0
  136. package/dist/server/utils/search/highlight-text-for-search.d.ts +1 -0
  137. package/dist/server/utils/search/highlight-text-for-search.js +1 -1
  138. package/dist/server/utils/search/text-match.d.ts +6 -0
  139. package/dist/server/utils/search/text-match.js +1 -0
  140. package/dist/server/web-server/jwt/jwt.js +1 -1
  141. package/dist/server/web-server/jwt/types.d.ts +4 -4
  142. package/dist/server/web-server/jwt/types.js +1 -1
  143. package/dist/server/web-server/middleware/telemetry-middleware.js +1 -1
  144. package/dist/server/web-server/routes/ask-ai.js +1 -1
  145. package/dist/server/web-server/routes/mcp-routes/mcp-server-card.js +1 -1
  146. package/dist/types/entitlements.d.ts +1 -0
  147. package/package.json +5 -5
@@ -1 +1 @@
1
- import{GATEWAY_FETCH_LIMIT_DEFAULTS as e}from"../../constants/common.js";const a={pro:{rbac:!1,sso:!1,analytics:!0,removeAttribution:!1,advancedSearch:!1,ssoDirect:!1,aiSearchLimit:0,kvStorageLimit:.5,mcp:!1,mcpGateway:!1,mcpMode:"tools",gatewayFetchRatePerMin:e.ratePerMin,gatewayFetchQuotaPerDay:e.quotaPerDay,gatewayFetchBudgetPerExec:e.budgetPerExec},enterprise:{rbac:!0,sso:!0,analytics:!0,removeAttribution:!0,advancedSearch:!0,ssoDirect:!1,aiSearchLimit:750,kvStorageLimit:5,mcp:!0,mcpGateway:!0,mcpMode:"code",gatewayFetchRatePerMin:e.ratePerMin,gatewayFetchQuotaPerDay:e.quotaPerDay,gatewayFetchBudgetPerExec:e.budgetPerExec}},r=["@redocly/portal-plugin-async-api/plugin.js","@redocly/portal-plugin-mock-server/plugin.js","@redocly/portal-plugin-soap-api/plugin.js"],o={"code-walkthrough":"codeWalkthrough",step:"codeWalkthrough",toggle:"codeWalkthrough",input:"codeWalkthrough"};export{o as GATED_MARKDOC_TAGS,r as GATED_PLUGINS,a as PLAN_GATES_DEFAULTS};
1
+ import{GATEWAY_FETCH_LIMIT_DEFAULTS as e}from"../../constants/common.js";const a={pro:{rbac:!1,sso:!1,cookieConsent:!1,analytics:!0,removeAttribution:!1,advancedSearch:!1,ssoDirect:!1,aiSearchLimit:0,kvStorageLimit:.5,mcp:!1,mcpGateway:!1,mcpMode:"tools",gatewayFetchRatePerMin:e.ratePerMin,gatewayFetchQuotaPerDay:e.quotaPerDay,gatewayFetchBudgetPerExec:e.budgetPerExec},enterprise:{rbac:!0,sso:!0,cookieConsent:!0,analytics:!0,removeAttribution:!0,advancedSearch:!0,ssoDirect:!1,aiSearchLimit:750,kvStorageLimit:5,mcp:!0,mcpGateway:!0,mcpMode:"code",gatewayFetchRatePerMin:e.ratePerMin,gatewayFetchQuotaPerDay:e.quotaPerDay,gatewayFetchBudgetPerExec:e.budgetPerExec}},r=["@redocly/portal-plugin-async-api/plugin.js","@redocly/portal-plugin-mock-server/plugin.js","@redocly/portal-plugin-soap-api/plugin.js"],o={"code-walkthrough":"codeWalkthrough",step:"codeWalkthrough",toggle:"codeWalkthrough",input:"codeWalkthrough"};export{o as GATED_MARKDOC_TAGS,r as GATED_PLUGINS,a as PLAN_GATES_DEFAULTS};
@@ -0,0 +1,3 @@
1
+ export declare const OPT_IN_COUNTRIES: ReadonlySet<string>;
2
+ export declare const TZ_COUNTRIES: Record<string, string[]>;
3
+ //# sourceMappingURL=consent.d.ts.map
@@ -0,0 +1 @@
1
+ const a=new Set(["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","IS","LI","NO","GB","CH","BR","JP","KR","CN","TR","ZA","TH","SA","IN","IL","AR","CA","AX","GP","MQ","GF","RE","YT","MF","GG","IM","JE","GI","SJ","FO","GL","MC","SM","VA","AD"]),i={"Africa/Abidjan":["CI"],"Africa/Accra":["GH"],"Africa/Addis_Ababa":["ET"],"Africa/Algiers":["DZ"],"Africa/Asmara":["ER"],"Africa/Asmera":["ER"],"Africa/Bamako":["ML"],"Africa/Bangui":["CF"],"Africa/Banjul":["GM"],"Africa/Bissau":["GW"],"Africa/Blantyre":["MW"],"Africa/Brazzaville":["CG"],"Africa/Bujumbura":["BI"],"Africa/Cairo":["EG"],"Africa/Casablanca":["MA"],"Africa/Ceuta":["ES"],"Africa/Conakry":["GN"],"Africa/Dakar":["SN"],"Africa/Dar_es_Salaam":["TZ"],"Africa/Djibouti":["DJ"],"Africa/Douala":["CM"],"Africa/El_Aaiun":["EH"],"Africa/Freetown":["SL"],"Africa/Gaborone":["BW"],"Africa/Harare":["ZW"],"Africa/Johannesburg":["ZA"],"Africa/Juba":["SS"],"Africa/Kampala":["UG"],"Africa/Khartoum":["SD"],"Africa/Kigali":["RW"],"Africa/Kinshasa":["CD"],"Africa/Lagos":["NG"],"Africa/Libreville":["GA"],"Africa/Lome":["TG"],"Africa/Luanda":["AO"],"Africa/Lubumbashi":["CD"],"Africa/Lusaka":["ZM"],"Africa/Malabo":["GQ"],"Africa/Maputo":["MZ"],"Africa/Maseru":["LS"],"Africa/Mbabane":["SZ"],"Africa/Mogadishu":["SO"],"Africa/Monrovia":["LR"],"Africa/Nairobi":["KE"],"Africa/Ndjamena":["TD"],"Africa/Niamey":["NE"],"Africa/Nouakchott":["MR"],"Africa/Ouagadougou":["BF"],"Africa/Porto-Novo":["BJ"],"Africa/Sao_Tome":["ST"],"Africa/Timbuktu":["ML"],"Africa/Tripoli":["LY"],"Africa/Tunis":["TN"],"Africa/Windhoek":["NA"],"America/Adak":["US"],"America/Anchorage":["US"],"America/Anguilla":["AI"],"America/Antigua":["AG"],"America/Araguaina":["BR"],"America/Argentina/Buenos_Aires":["AR"],"America/Argentina/Catamarca":["AR"],"America/Argentina/ComodRivadavia":["AR"],"America/Argentina/Cordoba":["AR"],"America/Argentina/Jujuy":["AR"],"America/Argentina/La_Rioja":["AR"],"America/Argentina/Mendoza":["AR"],"America/Argentina/Rio_Gallegos":["AR"],"America/Argentina/Salta":["AR"],"America/Argentina/San_Juan":["AR"],"America/Argentina/San_Luis":["AR"],"America/Argentina/Tucuman":["AR"],"America/Argentina/Ushuaia":["AR"],"America/Aruba":["AW"],"America/Asuncion":["PY"],"America/Atikokan":["CA"],"America/Atka":["US"],"America/Bahia":["BR"],"America/Bahia_Banderas":["MX"],"America/Barbados":["BB"],"America/Belem":["BR"],"America/Belize":["BZ"],"America/Blanc-Sablon":["CA"],"America/Boa_Vista":["BR"],"America/Bogota":["CO"],"America/Boise":["US"],"America/Buenos_Aires":["AR"],"America/Cambridge_Bay":["CA"],"America/Campo_Grande":["BR"],"America/Cancun":["MX"],"America/Caracas":["VE"],"America/Catamarca":["AR"],"America/Cayenne":["GF"],"America/Cayman":["KY"],"America/Chicago":["US"],"America/Chihuahua":["MX"],"America/Ciudad_Juarez":["MX"],"America/Coral_Harbour":["CA"],"America/Cordoba":["AR"],"America/Costa_Rica":["CR"],"America/Coyhaique":["CL"],"America/Creston":["CA"],"America/Cuiaba":["BR"],"America/Curacao":["CW"],"America/Danmarkshavn":["GL"],"America/Dawson":["CA"],"America/Dawson_Creek":["CA"],"America/Denver":["US"],"America/Detroit":["US"],"America/Dominica":["DM"],"America/Edmonton":["CA"],"America/Eirunepe":["BR"],"America/El_Salvador":["SV"],"America/Ensenada":["MX"],"America/Fort_Nelson":["CA"],"America/Fort_Wayne":["US"],"America/Fortaleza":["BR"],"America/Glace_Bay":["CA"],"America/Godthab":["GL"],"America/Goose_Bay":["CA"],"America/Grand_Turk":["TC"],"America/Grenada":["GD"],"America/Guadeloupe":["GP"],"America/Guatemala":["GT"],"America/Guayaquil":["EC"],"America/Guyana":["GY"],"America/Halifax":["CA"],"America/Havana":["CU"],"America/Hermosillo":["MX"],"America/Indiana/Indianapolis":["US"],"America/Indiana/Knox":["US"],"America/Indiana/Marengo":["US"],"America/Indiana/Petersburg":["US"],"America/Indiana/Tell_City":["US"],"America/Indiana/Vevay":["US"],"America/Indiana/Vincennes":["US"],"America/Indiana/Winamac":["US"],"America/Indianapolis":["US"],"America/Inuvik":["CA"],"America/Iqaluit":["CA"],"America/Jamaica":["JM"],"America/Jujuy":["AR"],"America/Juneau":["US"],"America/Kentucky/Louisville":["US"],"America/Kentucky/Monticello":["US"],"America/Knox_IN":["US"],"America/Kralendijk":["BQ"],"America/La_Paz":["BO"],"America/Lima":["PE"],"America/Los_Angeles":["US"],"America/Louisville":["US"],"America/Lower_Princes":["SX"],"America/Maceio":["BR"],"America/Managua":["NI"],"America/Manaus":["BR"],"America/Marigot":["MF"],"America/Martinique":["MQ"],"America/Matamoros":["MX"],"America/Mazatlan":["MX"],"America/Mendoza":["AR"],"America/Menominee":["US"],"America/Merida":["MX"],"America/Metlakatla":["US"],"America/Mexico_City":["MX"],"America/Miquelon":["PM"],"America/Moncton":["CA"],"America/Monterrey":["MX"],"America/Montevideo":["UY"],"America/Montreal":["CA"],"America/Montserrat":["MS"],"America/Nassau":["BS"],"America/New_York":["US"],"America/Nipigon":["CA"],"America/Nome":["US"],"America/Noronha":["BR"],"America/North_Dakota/Beulah":["US"],"America/North_Dakota/Center":["US"],"America/North_Dakota/New_Salem":["US"],"America/Nuuk":["GL"],"America/Ojinaga":["MX"],"America/Panama":["PA"],"America/Pangnirtung":["CA"],"America/Paramaribo":["SR"],"America/Phoenix":["US"],"America/Port-au-Prince":["HT"],"America/Port_of_Spain":["TT"],"America/Porto_Acre":["BR"],"America/Porto_Velho":["BR"],"America/Puerto_Rico":["PR"],"America/Punta_Arenas":["CL"],"America/Rainy_River":["CA"],"America/Rankin_Inlet":["CA"],"America/Recife":["BR"],"America/Regina":["CA"],"America/Resolute":["CA"],"America/Rio_Branco":["BR"],"America/Rosario":["AR"],"America/Santa_Isabel":["MX"],"America/Santarem":["BR"],"America/Santiago":["CL"],"America/Santo_Domingo":["DO"],"America/Sao_Paulo":["BR"],"America/Scoresbysund":["GL"],"America/Shiprock":["US"],"America/Sitka":["US"],"America/St_Barthelemy":["BL"],"America/St_Johns":["CA"],"America/St_Kitts":["KN"],"America/St_Lucia":["LC"],"America/St_Thomas":["VI"],"America/St_Vincent":["VC"],"America/Swift_Current":["CA"],"America/Tegucigalpa":["HN"],"America/Thule":["GL"],"America/Thunder_Bay":["CA"],"America/Tijuana":["MX"],"America/Toronto":["CA"],"America/Tortola":["VG"],"America/Vancouver":["CA"],"America/Virgin":["PR"],"America/Whitehorse":["CA"],"America/Winnipeg":["CA"],"America/Yakutat":["US"],"America/Yellowknife":["CA"],"Antarctica/Casey":["AQ"],"Antarctica/Davis":["AQ"],"Antarctica/DumontDUrville":["AQ"],"Antarctica/Macquarie":["AU"],"Antarctica/Mawson":["AQ"],"Antarctica/McMurdo":["AQ"],"Antarctica/Palmer":["AQ"],"Antarctica/Rothera":["AQ"],"Antarctica/South_Pole":["NZ"],"Antarctica/Syowa":["AQ"],"Antarctica/Troll":["AQ"],"Antarctica/Vostok":["AQ"],"Arctic/Longyearbyen":["SJ"],"Asia/Aden":["YE"],"Asia/Almaty":["KZ"],"Asia/Amman":["JO"],"Asia/Anadyr":["RU"],"Asia/Aqtau":["KZ"],"Asia/Aqtobe":["KZ"],"Asia/Ashgabat":["TM"],"Asia/Ashkhabad":["TM"],"Asia/Atyrau":["KZ"],"Asia/Baghdad":["IQ"],"Asia/Bahrain":["BH"],"Asia/Baku":["AZ"],"Asia/Bangkok":["TH"],"Asia/Barnaul":["RU"],"Asia/Beirut":["LB"],"Asia/Bishkek":["KG"],"Asia/Brunei":["BN"],"Asia/Calcutta":["IN"],"Asia/Chita":["RU"],"Asia/Choibalsan":["MN"],"Asia/Chongqing":["CN"],"Asia/Chungking":["CN"],"Asia/Colombo":["LK"],"Asia/Dacca":["BD"],"Asia/Damascus":["SY"],"Asia/Dhaka":["BD"],"Asia/Dili":["TL"],"Asia/Dubai":["AE"],"Asia/Dushanbe":["TJ"],"Asia/Famagusta":["CY"],"Asia/Gaza":["PS"],"Asia/Harbin":["CN"],"Asia/Hebron":["PS"],"Asia/Ho_Chi_Minh":["VN"],"Asia/Hong_Kong":["HK"],"Asia/Hovd":["MN"],"Asia/Irkutsk":["RU"],"Asia/Istanbul":["TR"],"Asia/Jakarta":["ID"],"Asia/Jayapura":["ID"],"Asia/Jerusalem":["IL"],"Asia/Kabul":["AF"],"Asia/Kamchatka":["RU"],"Asia/Karachi":["PK"],"Asia/Kashgar":["CN"],"Asia/Kathmandu":["NP"],"Asia/Katmandu":["NP"],"Asia/Khandyga":["RU"],"Asia/Kolkata":["IN"],"Asia/Krasnoyarsk":["RU"],"Asia/Kuala_Lumpur":["MY"],"Asia/Kuching":["MY"],"Asia/Kuwait":["KW"],"Asia/Macao":["MO"],"Asia/Macau":["MO"],"Asia/Magadan":["RU"],"Asia/Makassar":["ID"],"Asia/Manila":["PH"],"Asia/Muscat":["OM"],"Asia/Nicosia":["CY"],"Asia/Novokuznetsk":["RU"],"Asia/Novosibirsk":["RU"],"Asia/Omsk":["RU"],"Asia/Oral":["KZ"],"Asia/Phnom_Penh":["KH"],"Asia/Pontianak":["ID"],"Asia/Pyongyang":["KP"],"Asia/Qatar":["QA"],"Asia/Qostanay":["KZ"],"Asia/Qyzylorda":["KZ"],"Asia/Rangoon":["MM"],"Asia/Riyadh":["SA"],"Asia/Saigon":["VN"],"Asia/Sakhalin":["RU"],"Asia/Samarkand":["UZ"],"Asia/Seoul":["KR"],"Asia/Shanghai":["CN"],"Asia/Singapore":["SG"],"Asia/Srednekolymsk":["RU"],"Asia/Taipei":["TW"],"Asia/Tashkent":["UZ"],"Asia/Tbilisi":["GE"],"Asia/Tehran":["IR"],"Asia/Tel_Aviv":["IL"],"Asia/Thimbu":["BT"],"Asia/Thimphu":["BT"],"Asia/Tokyo":["JP"],"Asia/Tomsk":["RU"],"Asia/Ujung_Pandang":["ID"],"Asia/Ulaanbaatar":["MN"],"Asia/Ulan_Bator":["MN"],"Asia/Urumqi":["CN"],"Asia/Ust-Nera":["RU"],"Asia/Vientiane":["LA"],"Asia/Vladivostok":["RU"],"Asia/Yakutsk":["RU"],"Asia/Yangon":["MM"],"Asia/Yekaterinburg":["RU"],"Asia/Yerevan":["AM"],"Atlantic/Azores":["PT"],"Atlantic/Bermuda":["BM"],"Atlantic/Canary":["ES"],"Atlantic/Cape_Verde":["CV"],"Atlantic/Faeroe":["FO"],"Atlantic/Faroe":["FO"],"Atlantic/Jan_Mayen":["DE"],"Atlantic/Madeira":["PT"],"Atlantic/Reykjavik":["IS"],"Atlantic/South_Georgia":["GS"],"Atlantic/St_Helena":["SH"],"Atlantic/Stanley":["FK"],"Australia/ACT":["AU"],"Australia/Adelaide":["AU"],"Australia/Brisbane":["AU"],"Australia/Broken_Hill":["AU"],"Australia/Canberra":["AU"],"Australia/Currie":["AU"],"Australia/Darwin":["AU"],"Australia/Eucla":["AU"],"Australia/Hobart":["AU"],"Australia/LHI":["AU"],"Australia/Lindeman":["AU"],"Australia/Lord_Howe":["AU"],"Australia/Melbourne":["AU"],"Australia/NSW":["AU"],"Australia/North":["AU"],"Australia/Perth":["AU"],"Australia/Queensland":["AU"],"Australia/South":["AU"],"Australia/Sydney":["AU"],"Australia/Tasmania":["AU"],"Australia/Victoria":["AU"],"Australia/West":["AU"],"Australia/Yancowinna":["AU"],"Brazil/Acre":["BR"],"Brazil/DeNoronha":["BR"],"Brazil/East":["BR"],"Brazil/West":["BR"],CET:["BE"],"Canada/Atlantic":["CA"],"Canada/Central":["CA"],"Canada/Eastern":["CA"],"Canada/Mountain":["CA"],"Canada/Newfoundland":["CA"],"Canada/Pacific":["CA"],"Canada/Saskatchewan":["CA"],"Canada/Yukon":["CA"],"Chile/Continental":["CL"],"Chile/EasterIsland":["CL"],Cuba:["CU"],EET:["GR"],EST:["US"],Egypt:["EG"],Eire:["IE"],"Europe/Amsterdam":["NL"],"Europe/Andorra":["AD"],"Europe/Astrakhan":["RU"],"Europe/Athens":["GR"],"Europe/Belfast":["GB"],"Europe/Belgrade":["RS"],"Europe/Berlin":["DE"],"Europe/Bratislava":["SK"],"Europe/Brussels":["BE"],"Europe/Bucharest":["RO"],"Europe/Budapest":["HU"],"Europe/Busingen":["DE"],"Europe/Chisinau":["MD"],"Europe/Copenhagen":["DK"],"Europe/Dublin":["IE"],"Europe/Gibraltar":["GI"],"Europe/Guernsey":["GG"],"Europe/Helsinki":["FI"],"Europe/Isle_of_Man":["IM"],"Europe/Istanbul":["TR"],"Europe/Jersey":["JE"],"Europe/Kaliningrad":["RU"],"Europe/Kiev":["UA"],"Europe/Kirov":["RU"],"Europe/Kyiv":["UA"],"Europe/Lisbon":["PT"],"Europe/Ljubljana":["SI"],"Europe/London":["GB"],"Europe/Luxembourg":["LU"],"Europe/Madrid":["ES"],"Europe/Malta":["MT"],"Europe/Mariehamn":["AX"],"Europe/Minsk":["BY"],"Europe/Monaco":["MC"],"Europe/Moscow":["RU"],"Europe/Nicosia":["CY"],"Europe/Oslo":["NO"],"Europe/Paris":["FR"],"Europe/Podgorica":["ME"],"Europe/Prague":["CZ"],"Europe/Riga":["LV"],"Europe/Rome":["IT"],"Europe/Samara":["RU"],"Europe/San_Marino":["SM"],"Europe/Sarajevo":["BA"],"Europe/Saratov":["RU"],"Europe/Simferopol":["UA"],"Europe/Skopje":["MK"],"Europe/Sofia":["BG"],"Europe/Stockholm":["SE"],"Europe/Tallinn":["EE"],"Europe/Tirane":["AL"],"Europe/Tiraspol":["MD"],"Europe/Ulyanovsk":["RU"],"Europe/Uzhgorod":["UA"],"Europe/Vaduz":["LI"],"Europe/Vatican":["VA"],"Europe/Vienna":["AT"],"Europe/Vilnius":["LT"],"Europe/Volgograd":["RU"],"Europe/Warsaw":["PL"],"Europe/Zagreb":["HR"],"Europe/Zaporozhye":["UA"],"Europe/Zurich":["CH"],GB:["GB"],"GB-Eire":["GB"],HST:["US"],Hongkong:["HK"],Iceland:["IS"],"Indian/Antananarivo":["MG"],"Indian/Chagos":["IO"],"Indian/Christmas":["CX"],"Indian/Cocos":["CC"],"Indian/Comoro":["KM"],"Indian/Kerguelen":["TF"],"Indian/Mahe":["SC"],"Indian/Maldives":["MV"],"Indian/Mauritius":["MU"],"Indian/Mayotte":["YT"],"Indian/Reunion":["RE"],Iran:["IR"],Israel:["IL"],Jamaica:["JM"],Japan:["JP"],Kwajalein:["MH"],Libya:["LY"],MET:["BE"],MST:["US"],"Mexico/BajaNorte":["MX"],"Mexico/BajaSur":["MX"],"Mexico/General":["MX"],NZ:["NZ"],"NZ-CHAT":["NZ"],Navajo:["US"],PRC:["CN"],"Pacific/Apia":["WS"],"Pacific/Auckland":["NZ"],"Pacific/Bougainville":["PG"],"Pacific/Chatham":["NZ"],"Pacific/Chuuk":["FM"],"Pacific/Easter":["CL"],"Pacific/Efate":["VU"],"Pacific/Enderbury":["KI"],"Pacific/Fakaofo":["TK"],"Pacific/Fiji":["FJ"],"Pacific/Funafuti":["TV"],"Pacific/Galapagos":["EC"],"Pacific/Gambier":["PF"],"Pacific/Guadalcanal":["SB"],"Pacific/Guam":["GU"],"Pacific/Honolulu":["US"],"Pacific/Johnston":["US"],"Pacific/Kanton":["KI"],"Pacific/Kiritimati":["KI"],"Pacific/Kosrae":["FM"],"Pacific/Kwajalein":["MH"],"Pacific/Majuro":["MH"],"Pacific/Marquesas":["PF"],"Pacific/Midway":["UM"],"Pacific/Nauru":["NR"],"Pacific/Niue":["NU"],"Pacific/Norfolk":["NF"],"Pacific/Noumea":["NC"],"Pacific/Pago_Pago":["AS"],"Pacific/Palau":["PW"],"Pacific/Pitcairn":["PN"],"Pacific/Pohnpei":["FM"],"Pacific/Ponape":["SB"],"Pacific/Port_Moresby":["PG"],"Pacific/Rarotonga":["CK"],"Pacific/Saipan":["MP"],"Pacific/Samoa":["AS"],"Pacific/Tahiti":["PF"],"Pacific/Tarawa":["KI"],"Pacific/Tongatapu":["TO"],"Pacific/Truk":["PG"],"Pacific/Wake":["UM"],"Pacific/Wallis":["WF"],"Pacific/Yap":["PG"],Poland:["PL"],Portugal:["PT"],ROC:["TW"],ROK:["KR"],Singapore:["SG"],Turkey:["TR"],"US/Alaska":["US"],"US/Aleutian":["US"],"US/Arizona":["US"],"US/Central":["US"],"US/East-Indiana":["US"],"US/Eastern":["US"],"US/Hawaii":["US"],"US/Indiana-Starke":["US"],"US/Michigan":["US"],"US/Mountain":["US"],"US/Pacific":["US"],"US/Samoa":["AS"],"W-SU":["RU"],WET:["PT"]};export{a as OPT_IN_COUNTRIES,i as TZ_COUNTRIES};
@@ -1 +1 @@
1
- const t=["title","text","path","httpPath","parameters[]:name","parameters[]:description","parameters[]:path"],_="Documentation",E="API Reference",e="search",o=100,A=10,r=25,I=100,p=150,s="ai-search",R=50,S=250,c=Symbol("metadata"),n=!0,C=["title"];export{s as AI_INDEX_EXPORT_FOLDER,R as AI_SEARCH_CHUNK_SIZE,S as AI_SEARCH_DOCUMENT_CHUNK_SIZE,n as DEFAULT_AI_SEARCH_ENABLED,C as DISABLE_DEEP_LINK_IF_FIELDS_EXIST,p as HIGHLIGHTED_TEXT_MAX_LENGTH,e as SEARCH_DATA_EXPORT_FOLDER,c as SEARCH_DOCUMENT_METADATA_KEY,A as SEARCH_GROUP_LIMIT,E as SEARCH_GROUP_NAME_API,_ as SEARCH_GROUP_NAME_DOCUMENTATION,t as SEARCH_INDEX_FIELDS,o as SEARCH_LIMIT,r as SEARCH_MAX_FACET_VALUES,I as SEARCH_MAX_INMEMORY_DOCUMENTS_COUNT};
1
+ const t=["title","text","path","httpMethod","httpPath","parameters[]:name","parameters[]:description","parameters[]:path","parameters[]:example","parameters[]:enum"],_="Documentation",e="API Reference",E="search",o=100,A=10,r=25,p=100,I=150,s="ai-search",a=50,n=250,R=Symbol("metadata"),S=!0,c=["title"];export{s as AI_INDEX_EXPORT_FOLDER,a as AI_SEARCH_CHUNK_SIZE,n as AI_SEARCH_DOCUMENT_CHUNK_SIZE,S as DEFAULT_AI_SEARCH_ENABLED,c as DISABLE_DEEP_LINK_IF_FIELDS_EXIST,I as HIGHLIGHTED_TEXT_MAX_LENGTH,E as SEARCH_DATA_EXPORT_FOLDER,R as SEARCH_DOCUMENT_METADATA_KEY,A as SEARCH_GROUP_LIMIT,e as SEARCH_GROUP_NAME_API,_ as SEARCH_GROUP_NAME_DOCUMENTATION,t as SEARCH_INDEX_FIELDS,o as SEARCH_LIMIT,r as SEARCH_MAX_FACET_VALUES,p as SEARCH_MAX_INMEMORY_DOCUMENTS_COUNT};
@@ -1 +1 @@
1
- import{envConfig as r}from"../../../config/env-config.js";import{buildScript as t}from"./build-script.js";import{resolveBrowserHooksPath as e}from"./resolve-browser-hooks.js";async function d(){return{id:"Adobe Analytics",requiredEntitlements:["analytics"],async processContent(o,{getConfig:i}){const n=(await i())?.analytics?.adobe;!n?.scriptUrl||!r.isProductionEnv&&!n.includeInDevelopment||(o.addSsrComponents([t(n.scriptUrl)],"head"),o.addBrowserPlugin(e()))}}}export{d as adobeAnalyticsPlugin};
1
+ import{envConfig as i}from"../../../config/env-config.js";import{gateSsrComponents as e}from"../../consent/gate-ssr-components.js";import{buildScript as s}from"./build-script.js";import{resolveBrowserHooksPath as a}from"./resolve-browser-hooks.js";async function m(){return{id:"Adobe Analytics",requiredEntitlements:["analytics"],async processContent(o,{getConfig:r}){const t=await r(),n=t?.analytics?.adobe;!n?.scriptUrl||!i.isProductionEnv&&!n.includeInDevelopment||(o.addSsrComponents(e([s(n.scriptUrl)],"analytics",t.consent),"head"),o.addBrowserPlugin(a()))}}}export{m as adobeAnalyticsPlugin};
@@ -1 +1 @@
1
- const o=(n,t)=>{if(!t?.analytics?.amplitude)return;const{location:e}=n;typeof window.amplitudeExcludePaths<"u"&&window.amplitudeExcludePaths.some(i=>i.test(e.pathname))||window.amplitude.getInstance().logEvent(window.amplitudeEventTypes.pageView,{location:e?e.pathname+e.search+e.hash:void 0})};export{o as onRouteChange};
1
+ const o=(n,t)=>{if(!t?.analytics?.amplitude)return;const{location:e}=n;typeof window.amplitudeExcludePaths<"u"&&window.amplitudeExcludePaths.some(i=>i.test(e.pathname))||window.amplitude?.getInstance&&window.amplitude.getInstance().logEvent(window.amplitudeEventTypes.pageView,{location:e?e.pathname+e.search+e.hash:void 0})};export{o as onRouteChange};
@@ -1 +1 @@
1
- import{Minimatch as p}from"minimatch";import{envConfig as d}from"../../../config/env-config.js";import{buildScripts as a}from"./build-scripts.js";import{resolveBrowserHooksPath as c}from"./resolve-browser-hooks.js";async function C(){return{id:"Amplitude Analytics",requiredEntitlements:["analytics"],async processContent(n,{getConfig:i}){const e=(await i())?.analytics?.amplitude;if(!e?.apiKey||!d.isProductionEnv&&!e.includeInDevelopment)return;let o=[];typeof e.exclude<"u"&&e.exclude.map(m=>{const t=new p(m).makeRe();t&&o.push(t)});const{headComponents:s,postBodyComponents:r}=a(e,o);n.addSsrComponents(s,"head"),n.addSsrComponents(r,"postBody"),n.addBrowserPlugin(c())}}}export{C as amplitudeAnalyticsPlugin};
1
+ import{Minimatch as d}from"minimatch";import{envConfig as c}from"../../../config/env-config.js";import{gateSsrComponents as s}from"../../consent/gate-ssr-components.js";import{buildScripts as l}from"./build-scripts.js";import{resolveBrowserHooksPath as u}from"./resolve-browser-hooks.js";async function P(){return{id:"Amplitude Analytics",requiredEntitlements:["analytics"],async processContent(t,{getConfig:r}){const e=await r(),n=e?.analytics?.amplitude;if(!n?.apiKey||!c.isProductionEnv&&!n.includeInDevelopment)return;let o=[];typeof n.exclude<"u"&&n.exclude.map(p=>{const i=new d(p).makeRe();i&&o.push(i)});const{headComponents:m,postBodyComponents:a}=l(n,o);t.addSsrComponents(s(m,"analytics",e.consent),"head"),t.addSsrComponents(s(a,"analytics",e.consent),"postBody"),t.addBrowserPlugin(u())}}}export{P as amplitudeAnalyticsPlugin};
@@ -1 +1 @@
1
- import{envConfig as r}from"../../../config/env-config.js";import{buildScript as s}from"./build-script.js";async function a(){return{id:"Fullstory Analytics",requiredEntitlements:["analytics"],async processContent(t,{getConfig:o}){const n=(await o())?.analytics?.fullstory;if(!n?.orgId||!r.isProductionEnv&&!n.includeInDevelopment)return;const i=[s(n.orgId)];t.addSsrComponents(i,"head")}}}export{a as fullstoryAnalyticsPlugin};
1
+ import{envConfig as r}from"../../../config/env-config.js";import{gateSsrComponents as e}from"../../consent/gate-ssr-components.js";import{buildScript as c}from"./build-script.js";async function u(){return{id:"Fullstory Analytics",requiredEntitlements:["analytics"],async processContent(o,{getConfig:i}){const t=await i(),n=t?.analytics?.fullstory;if(!n?.orgId||!r.isProductionEnv&&!n.includeInDevelopment)return;const s=[c(n.orgId)];o.addSsrComponents(e(s,"analytics",t.consent),"head")}}}export{u as fullstoryAnalyticsPlugin};
@@ -1 +1 @@
1
- import{withPathPrefix as s}from"@redocly/theme/core/utils";import{envConfig as c}from"../../../config/env-config.js";import{normalizeRouteSlug as a}from"../../../../utils/path/normalize-route-slug.js";import{buildScripts as u}from"./build-scripts.js";import{resolveBrowserHooksPath as g}from"./resolve-browser-hooks.js";async function h(){const r=c.isProductionEnv;return{id:"Google Analytics",requiredEntitlements:["analytics"],afterRoutesCreated(t){const n=t.getGlobalData()||{},o=n.analytics?.ga||{trackingId:""};o?.exclude||(o.exclude=[]),o.trackers={};for(const i of Object.values(n.products||{})){const e=i.configOverride?.analytics?.ga;!e||!r&&!e.includeInDevelopment||(e.exclude?.length&&o.exclude.push(...e.exclude),o.trackers[a(i.slug)]=e)}if(o.trackingId&&(r||o.includeInDevelopment)&&(o.trackers[a(s("/"))]={trackingId:o.trackingId,conversionId:o.conversionId,floodlightId:o.floodlightId,optimizeId:o.optimizeId}),t.setGlobalData({...n,analytics:{...n?.analytics,ga:o}}),!Object.keys(o.trackers).length)return;const{headComponents:d,postBodyComponents:l}=u(o);t.addSsrComponents(d,"head"),t.addSsrComponents(l,"postBody"),t.addBrowserPlugin(g())}}}export{h as googleAnalyticsPlugin};
1
+ import{withPathPrefix as d}from"@redocly/theme/core/utils";import{envConfig as g}from"../../../config/env-config.js";import{normalizeRouteSlug as a}from"../../../../utils/path/normalize-route-slug.js";import{gateSsrComponents as s}from"../../consent/gate-ssr-components.js";import{buildScripts as u}from"./build-scripts.js";import{resolveBrowserHooksPath as f}from"./resolve-browser-hooks.js";async function C(){const r=g.isProductionEnv;return{id:"Google Analytics",requiredEntitlements:["analytics"],afterRoutesCreated(e){const t=e.getGlobalData()||{},o=t.analytics?.ga||{trackingId:""};o?.exclude||(o.exclude=[]),o.trackers={};for(const i of Object.values(t.products||{})){const n=i.configOverride?.analytics?.ga;!n||!r&&!n.includeInDevelopment||(n.exclude?.length&&o.exclude.push(...n.exclude),o.trackers[a(i.slug)]=n)}if(o.trackingId&&(r||o.includeInDevelopment)&&(o.trackers[a(d("/"))]={trackingId:o.trackingId,conversionId:o.conversionId,floodlightId:o.floodlightId,optimizeId:o.optimizeId}),e.setGlobalData({...t,analytics:{...t?.analytics,ga:o}}),!Object.keys(o.trackers).length)return;const{headComponents:c,postBodyComponents:l}=u(o);e.addSsrComponents(s(c,"analytics",t.consent),"head"),e.addSsrComponents(s(l,"analytics",t.consent),"postBody"),e.addBrowserPlugin(f())}}}export{C as googleAnalyticsPlugin};
@@ -1 +1 @@
1
- import{onCLS as d,onFID as u,onLCP as m}from"web-vitals";import{envConfig as p}from"../../../config/env-config.js";import{debounce as r}from"../../../../utils/time/debounce.js";const c=new Set,v=(n,t)=>{const e=t?.analytics?.gtm;if(!e||p.NODE_ENV!=="production"&&!e.includeInDevelopment)return;e.enableWebVitalsTracking&&!n.prevLocation&&w(e.dataLayerName);const o=e.dataLayerName?window[e.dataLayerName]:window.dataLayer,a=e.pageViewEventName?e.pageViewEventName:"pageView";o.push({event:a})};function w(n="dataLayer"){const t=window;function e(i){c.has(i.name)||(c.add(i.name),f(i,t[n]))}const o=r(e,3e3),a=e,s=r(e,3e3);d(o),u(a),m(s)}function f({name:n,value:t,id:e},o){o.push({event:"core-web-vitals",webVitalsMeasurement:{name:n,id:e,value:Math.round(n==="CLS"?t*1e3:t),nonInteraction:!0}})}export{v as onRouteChange};
1
+ import{onCLS as f,onFID as l,onLCP as p}from"web-vitals";import{envConfig as w}from"../../../config/env-config.js";import{debounce as s}from"../../../../utils/time/debounce.js";const r=new Set,y=(n,a)=>{const e=a?.analytics?.gtm;if(!e||w.NODE_ENV!=="production"&&!e.includeInDevelopment)return;const t=window.redocly?.consent;if(t&&!t.state.analytics){if(e.enableWebVitalsTracking&&!n.prevLocation){const u=t.on("change",m=>{m.analytics&&(u(),d(e.dataLayerName))})}return}e.enableWebVitalsTracking&&!n.prevLocation&&d(e.dataLayerName);const o=e.dataLayerName||"dataLayer",i=window;i[o]=i[o]||[];const c=e.pageViewEventName?e.pageViewEventName:"pageView";i[o].push({event:c})};function d(n="dataLayer"){const a=window;function e(c){r.has(c.name)||(r.add(c.name),L(c,a[n]))}const t=s(e,3e3),o=e,i=s(e,3e3);f(t),l(o),p(i)}function L({name:n,value:a,id:e},t){t.push({event:"core-web-vitals",webVitalsMeasurement:{name:n,id:e,value:Math.round(n==="CLS"?a*1e3:a),nonInteraction:!0}})}export{y as onRouteChange};
@@ -1 +1 @@
1
- import{envConfig as i}from"../../../config/env-config.js";import{buildScripts as s}from"./build-scripts.js";import{resolveBrowserHooksPath as a}from"./resolve-browser-hooks.js";async function l(){return{id:"Google Tag Manager Analytics",requiredEntitlements:["analytics"],async processContent(n,{getConfig:t}){const o=(await t())?.analytics?.gtm;if(!o?.trackingId||!i.isProductionEnv&&!o.includeInDevelopment)return;const{headComponents:e,preBodyComponents:r}=s(o);n.addSsrComponents(e,"head"),n.addSsrComponents(r,"preBody"),n.addBrowserPlugin(a())}}}export{l as gtmAnalyticsPlugin};
1
+ import{envConfig as a}from"../../../config/env-config.js";import{gateSsrComponents as e}from"../../consent/gate-ssr-components.js";import{buildScripts as c}from"./build-scripts.js";import{resolveBrowserHooksPath as m}from"./resolve-browser-hooks.js";async function u(){return{id:"Google Tag Manager Analytics",requiredEntitlements:["analytics"],async processContent(n,{getConfig:r}){const o=await r(),t=o?.analytics?.gtm;if(!t?.trackingId||!a.isProductionEnv&&!t.includeInDevelopment)return;const{headComponents:s,preBodyComponents:i}=c(t);n.addSsrComponents(e(s,"analytics",o.consent),"head"),n.addSsrComponents(e(i,"analytics",o.consent),"preBody"),n.addBrowserPlugin(m())}}}export{u as gtmAnalyticsPlugin};
@@ -1 +1 @@
1
- const w=(i,c)=>{const p=c?.analytics?.heap;p?.appId&&(i.prevLocation||(window.heap=window.heap||[],window.heap.load=function(a,n){window.heap.appid=a,window.heap.config=n=n||{};let s=n.forceSSL||document.location.protocol==="https:",e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src=(s?"https:":"http:")+"//cdn.heapanalytics.com/js/heap-"+a+".js";let r=document.getElementsByTagName("script")[0];r.parentNode?.insertBefore(e,r);for(let d=function(h){return function(...l){window.heap.push([h].concat(Array.prototype.slice.call(l,0)))}},o=["addEventProperties","addUserProperties","clearEventProperties","identify","resetIdentity","removeEventProperty","setEventProperties","track","unsetEventProperty"],t=0;t<o.length;t++)window.heap[o[t]]=d(o[t])},window.heap.load(p.appId)))};export{w as onRouteChange};
1
+ const h=(r,o)=>{const e=o?.analytics?.heap;if(e?.appId&&!r.prevLocation){const n=window.redocly?.consent;if(n&&!n.state.analytics){const t=n.on("change",a=>{a.analytics&&(t(),i(e.appId))});return}i(e.appId)}};function i(r){window.heap=window.heap||[],window.heap.load=function(o,e){window.heap.appid=o,window.heap.config=e=e||{};let n=e.forceSSL||document.location.protocol==="https:",t=document.createElement("script");t.type="text/javascript",t.async=!0,t.src=(n?"https:":"http:")+"//cdn.heapanalytics.com/js/heap-"+o+".js";let a=document.getElementsByTagName("script")[0];a.parentNode?.insertBefore(t,a);for(let s=function(d){return function(...l){window.heap.push([d].concat(Array.prototype.slice.call(l,0)))}},c=["addEventProperties","addUserProperties","clearEventProperties","identify","resetIdentity","removeEventProperty","setEventProperties","track","unsetEventProperty"],p=0;p<c.length;p++)window.heap[c[p]]=s(c[p])},window.heap.load(r)}export{h as onRouteChange};
@@ -1 +1 @@
1
- import{envConfig as e}from"../../../config/env-config.js";import{buildScript as i}from"./build-script.js";import{resolveBrowserHooksPath as o}from"./resolve-browser-hooks.js";async function u(){return{id:"Rudderstack Analytics",requiredEntitlements:["analytics"],async processContent(r,{getConfig:t}){const n=(await t())?.analytics?.rudderstack;!n?.writeKey||!e.isProductionEnv&&!n.includeInDevelopment||(r.addSsrComponents([i(n)],"head"),r.addBrowserPlugin(o()))}}}export{u as rudderstackAnalyticsPlugin};
1
+ import{envConfig as e}from"../../../config/env-config.js";import{gateSsrComponents as i}from"../../consent/gate-ssr-components.js";import{buildScript as s}from"./build-script.js";import{resolveBrowserHooksPath as a}from"./resolve-browser-hooks.js";async function m(){return{id:"Rudderstack Analytics",requiredEntitlements:["analytics"],async processContent(t,{getConfig:o}){const r=await o(),n=r?.analytics?.rudderstack;!n?.writeKey||!e.isProductionEnv&&!n.includeInDevelopment||(t.addSsrComponents(i([s(n)],"analytics",r.consent),"head"),t.addBrowserPlugin(a()))}}}export{m as rudderstackAnalyticsPlugin};
@@ -1 +1 @@
1
- import{envConfig as i}from"../../../config/env-config.js";import{buildScript as o}from"./build-script.js";import{resolveBrowserHooksPath as r}from"./resolve-browser-hooks.js";async function m(){return{id:"Segment Analytics",requiredEntitlements:["analytics"],async processContent(e,{getConfig:t}){const n=(await t())?.analytics?.segment;!n?.writeKey||!i.isProductionEnv&&!n.includeInDevelopment||(e.addSsrComponents([o(n)],"head"),e.addBrowserPlugin(r()))}}}export{m as segmentAnalyticsPlugin};
1
+ import{envConfig as i}from"../../../config/env-config.js";import{gateSsrComponents as r}from"../../consent/gate-ssr-components.js";import{buildScript as s}from"./build-script.js";import{resolveBrowserHooksPath as a}from"./resolve-browser-hooks.js";async function d(){return{id:"Segment Analytics",requiredEntitlements:["analytics"],async processContent(t,{getConfig:o}){const e=await o(),n=e?.analytics?.segment;!n?.writeKey||!i.isProductionEnv&&!n.includeInDevelopment||(t.addSsrComponents(r([s(n)],"analytics",e.consent),"head"),t.addBrowserPlugin(a()))}}}export{d as segmentAnalyticsPlugin};
@@ -9,9 +9,9 @@ export declare class RevisionRepository {
9
9
  revision: string | null;
10
10
  }): Promise<{
11
11
  shouldSetNewCurrentRevision: boolean;
12
- hasCurrentRevision: boolean;
13
12
  }>;
14
13
  markAllRevisionsAsNotCurrent(key: string): Promise<void>;
14
+ demoteVersion(key: string, version: string): Promise<void>;
15
15
  /**
16
16
  * Ensures that the one of the revisions has current and default version.
17
17
  */
@@ -1 +1 @@
1
- import{and as u,desc as v,eq as n,isNull as c,sql as d}from"drizzle-orm";import{VERSION_NOT_SPECIFIED as f}from"@redocly/theme/core/constants";import{entitiesTable as e}from"../../../../../providers/database/databases/sqlite-db/schemas/entities-table.js";import{compareVersions as h}from"../../../../../../utils/version/compare-versions.js";import{VersionRepository as m}from"./version-repository.js";import{buildSemanticVersionSortExpr as C}from"../utils/semantic-version-sort.js";import{normalizeRevisionFlags as y}from"../utils/normalize-revision-flags.js";class g{#i;#e;constructor(i){this.#e=i,this.#i=new m(i)}async getCurrentRevisionInfo({key:i,version:t,revision:r}){const o=await this.#t(i);if(!o)return{shouldSetNewCurrentRevision:!0,hasCurrentRevision:!1};if(t){const a=await this.#i.doesVersionExist(i,t),s=h(t,o.version)>0,l=o.version===f&&t!==f;if(!a&&(s||l))return{shouldSetNewCurrentRevision:!0,hasCurrentRevision:!0}}return t&&r&&t===o.version&&r>=o.revision?{shouldSetNewCurrentRevision:!0,hasCurrentRevision:!0}:{shouldSetNewCurrentRevision:!1,hasCurrentRevision:!0}}async markAllRevisionsAsNotCurrent(i){await this.#e.client.update(e).set({isCurrent:!1}).where(n(e.key,i)).run()}async ensureDefaultAndCurrentRevisionForKey(i){const t=await this.#i.getOrderedVersionListForKey(i),r=this.#i.getLatestVersion(t);r&&await this.#e.client.update(e).set({isDefaultVersion:!0,isCurrent:!0}).where(u(n(e.key,i),n(e.revision,r.revision),r.version?n(e.version,r.version):c(e.version))).run()}async shouldSkipRevisionCreation(i,t,r,o,a){if(o||a)return!1;const s=await this.#e.client.select({hash:e.hash,isDeleted:e.isDeleted}).from(e).where(u(n(e.key,i),t?n(e.version,t):c(e.version))).orderBy(v(e.revision)).limit(1).get();return!s||!!s.isDeleted?!1:s.hash===r}async#t(i){return await this.#e.client.select({version:e.version,revision:e.revision}).from(e).where(u(n(e.key,i),n(e.isCurrent,!0))).orderBy(v(e.revision)).limit(1).get()??null}async listEntityRevisions(i,t){const r=[n(e.key,i),n(e.isDeleted,!1),...t?[n(e.version,t)]:[]],a=(await this.#e.client.select({version:e.version,revision:e.revision,isCurrent:e.isCurrent,createdAt:e.createdAt,updatedAt:e.updatedAt,isDefaultVersion:e.isDefaultVersion}).from(e).where(u(...r)).orderBy(d`${C("version")} DESC`,d.raw("revision DESC")).all()).map(s=>({version:s.version,revision:s.revision??"",isCurrent:s.isCurrent!==null?s.isCurrent:!1,createdAt:s.createdAt,updatedAt:s.updatedAt,isDefaultVersion:s.isDefaultVersion!==null?s.isDefaultVersion:!1}));return y(a),a}}export{g as RevisionRepository};
1
+ import{and as l,desc as d,eq as r,isNull as f,sql as v}from"drizzle-orm";import{VERSION_NOT_SPECIFIED as u}from"@redocly/theme/core/constants";import{entitiesTable as e}from"../../../../../providers/database/databases/sqlite-db/schemas/entities-table.js";import{compareVersions as h}from"../../../../../../utils/version/compare-versions.js";import{VersionRepository as m}from"./version-repository.js";import{buildSemanticVersionSortExpr as y}from"../utils/semantic-version-sort.js";import{normalizeRevisionFlags as C}from"../utils/normalize-revision-flags.js";class g{#t;#e;constructor(t){this.#e=t,this.#t=new m(t)}async getCurrentRevisionInfo({key:t,version:i,revision:n}){const o=await this.#i(t);if(!o)return{shouldSetNewCurrentRevision:!0};if(i){const a=await this.#t.doesVersionExist(t,i),s=i!==u&&h(i,o.version)>0,c=o.version===u&&i!==u;if(!a&&(s||c))return{shouldSetNewCurrentRevision:!0}}return i&&n&&i===o.version&&n>=o.revision?{shouldSetNewCurrentRevision:!0}:{shouldSetNewCurrentRevision:!1}}async markAllRevisionsAsNotCurrent(t){await this.#e.client.update(e).set({isCurrent:!1}).where(r(e.key,t)).run()}async demoteVersion(t,i){await this.#e.client.update(e).set({isCurrent:!1,isDefaultVersion:!1}).where(l(r(e.key,t),r(e.version,i))).run()}async ensureDefaultAndCurrentRevisionForKey(t){const i=await this.#t.getOrderedVersionListForKey(t),n=this.#t.getLatestVersion(i);n&&await this.#e.client.update(e).set({isDefaultVersion:!0,isCurrent:!0}).where(l(r(e.key,t),r(e.revision,n.revision),n.version?r(e.version,n.version):f(e.version))).run()}async shouldSkipRevisionCreation(t,i,n,o,a){if(o||a)return!1;const s=await this.#e.client.select({hash:e.hash,isDeleted:e.isDeleted}).from(e).where(l(r(e.key,t),i?r(e.version,i):f(e.version))).orderBy(d(e.revision)).limit(1).get();return!s||!!s.isDeleted?!1:s.hash===n}async#i(t){return await this.#e.client.select({version:e.version,revision:e.revision}).from(e).where(l(r(e.key,t),r(e.isCurrent,!0),r(e.isDeleted,!1))).orderBy(d(e.revision)).limit(1).get()??null}async listEntityRevisions(t,i){const n=[r(e.key,t),r(e.isDeleted,!1),...i?[r(e.version,i)]:[]],a=(await this.#e.client.select({version:e.version,revision:e.revision,isCurrent:e.isCurrent,createdAt:e.createdAt,updatedAt:e.updatedAt,isDefaultVersion:e.isDefaultVersion}).from(e).where(l(...n)).orderBy(v`${y("version")} DESC`,v.raw("revision DESC")).all()).map(s=>({version:s.version,revision:s.revision??"",isCurrent:s.isCurrent!==null?s.isCurrent:!1,createdAt:s.createdAt,updatedAt:s.updatedAt,isDefaultVersion:s.isDefaultVersion!==null?s.isDefaultVersion:!1}));return C(a),a}}export{g as RevisionRepository};
@@ -3,9 +3,13 @@ export declare class VersionRepository {
3
3
  private readonly db;
4
4
  constructor(db: DatabaseClient);
5
5
  markAllVersionsAsNotDefault(key: string): Promise<void>;
6
+ /**
7
+ * A version whose most recent revision is soft-deleted counts as not existing.
8
+ */
6
9
  doesVersionExist(key: string, version: string): Promise<boolean>;
7
10
  /**
8
- * Gets the ordered list of versions for a given key.
11
+ * Gets the ordered list of live versions for a given key: soft-deleted rows and rows of a
12
+ * version whose most recent revision is soft-deleted are excluded.
9
13
  * The list is ordered by creation date, and then by version.
10
14
  */
11
15
  getOrderedVersionListForKey(key: string): Promise<{
@@ -1 +1,7 @@
1
- import{eq as a,and as u,desc as c}from"drizzle-orm";import{VERSION_NOT_SPECIFIED as f}from"@redocly/theme/core/constants";import{entitiesTable as e}from"../../../../../providers/database/databases/sqlite-db/schemas/entities-table.js";import{compareVersions as m}from"../../../../../../utils/version/compare-versions.js";class A{db;constructor(t){this.db=t}async markAllVersionsAsNotDefault(t){await this.db.client.update(e).set({isDefaultVersion:!1}).where(u(a(e.key,t),a(e.isDefaultVersion,!0))).run()}async doesVersionExist(t,n){return await this.db.client.select().from(e).where(u(a(e.key,t),a(e.version,n))).get()!==void 0}async getOrderedVersionListForKey(t){return(await this.db.client.select({version:e.version,isDefaultVersion:e.isDefaultVersion,revision:e.revision,createdAt:e.createdAt}).from(e).where(u(a(e.key,t))).orderBy(c(e.createdAt)).all()).map(i=>({version:i.version,isDefaultVersion:!!i.isDefaultVersion,revision:i.revision,createdAt:new Date(i.createdAt)}))}getLatestVersion(t){const n=t.find(r=>r.isDefaultVersion);if(n)return n;const{versionedEntities:i,unversionedEntities:d}=t.reduce((r,s)=>(s.version!==null&&s.version!==f?r.versionedEntities.push(s):r.unversionedEntities.push(s),r),{versionedEntities:[],unversionedEntities:[]});if(i.length>0){i.sort((o,l)=>m(l.version,o.version));const r=i[0].version,s=i.filter(o=>o.version===r);return s.sort((o,l)=>l.createdAt.getTime()-o.createdAt.getTime()),s[0]}return d.length>0?(d.sort((r,s)=>s.createdAt.getTime()-r.createdAt.getTime()),d[0]):null}}export{A as VersionRepository};
1
+ import{eq as n,and as u,desc as c,sql as f}from"drizzle-orm";import{VERSION_NOT_SPECIFIED as m}from"@redocly/theme/core/constants";import{entitiesTable as e}from"../../../../../providers/database/databases/sqlite-db/schemas/entities-table.js";import{compareVersions as v}from"../../../../../../utils/version/compare-versions.js";class g{db;constructor(i){this.db=i}async markAllVersionsAsNotDefault(i){await this.db.client.update(e).set({isDefaultVersion:!1}).where(u(n(e.key,i),n(e.isDefaultVersion,!0))).run()}async doesVersionExist(i,o){const t=await this.db.client.select({isDeleted:e.isDeleted}).from(e).where(u(n(e.key,i),n(e.version,o))).orderBy(c(e.revision)).limit(1).get();return t!==void 0&&!t.isDeleted}async getOrderedVersionListForKey(i){return(await this.db.client.select({version:e.version,isDefaultVersion:e.isDefaultVersion,revision:e.revision,createdAt:e.createdAt}).from(e).where(u(n(e.key,i),n(e.isDeleted,!1),f`NOT EXISTS (
2
+ SELECT 1 FROM entities tombstone
3
+ WHERE tombstone.key = ${e.key}
4
+ AND tombstone.version IS ${e.version}
5
+ AND tombstone.is_deleted = 1
6
+ AND tombstone.revision > ${e.revision}
7
+ )`)).orderBy(c(e.createdAt)).all()).map(t=>({version:t.version,isDefaultVersion:!!t.isDefaultVersion,revision:t.revision,createdAt:new Date(t.createdAt)}))}getLatestVersion(i){const o=i.find(s=>s.isDefaultVersion);if(o)return o;const{versionedEntities:t,unversionedEntities:d}=i.reduce((s,r)=>(r.version!==null&&r.version!==m?s.versionedEntities.push(r):s.unversionedEntities.push(r),s),{versionedEntities:[],unversionedEntities:[]});if(t.length>0){t.sort((a,l)=>v(l.version,a.version));const s=t[0].version,r=t.filter(a=>a.version===s);return r.sort((a,l)=>l.createdAt.getTime()-a.createdAt.getTime()),r[0]}return d.length>0?(d.sort((s,r)=>r.createdAt.getTime()-s.createdAt.getTime()),d[0]):null}}export{g as VersionRepository};
@@ -1 +1 @@
1
- import{and as w,eq as c,isNull as k,or as x,sql as V}from"drizzle-orm";import{VERSION_NOT_SPECIFIED as F}from"@redocly/theme/core/constants";import{sha1 as K}from"../../../../../utils/crypto/sha1.js";import{envConfig as O}from"../../../../../config/env-config.js";import{entitiesTable as t}from"../../../../../providers/database/databases/sqlite-db/schemas/entities-table.js";import{convertFilterToWhereCondition as W}from"../../../../../providers/database/pagination/filter.js";import{entitiesRelationsTable as a}from"../../../../../providers/database/databases/sqlite-db/schemas/entities-relations-table.js";import{promiseMapLimit as v}from"../../../../../utils/async/promise-map-limit.js";import{RevisionRepository as z}from"../common/revision-repository.js";import{VersionRepository as H}from"../common/version-repository.js";import{EntityAttributesWriteRepository as P}from"../entityAttributes/entity-attributes-write-repository.js";import{createEntityDbRecord as L}from"../../mappers/create-entity-db-record.js";import{createEntityReadModel as A}from"../../mappers/create-entity-read-model.js";import{createEntityRelationDbRecordFromFileSchema as U}from"../../mappers/create-entity-relation-db-record-from-file-schema.js";import{createEntityRelationDbRecordFromDto as j}from"../../mappers/create-entity-relation-db-record-from-dto.js";import{EntitiesReadRepository as G}from"./entities-read-repository.js";import{RelationsReadRepository as M}from"../relations/relations-read-repository.js";import{RelationsWriteRepository as $}from"../relations/relations-write-repository.js";const g=15;class de{#e;#t;#n;#o;#i;#s;#a;#l;#r;constructor(e,s,n){this.#e=e,this.#i=s,this.#s=n,this.#t=new z(e),this.#n=new H(e),this.#o=new P(e),this.#a=new G(e),this.#l=new M(e),this.#r=new $(e,s,n)}async createEntity({entity:e,source:s,fileHash:n,sourceFile:o,isRootEntity:i,isDeleted:r,rbacTeams:l,errorOnSkip:d=!1,revision:h}){const{relations:u=[],...f}=e,p=K(JSON.stringify(f)),E=e.version??F,R=h??new Date().toISOString(),C=await this.#t.shouldSkipRevisionCreation(e.key,E,p,i,r);Array.isArray(l)&&await this.#o.upsertEntityAttributes({entityKey:e.key,rbacTeams:l,organizationId:this.#i,projectId:this.#s});const m=O.isDevelopMode&&!O.REDOCLY_INTERNAL_DEV;if(u?.length&&!m&&await this.#r.createEntityRelations(u.map(I=>({...I,sourceKey:e.key,targetKey:I.key,sourceFile:o??null,fileHash:n??null}))),C){if(d)throw new Error("Entity validation failed: entity already exists");return null}const{shouldSetNewCurrentRevision:y,hasCurrentRevision:_}=await this.#t.getCurrentRevisionInfo({key:e.key,version:E,revision:R}),D=L({entity:{...e,revision:R,hash:p,isCurrent:y,isDefaultVersion:y,isDeleted:r,version:E},organizationId:this.#i,projectId:this.#s,source:s,sourceFile:o??null,fileHash:n??null}),{key:S,...T}=D;if(y&&_&&(await this.#t.markAllRevisionsAsNotCurrent(S),await this.#n.markAllVersionsAsNotDefault(S)),m)return await this.#u(D,u,y);const N=await this.#e.client.insert(t).values(D).onConflictDoUpdate({target:[t.key,t.source,t.revision,t.version],set:T}).returning();return N.length?A(N[0]):null}async updateEntity(e,s){const{shouldSetNewCurrentRevision:n,hasCurrentRevision:o}=await this.#t.getCurrentRevisionInfo({key:s.key,version:e.version??s.version??F,revision:s.revision});n&&o&&(await this.#t.markAllRevisionsAsNotCurrent(s.key),await this.#n.markAllVersionsAsNotDefault(s.key));const i=L({entity:{...s,...e,hash:K(JSON.stringify({...s,...e})),isCurrent:n,isDefaultVersion:n,createdAt:s.createdAt??void 0},organizationId:this.#i,projectId:this.#s,source:"remote",sourceFile:null,fileHash:null}),{key:r,source:l,scorecardsStatus:d,...h}=i,u=await this.#e.client.insert(t).values(i).onConflictDoUpdate({target:[t.key,t.source,t.revision,t.version],set:{...h,scorecardsStatus:V`CASE WHEN ${t.scorecardsStatus} = 'CALCULATING' THEN 'CANCELLED' ELSE 'OUTDATED' END`}}).returning();return u.length?A(u[0]):null}async setEntitiesAsOutdated(e){const s=W(e);await this.#e.client.update(t).set({scorecardsStatus:"OUTDATED"}).where(s)}async#u(e,s,n){const{key:o,source:i,version:r,...l}=e,{isCurrent:d,isDefaultVersion:h,...u}=l,f=n?l:u,R=await this.#e.client.select({id:t.id}).from(t).where(w(c(t.key,o),r?c(t.version,r):k(t.version))).limit(1).get()!=null?await this.#e.client.update(t).set(f).where(w(c(t.key,o),r?c(t.version,r):k(t.version))).returning():await this.#e.client.insert(t).values(e).onConflictDoUpdate({target:[t.key,t.source,t.revision,t.version],set:f}).returning(),C=s?.map(m=>{const y=U({relation:m,sourceFile:e.sourceFile??"",fileHash:e.fileHash??"",sourceKey:e.key,sourceVersion:e.version??null,sourceRevision:e.revision??null,organizationId:this.#i,projectId:this.#s});return this.#e.client.insert(a).values(y).onConflictDoUpdate({target:[a.sourceKey,a.targetKey,a.sourceVersion,a.targetVersion,a.sourceRevision,a.targetRevision,a.sourceToTargetRelation],set:y}).run()})??[];return await v(C,g,async m=>m),A(R[0])}async softDeleteEntitiesWithRelations({filter:e,revision:s,fileHash:n}){const i={op:"AND",conditions:[e,{field:"is_deleted",operator:"equal",value:!1}]};for(;;){const r=await this.#a.getEntities({paginationParams:{filter:i,limit:500}});if(r.items.length===0)break;const l=await this.#c({entities:r.items,revision:s,fileHash:n});await this.#d(l,s)}}async deleteEntity(e){return await this.#r.deleteEntityRelationsOnEntityRemoval(e),await this.#e.client.delete(t).where(c(t.id,e.id)),await this.#t.ensureDefaultAndCurrentRevisionForKey(e.key),e.id}async deleteEntities(e){const s=W(e);if(!s)return!1;const n=await this.#e.client.delete(t).where(s).returning({key:t.key,source:t.source,isCurrent:t.isCurrent,isDefaultVersion:t.isDefaultVersion,version:t.version});if(n.length===0)return!0;const o=n.reduce((i,r)=>((r.isCurrent||r.isDefaultVersion)&&i.add(r.key),i),new Set);if(o.size===0)return!0;await v(Array.from(o),g,async i=>this.#t.ensureDefaultAndCurrentRevisionForKey(i));for(const i of n)await this.#e.client.delete(a).where(x(w(c(a.sourceKey,i.key),...i.version?[c(a.sourceVersion,i.version)]:[k(a.sourceVersion)]),w(c(a.targetKey,i.key),...i.version?[c(a.targetVersion,i.version)]:[k(a.targetVersion)])));return!0}async updateEntityScorecardsStatus(e,s){return(await this.#e.client.update(t).set({scorecardsStatus:s}).where(c(t.id,e)).returning()).length>0}async updateEntityScorecardsStatusIfCalculating(e,s){return(await this.#e.client.update(t).set({scorecardsStatus:s}).where(V`${t.id} = ${e} AND ${t.scorecardsStatus} = 'CALCULATING'`).returning()).length>0}async#c({entities:e,revision:s,fileHash:n}){return(await v(e,g,async i=>{const r={type:i.type,key:i.key,title:i.title,summary:i.summary??void 0,tags:i.tags??void 0,metadata:i.metadata??void 0,git:i.git??void 0,contact:i.contact??void 0,links:i.links??void 0,version:i.version??void 0};return this.createEntity({entity:r,sourceFile:i.sourceFile??"",fileHash:n,isDeleted:!0,errorOnSkip:!1,source:i.source,revision:s})})).filter(i=>i!==null)}async#d(e,s){if(e.length===0)return!0;const n=await v(e,g,async o=>(await this.#l.getRelationsForEntity(o.key,o.version,s)).map(r=>{if(!r)return null;const l=r.direction,d=r.sourceToTargetRelation,h=r.targetKey,u=l==="outgoing"?o.key:h,f=l==="outgoing"?h:o.key,p=l==="outgoing"?d:d.startsWith("reverse:")?d.slice(8):d;return!p||!u||!f?null:j({type:p,sourceKey:u,targetKey:f,sourceVersion:o.version,targetVersion:o.version,sourceRevision:s,targetRevision:s,isDeleted:!0},this.#i,this.#s)}).filter(r=>r!==null));return await v(n.flat(),g,async o=>this.#r.upsertEntityRelation(o)),!0}}export{de as EntitiesWriteRepository};
1
+ import{and as k,eq as u,isNull as C,or as x,sql as V}from"drizzle-orm";import{VERSION_NOT_SPECIFIED as F}from"@redocly/theme/core/constants";import{sha1 as K}from"../../../../../utils/crypto/sha1.js";import{envConfig as O}from"../../../../../config/env-config.js";import{entitiesTable as t}from"../../../../../providers/database/databases/sqlite-db/schemas/entities-table.js";import{convertFilterToWhereCondition as W}from"../../../../../providers/database/pagination/filter.js";import{entitiesRelationsTable as a}from"../../../../../providers/database/databases/sqlite-db/schemas/entities-relations-table.js";import{promiseMapLimit as m}from"../../../../../utils/async/promise-map-limit.js";import{RevisionRepository as z}from"../common/revision-repository.js";import{VersionRepository as H}from"../common/version-repository.js";import{EntityAttributesWriteRepository as P}from"../entityAttributes/entity-attributes-write-repository.js";import{createEntityDbRecord as L}from"../../mappers/create-entity-db-record.js";import{createEntityReadModel as N}from"../../mappers/create-entity-read-model.js";import{createEntityRelationDbRecordFromFileSchema as U}from"../../mappers/create-entity-relation-db-record-from-file-schema.js";import{createEntityRelationDbRecordFromDto as j}from"../../mappers/create-entity-relation-db-record-from-dto.js";import{EntitiesReadRepository as G}from"./entities-read-repository.js";import{RelationsReadRepository as M}from"../relations/relations-read-repository.js";import{RelationsWriteRepository as $}from"../relations/relations-write-repository.js";const E=15;class de{#e;#t;#n;#o;#i;#s;#a;#l;#r;constructor(e,i,r){this.#e=e,this.#i=i,this.#s=r,this.#t=new z(e),this.#n=new H(e),this.#o=new P(e),this.#a=new G(e),this.#l=new M(e),this.#r=new $(e,i,r)}async createEntity({entity:e,source:i,fileHash:r,sourceFile:o,isRootEntity:s,isDeleted:n,rbacTeams:l,errorOnSkip:c=!1,revision:d}){const{relations:h=[],...f}=e,y=K(JSON.stringify(f)),v=e.version??F,R=d??new Date().toISOString(),D=await this.#t.shouldSkipRevisionCreation(e.key,v,y,s,n);Array.isArray(l)&&await this.#o.upsertEntityAttributes({entityKey:e.key,rbacTeams:l,organizationId:this.#i,projectId:this.#s});const p=O.isDevelopMode&&!O.REDOCLY_INTERNAL_DEV;if(h?.length&&!p&&await this.#r.createEntityRelations(h.map(I=>({...I,sourceKey:e.key,targetKey:I.key,sourceFile:o??null,fileHash:r??null}))),D){if(c)throw new Error("Entity validation failed: entity already exists");return null}const g=(await this.#t.getCurrentRevisionInfo({key:e.key,version:v,revision:R})).shouldSetNewCurrentRevision&&!n,S=L({entity:{...e,revision:R,hash:y,isCurrent:g,isDefaultVersion:g,isDeleted:n,version:v},organizationId:this.#i,projectId:this.#s,source:i,sourceFile:o??null,fileHash:r??null}),{key:w,..._}=S;g&&(await this.#t.markAllRevisionsAsNotCurrent(w),await this.#n.markAllVersionsAsNotDefault(w));const T=p?await this.#c(S,h,g):await this.#u(S,_);return n&&(await this.#t.demoteVersion(w,v),await this.#t.ensureDefaultAndCurrentRevisionForKey(w)),T}async#u(e,i){const r=await this.#e.client.insert(t).values(e).onConflictDoUpdate({target:[t.key,t.source,t.revision,t.version],set:i}).returning();return r.length?N(r[0]):null}async updateEntity(e,i){const{shouldSetNewCurrentRevision:r}=await this.#t.getCurrentRevisionInfo({key:i.key,version:e.version??i.version??F,revision:i.revision});r&&(await this.#t.markAllRevisionsAsNotCurrent(i.key),await this.#n.markAllVersionsAsNotDefault(i.key));const o=L({entity:{...i,...e,hash:K(JSON.stringify({...i,...e})),isCurrent:r,isDefaultVersion:r,createdAt:i.createdAt??void 0},organizationId:this.#i,projectId:this.#s,source:"remote",sourceFile:null,fileHash:null}),{key:s,source:n,scorecardsStatus:l,...c}=o,d=await this.#e.client.insert(t).values(o).onConflictDoUpdate({target:[t.key,t.source,t.revision,t.version],set:{...c,scorecardsStatus:V`CASE WHEN ${t.scorecardsStatus} = 'CALCULATING' THEN 'CANCELLED' ELSE 'OUTDATED' END`}}).returning();return d.length?N(d[0]):null}async setEntitiesAsOutdated(e){const i=W(e);await this.#e.client.update(t).set({scorecardsStatus:"OUTDATED"}).where(i)}async#c(e,i,r){const{key:o,source:s,version:n,...l}=e,{isCurrent:c,isDefaultVersion:d,...h}=l,f=r?l:h,R=await this.#e.client.select({id:t.id}).from(t).where(k(u(t.key,o),n?u(t.version,n):C(t.version))).limit(1).get()!=null?await this.#e.client.update(t).set(f).where(k(u(t.key,o),n?u(t.version,n):C(t.version))).returning():await this.#e.client.insert(t).values(e).onConflictDoUpdate({target:[t.key,t.source,t.revision,t.version],set:f}).returning(),D=i?.map(p=>{const A=U({relation:p,sourceFile:e.sourceFile??"",fileHash:e.fileHash??"",sourceKey:e.key,sourceVersion:e.version??null,sourceRevision:e.revision??null,organizationId:this.#i,projectId:this.#s});return this.#e.client.insert(a).values(A).onConflictDoUpdate({target:[a.sourceKey,a.targetKey,a.sourceVersion,a.targetVersion,a.sourceRevision,a.targetRevision,a.sourceToTargetRelation],set:A}).run()})??[];return await m(D,E,async p=>p),N(R[0])}async softDeleteEntitiesWithRelations({filter:e,revision:i,fileHash:r}){const s={op:"AND",conditions:[e,{field:"is_deleted",operator:"equal",value:!1}]};for(;;){const n=await this.#a.getEntities({paginationParams:{filter:s,limit:500}});if(n.items.length===0)break;const l=await this.#d({entities:n.items,revision:i,fileHash:r});await this.#h(l,i)}}async deleteEntity(e){return await this.#r.deleteEntityRelationsOnEntityRemoval(e),await this.#e.client.delete(t).where(u(t.id,e.id)),await this.#t.ensureDefaultAndCurrentRevisionForKey(e.key),e.id}async deleteEntities(e){const i=W(e);if(!i)return!1;const r=await this.#e.client.delete(t).where(i).returning({key:t.key,source:t.source,isCurrent:t.isCurrent,isDefaultVersion:t.isDefaultVersion,version:t.version});if(r.length===0)return!0;const o=r.reduce((s,n)=>((n.isCurrent||n.isDefaultVersion)&&s.add(n.key),s),new Set);if(o.size===0)return!0;await m(Array.from(o),E,async s=>this.#t.ensureDefaultAndCurrentRevisionForKey(s));for(const s of r)await this.#e.client.delete(a).where(x(k(u(a.sourceKey,s.key),...s.version?[u(a.sourceVersion,s.version)]:[C(a.sourceVersion)]),k(u(a.targetKey,s.key),...s.version?[u(a.targetVersion,s.version)]:[C(a.targetVersion)])));return!0}async updateEntityScorecardsStatus(e,i){return(await this.#e.client.update(t).set({scorecardsStatus:i}).where(u(t.id,e)).returning()).length>0}async updateEntityScorecardsStatusIfCalculating(e,i){return(await this.#e.client.update(t).set({scorecardsStatus:i}).where(V`${t.id} = ${e} AND ${t.scorecardsStatus} = 'CALCULATING'`).returning()).length>0}async#d({entities:e,revision:i,fileHash:r}){return(await m(e,E,async s=>{const n={type:s.type,key:s.key,title:s.title,summary:s.summary??void 0,tags:s.tags??void 0,metadata:s.metadata??void 0,git:s.git??void 0,contact:s.contact??void 0,links:s.links??void 0,version:s.version??void 0};return this.createEntity({entity:n,sourceFile:s.sourceFile??"",fileHash:r,isDeleted:!0,errorOnSkip:!1,source:s.source,revision:i})})).filter(s=>s!==null)}async#h(e,i){if(e.length===0)return!0;const r=await m(e,E,async o=>(await this.#l.getRelationsForEntity(o.key,o.version,i)).map(n=>{if(!n)return null;const l=n.direction,c=n.sourceToTargetRelation,d=n.targetKey,h=l==="outgoing"?o.key:d,f=l==="outgoing"?d:o.key,y=l==="outgoing"?c:c.startsWith("reverse:")?c.slice(8):c;return!y||!h||!f?null:j({type:y,sourceKey:h,targetKey:f,sourceVersion:o.version,targetVersion:o.version,sourceRevision:i,targetRevision:i,isDeleted:!0},this.#i,this.#s)}).filter(n=>n!==null));return await m(r.flat(),E,async o=>this.#r.upsertEntityRelation(o)),!0}}export{de as EntitiesWriteRepository};
@@ -2,6 +2,7 @@ import type { RedoclyConfig } from '@redocly/config';
2
2
  export declare function formatCustomScripts(customScripts: NonNullable<RedoclyConfig['scripts']>['head'], opts: {
3
3
  contentDir: string;
4
4
  outdir: string;
5
+ consentEnabled?: boolean;
5
6
  }): Promise<string>;
6
7
  export declare function formatCustomLinks(customLinks: RedoclyConfig['links'], opts: {
7
8
  contentDir: string;
@@ -1 +1 @@
1
- import{readFileSync as S}from"fs";import{join as d}from"path";import{isLocalLink as a}from"../../../utils/path/is-local-link.js";import{copyStaticFile as g}from"../../utils/fs.js";async function b(r,t){return l(r,"src",(n,o)=>`<script ${n}>${o}</script>`,t)}async function v(r,t){return l(r,"href",n=>`<link ${n} />`,{...t,defaultAttrs:{rel:"stylesheet"}})}async function l(r=[],t,n,{contentDir:o,outdir:m,defaultAttrs:p={}}){if(!Array.isArray(r)||!r.length)return"";const f=[];for(const s of r){const y=typeof s=="string"?{[t]:s}:{...s},{src:h,href:C,inline:c,...$}=y;let e=t==="href"?C:h,u="";if(a(e)&&!c){const i=await g(o,e,m);if(!i)continue;e=i}else a(e)&&c&&(u=S(d(o,e),"utf-8"),e=!1);const k=j({...p,...$,[t]:e});f.push(n(k,u))}return f.join("")}function j(r){const t=[];for(let n in r){const o=r[n];o!==!1&&(o===!0?t.push(n):t.push(`${n}="${o}"`))}return t.join(" ")}export{v as formatCustomLinks,b as formatCustomScripts};
1
+ import{readFileSync as g}from"fs";import{join as j}from"path";import{isLocalLink as p}from"../../../utils/path/is-local-link.js";import{copyStaticFile as x}from"../../utils/fs.js";async function T(n,t){return m(n,"src",(e,o)=>`<script ${e}>${o}</script>`,t)}async function b(n,t){return m(n,"href",e=>`<link ${e} />`,{...t,defaultAttrs:{rel:"stylesheet"}})}async function m(n=[],t,e,{contentDir:o,outdir:y,defaultAttrs:h={},consentEnabled:d=!1}){if(!Array.isArray(n)||!n.length)return"";const c=[];for(const i of n){const C=typeof i=="string"?{[t]:i}:{...i},{src:$,href:k,inline:a,consent:l,...s}=C;l&&d&&t==="src"&&(s["data-consent"]=l,s.type&&(s["data-consent-type"]=s.type),s.type="text/plain");let r=t==="href"?k:$,u="";if(p(r)&&!a){const f=await x(o,r,y);if(!f)continue;r=f}else p(r)&&a&&(u=g(j(o,r),"utf-8"),r=!1);const S=F({...h,...s,[t]:r});c.push(e(S,u))}return c.join("")}function F(n){const t=[];for(let e in n){const o=n[e];o!==!1&&(o===!0?t.push(e):t.push(`${e}="${o}"`))}return t.join(" ")}export{b as formatCustomLinks,T as formatCustomScripts};
@@ -1 +1 @@
1
- import P from"path";import{REDOCLY_ROUTE_RBAC as g,REDOCLY_TEAMS_RBAC as b}from"@redocly/config";import{deepMerge as S}from"../../../utils/object/deep-merge.js";import{buildWildcardRedirectsTree as v}from"../../utils/redirects/build-wildcard-redirects-tree.js";import{shaHexShort as D}from"../../utils/crypto/sha-hex-short.js";import{formatCustomScripts as u,formatCustomLinks as T}from"./format-custom-tags.js";import{applyL10nToRbacConfig as w,resolveDirectoryHashes as L}from"../../utils/rbac.js";import{copySeoAssets as O}from"./copy-seo-assets.js";import{normalizeRedirectSources as k}from"./normalize-redirect-sources.js";import{applyL10nToRedirects as E}from"./apply-l10n-to-redirects.js";import{DEFAULT_LOADERS as G}from"./loaders/index.js";import{resolveSearchFacets as B}from"./resolve-search-facets.js";import{telemetryTraceStep as _}from"../../../cli/telemetry/helpers/trace-step.js";import{transformMdAst as j}from"../markdown/runtime-transform.js";async function V(){return{id:"Config Parser",loaders:G,async processContent(e,{getConfig:i,fs:t}){await _("com.redocly.build.plugin.configParser",async o=>{const{contentDir:s,setGlobalConfig:a,setGlobalData:l}=e,r=await i(),c=r.access||{},d=w(t,c.rbac||{}),f={outdir:e.outdir,contentDir:s},y=await u(r.scripts?.head,f),h=await T(r.links,f),R=await u(r.scripts?.body,f),p=S(r,{headScriptTags:y,linkTags:h,postBodyScriptTags:R});o?.setAttribute("config",JSON.stringify(p));const m=r.redirects?k(r.redirects):{},C=Object.keys(m),A=p.banner?.map(n=>typeof n=="object"&&n!==null&&n.rbac?{...n,[b]:n.rbac}:n);a({...p,banner:A,access:{...c,requiresLogin:!!c.requiresLogin,rbac:d},directoryPaths:await L(t,c.rbac),seo:r.seo&&await O(r.seo,f.contentDir,f.outdir),redirects:E(m,r.l10n),wildcardRedirectsTree:v(m),originalRedirectSources:C}),B(r.search?.filters?.facets||[],e.getSearchFacets,e.setSearchFacets),l({removeAttribution:!!r.removeAttribution})})},async afterRoutesCreated(e,i){x(e);const t=e.getGlobalConfig("banner");if(Array.isArray(t)){const o=await Promise.all(t.map(async(s,a)=>{const{content:l,...r}=s,{ast:c}=await e.parseMarkdoc({input:{content:l,relativePath:"redocly.yaml"},context:i,resource:`redocly.yaml#banner${a}`}),{renderableAst:d}=await j(c,{variables:{},partials:{}},e.serverOutDir);return{...r,ast:d,hash:D(l)}}));e.setGlobalConfig({banner:o})}}}}function x(e){const i=e.getGlobalConfig("access")?.rbac,t=e.getGlobalConfig("directoryPaths");if(!(!i||Object.keys(i).length===0))for(const o of e.getAllRoutes()){if(o.versions&&t)for(const s of o.versions){const a=t[s.folderId],r=a==="."||a==="/"?"":a;s[g]={slug:s.link,fsPath:P.posix.join(r,"@"+s.version,"index.md")}}o[g]||o[b]||(o[g]={slug:o.slug,fsPath:o.fsPath})}}export{V as configParserPlugin};
1
+ import A from"path";import{REDOCLY_ROUTE_RBAC as b,REDOCLY_TEAMS_RBAC as g}from"@redocly/config";import{deepMerge as S}from"../../../utils/object/deep-merge.js";import{parsePathVersions as v}from"../../../utils/path/parse-path-versions.js";import{buildWildcardRedirectsTree as D}from"../../utils/redirects/build-wildcard-redirects-tree.js";import{shaHexShort as T}from"../../utils/crypto/sha-hex-short.js";import{formatCustomScripts as u,formatCustomLinks as w}from"./format-custom-tags.js";import{applyL10nToRbacConfig as L,resolveDirectoryHashes as O}from"../../utils/rbac.js";import{isConsentEnabled as E}from"../consent/is-consent-enabled.js";import{copySeoAssets as k}from"./copy-seo-assets.js";import{normalizeRedirectSources as G}from"./normalize-redirect-sources.js";import{applyL10nToRedirects as B}from"./apply-l10n-to-redirects.js";import{DEFAULT_LOADERS as _}from"./loaders/index.js";import{resolveSearchFacets as j}from"./resolve-search-facets.js";import{telemetryTraceStep as x}from"../../../cli/telemetry/helpers/trace-step.js";import{transformMdAst as F}from"../markdown/runtime-transform.js";async function er(){return{id:"Config Parser",loaders:_,async processContent(e,{getConfig:n,fs:t}){await x("com.redocly.build.plugin.configParser",async o=>{const{contentDir:l,setGlobalConfig:s,setGlobalData:a}=e,r=await n(),i=r.access||{},d=L(t,i.rbac||{}),f={outdir:e.outdir,contentDir:l,consentEnabled:E(r.consent)},y=await u(r.scripts?.head,f),h=await w(r.links,f),R=await u(r.scripts?.body,f),m=S(r,{headScriptTags:y,linkTags:h,postBodyScriptTags:R});o?.setAttribute("config",JSON.stringify(m));const p=r.redirects?G(r.redirects):{},C=Object.keys(p),P=m.banner?.map(c=>typeof c=="object"&&c!==null&&c.rbac?{...c,[g]:c.rbac}:c);s({...m,banner:P,access:{...i,requiresLogin:!!i.requiresLogin,rbac:d},directoryPaths:await O(t,i.rbac),seo:r.seo&&await k(r.seo,f.contentDir,f.outdir),redirects:B(p,r.l10n),wildcardRedirectsTree:D(p),originalRedirectSources:C}),j(r.search?.filters?.facets||[],e.getSearchFacets,e.setSearchFacets),a({removeAttribution:!!r.removeAttribution})})},async afterRoutesCreated(e,n){M(e);const t=e.getGlobalConfig("banner");if(Array.isArray(t)){const o=await Promise.all(t.map(async(l,s)=>{const{content:a,...r}=l,{ast:i}=await e.parseMarkdoc({input:{content:a,relativePath:"redocly.yaml"},context:n,resource:`redocly.yaml#banner${s}`}),{renderableAst:d}=await F(i,{variables:{},partials:{}},e.serverOutDir);return{...r,ast:d,hash:T(a)}}));e.setGlobalConfig({banner:o})}}}}function M(e){const n=e.getGlobalConfig("access")?.rbac,t=e.getGlobalConfig("directoryPaths");if(!(!n||Object.keys(n).length===0))for(const o of e.getAllRoutes()){if(o.versions&&t){const l=v(o.fsPath)?.filePathInVersion||"index.md";for(const s of o.versions){const a=t[s.folderId],i=a==="."||a==="/"?"":a;s[b]={slug:s.link,fsPath:A.posix.join(i,"@"+s.version,l)}}}o[b]||o[g]||(o[b]={slug:o.slug,fsPath:o.fsPath})}}export{er as configParserPlugin};
@@ -1 +1 @@
1
- import{DEFAULT_SEARCH_ENGINE as m,redocConfigSchema as p,rootRedoclyConfigSchema as t}from"@redocly/config";import A from"is-glob";import{I18N_DIR_NAME as d,L10N_DIR_NAME as u}from"../../../constants/common.js";import{CONFIG_FILE_NAME as f}from"../../../../constants/common.js";import{deepMerge as F}from"../../../../utils/object/deep-merge.js";import{logger as b}from"../../../tools/notifiers/logger.js";import{EntitlementsProvider as C}from"../../../entitlements/entitlements-provider.js";import{readAndValidateConfig as h}from"./utils/read-and-validate-config.js";import{resolveExternalPlugins as E}from"../../../external-plugins/resolve-external-plugins.js";import{getPathForAllLocales as l}from"../../../fs/utils/get-path-for-all-locales.js";import{parseRbacConfig as S}from"../../../utils/rbac.js";import{RbacConfigLocation as v,validateRbacConfig as y}from"../../validate-rbac-config.js";const R=["**/_partials/**"],j=async(e,{fs:r},s)=>{const a=await h(e,r,s,async c=>e===f?L(r.cwd,c?.plugins||[]):void 0);if(a?.access?.rbac){const c=await S(a.access.rbac);a.access.rbac=c,y(c,e===f?v.RootRedoclyYaml:void 0)}(a?.l10n||a?.i18n)&&(a.l10n=I(a),a.i18n=void 0);const i=F(a||{},{markdown:{partialsFolders:(a?.markdown?.partialsFolders||R).flatMap(c=>l(c,r))}});return _({...i,configPath:e,ignore:g(a?.ignore,r)})};async function L(e,r){const s=await E(e,r),a=s.map(n=>n.config.schema?n.lifecyclePlugin.id:""),i={};for(const n of s){const o=n.lifecyclePlugin?.id;n.config.schema&&o&&t.properties&&(i[o]=n.config.schema)}return{...t,properties:{...i,...t.properties,openapi:p},$id:t.$id+a.join("")}}function _(e){const r=C.instance();return r.canAccessFeature("apiFunctions")||(e.apiFunctions=void 0),r.canAccessFeature("products")||(e.products=void 0),r.canAccessFeature("breadcrumbs")||(e.breadcrumbs={hide:!0}),r.canAccessFeature("seo")||(e.seo={llmstxt:{hide:!0}}),r.canAccessFeature("redirects")||(e.redirects={}),r.canAccessFeature("l10n")||(e.l10n=void 0),r.canAccessFeature("rbac")||e.access&&(e.access.rbac=void 0),r.canAccessFeature("sso")||e.access&&(e.access.sso=void 0),r.canAccessFeature("ssoDirect")||(e.ssoDirect=void 0),r.canAccessFeature("catalogClassic")||(e.catalog=void 0,e.catalogClassic=void 0),r.canAccessFeature("scorecard")||(e.scorecard=void 0,e.scorecardClassic=void 0),r.canAccessFeature("scorecards")||(e.scorecards=void 0),r.canAccessFeature("devOnboarding")||(e.developerOnboarding=void 0),r.canAccessFeature("analytics")||(e.analytics=void 0),r.canAccessFeature("removeAttribution")||(e.removeAttribution=void 0),r.canAccessFeature("mockServer")||(e.mockServer={off:!0}),r.canAccessFeature("advancedSearch")||e.search&&(e.search.engine=m),r.canAccessFeature("banner")||(e.banner=void 0),e}function g(e=[],r){return["static",...e].flatMap(s=>A(s)&&(s.startsWith("*")||s.startsWith(u)||s.startsWith("/"+u)||s.startsWith(d)||s.startsWith("/"+d))?s:l(s,r))}function I(e){return e.i18n&&b.warn("The `i18n` configuration is deprecated. Please use `l10n` instead."),e.l10n||e.i18n||{}}export{j as redoclyConfigLoader};
1
+ import{DEFAULT_SEARCH_ENGINE as p,redocConfigSchema as A,rootRedoclyConfigSchema as i}from"@redocly/config";import F from"is-glob";import{I18N_DIR_NAME as u,L10N_DIR_NAME as l}from"../../../constants/common.js";import{CONFIG_FILE_NAME as f}from"../../../../constants/common.js";import{deepMerge as C}from"../../../../utils/object/deep-merge.js";import{logger as o}from"../../../tools/notifiers/logger.js";import{EntitlementsProvider as b}from"../../../entitlements/entitlements-provider.js";import{readAndValidateConfig as h}from"./utils/read-and-validate-config.js";import{resolveExternalPlugins as y}from"../../../external-plugins/resolve-external-plugins.js";import{getPathForAllLocales as m}from"../../../fs/utils/get-path-for-all-locales.js";import{parseRbacConfig as E}from"../../../utils/rbac.js";import{RbacConfigLocation as S,validateRbacConfig as v}from"../../validate-rbac-config.js";const R=["**/_partials/**"],$=async(e,{fs:n},s)=>{const r=await h(e,n,s,async t=>e===f?L(n.cwd,t?.plugins||[]):void 0);if(r?.access?.rbac){const t=await E(r.access.rbac);r.access.rbac=t,v(t,e===f?S.RootRedoclyYaml:void 0)}(r?.l10n||r?.i18n)&&(r.l10n=w(r),r.i18n=void 0);const c=C(r||{},{markdown:{partialsFolders:(r?.markdown?.partialsFolders||R).flatMap(t=>m(t,n))}});return _({...c,configPath:e,ignore:g(r?.ignore,n)})};async function L(e,n){const s=await y(e,n),r=s.map(a=>a.config.schema?a.lifecyclePlugin.id:""),c={};for(const a of s){const d=a.lifecyclePlugin?.id;a.config.schema&&d&&i.properties&&(c[d]=a.config.schema)}return{...i,properties:{...c,...i.properties,openapi:A},$id:i.$id+r.join("")}}function _(e){const n=b.instance();if(n.canAccessFeature("apiFunctions")||(e.apiFunctions=void 0),n.canAccessFeature("products")||(e.products=void 0),n.canAccessFeature("breadcrumbs")||(e.breadcrumbs={hide:!0}),n.canAccessFeature("seo")||(e.seo={llmstxt:{hide:!0}}),n.canAccessFeature("redirects")||(e.redirects={}),n.canAccessFeature("l10n")||(e.l10n=void 0),n.canAccessFeature("rbac")||e.access&&(e.access.rbac=void 0),n.canAccessFeature("sso")||e.access&&(e.access.sso=void 0),n.canAccessFeature("ssoDirect")||(e.ssoDirect=void 0),n.canAccessFeature("catalogClassic")||(e.catalog=void 0,e.catalogClassic=void 0),n.canAccessFeature("scorecard")||(e.scorecard=void 0,e.scorecardClassic=void 0),n.canAccessFeature("scorecards")||(e.scorecards=void 0),n.canAccessFeature("devOnboarding")||(e.developerOnboarding=void 0),n.canAccessFeature("analytics")||(e.analytics=void 0),n.canAccessFeature("removeAttribution")||(e.removeAttribution=void 0),n.canAccessFeature("mockServer")||(e.mockServer={off:!0}),n.canAccessFeature("advancedSearch")||e.search&&(e.search.engine=p),n.canAccessFeature("banner")||(e.banner=void 0),e.consent){const s=n.entitlements;s&&!Object.prototype.hasOwnProperty.call(s,"cookieConsent")?o.warn("The plan gates token has no cookieConsent entry. The consent option stays on."):n.canAccessFeature("cookieConsent")||(o.error("The consent option requires the Enterprise+ plan. It is ignored, and analytics loads without consent."),e.consent=void 0)}return e}function g(e=[],n){return["static",...e].flatMap(s=>F(s)&&(s.startsWith("*")||s.startsWith(l)||s.startsWith("/"+l)||s.startsWith(u)||s.startsWith("/"+u))?s:m(s,n))}function w(e){return e.i18n&&o.warn("The `i18n` configuration is deprecated. Please use `l10n` instead."),e.l10n||e.i18n||{}}export{$ as redoclyConfigLoader};
@@ -1 +1 @@
1
- import v from"path";import{I18N_DIR_NAME as c,L10N_DIR_NAME as p,RESERVED_DIR_NAMES as m,VERSIONED_FOLDER_REGEXP_MATCH as V}from"../../../constants/common.js";import{parsePathVersions as l}from"../../../../utils/path/parse-path-versions.js";import{compareVersions as P}from"../../../../utils/version/compare-versions.js";import{reporter as h}from"../../../tools/notifiers/reporter.js";import{logger as g}from"../../../tools/notifiers/logger.js";const R=async(r,{cache:i,fs:s})=>{const e=new Map,a=await s.scan();await F(a);for(const{relativePath:n}of a){if(v.posix.basename(n)==="versions.yaml"){await y(n,e,i);continue}const o=l(n);if(o==null)continue;const t=e.get(o.versionFolderPath)||{versionedFiles:new Map,versions:[]},f=t.versionedFiles.get(o.filePathInVersion)||new Set,d={version:o.versionName};f.add(d.version),!t.hasVersionsConfig&&t.versions.findIndex(u=>u.version===o.versionName)===-1&&t.versions.push(d),t.versionedFiles.set(o.filePathInVersion,f),e.set(o.versionFolderPath,t)}return w(e)};async function y(r,i,s){let e=v.posix.dirname(r);e==="."?e="/":e=e.endsWith("/")?e:e+"/",e.startsWith(c+"/")&&(e=e.slice(c.length+1)),e.startsWith(p+"/")&&(e=e.slice(p.length+1));const n=(await s.load(r,"yaml")).data;n.versions&&!Array.isArray(n.versions)?(await h.panicOnBuild(`Property 'versions' must be an array at %rp. Got '${typeof n.versions}'.`,r),n.versions=[]):(!n.versions||n.versions.length===0)&&g.warn("Property 'versions' is empty at %rp. This is likely a mistake.",r);const o=i.get(e)||{versionedFiles:new Map,versions:[]};o.hasVersionsConfig=!0,o.versions=n.versions||[],n.default&&(o.defaultVersion=n.default),i.set(e,o)}async function F(r){const i=new Set;for(const{relativePath:s}of r){const e=l(s);if(!(e?.versionFolderPath&&m.includes(e?.versionFolderPath))){if(e?.versionFolderPath==null){(s.match(V)?.length||0)>1&&await h.panicOnBuild(`Nested versions are not supported. Detected nested versions in path: "${s}".`);continue}i.has(e.versionFolderPath)||i.add(e.versionFolderPath)}}}function w(r){for(let[i,s]of r){const e=s.hasVersionsConfig?s.versions:s.versions.sort((o,t)=>P(t.version,o.version)),a=s.hasVersionsConfig?e[e.length-1]:e[0],n=s.defaultVersion||a?.version;r.set(i,{...s,versions:e,defaultVersion:n})}return r}function A(r,i){const s=l(r);return s==null?null:i.get(s.versionFolderPath)?.defaultVersion}export{A as getDefaultVersionByPath,R as versionsConfigLoader};
1
+ import v from"path";import{I18N_DIR_NAME as c,L10N_DIR_NAME as p,RESERVED_DIR_NAMES as u,VERSION_SEPARATOR as V,VERSIONED_FOLDER_REGEXP_MATCH as P}from"../../../constants/common.js";import{parsePathVersions as l}from"../../../../utils/path/parse-path-versions.js";import{compareVersions as g}from"../../../../utils/version/compare-versions.js";import{reporter as h}from"../../../tools/notifiers/reporter.js";import{logger as y}from"../../../tools/notifiers/logger.js";const A=async(i,{cache:r,fs:s})=>{const e=new Map,a=await s.scan();await E(a);for(const{relativePath:n}of a){if(v.posix.basename(n)==="versions.yaml"){await F(n,e,r);continue}const o=l(n);if(o==null||u.includes(V+o.versionName))continue;const t=e.get(o.versionFolderPath)||{versionedFiles:new Map,versions:[]},f=t.versionedFiles.get(o.filePathInVersion)||new Set,d={version:o.versionName};f.add(d.version),!t.hasVersionsConfig&&t.versions.findIndex(m=>m.version===o.versionName)===-1&&t.versions.push(d),t.versionedFiles.set(o.filePathInVersion,f),e.set(o.versionFolderPath,t)}return w(e)};async function F(i,r,s){let e=v.posix.dirname(i);e==="."?e="/":e=e.endsWith("/")?e:e+"/",e.startsWith(c+"/")&&(e=e.slice(c.length+1)),e.startsWith(p+"/")&&(e=e.slice(p.length+1));const n=(await s.load(i,"yaml")).data;n.versions&&!Array.isArray(n.versions)?(await h.panicOnBuild(`Property 'versions' must be an array at %rp. Got '${typeof n.versions}'.`,i),n.versions=[]):(!n.versions||n.versions.length===0)&&y.warn("Property 'versions' is empty at %rp. This is likely a mistake.",i);const o=r.get(e)||{versionedFiles:new Map,versions:[]};o.hasVersionsConfig=!0,o.versions=n.versions||[],n.default&&(o.defaultVersion=n.default),r.set(e,o)}async function E(i){const r=new Set;for(const{relativePath:s}of i){const e=l(s);if(!(e?.versionFolderPath&&u.includes(e?.versionFolderPath))){if(e?.versionFolderPath==null){(s.match(P)?.length||0)>1&&await h.panicOnBuild(`Nested versions are not supported. Detected nested versions in path: "${s}".`);continue}r.has(e.versionFolderPath)||r.add(e.versionFolderPath)}}}function w(i){for(let[r,s]of i){const e=s.hasVersionsConfig?s.versions:s.versions.sort((o,t)=>g(t.version,o.version)),a=s.hasVersionsConfig?e[e.length-1]:e[0],n=s.defaultVersion||a?.version;i.set(r,{...s,versions:e,defaultVersion:n})}return i}function S(i,r){const s=l(i);return s==null?null:r.get(s.versionFolderPath)?.defaultVersion}export{S as getDefaultVersionByPath,A as versionsConfigLoader};
@@ -0,0 +1,6 @@
1
+ import type { ConsentConfig } from '@redocly/config';
2
+ export type ConsentScriptOptions = {
3
+ dataLayerName?: string;
4
+ };
5
+ export declare function buildConsentScript(consent: ConsentConfig, options?: ConsentScriptOptions): string;
6
+ //# sourceMappingURL=build-consent-script.d.ts.map