zuplo 6.67.32 → 6.68.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.
Files changed (644) hide show
  1. package/README.md +9 -0
  2. package/docs/_index.md +44 -0
  3. package/docs/ai-gateway/apps.mdx +28 -0
  4. package/docs/ai-gateway/custom-providers.mdx +54 -0
  5. package/docs/ai-gateway/getting-started.mdx +224 -0
  6. package/docs/ai-gateway/guardrails.mdx +65 -0
  7. package/docs/ai-gateway/integrations/ai-sdk.mdx +109 -0
  8. package/docs/ai-gateway/integrations/claude-code.mdx +49 -0
  9. package/docs/ai-gateway/integrations/codex.mdx +78 -0
  10. package/docs/ai-gateway/integrations/goose.mdx +104 -0
  11. package/docs/ai-gateway/integrations/langchain.mdx +66 -0
  12. package/docs/ai-gateway/integrations/openai.mdx +99 -0
  13. package/docs/ai-gateway/introduction.mdx +85 -0
  14. package/docs/ai-gateway/managing-apps.mdx +46 -0
  15. package/docs/ai-gateway/managing-providers.mdx +66 -0
  16. package/docs/ai-gateway/managing-teams.mdx +63 -0
  17. package/docs/ai-gateway/policies/akamai-ai-firewall.mdx +125 -0
  18. package/docs/ai-gateway/policies/comet-opik-tracing.mdx +139 -0
  19. package/docs/ai-gateway/policies/galileo-tracing.mdx +147 -0
  20. package/docs/ai-gateway/providers.mdx +32 -0
  21. package/docs/ai-gateway/teams.mdx +38 -0
  22. package/docs/ai-gateway/universal-api.mdx +43 -0
  23. package/docs/ai-gateway/usage-limits.mdx +89 -0
  24. package/docs/api-management/introduction.md +127 -0
  25. package/docs/articles/accounts/audit-logs.mdx +227 -0
  26. package/docs/articles/accounts/billing.mdx +25 -0
  27. package/docs/articles/accounts/default-api-key.mdx +30 -0
  28. package/docs/articles/accounts/delete-account.mdx +36 -0
  29. package/docs/articles/accounts/enterprise-sso.mdx +116 -0
  30. package/docs/articles/accounts/managing-account-members.mdx +45 -0
  31. package/docs/articles/accounts/managing-project-members.mdx +37 -0
  32. package/docs/articles/accounts/members-and-roles.mdx +21 -0
  33. package/docs/articles/accounts/roles-and-permissions.mdx +115 -0
  34. package/docs/articles/accounts/zuplo-api-keys.mdx +94 -0
  35. package/docs/articles/add-api-to-backstage.mdx +216 -0
  36. package/docs/articles/advanced-path-matching.mdx +139 -0
  37. package/docs/articles/api-key-administration.mdx +47 -0
  38. package/docs/articles/api-key-api.mdx +220 -0
  39. package/docs/articles/api-key-authentication.mdx +195 -0
  40. package/docs/articles/api-key-buckets.mdx +61 -0
  41. package/docs/articles/api-key-end-users.mdx +52 -0
  42. package/docs/articles/api-key-leak-detection.mdx +75 -0
  43. package/docs/articles/api-key-management.mdx +100 -0
  44. package/docs/articles/api-key-react-component.mdx +90 -0
  45. package/docs/articles/api-key-service-limits.mdx +14 -0
  46. package/docs/articles/archiving-requests-to-storage.mdx +119 -0
  47. package/docs/articles/branch-based-deployments.mdx +184 -0
  48. package/docs/articles/bypass-policy-for-testing.mdx +117 -0
  49. package/docs/articles/check-ip-address.mdx +17 -0
  50. package/docs/articles/ci-cd-azure/basic-deployment.mdx +49 -0
  51. package/docs/articles/ci-cd-azure/deploy-and-test.mdx +47 -0
  52. package/docs/articles/ci-cd-azure/local-testing.mdx +59 -0
  53. package/docs/articles/ci-cd-azure/multi-stage-deployment.mdx +88 -0
  54. package/docs/articles/ci-cd-azure/pr-preview-environments.mdx +50 -0
  55. package/docs/articles/ci-cd-azure/tag-based-releases.mdx +37 -0
  56. package/docs/articles/ci-cd-bitbucket/basic-deployment.mdx +27 -0
  57. package/docs/articles/ci-cd-bitbucket/deploy-and-test.mdx +41 -0
  58. package/docs/articles/ci-cd-bitbucket/local-testing.mdx +34 -0
  59. package/docs/articles/ci-cd-bitbucket/multi-stage-deployment.mdx +52 -0
  60. package/docs/articles/ci-cd-bitbucket/pr-preview-environments.mdx +46 -0
  61. package/docs/articles/ci-cd-bitbucket/tag-based-releases.mdx +27 -0
  62. package/docs/articles/ci-cd-circleci/basic-deployment.mdx +34 -0
  63. package/docs/articles/ci-cd-circleci/deploy-and-test.mdx +44 -0
  64. package/docs/articles/ci-cd-circleci/local-testing.mdx +50 -0
  65. package/docs/articles/ci-cd-circleci/multi-stage-deployment.mdx +82 -0
  66. package/docs/articles/ci-cd-circleci/pr-preview-environments.mdx +47 -0
  67. package/docs/articles/ci-cd-circleci/tag-based-releases.mdx +38 -0
  68. package/docs/articles/ci-cd-github/basic-deployment.mdx +48 -0
  69. package/docs/articles/ci-cd-github/cleanup-on-branch-delete.mdx +123 -0
  70. package/docs/articles/ci-cd-github/deploy-and-test.mdx +82 -0
  71. package/docs/articles/ci-cd-github/local-testing.mdx +102 -0
  72. package/docs/articles/ci-cd-github/multi-stage-deployment.mdx +136 -0
  73. package/docs/articles/ci-cd-github/pr-preview-environments.mdx +106 -0
  74. package/docs/articles/ci-cd-github/tag-based-releases.mdx +99 -0
  75. package/docs/articles/ci-cd-gitlab/basic-deployment.mdx +28 -0
  76. package/docs/articles/ci-cd-gitlab/deploy-and-test.mdx +44 -0
  77. package/docs/articles/ci-cd-gitlab/local-testing.mdx +39 -0
  78. package/docs/articles/ci-cd-gitlab/mr-preview-environments.mdx +52 -0
  79. package/docs/articles/ci-cd-gitlab/multi-stage-deployment.mdx +64 -0
  80. package/docs/articles/ci-cd-gitlab/tag-based-releases.mdx +28 -0
  81. package/docs/articles/composite-policy-reference.mdx +284 -0
  82. package/docs/articles/configuring-auth0-for-mcp-auth.mdx +186 -0
  83. package/docs/articles/configuring-okta-for-mcp-auth.mdx +208 -0
  84. package/docs/articles/convert-urls-to-openapi.mdx +62 -0
  85. package/docs/articles/cors.mdx +447 -0
  86. package/docs/articles/custom-audit-log-policy.mdx +95 -0
  87. package/docs/articles/custom-ci-cd-azure.mdx +81 -0
  88. package/docs/articles/custom-ci-cd-bitbucket.mdx +80 -0
  89. package/docs/articles/custom-ci-cd-circleci.mdx +78 -0
  90. package/docs/articles/custom-ci-cd-github.mdx +99 -0
  91. package/docs/articles/custom-ci-cd-gitlab.mdx +79 -0
  92. package/docs/articles/custom-ci-cd.mdx +82 -0
  93. package/docs/articles/custom-code-patterns.md +418 -0
  94. package/docs/articles/custom-domains.mdx +258 -0
  95. package/docs/articles/custom-logging-example.mdx +139 -0
  96. package/docs/articles/ddos-protection.mdx +138 -0
  97. package/docs/articles/development-options.mdx +49 -0
  98. package/docs/articles/environment-variables.mdx +134 -0
  99. package/docs/articles/environments.mdx +143 -0
  100. package/docs/articles/fastly-zuplo-host-setup.mdx +41 -0
  101. package/docs/articles/github-deployment-testing.mdx +101 -0
  102. package/docs/articles/gke-with-upstream-auth-policy.mdx +192 -0
  103. package/docs/articles/graphql-security.mdx +180 -0
  104. package/docs/articles/handling-form-data.mdx +61 -0
  105. package/docs/articles/health-checks.mdx +109 -0
  106. package/docs/articles/hosting-options.mdx +70 -0
  107. package/docs/articles/lazy-load-configuration-into-cache.mdx +92 -0
  108. package/docs/articles/limits.mdx +98 -0
  109. package/docs/articles/local-development-debugging.mdx +44 -0
  110. package/docs/articles/local-development-env-variables.mdx +23 -0
  111. package/docs/articles/local-development-installing-packages.mdx +23 -0
  112. package/docs/articles/local-development-routes-designer.mdx +27 -0
  113. package/docs/articles/local-development-services.mdx +40 -0
  114. package/docs/articles/local-development-troubleshooting.mdx +56 -0
  115. package/docs/articles/local-development.mdx +81 -0
  116. package/docs/articles/log-plugin-aws-cloudwatch.mdx +83 -0
  117. package/docs/articles/log-plugin-datadog.mdx +84 -0
  118. package/docs/articles/log-plugin-dynatrace.mdx +75 -0
  119. package/docs/articles/log-plugin-gcp.mdx +75 -0
  120. package/docs/articles/log-plugin-loki.mdx +136 -0
  121. package/docs/articles/log-plugin-new-relic.mdx +84 -0
  122. package/docs/articles/log-plugin-splunk.mdx +104 -0
  123. package/docs/articles/log-plugin-sumo.mdx +73 -0
  124. package/docs/articles/log-plugin-vmware-log-insight.mdx +154 -0
  125. package/docs/articles/log-request-response-data.mdx +398 -0
  126. package/docs/articles/logging.mdx +115 -0
  127. package/docs/articles/manual-mcp-oauth-testing.mdx +193 -0
  128. package/docs/articles/mcp-quickstart.mdx +135 -0
  129. package/docs/articles/metrics-plugins.mdx +371 -0
  130. package/docs/articles/migrate-from-apigee.md +408 -0
  131. package/docs/articles/migrate-from-aws-api-gateway.md +248 -0
  132. package/docs/articles/migrate-from-azure-apim.md +292 -0
  133. package/docs/articles/migrate-from-kong.md +300 -0
  134. package/docs/articles/migration-overview.md +81 -0
  135. package/docs/articles/monetization/api-access.mdx +69 -0
  136. package/docs/articles/monetization/billing-models.md +520 -0
  137. package/docs/articles/monetization/developer-portal.md +167 -0
  138. package/docs/articles/monetization/features.mdx +98 -0
  139. package/docs/articles/monetization/index.mdx +113 -0
  140. package/docs/articles/monetization/meters.mdx +135 -0
  141. package/docs/articles/monetization/monetization-policy.md +314 -0
  142. package/docs/articles/monetization/plan-examples.mdx +366 -0
  143. package/docs/articles/monetization/plans.mdx +266 -0
  144. package/docs/articles/monetization/pricing-models.mdx +225 -0
  145. package/docs/articles/monetization/private-plans.md +154 -0
  146. package/docs/articles/monetization/quickstart.md +355 -0
  147. package/docs/articles/monetization/rate-cards.mdx +171 -0
  148. package/docs/articles/monetization/stripe-integration.md +195 -0
  149. package/docs/articles/monetization/subscription-lifecycle.md +298 -0
  150. package/docs/articles/monetization/tax-collection.md +166 -0
  151. package/docs/articles/monetization/troubleshooting.md +272 -0
  152. package/docs/articles/monetization-custom.mdx +71 -0
  153. package/docs/articles/monetization-integrations.mdx +104 -0
  154. package/docs/articles/monitoring-your-gateway.mdx +53 -0
  155. package/docs/articles/monorepo-deployment.mdx +350 -0
  156. package/docs/articles/multiple-auth-policies.mdx +81 -0
  157. package/docs/articles/non-standard-ports.mdx +30 -0
  158. package/docs/articles/oauth-authentication.mdx +54 -0
  159. package/docs/articles/openapi-server-urls.mdx +60 -0
  160. package/docs/articles/openapi.mdx +130 -0
  161. package/docs/articles/opentelemetry.mdx +250 -0
  162. package/docs/articles/per-user-rate-limits-using-db.mdx +112 -0
  163. package/docs/articles/performance-testing.mdx +304 -0
  164. package/docs/articles/plugin-akamai-api-security.mdx +76 -0
  165. package/docs/articles/plugin-azure-blob.mdx +73 -0
  166. package/docs/articles/plugin-azure-event-hubs.mdx +64 -0
  167. package/docs/articles/plugin-hydrolix-traffic-peak.mdx +147 -0
  168. package/docs/articles/policies.mdx +33 -0
  169. package/docs/articles/rename-or-move-project.mdx +39 -0
  170. package/docs/articles/rick-and-morty-api-developer-portal-example.mdx +23 -0
  171. package/docs/articles/routing.mdx +193 -0
  172. package/docs/articles/s3-signed-url-uploads.mdx +521 -0
  173. package/docs/articles/secure-tunnel.mdx +84 -0
  174. package/docs/articles/securing-backend-mtls.mdx +268 -0
  175. package/docs/articles/securing-your-backend.mdx +148 -0
  176. package/docs/articles/security.mdx +105 -0
  177. package/docs/articles/sharing-code-across-projects.mdx +412 -0
  178. package/docs/articles/source-control-setup-azure.mdx +13 -0
  179. package/docs/articles/source-control-setup-bitbucket.mdx +43 -0
  180. package/docs/articles/source-control-setup-github.mdx +172 -0
  181. package/docs/articles/source-control-setup-gitlab.mdx +12 -0
  182. package/docs/articles/source-control.mdx +80 -0
  183. package/docs/articles/step-1-setup-basic-gateway-local.mdx +136 -0
  184. package/docs/articles/step-1-setup-basic-gateway.mdx +118 -0
  185. package/docs/articles/step-2-add-rate-limiting-local.mdx +126 -0
  186. package/docs/articles/step-2-add-rate-limiting.mdx +82 -0
  187. package/docs/articles/step-3-add-api-key-auth-local.mdx +199 -0
  188. package/docs/articles/step-3-add-api-key-auth.mdx +166 -0
  189. package/docs/articles/step-4-deploying-to-the-edge.mdx +220 -0
  190. package/docs/articles/step-5-dynamic-rate-limiting.mdx +167 -0
  191. package/docs/articles/support.mdx +144 -0
  192. package/docs/articles/terraform.mdx +114 -0
  193. package/docs/articles/testing-graphql.mdx +34 -0
  194. package/docs/articles/testing.mdx +522 -0
  195. package/docs/articles/troubleshooting-slow-responses.mdx +301 -0
  196. package/docs/articles/troubleshooting.md +302 -0
  197. package/docs/articles/tsconfig.mdx +105 -0
  198. package/docs/articles/tunnel-setup.mdx +195 -0
  199. package/docs/articles/tunnel-troubleshooting.mdx +50 -0
  200. package/docs/articles/update-zup-in-github-action.mdx +110 -0
  201. package/docs/articles/use-openapi-extension-data.mdx +79 -0
  202. package/docs/articles/users/multifactor-authentication.mdx +64 -0
  203. package/docs/articles/users/profile.mdx +13 -0
  204. package/docs/articles/versioning-on-zuplo.mdx +89 -0
  205. package/docs/articles/waf-ddos-akamai.md +133 -0
  206. package/docs/articles/waf-ddos-aws-waf-shield.mdx +85 -0
  207. package/docs/articles/waf-ddos-fastly.mdx +251 -0
  208. package/docs/articles/waf-ddos.mdx +140 -0
  209. package/docs/articles/zuplo-waf.mdx +156 -0
  210. package/docs/ask.mdx +3 -0
  211. package/docs/cli/authentication.mdx +56 -0
  212. package/docs/cli/connectivity.mdx +38 -0
  213. package/docs/cli/create-zuplo-api.mdx +80 -0
  214. package/docs/cli/delete.mdx +79 -0
  215. package/docs/cli/deploy.mdx +156 -0
  216. package/docs/cli/deploy.partial.mdx +46 -0
  217. package/docs/cli/dev.mdx +115 -0
  218. package/docs/cli/docs.mdx +66 -0
  219. package/docs/cli/editor.mdx +50 -0
  220. package/docs/cli/global-options.mdx +19 -0
  221. package/docs/cli/init.mdx +74 -0
  222. package/docs/cli/link.mdx +74 -0
  223. package/docs/cli/list.mdx +55 -0
  224. package/docs/cli/mtls-certificate-create.mdx +94 -0
  225. package/docs/cli/mtls-certificate-delete.mdx +55 -0
  226. package/docs/cli/mtls-certificate-describe.mdx +55 -0
  227. package/docs/cli/mtls-certificate-disable.mdx +55 -0
  228. package/docs/cli/mtls-certificate-list.mdx +47 -0
  229. package/docs/cli/mtls-certificate-update.mdx +72 -0
  230. package/docs/cli/openapi-convert.mdx +111 -0
  231. package/docs/cli/openapi-merge.mdx +138 -0
  232. package/docs/cli/openapi-merge.partial.mdx +29 -0
  233. package/docs/cli/openapi-overlay.mdx +123 -0
  234. package/docs/cli/overview.mdx +78 -0
  235. package/docs/cli/project-create.mdx +43 -0
  236. package/docs/cli/source-migrate.mdx +18 -0
  237. package/docs/cli/source-upgrade.mdx +41 -0
  238. package/docs/cli/test.mdx +70 -0
  239. package/docs/cli/test.partial.mdx +7 -0
  240. package/docs/cli/tunnel-create.mdx +53 -0
  241. package/docs/cli/tunnel-create.partial.mdx +9 -0
  242. package/docs/cli/tunnel-delete.mdx +35 -0
  243. package/docs/cli/tunnel-delete.partial.mdx +9 -0
  244. package/docs/cli/tunnel-describe.mdx +45 -0
  245. package/docs/cli/tunnel-describe.partial.mdx +5 -0
  246. package/docs/cli/tunnel-list.mdx +35 -0
  247. package/docs/cli/tunnel-list.partial.mdx +9 -0
  248. package/docs/cli/tunnel-rate-token.partial.mdx +9 -0
  249. package/docs/cli/tunnel-rotate-token.mdx +39 -0
  250. package/docs/cli/tunnel-services-describe.mdx +45 -0
  251. package/docs/cli/tunnel-services-describe.partial.mdx +9 -0
  252. package/docs/cli/tunnel-services-update.mdx +48 -0
  253. package/docs/cli/variable-create.mdx +91 -0
  254. package/docs/cli/variable-create.partial.mdx +5 -0
  255. package/docs/cli/variable-update.mdx +75 -0
  256. package/docs/cli/variable-update.partial.mdx +5 -0
  257. package/docs/concepts/api-keys.md +146 -0
  258. package/docs/concepts/authentication.mdx +109 -0
  259. package/docs/concepts/how-zuplo-works.mdx +120 -0
  260. package/docs/concepts/project-structure.mdx +174 -0
  261. package/docs/concepts/rate-limiting.md +246 -0
  262. package/docs/concepts/request-lifecycle.mdx +56 -0
  263. package/docs/concepts/source-control-and-deployment.mdx +229 -0
  264. package/docs/conferences/conference-prize-terms.mdx +80 -0
  265. package/docs/dedicated/akamai/ai-powered-applications.mdx +223 -0
  266. package/docs/dedicated/akamai/architecture.mdx +280 -0
  267. package/docs/dedicated/akamai/caching.mdx +212 -0
  268. package/docs/dedicated/akamai/cdn.mdx +156 -0
  269. package/docs/dedicated/architecture.mdx +208 -0
  270. package/docs/dedicated/custom-domains.mdx +31 -0
  271. package/docs/dedicated/federated-gateways.mdx +80 -0
  272. package/docs/dedicated/networking.mdx +69 -0
  273. package/docs/dedicated/overview.mdx +80 -0
  274. package/docs/dedicated/source-control.mdx +63 -0
  275. package/docs/dev-portal/dev-portal-create-consumer-on-auth.mdx +134 -0
  276. package/docs/dev-portal/introduction.mdx +65 -0
  277. package/docs/dev-portal/local-development.mdx +72 -0
  278. package/docs/dev-portal/migration.mdx +526 -0
  279. package/docs/dev-portal/node-modules.mdx +45 -0
  280. package/docs/dev-portal/updating.mdx +28 -0
  281. package/docs/dev-portal/zudoku/components/alert.mdx +130 -0
  282. package/docs/dev-portal/zudoku/components/badge.mdx +70 -0
  283. package/docs/dev-portal/zudoku/components/button.mdx +132 -0
  284. package/docs/dev-portal/zudoku/components/callout.mdx +112 -0
  285. package/docs/dev-portal/zudoku/components/card.mdx +104 -0
  286. package/docs/dev-portal/zudoku/components/checkbox.mdx +72 -0
  287. package/docs/dev-portal/zudoku/components/client-only.mdx +79 -0
  288. package/docs/dev-portal/zudoku/components/code-tabs.mdx +179 -0
  289. package/docs/dev-portal/zudoku/components/dialog.mdx +167 -0
  290. package/docs/dev-portal/zudoku/components/head.mdx +199 -0
  291. package/docs/dev-portal/zudoku/components/icons.mdx +27 -0
  292. package/docs/dev-portal/zudoku/components/input.mdx +96 -0
  293. package/docs/dev-portal/zudoku/components/label.mdx +86 -0
  294. package/docs/dev-portal/zudoku/components/link.mdx +242 -0
  295. package/docs/dev-portal/zudoku/components/markdown.mdx +151 -0
  296. package/docs/dev-portal/zudoku/components/mermaid.mdx +81 -0
  297. package/docs/dev-portal/zudoku/components/playground.mdx +87 -0
  298. package/docs/dev-portal/zudoku/components/secret.mdx +78 -0
  299. package/docs/dev-portal/zudoku/components/select.mdx +176 -0
  300. package/docs/dev-portal/zudoku/components/shadcn.mdx +73 -0
  301. package/docs/dev-portal/zudoku/components/slider.mdx +108 -0
  302. package/docs/dev-portal/zudoku/components/slot.mdx +119 -0
  303. package/docs/dev-portal/zudoku/components/stepper.mdx +138 -0
  304. package/docs/dev-portal/zudoku/components/switch.mdx +96 -0
  305. package/docs/dev-portal/zudoku/components/syntax-highlight.mdx +602 -0
  306. package/docs/dev-portal/zudoku/components/textarea.mdx +78 -0
  307. package/docs/dev-portal/zudoku/components/tooltip.mdx +195 -0
  308. package/docs/dev-portal/zudoku/components/typography.mdx +61 -0
  309. package/docs/dev-portal/zudoku/configuration/ai-assistants.md +64 -0
  310. package/docs/dev-portal/zudoku/configuration/api-catalog.md +108 -0
  311. package/docs/dev-portal/zudoku/configuration/api-reference.md +397 -0
  312. package/docs/dev-portal/zudoku/configuration/authentication-auth0.md +173 -0
  313. package/docs/dev-portal/zudoku/configuration/authentication-azure-ad.md +238 -0
  314. package/docs/dev-portal/zudoku/configuration/authentication-clerk.md +110 -0
  315. package/docs/dev-portal/zudoku/configuration/authentication-firebase.md +61 -0
  316. package/docs/dev-portal/zudoku/configuration/authentication-pingfederate.md +136 -0
  317. package/docs/dev-portal/zudoku/configuration/authentication-supabase.md +225 -0
  318. package/docs/dev-portal/zudoku/configuration/authentication.md +199 -0
  319. package/docs/dev-portal/zudoku/configuration/build-configuration.mdx +147 -0
  320. package/docs/dev-portal/zudoku/configuration/docs.md +282 -0
  321. package/docs/dev-portal/zudoku/configuration/footer.mdx +214 -0
  322. package/docs/dev-portal/zudoku/configuration/llms.md +89 -0
  323. package/docs/dev-portal/zudoku/configuration/navigation.mdx +408 -0
  324. package/docs/dev-portal/zudoku/configuration/overview.md +380 -0
  325. package/docs/dev-portal/zudoku/configuration/protected-routes.md +149 -0
  326. package/docs/dev-portal/zudoku/configuration/search.md +169 -0
  327. package/docs/dev-portal/zudoku/configuration/sentry.mdx +44 -0
  328. package/docs/dev-portal/zudoku/configuration/site.md +124 -0
  329. package/docs/dev-portal/zudoku/configuration/slots.mdx +124 -0
  330. package/docs/dev-portal/zudoku/configuration/vite-config.md +18 -0
  331. package/docs/dev-portal/zudoku/custom-plugins.md +287 -0
  332. package/docs/dev-portal/zudoku/customization/colors-theme.mdx +275 -0
  333. package/docs/dev-portal/zudoku/customization/fonts.md +110 -0
  334. package/docs/dev-portal/zudoku/extending/events.md +124 -0
  335. package/docs/dev-portal/zudoku/guides/custom-pages.md +106 -0
  336. package/docs/dev-portal/zudoku/guides/environment-variables.md +99 -0
  337. package/docs/dev-portal/zudoku/guides/mermaid.mdx +70 -0
  338. package/docs/dev-portal/zudoku/guides/navigation-migration.md +87 -0
  339. package/docs/dev-portal/zudoku/guides/navigation-rules.mdx +197 -0
  340. package/docs/dev-portal/zudoku/guides/processors.mdx +234 -0
  341. package/docs/dev-portal/zudoku/guides/static-files.md +55 -0
  342. package/docs/dev-portal/zudoku/guides/transforming-examples.md +156 -0
  343. package/docs/dev-portal/zudoku/guides/using-multiple-apis.md +87 -0
  344. package/docs/dev-portal/zudoku/markdown/admonitions.md +128 -0
  345. package/docs/dev-portal/zudoku/markdown/code-blocks.md +196 -0
  346. package/docs/dev-portal/zudoku/markdown/frontmatter.md +172 -0
  347. package/docs/dev-portal/zudoku/markdown/mdx.md +68 -0
  348. package/docs/dev-portal/zudoku/markdown/overview.md +275 -0
  349. package/docs/dev-portal/zudoku/plugins.md +5 -0
  350. package/docs/dev-portal/zudoku/writing.mdx +72 -0
  351. package/docs/errors/bad-request.mdx +39 -0
  352. package/docs/errors/build-error.mdx +45 -0
  353. package/docs/errors/fatal-project-error.mdx +39 -0
  354. package/docs/errors/gateway-timeout.mdx +33 -0
  355. package/docs/errors/get-head-body-error.mdx +41 -0
  356. package/docs/errors/main-mod-error.mdx +40 -0
  357. package/docs/errors/no-project-set.mdx +41 -0
  358. package/docs/errors/not-found.mdx +43 -0
  359. package/docs/errors/rate-limit-exceeded.mdx +31 -0
  360. package/docs/errors/schema-validation-failed.mdx +51 -0
  361. package/docs/errors/system-configuration-error.mdx +44 -0
  362. package/docs/errors/unauthorized.mdx +50 -0
  363. package/docs/errors/unknown-error.mdx +42 -0
  364. package/docs/errors.mdx +14 -0
  365. package/docs/guides/canary-routing-for-employees.mdx +385 -0
  366. package/docs/guides/geolocation-backend-routing.mdx +404 -0
  367. package/docs/guides/modify-openapi-paths.mdx +371 -0
  368. package/docs/guides/openapi-overlays.mdx +492 -0
  369. package/docs/guides/overview.mdx +12 -0
  370. package/docs/guides/user-based-backend-routing.mdx +437 -0
  371. package/docs/handlers/aws-lambda.mdx +201 -0
  372. package/docs/handlers/custom-handler.mdx +112 -0
  373. package/docs/handlers/legacy-dev-portal-handler.mdx +135 -0
  374. package/docs/handlers/mcp-server.mdx +730 -0
  375. package/docs/handlers/openapi.mdx +78 -0
  376. package/docs/handlers/redirect.mdx +115 -0
  377. package/docs/handlers/system-handlers.mdx +41 -0
  378. package/docs/handlers/url-forward.mdx +204 -0
  379. package/docs/handlers/url-rewrite.mdx +224 -0
  380. package/docs/handlers/websocket-handler.mdx +154 -0
  381. package/docs/home.mdx +6 -0
  382. package/docs/managed-edge/overview.md +78 -0
  383. package/docs/mcp-server/configuration-migration-guide.mdx +344 -0
  384. package/docs/mcp-server/custom-tools.mdx +487 -0
  385. package/docs/mcp-server/graphql.mdx +241 -0
  386. package/docs/mcp-server/introduction.mdx +122 -0
  387. package/docs/mcp-server/openai-apps-sdk.mdx +160 -0
  388. package/docs/mcp-server/prompts.mdx +283 -0
  389. package/docs/mcp-server/resources.mdx +288 -0
  390. package/docs/mcp-server/testing.mdx +53 -0
  391. package/docs/mcp-server/tools.mdx +306 -0
  392. package/docs/policies/_index.md +92 -0
  393. package/docs/policies/ab-test-inbound/intro.md +8 -0
  394. package/docs/policies/ab-test-inbound/policy.ts +14 -0
  395. package/docs/policies/ab-test-inbound/schema.json +27 -0
  396. package/docs/policies/ab-test-outbound/intro.md +8 -0
  397. package/docs/policies/ab-test-outbound/policy.ts +26 -0
  398. package/docs/policies/ab-test-outbound/schema.json +27 -0
  399. package/docs/policies/acl-policy-inbound/intro.md +5 -0
  400. package/docs/policies/acl-policy-inbound/policy.ts +32 -0
  401. package/docs/policies/acl-policy-inbound/schema.json +52 -0
  402. package/docs/policies/akamai-ai-firewall/schema.json +98 -0
  403. package/docs/policies/amberflo-metering-inbound/doc.md +183 -0
  404. package/docs/policies/amberflo-metering-inbound/intro.md +20 -0
  405. package/docs/policies/amberflo-metering-inbound/schema.json +108 -0
  406. package/docs/policies/api-key-inbound/doc.md +77 -0
  407. package/docs/policies/api-key-inbound/intro.md +30 -0
  408. package/docs/policies/api-key-inbound/schema.json +84 -0
  409. package/docs/policies/archive-request-aws-s3-inbound/intro.md +4 -0
  410. package/docs/policies/archive-request-aws-s3-inbound/policy.ts +58 -0
  411. package/docs/policies/archive-request-aws-s3-inbound/schema.json +68 -0
  412. package/docs/policies/archive-request-azure-storage-inbound/doc.md +31 -0
  413. package/docs/policies/archive-request-azure-storage-inbound/intro.md +4 -0
  414. package/docs/policies/archive-request-azure-storage-inbound/policy.ts +54 -0
  415. package/docs/policies/archive-request-azure-storage-inbound/schema.json +53 -0
  416. package/docs/policies/archive-request-gcp-storage-inbound/doc.md +63 -0
  417. package/docs/policies/archive-request-gcp-storage-inbound/intro.md +4 -0
  418. package/docs/policies/archive-request-gcp-storage-inbound/policy.ts +68 -0
  419. package/docs/policies/archive-request-gcp-storage-inbound/schema.json +47 -0
  420. package/docs/policies/archive-response-aws-s3-outbound/intro.md +2 -0
  421. package/docs/policies/archive-response-aws-s3-outbound/policy.ts +59 -0
  422. package/docs/policies/archive-response-aws-s3-outbound/schema.json +68 -0
  423. package/docs/policies/archive-response-azure-storage-outbound/doc.md +31 -0
  424. package/docs/policies/archive-response-azure-storage-outbound/intro.md +3 -0
  425. package/docs/policies/archive-response-azure-storage-outbound/policy.ts +54 -0
  426. package/docs/policies/archive-response-azure-storage-outbound/schema.json +53 -0
  427. package/docs/policies/audit-log-inbound/doc.md +78 -0
  428. package/docs/policies/audit-log-inbound/intro.md +10 -0
  429. package/docs/policies/audit-log-inbound/schema.json +81 -0
  430. package/docs/policies/auth0-jwt-auth-inbound/doc.md +125 -0
  431. package/docs/policies/auth0-jwt-auth-inbound/intro.md +17 -0
  432. package/docs/policies/auth0-jwt-auth-inbound/schema.json +74 -0
  433. package/docs/policies/authzen-inbound/doc.md +24 -0
  434. package/docs/policies/authzen-inbound/intro.md +31 -0
  435. package/docs/policies/authzen-inbound/schema.json +126 -0
  436. package/docs/policies/axiomatics-authz-inbound/doc.md +144 -0
  437. package/docs/policies/axiomatics-authz-inbound/intro.md +11 -0
  438. package/docs/policies/axiomatics-authz-inbound/schema.json +161 -0
  439. package/docs/policies/basic-auth-inbound/intro.md +9 -0
  440. package/docs/policies/basic-auth-inbound/schema.json +99 -0
  441. package/docs/policies/bot-detection-inbound/intro.md +4 -0
  442. package/docs/policies/bot-detection-inbound/schema.json +56 -0
  443. package/docs/policies/brownout-inbound/doc.md +55 -0
  444. package/docs/policies/brownout-inbound/intro.md +12 -0
  445. package/docs/policies/brownout-inbound/schema.json +115 -0
  446. package/docs/policies/caching-inbound/doc.md +209 -0
  447. package/docs/policies/caching-inbound/intro.md +23 -0
  448. package/docs/policies/caching-inbound/schema.json +98 -0
  449. package/docs/policies/change-method-inbound/schema.json +56 -0
  450. package/docs/policies/clear-headers-inbound/schema.json +59 -0
  451. package/docs/policies/clear-headers-outbound/schema.json +59 -0
  452. package/docs/policies/clerk-jwt-auth-inbound/doc.md +85 -0
  453. package/docs/policies/clerk-jwt-auth-inbound/intro.md +4 -0
  454. package/docs/policies/clerk-jwt-auth-inbound/schema.json +68 -0
  455. package/docs/policies/cognito-jwt-auth-inbound/intro.md +7 -0
  456. package/docs/policies/cognito-jwt-auth-inbound/schema.json +74 -0
  457. package/docs/policies/comet-opik-tracing-inbound/schema.json +65 -0
  458. package/docs/policies/complex-rate-limit-inbound/doc.md +20 -0
  459. package/docs/policies/complex-rate-limit-inbound/intro.md +23 -0
  460. package/docs/policies/complex-rate-limit-inbound/schema.json +142 -0
  461. package/docs/policies/composite-inbound/doc.md +69 -0
  462. package/docs/policies/composite-inbound/intro.md +15 -0
  463. package/docs/policies/composite-inbound/schema.json +59 -0
  464. package/docs/policies/composite-outbound/intro.md +6 -0
  465. package/docs/policies/composite-outbound/schema.json +59 -0
  466. package/docs/policies/curity-phantom-token-inbound/doc.md +109 -0
  467. package/docs/policies/curity-phantom-token-inbound/intro.md +3 -0
  468. package/docs/policies/curity-phantom-token-inbound/schema.json +68 -0
  469. package/docs/policies/custom-code-inbound/doc.md +267 -0
  470. package/docs/policies/custom-code-inbound/intro.md +2 -0
  471. package/docs/policies/custom-code-inbound/schema.json +48 -0
  472. package/docs/policies/custom-code-outbound/doc.md +235 -0
  473. package/docs/policies/custom-code-outbound/intro.md +2 -0
  474. package/docs/policies/custom-code-outbound/schema.json +43 -0
  475. package/docs/policies/firebase-jwt-inbound/intro.md +6 -0
  476. package/docs/policies/firebase-jwt-inbound/schema.json +68 -0
  477. package/docs/policies/formdata-to-json-inbound/schema.json +60 -0
  478. package/docs/policies/galileo-tracing-inbound/schema.json +65 -0
  479. package/docs/policies/geo-filter-inbound/doc.md +33 -0
  480. package/docs/policies/geo-filter-inbound/schema.json +108 -0
  481. package/docs/policies/graphql-complexity-limit-inbound/doc.md +48 -0
  482. package/docs/policies/graphql-complexity-limit-inbound/intro.md +2 -0
  483. package/docs/policies/graphql-complexity-limit-inbound/schema.json +90 -0
  484. package/docs/policies/graphql-disable-introspection-inbound/doc.md +66 -0
  485. package/docs/policies/graphql-disable-introspection-inbound/intro.md +15 -0
  486. package/docs/policies/graphql-disable-introspection-inbound/schema.json +48 -0
  487. package/docs/policies/graphql-introspection-filter-outbound/doc.md +148 -0
  488. package/docs/policies/graphql-introspection-filter-outbound/schema.json +79 -0
  489. package/docs/policies/hmac-auth-inbound/doc.md +30 -0
  490. package/docs/policies/hmac-auth-inbound/intro.md +10 -0
  491. package/docs/policies/hmac-auth-inbound/policy.ts +70 -0
  492. package/docs/policies/hmac-auth-inbound/schema.json +53 -0
  493. package/docs/policies/http-deprecation-outbound/doc.md +73 -0
  494. package/docs/policies/http-deprecation-outbound/schema.json +83 -0
  495. package/docs/policies/ip-restriction-inbound/intro.md +8 -0
  496. package/docs/policies/ip-restriction-inbound/policy.ts +40 -0
  497. package/docs/policies/ip-restriction-inbound/schema.json +58 -0
  498. package/docs/policies/jwt-scopes-inbound/schema.json +59 -0
  499. package/docs/policies/ldap-auth-inbound/schema.json +56 -0
  500. package/docs/policies/mock-api-inbound/schema.json +72 -0
  501. package/docs/policies/moesif-inbound/doc.md +44 -0
  502. package/docs/policies/moesif-inbound/intro.md +6 -0
  503. package/docs/policies/moesif-inbound/schema.json +68 -0
  504. package/docs/policies/monetization-inbound/doc.md +87 -0
  505. package/docs/policies/monetization-inbound/intro.md +6 -0
  506. package/docs/policies/monetization-inbound/schema.json +102 -0
  507. package/docs/policies/mtls-auth-inbound/intro.md +6 -0
  508. package/docs/policies/mtls-auth-inbound/schema.json +68 -0
  509. package/docs/policies/okta-fga-authz-inbound/doc.md +181 -0
  510. package/docs/policies/okta-fga-authz-inbound/intro.md +20 -0
  511. package/docs/policies/okta-fga-authz-inbound/schema.json +104 -0
  512. package/docs/policies/okta-jwt-auth-inbound/intro.md +7 -0
  513. package/docs/policies/okta-jwt-auth-inbound/schema.json +74 -0
  514. package/docs/policies/open-id-jwt-auth-inbound/doc.md +58 -0
  515. package/docs/policies/open-id-jwt-auth-inbound/intro.md +30 -0
  516. package/docs/policies/open-id-jwt-auth-inbound/schema.json +128 -0
  517. package/docs/policies/openfga-authz-inbound/doc.md +207 -0
  518. package/docs/policies/openfga-authz-inbound/intro.md +17 -0
  519. package/docs/policies/openfga-authz-inbound/schema.json +191 -0
  520. package/docs/policies/openmeter-inbound/doc.md +163 -0
  521. package/docs/policies/openmeter-inbound/intro.md +18 -0
  522. package/docs/policies/openmeter-inbound/schema.json +183 -0
  523. package/docs/policies/prompt-injection-outbound/doc.md +106 -0
  524. package/docs/policies/prompt-injection-outbound/intro.md +4 -0
  525. package/docs/policies/prompt-injection-outbound/schema.json +74 -0
  526. package/docs/policies/propel-auth-jwt-inbound/doc.md +88 -0
  527. package/docs/policies/propel-auth-jwt-inbound/intro.md +4 -0
  528. package/docs/policies/propel-auth-jwt-inbound/schema.json +74 -0
  529. package/docs/policies/query-param-to-header-inbound/doc.md +70 -0
  530. package/docs/policies/query-param-to-header-inbound/intro.md +5 -0
  531. package/docs/policies/query-param-to-header-inbound/schema.json +74 -0
  532. package/docs/policies/quota-inbound/doc.md +235 -0
  533. package/docs/policies/quota-inbound/intro.md +7 -0
  534. package/docs/policies/quota-inbound/schema.json +133 -0
  535. package/docs/policies/rate-limit-inbound/doc.md +78 -0
  536. package/docs/policies/rate-limit-inbound/intro.md +30 -0
  537. package/docs/policies/rate-limit-inbound/schema.json +134 -0
  538. package/docs/policies/rbac-policy-inbound/intro.md +3 -0
  539. package/docs/policies/rbac-policy-inbound/policy.ts +42 -0
  540. package/docs/policies/rbac-policy-inbound/schema.json +52 -0
  541. package/docs/policies/readme-metrics-inbound/doc.md +1 -0
  542. package/docs/policies/readme-metrics-inbound/intro.md +3 -0
  543. package/docs/policies/readme-metrics-inbound/schema.json +84 -0
  544. package/docs/policies/remove-headers-inbound/schema.json +59 -0
  545. package/docs/policies/remove-headers-outbound/schema.json +59 -0
  546. package/docs/policies/remove-query-params-inbound/schema.json +59 -0
  547. package/docs/policies/replace-string-outbound/schema.json +69 -0
  548. package/docs/policies/request-size-limit-inbound/schema.json +60 -0
  549. package/docs/policies/request-validation-inbound/doc.md +72 -0
  550. package/docs/policies/request-validation-inbound/intro.md +24 -0
  551. package/docs/policies/request-validation-inbound/schema.json +98 -0
  552. package/docs/policies/require-origin-inbound/intro.md +12 -0
  553. package/docs/policies/require-origin-inbound/schema.json +65 -0
  554. package/docs/policies/secret-masking-outbound/doc.md +41 -0
  555. package/docs/policies/secret-masking-outbound/intro.md +13 -0
  556. package/docs/policies/secret-masking-outbound/schema.json +65 -0
  557. package/docs/policies/semantic-cache-inbound/doc.md +63 -0
  558. package/docs/policies/semantic-cache-inbound/intro.md +4 -0
  559. package/docs/policies/semantic-cache-inbound/schema.json +179 -0
  560. package/docs/policies/set-body-inbound/intro.md +7 -0
  561. package/docs/policies/set-body-inbound/schema.json +56 -0
  562. package/docs/policies/set-headers-inbound/doc.md +41 -0
  563. package/docs/policies/set-headers-inbound/intro.md +2 -0
  564. package/docs/policies/set-headers-inbound/schema.json +83 -0
  565. package/docs/policies/set-headers-outbound/schema.json +83 -0
  566. package/docs/policies/set-query-params-inbound/schema.json +83 -0
  567. package/docs/policies/set-status-outbound/schema.json +62 -0
  568. package/docs/policies/sleep-inbound/schema.json +56 -0
  569. package/docs/policies/stripe-webhook-verification-inbound/intro.md +2 -0
  570. package/docs/policies/stripe-webhook-verification-inbound/schema.json +60 -0
  571. package/docs/policies/supabase-jwt-auth-inbound/doc.md +29 -0
  572. package/docs/policies/supabase-jwt-auth-inbound/intro.md +12 -0
  573. package/docs/policies/supabase-jwt-auth-inbound/schema.json +86 -0
  574. package/docs/policies/transform-body-inbound/intro.md +8 -0
  575. package/docs/policies/transform-body-inbound/policy.ts +16 -0
  576. package/docs/policies/transform-body-inbound/schema.json +27 -0
  577. package/docs/policies/transform-body-outbound/intro.md +8 -0
  578. package/docs/policies/transform-body-outbound/policy.ts +19 -0
  579. package/docs/policies/transform-body-outbound/schema.json +27 -0
  580. package/docs/policies/upstream-azure-ad-service-auth-inbound/doc.md +82 -0
  581. package/docs/policies/upstream-azure-ad-service-auth-inbound/intro.md +20 -0
  582. package/docs/policies/upstream-azure-ad-service-auth-inbound/schema.json +84 -0
  583. package/docs/policies/upstream-firebase-admin-auth-inbound/intro.md +10 -0
  584. package/docs/policies/upstream-firebase-admin-auth-inbound/schema.json +68 -0
  585. package/docs/policies/upstream-firebase-user-auth-inbound/intro.md +2 -0
  586. package/docs/policies/upstream-firebase-user-auth-inbound/schema.json +113 -0
  587. package/docs/policies/upstream-gcp-federated-auth-inbound/doc.md +139 -0
  588. package/docs/policies/upstream-gcp-federated-auth-inbound/intro.md +21 -0
  589. package/docs/policies/upstream-gcp-federated-auth-inbound/schema.json +96 -0
  590. package/docs/policies/upstream-gcp-jwt-inbound/intro.md +10 -0
  591. package/docs/policies/upstream-gcp-jwt-inbound/schema.json +62 -0
  592. package/docs/policies/upstream-gcp-service-auth-inbound/doc.md +132 -0
  593. package/docs/policies/upstream-gcp-service-auth-inbound/intro.md +25 -0
  594. package/docs/policies/upstream-gcp-service-auth-inbound/schema.json +95 -0
  595. package/docs/policies/upstream-zuplo-jwt-auth-inbound/doc.md +213 -0
  596. package/docs/policies/upstream-zuplo-jwt-auth-inbound/intro.md +16 -0
  597. package/docs/policies/upstream-zuplo-jwt-auth-inbound/schema.json +101 -0
  598. package/docs/policies/validate-json-schema-inbound/doc.md +129 -0
  599. package/docs/policies/validate-json-schema-inbound/intro.md +7 -0
  600. package/docs/policies/validate-json-schema-inbound/schema.json +56 -0
  601. package/docs/policies/web-bot-auth-inbound/doc.md +104 -0
  602. package/docs/policies/web-bot-auth-inbound/intro.md +16 -0
  603. package/docs/policies/web-bot-auth-inbound/schema.json +76 -0
  604. package/docs/policies/xml-to-json-outbound/doc.md +71 -0
  605. package/docs/policies/xml-to-json-outbound/intro.md +4 -0
  606. package/docs/policies/xml-to-json-outbound/schema.json +117 -0
  607. package/docs/programmable-api/audit-log.mdx +74 -0
  608. package/docs/programmable-api/background-dispatcher.mdx +124 -0
  609. package/docs/programmable-api/background-loader.mdx +104 -0
  610. package/docs/programmable-api/cache.mdx +186 -0
  611. package/docs/programmable-api/compatibility-dates.mdx +201 -0
  612. package/docs/programmable-api/console-logging.mdx +48 -0
  613. package/docs/programmable-api/context-data.mdx +127 -0
  614. package/docs/programmable-api/custom-cors-policy.mdx +64 -0
  615. package/docs/programmable-api/environment.mdx +328 -0
  616. package/docs/programmable-api/hooks.mdx +569 -0
  617. package/docs/programmable-api/http-problems.mdx +385 -0
  618. package/docs/programmable-api/jwt-service-plugin.mdx +420 -0
  619. package/docs/programmable-api/logger.mdx +223 -0
  620. package/docs/programmable-api/memory-zone-read-through-cache.mdx +96 -0
  621. package/docs/programmable-api/node-modules.mdx +67 -0
  622. package/docs/programmable-api/not-found-handler.mdx +47 -0
  623. package/docs/programmable-api/oauth-protected-resource-plugin.mdx +46 -0
  624. package/docs/programmable-api/overview.mdx +213 -0
  625. package/docs/programmable-api/problem-response-formatter.mdx +183 -0
  626. package/docs/programmable-api/request-user.mdx +289 -0
  627. package/docs/programmable-api/reusing-code.mdx +26 -0
  628. package/docs/programmable-api/route-raw.mdx +55 -0
  629. package/docs/programmable-api/runtime-behaviors.mdx +25 -0
  630. package/docs/programmable-api/runtime-errors.mdx +246 -0
  631. package/docs/programmable-api/runtime-extensions.mdx +340 -0
  632. package/docs/programmable-api/safely-clone-a-request-or-response.mdx +57 -0
  633. package/docs/programmable-api/streaming-zone-cache.mdx +155 -0
  634. package/docs/programmable-api/web-crypto-apis.mdx +219 -0
  635. package/docs/programmable-api/web-standard-apis.mdx +109 -0
  636. package/docs/programmable-api/zone-cache.mdx +131 -0
  637. package/docs/programmable-api/zp-body-removed.mdx +32 -0
  638. package/docs/programmable-api/zuplo-context.mdx +414 -0
  639. package/docs/programmable-api/zuplo-id-token.mdx +90 -0
  640. package/docs/programmable-api/zuplo-json.mdx +91 -0
  641. package/docs/programmable-api/zuplo-request.mdx +200 -0
  642. package/docs/sample-apis.mdx +78 -0
  643. package/docs/self-hosted/overview.md +60 -0
  644. package/package.json +6 -5
