{
    "componentChunkName": "component---src-pages-docs-doc-page-tsx",
    "path": "/docs/components/dependencies",
    "result": {"data":{"site":{"siteMetadata":{"siteUrl":"https://www.architect.io"}},"page":{"edges":[{"node":{"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Dependencies\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", {\n    \"id\": \"dependencies\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, \"Dependencies\", mdx(\"a\", {\n    parentName: \"h1\",\n    \"href\": \"#dependencies\",\n    \"aria-label\": \"dependencies permalink\",\n    \"className\": \"anchor after\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), mdx(\"p\", null, \"Architect was designed with the future in mind, and the future of any team building distributed software is a complex web of services. Historically this complex web of services has been hard to manage, hard to reason about, and hard for developers to contribute to.\"), mdx(\"p\", null, \"Fortunately, the graphing and collaboration problems this creates have been solved before. We've seen it with object-oriented programming and inheritance, and even more recently with package and dependency management. All of our favorite languages have a way for developers to utilize dependencies through a resolver to handle the artifact storage, complex graphing, and de-duplication needed to manage them at-scale. Architect takes this same approach to make it easier than ever for developers to extend cloud services.\"), mdx(\"h2\", {\n    \"id\": \"utilizing-dependencies\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, \"Utilizing dependencies\", mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#utilizing-dependencies\",\n    \"aria-label\": \"utilizing dependencies permalink\",\n    \"className\": \"anchor after\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"yaml\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-yaml\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-yaml\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"dependencies\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"architect/authentication\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \" 1.2.1\\n\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"services\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"my-api\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"interfaces\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n      \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"http\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"8080\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"environment\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n      \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token key atrule\"\n  }, \"AUTH_ADDR\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \" $\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \" dependencies\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"'architect/authentication'\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), \".interfaces.auth.url \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\")))), mdx(\"p\", null, \"Just like with your favorite package manager, developers can cite the names and versions of the components that they need to make calls to. Not only will this allow Architect to provision the dependency automatically, it will also allow developers to pin to specific versions and ensure that the APIs don't change out from under them.\"), mdx(\"h2\", {\n    \"id\": \"dependency-referencing-syntax\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, \"Dependency referencing syntax\", mdx(\"a\", {\n    parentName: \"h2\",\n    \"href\": \"#dependency-referencing-syntax\",\n    \"aria-label\": \"dependency referencing syntax permalink\",\n    \"className\": \"anchor after\"\n  }, mdx(\"svg\", {\n    parentName: \"a\",\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }, mdx(\"path\", {\n    parentName: \"svg\",\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), mdx(\"p\", null, \"We've already shown how Architect enables developers to take advantage of \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/components/service-discovery\"\n  }, \"service discovery\"), \" for connecting to peer services, and the same approach can be used to connect to the interfaces of component dependencies. Once you've specified a dependency in your component, you can reference the interfaces of said dependency using the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"${{ dependencies.*.interfaces.* }}\"), \" expression context.\"), mdx(\"p\", null, \"Referencing component-level interfaces is the same as referencing service-level interfaces, and all the same fields are available to developers for referencing:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"field\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"description\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"url\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The fully composed URL of the reference interface. This will take the format, \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"<protocol>://<username>:<password>@<host>:<port><path>\"), \".\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"protocol\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The protocol of the interface being referenced. This will always be the specific value assigned to the interface by the developer.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"username\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The username of the interface being referenced. Not all interfaces have usernames, so this will be an empty string if none is set.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"password\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The password of the interface being referenced. Not all interfaces have passwords, so this will be an empty string if none is set.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"host\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The host value of the interface being referenced. This value is usually dynamic to accomodate the differences between service discovery solutions available to each environment.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"port\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The port value of the interface being referenced. This will not always be the specific port that the interface is listening on as many container platforms leverage port mapping to ensure that there are no port collisions when sharing hardware in a cluster.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"path\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"The path value of the interface being referenced. Not all interfaces have paths, so this will be an empty string if none is set.\")))));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#dependencies","title":"Dependencies","items":[{"url":"#utilizing-dependencies","title":"Utilizing dependencies"},{"url":"#dependency-referencing-syntax","title":"Dependency referencing syntax"}]}]},"frontmatter":{"title":"Dependencies","description":null,"author":null,"date":null,"image":null}}}]},"all":{"edges":[{"node":{"id":"6ca2c250-227d-5ef2-8046-4a958d927040","fileAbsolutePath":"/opt/build/repo/src/pages/docs/_NO-PAGES-HERE.md","frontmatter":{"title":""},"fields":{"order":"0","parent":null,"slug":"_NO-PAGES-HERE","key":"_NO-PAGES-HERE"}}},{"node":{"id":"a46d338e-d3c3-579f-9d4d-a9e75e2efa04","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/0-getting-started/index.md","frontmatter":{"title":"Getting started"},"fields":{"order":"0.0","parent":null,"slug":"getting-started/index","key":"getting-started"}}},{"node":{"id":"a3f0dd71-19bc-5964-9964-19284797ea04","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/0-getting-started/0-introduction.md","frontmatter":{"title":"Introduction"},"fields":{"order":"0.0","parent":"getting-started","slug":"getting-started/introduction","key":"introduction"}}},{"node":{"id":"55f5bb40-378d-56ac-a5fd-db2a54ffa5f6","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/0-getting-started/1-external-services.md","frontmatter":{"title":"External services"},"fields":{"order":"0.1","parent":"getting-started","slug":"getting-started/external-services","key":"external-services"}}},{"node":{"id":"b67404b5-991c-51f5-a1ff-d74262436a56","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/0-getting-started/2-working-with-tasks.md","frontmatter":{"title":"Working With Tasks"},"fields":{"order":"0.2","parent":"getting-started","slug":"getting-started/working-with-tasks","key":"working-with-tasks"}}},{"node":{"id":"7653fe9f-2e4d-5a17-b9e3-f3ca4f9bb91c","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/1-components/index.md","frontmatter":{"title":"Components"},"fields":{"order":"1.0","parent":null,"slug":"components/index","key":"components"}}},{"node":{"id":"86593204-32c2-52ad-b6f0-35699b1dcb9a","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/1-components/0-architect-yml.md","frontmatter":{"title":"architect.yml"},"fields":{"order":"1.0","parent":"components","slug":"components/architect-yml","key":"architect-yml"}}},{"node":{"id":"7ebce8d0-bc94-5dd6-b8de-ee3201b5a538","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/1-components/1-services.md","frontmatter":{"title":"Services"},"fields":{"order":"1.1","parent":"components","slug":"components/services","key":"services"}}},{"node":{"id":"e0ede896-cccc-55e6-b53a-661b5b357f09","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/1-components/2-service-discovery.md","frontmatter":{"title":"Service discovery"},"fields":{"order":"1.2","parent":"components","slug":"components/service-discovery","key":"service-discovery"}}},{"node":{"id":"a269f179-05ce-5565-b3ab-79489f7f4d63","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/1-components/3-interfaces.md","frontmatter":{"title":"Interfaces"},"fields":{"order":"1.3","parent":"components","slug":"components/interfaces","key":"interfaces"}}},{"node":{"id":"1ff85f82-951c-5af0-8b58-e43b27a4f931","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/1-components/4-dependencies.md","frontmatter":{"title":"Dependencies"},"fields":{"order":"1.4","parent":"components","slug":"components/dependencies","key":"dependencies"}}},{"node":{"id":"54f8cba0-551c-5a55-8e03-5dd04553b015","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/1-components/5-tasks.md","frontmatter":{"title":"Tasks"},"fields":{"order":"1.5","parent":"components","slug":"components/tasks","key":"tasks"}}},{"node":{"id":"bacb11d2-c055-5f25-854a-d6f518bf4017","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/1-components/6-parameters.md","frontmatter":{"title":"Parameters"},"fields":{"order":"1.6","parent":"components","slug":"components/parameters","key":"parameters"}}},{"node":{"id":"a5f1c45e-8135-5905-851f-806b8304a9a2","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/1-components/7-local-configuration.md","frontmatter":{"title":"Local configuration"},"fields":{"order":"1.7","parent":"components","slug":"components/local-configuration","key":"local-configuration"}}},{"node":{"id":"5473f945-539f-5604-a296-d46202c4f927","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/1-components/8-ingress-rules.md","frontmatter":{"title":"Ingress rules"},"fields":{"order":"1.8","parent":"components","slug":"components/ingress-rules","key":"ingress-rules"}}},{"node":{"id":"a7440547-79ad-5125-87f4-4c63e605a3ed","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/2-deployments/index.md","frontmatter":{"title":"Deployments"},"fields":{"order":"2.0","parent":null,"slug":"deployments/index","key":"deployments"}}},{"node":{"id":"8f583e77-4a46-5bba-b94f-56a28fa4f132","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/2-deployments/0-local-environments.md","frontmatter":{"title":"Local environments"},"fields":{"order":"2.0","parent":"deployments","slug":"deployments/local-environments","key":"local-environments"}}},{"node":{"id":"a0ead35e-e924-5e87-a72d-b9c0e5addf98","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/2-deployments/1-automated-previews.md","frontmatter":{"title":"Automated preview environments"},"fields":{"order":"2.1","parent":"deployments","slug":"deployments/automated-previews","key":"automated-previews"}}},{"node":{"id":"da390951-9a64-5c67-b884-2e7b46ad42b8","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/2-deployments/2-gitops-releases.md","frontmatter":{"title":"GitOps releases"},"fields":{"order":"2.2","parent":"deployments","slug":"deployments/gitops-releases","key":"gitops-releases"}}},{"node":{"id":"6019f30c-1016-5e73-a67b-4297e071766c","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/2-deployments/3-secrets.md","frontmatter":{"title":"Secrets"},"fields":{"order":"2.3","parent":"deployments","slug":"deployments/secrets","key":"secrets"}}},{"node":{"id":"2218af9b-3bd7-54e2-b8c5-075d54ee55b9","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/2-deployments/4-custom-domains.md","frontmatter":{"title":"Custom domains"},"fields":{"order":"2.4","parent":"deployments","slug":"deployments/custom-domains","key":"custom-domains"}}},{"node":{"id":"7b3d7a73-fa30-5a75-a62c-2a83c6c8aa87","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/2-deployments/5-deployment-rollbacks.md","frontmatter":{"title":"Pipeline rollbacks"},"fields":{"order":"2.5","parent":"deployments","slug":"deployments/deployment-rollbacks","key":"deployment-rollbacks"}}},{"node":{"id":"df87d55d-68be-542e-ad07-7e685b518d4e","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/2-deployments/6-multitenant-deployments.md","frontmatter":{"title":"Multi-Tenant Deployments"},"fields":{"order":"2.6","parent":"deployments","slug":"deployments/multitenant-deployments","key":"multitenant-deployments"}}},{"node":{"id":"90dcd6b8-6865-5bef-a54a-b4e66b800928","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/5-reference/index.md","frontmatter":{"title":"Reference"},"fields":{"order":"5.0","parent":null,"slug":"reference/index","key":"reference"}}},{"node":{"id":"0b6a7522-25cc-574b-8878-f26143c682f3","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/5-reference/0-cli.md","frontmatter":{"title":""},"fields":{"order":"5.0","parent":"reference","slug":"reference/cli","key":"cli"}}},{"node":{"id":"2399c8ac-af88-5625-ba5f-e40f6966da47","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/5-reference/1-contexts.md","frontmatter":{"title":"Contexts"},"fields":{"order":"5.1","parent":"reference","slug":"reference/contexts","key":"contexts"}}},{"node":{"id":"14307377-6e9d-53ef-a21e-8de5b7131c20","fileAbsolutePath":"/opt/build/repo/architect-cli/docs/5-reference/2-architect-yml.md","frontmatter":{"title":"architect.yml"},"fields":{"order":"5.2","parent":"reference","slug":"reference/architect-yml","key":"architect-yml"}}}]}},"pageContext":{"slug":"components/dependencies"}},
    "staticQueryHashes": ["764694655"]}