@@ -0,0 +1,301 @@
1
+ ---
2
+ title: Troubleshooting Slow API Response Times
3
+ sidebar_label: Troubleshooting Slow Responses
4
+ description:
5
+ Diagnose and fix slow API response times through your Zuplo gateway. Covers
6
+ backend latency, cold starts, DNS, policy overhead, and geographic routing.
7
+ ---
8
+
9
+ When API responses through your Zuplo gateway are slower than expected, a
10
+ systematic approach helps you identify the root cause quickly. This guide walks
11
+ you through diagnosing latency issues — whether the source is the gateway, your
12
+ backend, the network, or something else entirely.
13
+
14
+ ## Understanding API Gateway Latency
15
+
16
+ Every API gateway adds some processing overhead to requests. For Zuplo, this
17
+ overhead is minimal:
18
+
19
+ - **Base latency**: Approximately 20–30ms with no policies enabled
20
+ - **Per policy**: Most policies add 1–5ms each
21
+ - **Complex policies**: Authentication, rate limiting, or custom code that makes
22
+ external calls can add 5–15ms
23
+
24
+ Zuplo runs at the edge across 300+ data centers worldwide, so requests are
25
+ processed close to the caller. In many cases, edge deployment actually _reduces_
26
+ total latency compared to routing all traffic to a single-region backend.
27
+
28
+ If you're seeing response times significantly higher than your backend's
29
+ response time plus the expected gateway overhead, something else is contributing
30
+ to the latency. The sections below help you identify what.
31
+
32
+ ## Diagnostic Checklist
33
+
34
+ Work through these steps in order. Each one helps narrow down the source of the
35
+ slowness.
36
+
37
+ ### 1. Measure Your Backend Directly
38
+
39
+ Before investigating the gateway, confirm your backend's baseline response time
40
+ by calling it directly (bypassing Zuplo):
41
+
42
+ ```bash
43
+ curl -o /dev/null -s -w "Total time: %{time_total}s\nDNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\n" https://your-backend.example.com/endpoint
44
+ ```
45
+
46
+ Record the total time and time-to-first-byte (TTFB). The gateway cannot respond
47
+ faster than the backend — if your backend takes 2 seconds, the response through
48
+ Zuplo takes at least 2 seconds plus gateway overhead.
49
+
50
+ ### 2. Measure the Same Request Through Zuplo
51
+
52
+ Run the same curl command against your Zuplo endpoint:
53
+
54
+ ```bash
55
+ curl -o /dev/null -s -w "Total time: %{time_total}s\nDNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\n" -H "Authorization: Bearer YOUR_TOKEN" https://your-api.zuplo.app/endpoint
56
+ ```
57
+
58
+ Compare the two results. If the difference is within 20–50ms, the gateway is
59
+ performing normally. If the difference is hundreds of milliseconds or more,
60
+ continue with the steps below.
61
+
62
+ ### 3. Check Whether the Slowness Is Consistent
63
+
64
+ Run the request through Zuplo multiple times:
65
+
66
+ ```bash
67
+ for i in {1..10}; do
68
+ curl -o /dev/null -s -w "Request $i: %{time_total}s\n" -H "Authorization: Bearer YOUR_TOKEN" https://your-api.zuplo.app/endpoint
69
+ done
70
+ ```
71
+
72
+ Look at the pattern:
73
+
74
+ - **Only the first request is slow**: This likely indicates a
75
+ [cold start](#cold-starts).
76
+ - **Every request is slow**: The issue is probably your backend, network path,
77
+ or policy configuration.
78
+ - **Intermittent slowness**: This could be DNS resolution, backend variability,
79
+ or geographic routing differences.
80
+
81
+ ### 4. Test from Multiple Locations
82
+
83
+ Your latency experience depends on where requests originate. A request from the
84
+ same continent as your backend has a very different network path than one from
85
+ across the globe. Use tools like
86
+ [curl from different machines](https://www.whatsmydns.net/) or distributed
87
+ testing services to confirm whether the slowness is location-specific.
88
+
89
+ ## Common Causes and Solutions
90
+
91
+ ### Backend Response Time
92
+
93
+ The most common cause of slow responses through any API gateway is a slow
94
+ backend. The gateway adds its processing time _on top of_ whatever the backend
95
+ takes.
96
+
97
+ **How to identify**: Compare direct backend response times with gateway response
98
+ times. If both are slow, the issue is the backend.
99
+
100
+ **Solution**: Optimize your backend endpoints. Consider using Zuplo's
101
+ [Caching policy](../policies/caching-inbound.mdx) to cache responses for
102
+ endpoints that don't change frequently:
103
+
104
+ ```json title="config/policies.json"
105
+ {
106
+ "name": "my-caching-inbound-policy",
107
+ "policyType": "caching-inbound",
108
+ "handler": {
109
+ "export": "CachingInboundPolicy",
110
+ "module": "$import(@zuplo/runtime)",
111
+ "options": {
112
+ "expirationSecondsTtl": 300,
113
+ "statusCodes": [200]
114
+ }
115
+ }
116
+ }
117
+ ```
118
+
119
+ For more fine-grained caching in custom code, use
120
+ [ZoneCache](../programmable-api/zone-cache.mdx) to cache frequently accessed
121
+ data like configuration or session information with low latency.
122
+
123
+ ### Geographic Distance Between Edge and Backend
124
+
125
+ Zuplo processes requests at the edge location closest to the caller. If your
126
+ backend is in a single region (for example, `us-east-1`), requests from users in
127
+ Asia or Europe still need to travel to that region after reaching the nearest
128
+ edge node.
129
+
130
+ **How to identify**: Test from locations near your backend versus locations far
131
+ from it. If latency scales with geographic distance, this is the cause.
132
+
133
+ **Solutions**:
134
+
135
+ - Deploy your backend in multiple regions
136
+ - Use Zuplo's [Caching policy](../policies/caching-inbound.mdx) to serve cached
137
+ responses from the edge without reaching the backend
138
+ - For internal or single-cloud traffic, consider
139
+ [Managed Dedicated](../dedicated/overview.mdx) deployment, which runs Zuplo
140
+ within your cloud provider's network for reduced latency by keeping traffic
141
+ within your infrastructure
142
+
143
+ ### DNS Resolution Delays
144
+
145
+ Slow DNS resolution can add hundreds of milliseconds to request times,
146
+ especially on the first request or when DNS records have short TTLs.
147
+
148
+ **How to identify**: In the curl output, check the `time_namelookup` value. If
149
+ it's over 100ms, DNS resolution is contributing to the latency.
150
+
151
+ **Solution**: Ensure your backend's DNS records have reasonable TTL values (at
152
+ least 60 seconds). If you're using a custom domain with Zuplo, verify the DNS
153
+ configuration follows the [custom domains setup guide](./custom-domains.mdx).
154
+
155
+ ### Large Response Bodies
156
+
157
+ Large response payloads take longer to transfer and serialize. A 10MB JSON
158
+ response takes significantly longer than a 1KB response, regardless of the
159
+ gateway.
160
+
161
+ **How to identify**: Check the response body size of slow endpoints. If
162
+ responses are consistently large (over 1MB), this may be a factor.
163
+
164
+ **Solutions**:
165
+
166
+ - Implement pagination in your API to return smaller response payloads
167
+ - Use compression to reduce the size of response payloads over the network
168
+ - Return only the fields the caller needs
169
+
170
+ ### Policy Execution Overhead
171
+
172
+ While individual policies add minimal latency, a long chain of policies — or
173
+ policies that make external API calls — can accumulate overhead.
174
+
175
+ **How to identify**: Temporarily remove or disable policies one at a time and
176
+ measure the response time after each change. If removing a specific policy
177
+ significantly improves performance, that policy is the bottleneck.
178
+
179
+ **Policy performance tiers**:
180
+
181
+ - **Low impact (0–3ms)**: Header manipulation, simple validation, basic routing,
182
+ response caching (cache hits)
183
+ - **Medium impact (3–10ms)**: API key authentication, rate limiting, request
184
+ logging, simple transformations
185
+ - **Higher impact (10–20ms+)**: Large payload transformations, custom code with
186
+ external API calls
187
+
188
+ :::tip
189
+
190
+ Order your policies from least to most expensive, and use early-exit conditions
191
+ where possible. For example, validate API keys before performing complex
192
+ transformations. This way, unauthorized requests are rejected quickly without
193
+ incurring the cost of downstream policies.
194
+
195
+ :::
196
+
197
+ ### Cold Starts
198
+
199
+ :::note
200
+
201
+ Cold starts apply only to Zuplo's managed edge (serverless) deployment. If
202
+ you're running Zuplo in a [Managed Dedicated](../dedicated/overview.mdx)
203
+ environment, cold starts don't apply.
204
+
205
+ :::
206
+
207
+ On Zuplo's managed edge platform, the first request after a period of inactivity
208
+ may experience a "cold start" — an additional 100–200ms of latency while a new
209
+ worker initializes. After the first request, subsequent requests are served from
210
+ warm workers with normal latency.
211
+
212
+ **How to identify**: Only the first request (or first few requests) after a
213
+ period of inactivity is slow. Subsequent requests are fast.
214
+
215
+ **Solutions**:
216
+
217
+ - **Keep-warm requests**: Send periodic synthetic requests to your API during
218
+ low-traffic periods to prevent workers from going cold. A simple scheduled
219
+ health check every few minutes is usually sufficient.
220
+ - **Health check endpoints**: Set up a
221
+ [health check handler](./health-checks.mdx) and configure an external
222
+ monitoring service to ping it regularly. This keeps your gateway warm while
223
+ also monitoring availability.
224
+
225
+ ## Using Zuplo Observability Tools
226
+
227
+ ### Analytics Dashboard
228
+
229
+ Zuplo's analytics dashboard provides at-a-glance visibility into your API's
230
+ performance. Use it to:
231
+
232
+ - Identify slow endpoints by reviewing request latency data
233
+ - Filter by route, API key, or time period to isolate patterns
234
+ - Spot error rate spikes that may correlate with latency issues
235
+ - Track request volume trends that may indicate capacity-related slowness
236
+
237
+ ### Logging Integrations
238
+
239
+ For deeper analysis, configure one of Zuplo's
240
+ [logging integrations](./logging.mdx) to send request data to your preferred
241
+ observability platform. Supported integrations include Datadog, New Relic,
242
+ Splunk, AWS CloudWatch, Google Cloud Logging, and others.
243
+
244
+ Each log entry includes the request ID (`zp-rid` header), which you can use to
245
+ trace a specific request through the system. You can also measure and log
246
+ execution time within custom policies to identify performance bottlenecks:
247
+
248
+ ```ts
249
+ import { ZuploContext, ZuploRequest } from "@zuplo/runtime";
250
+
251
+ export default async function policy(
252
+ request: ZuploRequest,
253
+ context: ZuploContext,
254
+ ) {
255
+ const start = Date.now();
256
+
257
+ // ... policy logic ...
258
+
259
+ const duration = Date.now() - start;
260
+ context.log.info(`Policy executed in ${duration}ms`);
261
+
262
+ return request;
263
+ }
264
+ ```
265
+
266
+ ### Proactive Monitoring
267
+
268
+ Set up [proactive monitoring](./monitoring-your-gateway.mdx) with health check
269
+ endpoints for each backend and network configuration. Use an external monitoring
270
+ service like Checkly, API Context, or Datadog Synthetics to continuously monitor
271
+ response times and alert on degradation.
272
+
273
+ ## When to Contact Support
274
+
275
+ If you've worked through the steps above and can't identify the source of
276
+ latency, [contact Zuplo support](./support.mdx) with the following information:
277
+
278
+ - **Your Zuplo project name and environment** (production, preview, etc.)
279
+ - **The specific endpoint(s)** experiencing slow response times
280
+ - **Curl output** showing both direct backend timing and timing through Zuplo
281
+ (use the curl commands from the [diagnostic checklist](#diagnostic-checklist)
282
+ above)
283
+ - **Whether the issue is consistent or intermittent**, and if intermittent, any
284
+ patterns you've noticed (time of day, specific geographic regions, etc.)
285
+ - **Your backend's geographic location** (cloud provider and region)
286
+ - **The policies configured** on the affected route(s)
287
+
288
+ This information helps the support team investigate efficiently and avoid
289
+ back-and-forth diagnostic questions.
290
+
291
+ ## Related Resources
292
+
293
+ - [Performance Testing Your API Gateway](./performance-testing.mdx) — How to
294
+ benchmark and compare gateway performance accurately
295
+ - [Proactive Monitoring](./monitoring-your-gateway.mdx) — Setting up health
296
+ checks and monitoring for your gateway
297
+ - [ZoneCache](../programmable-api/zone-cache.mdx) — Low-latency caching API for
298
+ frequently accessed data
299
+ - [Caching Policy](../policies/caching-inbound.mdx) — Built-in response caching
300
+ to reduce backend load and improve response times
301
+ - [Logging](./logging.mdx) — Configuring log integrations for observability
@@ -0,0 +1,302 @@
1
+ ---
2
+ title: Troubleshooting
3
+ sidebar_label: Troubleshooting
4
+ ---
5
+
6
+ This guide covers common errors you may encounter when building, deploying, and
7
+ running your Zuplo API gateway, along with steps to diagnose and fix them.
8
+
9
+ ## Build errors
10
+
11
+ Build errors prevent your project from compiling during deployment. The gateway
12
+ returns a `BUILD_ERROR` when this happens.
13
+
14
+ ### TypeScript compilation errors
15
+
16
+ Type mismatches, missing type definitions, or invalid syntax prevent the build
17
+ from completing. Check the deployment logs for the file name, line number, and
18
+ error description.
19
+
20
+ **Fix:** Run the build locally before deploying to catch these errors early:
21
+
22
+ ```bash
23
+ npx zuplo build
24
+ ```
25
+
26
+ You can also add TypeScript to your project and run type checking directly:
27
+
28
+ ```bash
29
+ npm install -D typescript
30
+ npx tsc --noEmit
31
+ ```
32
+
33
+ This catches type errors before you deploy and integrates with most editors for
34
+ inline feedback.
35
+
36
+ ### Module resolution failures
37
+
38
+ Imports that do not start with `./` or `../` and have no matching `paths`
39
+ mapping in `tsconfig.json` fail to resolve.
40
+
41
+ ```ts
42
+ // This fails if there is no paths mapping
43
+ import { myFunction } from "modules/my-module";
44
+
45
+ // Use a relative path instead
46
+ import { myFunction } from "./modules/my-module";
47
+ ```
48
+
49
+ **Fix:** Use relative paths for local modules, or configure
50
+ `compilerOptions.paths` in your `tsconfig.json`. See
51
+ [TypeScript Configuration](./tsconfig.mdx) for details.
52
+
53
+ ### Missing or incompatible packages
54
+
55
+ Zuplo does not run Node.js and does not run `npm install` during deployment.
56
+ Only npm packages that don't use native code or Node.js-specific APIs (like the
57
+ filesystem or `child_process`) are compatible. Packages must be installed
58
+ locally and their bundled output checked into source control.
59
+
60
+ **Fix:** Install the package locally, verify it works with `zuplo dev`, and
61
+ ensure the compiled output is committed to your repository. See
62
+ [Node Modules](../programmable-api/node-modules.mdx) for details on package
63
+ compatibility and limitations.
64
+
65
+ ### Invalid route configuration
66
+
67
+ The `routes.oas.json` file contains syntax errors or references handlers and
68
+ policies that do not exist.
69
+
70
+ **Fix:** Validate that all `handler.module` and `handler.export` values in your
71
+ route configuration match actual modules and exported functions. Check for typos
72
+ in policy names referenced in the `policies.inbound` and `policies.outbound`
73
+ arrays.
74
+
75
+ ## Deployment errors
76
+
77
+ ### FATAL_PROJECT_ERROR
78
+
79
+ The gateway returns this error when the project has a critical configuration
80
+ issue that prevents it from starting.
81
+
82
+ **Fix:** Check the deployment logs in the Zuplo Portal for the specific error
83
+ message. Common causes include invalid `zuplo.runtime.ts` configuration or
84
+ broken runtime extensions.
85
+
86
+ ### MAIN_MOD_ERROR
87
+
88
+ This error indicates that the main module failed to load at startup.
89
+
90
+ **Fix:** Verify that your `zuplo.runtime.ts` file (if present) exports valid
91
+ configuration and that all plugins are properly initialized. Check for runtime
92
+ errors in module-level code that runs during startup.
93
+
94
+ ### NO_PROJECT_SET
95
+
96
+ This error typically occurs in local development when trying to run a project
97
+ that cannot build or is invalid.
98
+
99
+ **Fix:** Verify that your project structure is correct and that the project
100
+ builds successfully. See
101
+ [Local Development Troubleshooting](./local-development-troubleshooting.mdx) for
102
+ more details.
103
+
104
+ ## Runtime errors
105
+
106
+ ### Policy errors
107
+
108
+ When a policy throws an unhandled error, the gateway returns a `500` response.
109
+ Use `RuntimeError` or `ConfigurationError` from `@zuplo/runtime` to return
110
+ structured error responses instead.
111
+
112
+ ```ts
113
+ import { RuntimeError, ZuploContext, ZuploRequest } from "@zuplo/runtime";
114
+
115
+ export default async function policy(
116
+ request: ZuploRequest,
117
+ context: ZuploContext,
118
+ ) {
119
+ const apiKey = request.headers.get("x-api-key");
120
+ if (!apiKey) {
121
+ throw new RuntimeError("Missing API key", { status: 401 });
122
+ }
123
+ return request;
124
+ }
125
+ ```
126
+
127
+ See [Runtime Errors](../programmable-api/runtime-errors.mdx) for the full API.
128
+
129
+ ### Handler errors
130
+
131
+ If a request handler throws an unhandled exception, the gateway returns a
132
+ generic error response. Wrap handler logic in try/catch blocks and return
133
+ meaningful error responses.
134
+
135
+ ```ts
136
+ import { ZuploContext, ZuploRequest } from "@zuplo/runtime";
137
+
138
+ export default async function handler(
139
+ request: ZuploRequest,
140
+ context: ZuploContext,
141
+ ) {
142
+ try {
143
+ const response = await fetch("https://api.example.com/data");
144
+ if (!response.ok) {
145
+ context.log.error("Upstream request failed", {
146
+ status: response.status,
147
+ });
148
+ return new Response("Bad Gateway", { status: 502 });
149
+ }
150
+ return response;
151
+ } catch (err) {
152
+ context.log.error("Handler error", { error: String(err) });
153
+ return new Response("Internal Server Error", { status: 500 });
154
+ }
155
+ }
156
+ ```
157
+
158
+ ### Timeout errors
159
+
160
+ Requests to upstream services can time out if the backend is slow or
161
+ unresponsive. The gateway enforces platform-level timeouts on outbound requests.
162
+
163
+ **Fix:** Check that your upstream service is healthy and responding within
164
+ acceptable timeframes. Add timeout handling in custom handlers using
165
+ `AbortSignal.timeout()`:
166
+
167
+ ```ts
168
+ const response = await fetch("https://api.example.com/data", {
169
+ signal: AbortSignal.timeout(5000), // 5 second timeout
170
+ });
171
+ ```
172
+
173
+ ## Debugging with logs
174
+
175
+ ### Portal live logs
176
+
177
+ The Zuplo Portal provides real-time log viewing for deployed environments.
178
+ Navigate to your project in the portal and open the logs tab to see live request
179
+ logs and any messages logged with `context.log`.
180
+
181
+ ### Using context.log
182
+
183
+ The `context.log` object is available in all handlers and policies. It supports
184
+ `debug`, `info`, `warn`, and `error` levels:
185
+
186
+ ```ts
187
+ context.log.debug("Detailed debug information");
188
+ context.log.info("Request received", { path: request.url });
189
+ context.log.warn("Deprecated endpoint accessed");
190
+ context.log.error("Failed to process request", { error: "Invalid input" });
191
+ ```
192
+
193
+ You can also attach custom properties to all subsequent log entries for a
194
+ request using `context.log.setLogProperties`:
195
+
196
+ ```ts
197
+ context.log.setLogProperties({ customerId: "cust_123" });
198
+ ```
199
+
200
+ ### Log shipping
201
+
202
+ For production observability, ship logs to an external provider by configuring a
203
+ log plugin in your `zuplo.runtime.ts` file. Supported providers include AWS
204
+ CloudWatch, Datadog, Dynatrace, Google Cloud Logging, Loki, New Relic, Splunk,
205
+ and Sumo Logic.
206
+
207
+ See [Logging](./logging.mdx) for setup instructions.
208
+
209
+ ## Request tracing with zp-rid
210
+
211
+ Every request processed by Zuplo is assigned a unique request ID. This ID is
212
+ returned in the `zp-rid` response header and is available in code as
213
+ `context.requestId`.
214
+
215
+ To trace a failed request:
216
+
217
+ 1. Copy the `zp-rid` value from the response headers.
218
+ 2. Search your log provider (Datadog, Loki, Splunk, etc.) for that `requestId`
219
+ value.
220
+ 3. All log entries for that request share the same `requestId`, so you can see
221
+ the full request lifecycle.
222
+
223
+ You can also log the request ID explicitly for correlation:
224
+
225
+ ```ts
226
+ context.log.info(`Processing request ${context.requestId}`);
227
+ ```
228
+
229
+ Default log fields include `requestId`, `environment`, `environmentType`,
230
+ `environmentStage`, `buildId`, and `rayId`, which you can use to filter and
231
+ correlate across requests.
232
+
233
+ ## Common gotchas
234
+
235
+ ### Environment variables not set
236
+
237
+ Environment variables are only applied on new deployments. If you change a
238
+ variable value, you must redeploy the environment for the change to take effect.
239
+
240
+ Variables return `undefined` if not set. Always validate required variables
241
+ early:
242
+
243
+ ```ts
244
+ import { environment, ConfigurationError } from "@zuplo/runtime";
245
+
246
+ const apiKey = environment.API_KEY;
247
+ if (!apiKey) {
248
+ throw new ConfigurationError("API_KEY environment variable is not set");
249
+ }
250
+ ```
251
+
252
+ See [Configuring Environment Variables](./environment-variables.mdx) for more
253
+ details.
254
+
255
+ ### CORS misconfiguration
256
+
257
+ Common CORS issues include:
258
+
259
+ - **No CORS headers in response** - Verify the route has a `corsPolicy` set (not
260
+ `none`) and that the request `Origin` matches one of the `allowedOrigins`.
261
+ - **Preflight returns 404** - Ensure the CORS policy is not set to `none` and
262
+ the request method matches a method configured on the route.
263
+ - **Wildcard subdomain not matching** - The `*.` pattern only matches a single
264
+ subdomain level. `https://*.example.com` does not match
265
+ `https://v2.api.example.com` or `https://example.com`.
266
+ - **Credentials not working** - Set `allowCredentials` to `true` in the CORS
267
+ policy.
268
+
269
+ See [Configuring CORS](./cors.mdx) for the full configuration reference.
270
+
271
+ ### Rate limit surprises
272
+
273
+ Rate limiting policies apply per-environment. Preview and development
274
+ environments have their own rate limit counters separate from production.
275
+
276
+ If requests are unexpectedly rate limited, check:
277
+
278
+ - The rate limit policy configuration for the correct `requestsAllowed` and
279
+ `timeWindowMinutes` values.
280
+ - Whether a per-user or per-IP rate limit is in use and the identifier is
281
+ resolving correctly.
282
+ - Whether multiple rate limit policies are applied to the same route.
283
+
284
+ See [Rate Limiting](../policies/rate-limit-inbound.mdx) for configuration
285
+ details.
286
+
287
+ ### GET or HEAD requests with a body
288
+
289
+ Sending a body with a `GET` or `HEAD` request results in a `GET_HEAD_BODY_ERROR`
290
+ response. Some HTTP clients attach a body by default.
291
+
292
+ **Fix:** Remove the request body for `GET` and `HEAD` requests, or change the
293
+ HTTP method to `POST` or `PUT` if a body is required.
294
+
295
+ ## Getting help
296
+
297
+ If you cannot resolve an issue using this guide:
298
+
299
+ - Check the [Zuplo Errors](../errors.mdx) reference for detailed error
300
+ descriptions.
301
+ - Reach out to support@zuplo.com or join the
302
+ [Zuplo Discord server](https://discord.gg/8QbEjr2MgZ).
@@ -0,0 +1,105 @@
1
+ ---
2
+ title: TypeScript Configuration (tsconfig.json)
3
+ sidebar_label: TypeScript Config
4
+ ---
5
+
6
+ Zuplo projects use TypeScript for custom code. At the root of every project is a
7
+ `tsconfig.json` file that specifies the configuration for the TypeScript
8
+ compiler. This file is used by the TypeScript compiler to compile the TypeScript
9
+ code into JavaScript.
10
+
11
+ This file is automatically generated by Zuplo and shouldn't be modified. If you
12
+ do modify the file, you will receive build warnings indicating the settings that
13
+ have been changed.
14
+
15
+ When developing in the Zuplo Portal or running the `zuplo dev` command locally,
16
+ the build will automatically fix this file for you. If you were using
17
+ unsupported settings, the modifications to this file may cause the build to
18
+ fail. If this happens, we recommend that you fix your code instead of reverting
19
+ the changes to the `tsconfig.json` file.
20
+
21
+ The recommended `tsconfig.json` file is shown below.
22
+
23
+ ```json
24
+ {
25
+ "include": ["modules/**/*", ".zuplo/**/*", "tests/**/*"],
26
+ "exclude": ["./node_modules", "./dist"],
27
+ "compilerOptions": {
28
+ "module": "ESNext",
29
+ "target": "ES2022",
30
+ "lib": ["ESNext", "WebWorker", "Webworker.Iterable"],
31
+ "preserveConstEnums": true,
32
+ "moduleResolution": "Bundler",
33
+ "useUnknownInCatchVariables": false,
34
+ "forceConsistentCasingInFileNames": true,
35
+ "importHelpers": true,
36
+ "removeComments": true,
37
+ "esModuleInterop": true,
38
+ "noEmit": true,
39
+ "strictNullChecks": true,
40
+ "experimentalDecorators": true
41
+ }
42
+ }
43
+ ```
44
+
45
+ ## Updating the tsconfig.json File
46
+
47
+ The `tsconfig.json` file isn't shown in the Zuplo Portal. If you need to update
48
+ it you can do so connecting your project to
49
+ [Source Control](./source-control.mdx) and editing the file in your source
50
+ control provider or locally.
51
+
52
+ ## Troubleshooting
53
+
54
+ This section contains common issues that you may encounter if you have used
55
+ unsupported settings in the `tsconfig.json` file and are migrating to the
56
+ recommended configuration.
57
+
58
+ ### Build Warning: This project's tsconfig.json wasn't set to the recommended settings. Custom settings may cause build issues.
59
+
60
+ ![Build Warning](../../public/media/tsconfig/image.png)
61
+
62
+ This warning is shown when the `tsconfig.json` file isn't set to the recommended
63
+ settings. If you see this warning, but your build is successful, then you aren't
64
+ required to do anything. However, we still encourage you to update your
65
+ `tsconfig.json` file to the recommended settings. This will ensure that your
66
+ build continues to work in the future and that you don't encounter any issues.
67
+
68
+ :::info{title="Note"}
69
+
70
+ Depending on when your project was created, you might see this warning even if
71
+ you never edited the `tsconfig.json` file. Older project templates used various
72
+ different configurations in the tsconfig.json. This warning is just telling you
73
+ that your settings are different from the **current** recommended settings.
74
+
75
+ :::
76
+
77
+ ### Build Error: Couldn't resolve "modules/my-module"
78
+
79
+ If you have a module that isn't being resolved and the module doesn't start with
80
+ a path indicator like `./` or `../`, you either need to change the import to use
81
+ the path indicator or add a `paths` setting to your `tsconfig.json` file.
82
+
83
+ For example, if you have the following import:
84
+
85
+ ```typescript
86
+ import { myFunction } from "modules/my-module";
87
+ ```
88
+
89
+ You can either change the import to:
90
+
91
+ ```typescript
92
+ import { myFunction } from "./modules/my-module";
93
+ ```
94
+
95
+ Or add the `baseUrl` and `paths` setting to your `tsconfig.json` file:
96
+
97
+ ```json
98
+ {
99
+ "compilerOptions": {
100
+ "paths": {
101
+ "modules/*": ["./modules/*"]
102
+ }
103
+ }
104
+ }
105
+ ```