-
Notifications
You must be signed in to change notification settings - Fork 106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hive Gateway landing page: top sections #6461
Conversation
00ade06
to
17b6ebf
Compare
📝 WalkthroughSummary by CodeRabbit
Summary by CodeRabbit
WalkthroughThe changes update dependency versions and package management while introducing new gateway-related features. New components are added for the Hive Gateway, including the feature tabs and marquee rows, along with a dedicated landing page. The primary index page now uses a revised feature-tabs component. Additionally, the FeatureTabs component is refactored to include contextual state management, and related UI components (including the landing page feature tabs) are adjusted accordingly. A legacy Stud component is removed, and its import consolidated. Finally, the layout is updated to designate the '/gateway' route as light-only. Changes
Sequence Diagram(s)sequenceDiagram
participant U as User
participant HP as HiveGatewayPage
participant LC as LandingPageContainer
participant H as Hero & Decoration
participant G as GatewayFeatureTabs
participant C as Other UI Components
U->>HP: Request Hive Gateway page
HP->>LC: Render structured layout
LC->>H: Render hero section with branding
HP->>G: Render feature tabs component
G->>C: Integrate additional UI elements (e.g., call-to-action)
C-->>U: Display complete page
sequenceDiagram
participant U as User
participant G as GatewayFeatureTabs
participant Ctx as FeatureTabsContext
U->>G: Click on a feature tab
G->>Ctx: Update active highlight state
Ctx-->>G: Return updated highlight data
G->>U: Render updated feature details
Tip 🌐 Web search-backed reviews and chat
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 8
🧹 Nitpick comments (6)
packages/web/docs/src/components/feature-tabs.tsx (1)
93-105
: Improve readability of documentation link transformation.The conditional logic that transforms a string into an object could be more concise with a small helper or an inline approach. Keeping it purely functional helps readability.
- if (typeof documentationLink === 'string') { - documentationLink = { - text: 'Learn more', - href: documentationLink, - }; - } + const linkProps = typeof documentationLink === 'string' + ? { text: 'Learn more', href: documentationLink } + : documentationLink;packages/web/docs/src/app/gateway/page.tsx (1)
63-94
: Decorative SVG usage is appropriate.Using
DecorationIsolation
around SVG icons preserves layering. Make sure to provide alternative text oraria-hidden
if these images are decorative only, for better accessibility.<svg className="pointer-events-none -z-50 size-0" + aria-hidden="true" width="192" height="296" viewBox="0 0 192 296" > … </svg>packages/web/docs/src/app/gateway/gateway-marquee-rows.tsx (1)
3-3
: Add a link check test as planned.The TODO comment suggests verifying that none of these links are 404. Adding a link validator test or a CI check would help ensure correctness and avoid broken references.
packages/web/docs/src/app/gateway/gateway-feature-tabs.tsx (2)
5-6
: Consider using an enum for tab types.The string literal type for tabs could be better represented as an enum to ensure type safety and maintainability.
-type Tab = 'Observability & Performance Monitoring' | 'Security & Access Control'; +enum Tab { + ObservabilityAndPerformance = 'Observability & Performance Monitoring', + SecurityAndAccess = 'Security & Access Control' +}
80-81
: TODO comment needs addressing.The TODO comment about marquee rows and timeline should be tracked in the issue tracker.
Would you like me to create an issue to track the implementation of draggable marquee rows with a connected timeline?
packages/web/docs/src/components/landing-page-feature-tabs.tsx (1)
138-146
: Optimize SVG attributes.The SVG element has redundant attributes and can be optimized.
<svg - stroke="currentColor" - fill="currentColor" + fill="currentColor" strokeWidth="0" viewBox="0 0 256 256" height="24" width="24" - xmlns="http://www.w3.org/2000/svg" >
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yaml
is excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (13)
packages/web/docs/package.json
(1 hunks)packages/web/docs/src/app/case-studies/(posts)/layout.tsx
(1 hunks)packages/web/docs/src/app/case-studies/case-studies-styles.css
(1 hunks)packages/web/docs/src/app/gateway/gateway-feature-tabs.tsx
(1 hunks)packages/web/docs/src/app/gateway/gateway-marquee-rows.tsx
(1 hunks)packages/web/docs/src/app/gateway/orchestrate-your-way.tsx
(1 hunks)packages/web/docs/src/app/gateway/page.tsx
(1 hunks)packages/web/docs/src/app/layout.tsx
(1 hunks)packages/web/docs/src/app/page.tsx
(2 hunks)packages/web/docs/src/components/feature-tabs.tsx
(5 hunks)packages/web/docs/src/components/info-card.tsx
(1 hunks)packages/web/docs/src/components/landing-page-feature-tabs.tsx
(1 hunks)packages/web/docs/src/components/stud.tsx
(0 hunks)
💤 Files with no reviewable changes (1)
- packages/web/docs/src/components/stud.tsx
✅ Files skipped from review due to trivial changes (2)
- packages/web/docs/src/app/case-studies/(posts)/layout.tsx
- packages/web/docs/src/components/info-card.tsx
🧰 Additional context used
📓 Path-based instructions (10)
packages/web/docs/src/app/layout.tsx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/app/case-studies/case-studies-styles.css (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/app/gateway/gateway-feature-tabs.tsx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/app/page.tsx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/package.json (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/app/gateway/gateway-marquee-rows.tsx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/app/gateway/page.tsx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/components/landing-page-feature-tabs.tsx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/components/feature-tabs.tsx (1)
Pattern packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.
In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
🪛 Biome (1.9.4)
packages/web/docs/src/app/gateway/gateway-feature-tabs.tsx
[error] 59-59: Missing key property for this element in iterable.
The order of the items may change, and having a key can help React identify which item was moved.
Check the React documentation.
(lint/correctness/useJsxKeyInIterable)
[error] 59-59: Missing key property for this element in iterable.
The order of the items may change, and having a key can help React identify which item was moved.
Check the React documentation.
(lint/correctness/useJsxKeyInIterable)
packages/web/docs/src/components/landing-page-feature-tabs.tsx
[error] 94-94: Missing key property for this element in iterable.
The order of the items may change, and having a key can help React identify which item was moved.
Check the React documentation.
(lint/correctness/useJsxKeyInIterable)
[error] 94-94: Missing key property for this element in iterable.
The order of the items may change, and having a key can help React identify which item was moved.
Check the React documentation.
(lint/correctness/useJsxKeyInIterable)
[error] 94-94: Missing key property for this element in iterable.
The order of the items may change, and having a key can help React identify which item was moved.
Check the React documentation.
(lint/correctness/useJsxKeyInIterable)
🔇 Additional comments (9)
packages/web/docs/src/app/layout.tsx (1)
70-70
: LGTM!The addition of '/gateway' to
lightOnlyPages
is consistent with other landing pages and aligns with the PR objectives of implementing the Gateway landing page.packages/web/docs/src/components/feature-tabs.tsx (3)
25-30
: Handle empty or invalidhighlights
arrays.When
highlights
is empty or any key maps to an empty array, accessingtabs[0]
orhighlights[tab][0]
can cause runtime errors due to an undefined index. Consider adding fallback logic to ensure the component gracefully handles missing or empty data.
42-45
: Styling approach looks consistent.The utility classes properly handle border, background, and responsiveness. No issues noted here.
276-304
: Validate image presence for each highlight.When multiple highlights lack an image, the current code tries to render placeholders. If you expect some highlights to have no images, a fallback or placeholder could be used, e.g., a default illustration.
packages/web/docs/src/app/gateway/page.tsx (2)
14-27
: Metadata configuration is consistent with Next.js SEO practices.The definition of
title
,description
,alternates
, andopenGraph
keys appears correct. No immediate issues found.
29-61
: Structurally well-organized landing page.The
HiveGatewayPage
layout is straightforward, with a hero section and integrated feature tabs. The calls to action are clear and accessible. Everything here appears consistent and comprehensible.packages/web/docs/src/app/gateway/gateway-marquee-rows.tsx (1)
87-96
: Fisher–Yates Shuffle logic looks correct.The in-place shuffle correctly randomizes the array. No improvements needed, but be mindful that this function produces non-deterministic output, which can complicate snapshot testing if used there.
packages/web/docs/src/app/page.tsx (1)
85-85
: LGTM!The replacement of
FeatureTabs
withLandingPageFeatureTabs
is clean and maintains the same styling.packages/web/docs/package.json (1)
19-19
: Confirm the dependency update to an alpha release.
The version of@theguild/components
has been updated from a stable release to an alpha build (9.3.1-alpha-20250203132247-81689b6a845e70e06ba48d7ad3c2588bea379e9d
). Please verify that this alpha release has been thoroughly tested with the new hero section and feature tabs, and that any potential instability or breaking changes are acceptable for your current release stage.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@@ -1,13 +0,0 @@ | |||
import { cn } from '@theguild/components'; | |||
|
|||
export function Stud(props: React.HTMLAttributes<HTMLElement>) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed it because we already have it in Components, and it had just one use left.
💻 Website PreviewThe latest changes are available as preview in: https://2cf4a167.hive-landing-page.pages.dev |
🐋 This PR was built and pushed to the following Docker images: Targets: Platforms: Image Tag: Docker Bake metadata{
"app": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/api/health",
"build-arg:IMAGE_DESCRIPTION": "The app of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/app",
"build-arg:PORT": "3000",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/app",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/kr36hnnwsue2dednf9594dh2o",
"containerimage.config.digest": "sha256:3acde47150dd2c0a3fa6150ebf081a92a44d7ca2ce792f5e657383b6d6f8209d",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:67630802bda4abfcda96719a06fa9237e9db0bba33c48b3c243c5d0ef0d0e9c5",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:67630802bda4abfcda96719a06fa9237e9db0bba33c48b3c243c5d0ef0d0e9c5",
"image.name": "ghcr.io/graphql-hive/app:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/app:hive_gateway_landing-arm64"
},
"buildx.build.warnings": [
{
"vertex": "sha256:661b04387688d2c0bce4160fae6f989e91f0ed14c1fea82850c2313b41f43a2a",
"level": 1,
"short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRJTUFHRV9USVRMRScgKGxpbmUgMTIp",
"detail": [
"VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
],
"url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
"sourceInfo": {
"filename": "services.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 12
},
"end": {
"line": 12
}
}
]
},
{
"vertex": "sha256:661b04387688d2c0bce4160fae6f989e91f0ed14c1fea82850c2313b41f43a2a",
"level": 1,
"short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRSRUxFQVNFJyAobGluZSAyMSk=",
"detail": [
"VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
],
"url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
"sourceInfo": {
"filename": "services.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 21
},
"end": {
"line": 21
}
}
]
},
{
"vertex": "sha256:1f74f492a5a94be8b52b3e5ea0e8e62a0d7458a55d6c8a91fd2b772e87f1e918",
"level": 1,
"short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRSRUxFQVNFJyAobGluZSAxMik=",
"detail": [
"VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
],
"url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
"sourceInfo": {
"filename": "migrations.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBjYS1jZXJ0aWZpY2F0ZXMKCldPUktESVIgL3Vzci9zcmMvYXBwCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpFTlYgRU5WSVJPTk1FTlQgcHJvZHVjdGlvbgpFTlYgTk9ERV9FTlYgcHJvZHVjdGlvbgpFTlYgUkVMRUFTRSAkUkVMRUFTRQoKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmxpY2Vuc2VzPU1JVApMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudGl0bGU9JElNQUdFX1RJVExFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS52ZXJzaW9uPSRSRUxFQVNFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5kZXNjcmlwdGlvbj0kSU1BR0VfREVTQ1JJUFRJT04KTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmF1dGhvcnM9IlRoZSBHdWlsZCIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlbmRvcj0iS2FtaWwgS2lzaWVsYSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnVybD0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnNvdXJjZT0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKCkVOVFJZUE9JTlQgWyAiL2VudHJ5cG9pbnQuc2giIF0K",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 12
},
"end": {
"line": 12
}
}
]
},
{
"vertex": "sha256:1f74f492a5a94be8b52b3e5ea0e8e62a0d7458a55d6c8a91fd2b772e87f1e918",
"level": 1,
"short": "TGVnYWN5S2V5VmFsdWVGb3JtYXQ6ICJFTlYga2V5PXZhbHVlIiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGxlZ2FjeSAiRU5WIGtleSB2YWx1ZSIgZm9ybWF0IChsaW5lIDEyKQ==",
"detail": [
"TGVnYWN5IGtleS92YWx1ZSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlIHNlcGFyYXRvciBzaG91bGQgbm90IGJlIHVzZWQ="
],
"url": "https://docs.docker.com/go/dockerfile/rule/legacy-key-value-format/",
"sourceInfo": {
"filename": "migrations.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBjYS1jZXJ0aWZpY2F0ZXMKCldPUktESVIgL3Vzci9zcmMvYXBwCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpFTlYgRU5WSVJPTk1FTlQgcHJvZHVjdGlvbgpFTlYgTk9ERV9FTlYgcHJvZHVjdGlvbgpFTlYgUkVMRUFTRSAkUkVMRUFTRQoKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmxpY2Vuc2VzPU1JVApMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudGl0bGU9JElNQUdFX1RJVExFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS52ZXJzaW9uPSRSRUxFQVNFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5kZXNjcmlwdGlvbj0kSU1BR0VfREVTQ1JJUFRJT04KTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmF1dGhvcnM9IlRoZSBHdWlsZCIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlbmRvcj0iS2FtaWwgS2lzaWVsYSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnVybD0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnNvdXJjZT0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKCkVOVFJZUE9JTlQgWyAiL2VudHJ5cG9pbnQuc2giIF0K",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 12
},
"end": {
"line": 12
}
}
]
},
{
"vertex": "sha256:661b04387688d2c0bce4160fae6f989e91f0ed14c1fea82850c2313b41f43a2a",
"level": 1,
"short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRJTUFHRV9ERVNDUklQVElPTicgKGxpbmUgMTQp",
"detail": [
"VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
],
"url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
"sourceInfo": {
"filename": "services.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 14
},
"end": {
"line": 14
}
}
]
},
{
"vertex": "sha256:661b04387688d2c0bce4160fae6f989e91f0ed14c1fea82850c2313b41f43a2a",
"level": 1,
"short": "TGVnYWN5S2V5VmFsdWVGb3JtYXQ6ICJFTlYga2V5PXZhbHVlIiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGxlZ2FjeSAiRU5WIGtleSB2YWx1ZSIgZm9ybWF0IChsaW5lIDIxKQ==",
"detail": [
"TGVnYWN5IGtleS92YWx1ZSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlIHNlcGFyYXRvciBzaG91bGQgbm90IGJlIHVzZWQ="
],
"url": "https://docs.docker.com/go/dockerfile/rule/legacy-key-value-format/",
"sourceInfo": {
"filename": "services.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 21
},
"end": {
"line": 21
}
}
]
},
{
"vertex": "sha256:661b04387688d2c0bce4160fae6f989e91f0ed14c1fea82850c2313b41f43a2a",
"level": 1,
"short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRQT1JUJyAobGluZSAyMik=",
"detail": [
"VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
],
"url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
"sourceInfo": {
"filename": "services.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 22
},
"end": {
"line": 22
}
}
]
},
{
"vertex": "sha256:1f74f492a5a94be8b52b3e5ea0e8e62a0d7458a55d6c8a91fd2b772e87f1e918",
"level": 1,
"short": "TGVnYWN5S2V5VmFsdWVGb3JtYXQ6ICJFTlYga2V5PXZhbHVlIiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGxlZ2FjeSAiRU5WIGtleSB2YWx1ZSIgZm9ybWF0IChsaW5lIDExKQ==",
"detail": [
"TGVnYWN5IGtleS92YWx1ZSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlIHNlcGFyYXRvciBzaG91bGQgbm90IGJlIHVzZWQ="
],
"url": "https://docs.docker.com/go/dockerfile/rule/legacy-key-value-format/",
"sourceInfo": {
"filename": "migrations.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBjYS1jZXJ0aWZpY2F0ZXMKCldPUktESVIgL3Vzci9zcmMvYXBwCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpFTlYgRU5WSVJPTk1FTlQgcHJvZHVjdGlvbgpFTlYgTk9ERV9FTlYgcHJvZHVjdGlvbgpFTlYgUkVMRUFTRSAkUkVMRUFTRQoKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmxpY2Vuc2VzPU1JVApMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudGl0bGU9JElNQUdFX1RJVExFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS52ZXJzaW9uPSRSRUxFQVNFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5kZXNjcmlwdGlvbj0kSU1BR0VfREVTQ1JJUFRJT04KTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmF1dGhvcnM9IlRoZSBHdWlsZCIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlbmRvcj0iS2FtaWwgS2lzaWVsYSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnVybD0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnNvdXJjZT0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKCkVOVFJZUE9JTlQgWyAiL2VudHJ5cG9pbnQuc2giIF0K",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 11
},
"end": {
"line": 11
}
}
]
},
{
"vertex": "sha256:661b04387688d2c0bce4160fae6f989e91f0ed14c1fea82850c2313b41f43a2a",
"level": 1,
"short": "TGVnYWN5S2V5VmFsdWVGb3JtYXQ6ICJFTlYga2V5PXZhbHVlIiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGxlZ2FjeSAiRU5WIGtleSB2YWx1ZSIgZm9ybWF0IChsaW5lIDIwKQ==",
"detail": [
"TGVnYWN5IGtleS92YWx1ZSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlIHNlcGFyYXRvciBzaG91bGQgbm90IGJlIHVzZWQ="
],
"url": "https://docs.docker.com/go/dockerfile/rule/legacy-key-value-format/",
"sourceInfo": {
"filename": "services.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 20
},
"end": {
"line": 20
}
}
]
},
{
"vertex": "sha256:661b04387688d2c0bce4160fae6f989e91f0ed14c1fea82850c2313b41f43a2a",
"level": 1,
"short": "TGVnYWN5S2V5VmFsdWVGb3JtYXQ6ICJFTlYga2V5PXZhbHVlIiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGxlZ2FjeSAiRU5WIGtleSB2YWx1ZSIgZm9ybWF0IChsaW5lIDIyKQ==",
"detail": [
"TGVnYWN5IGtleS92YWx1ZSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlIHNlcGFyYXRvciBzaG91bGQgbm90IGJlIHVzZWQ="
],
"url": "https://docs.docker.com/go/dockerfile/rule/legacy-key-value-format/",
"sourceInfo": {
"filename": "services.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 22
},
"end": {
"line": 22
}
}
]
},
{
"vertex": "sha256:1f74f492a5a94be8b52b3e5ea0e8e62a0d7458a55d6c8a91fd2b772e87f1e918",
"level": 1,
"short": "TGVnYWN5S2V5VmFsdWVGb3JtYXQ6ICJFTlYga2V5PXZhbHVlIiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGxlZ2FjeSAiRU5WIGtleSB2YWx1ZSIgZm9ybWF0IChsaW5lIDEwKQ==",
"detail": [
"TGVnYWN5IGtleS92YWx1ZSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlIHNlcGFyYXRvciBzaG91bGQgbm90IGJlIHVzZWQ="
],
"url": "https://docs.docker.com/go/dockerfile/rule/legacy-key-value-format/",
"sourceInfo": {
"filename": "migrations.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBjYS1jZXJ0aWZpY2F0ZXMKCldPUktESVIgL3Vzci9zcmMvYXBwCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpFTlYgRU5WSVJPTk1FTlQgcHJvZHVjdGlvbgpFTlYgTk9ERV9FTlYgcHJvZHVjdGlvbgpFTlYgUkVMRUFTRSAkUkVMRUFTRQoKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmxpY2Vuc2VzPU1JVApMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudGl0bGU9JElNQUdFX1RJVExFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS52ZXJzaW9uPSRSRUxFQVNFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5kZXNjcmlwdGlvbj0kSU1BR0VfREVTQ1JJUFRJT04KTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmF1dGhvcnM9IlRoZSBHdWlsZCIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlbmRvcj0iS2FtaWwgS2lzaWVsYSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnVybD0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnNvdXJjZT0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKCkVOVFJZUE9JTlQgWyAiL2VudHJ5cG9pbnQuc2giIF0K",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 10
},
"end": {
"line": 10
}
}
]
},
{
"vertex": "sha256:1f74f492a5a94be8b52b3e5ea0e8e62a0d7458a55d6c8a91fd2b772e87f1e918",
"level": 1,
"short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRJTUFHRV9USVRMRScgKGxpbmUgMTUp",
"detail": [
"VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
],
"url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
"sourceInfo": {
"filename": "migrations.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBjYS1jZXJ0aWZpY2F0ZXMKCldPUktESVIgL3Vzci9zcmMvYXBwCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpFTlYgRU5WSVJPTk1FTlQgcHJvZHVjdGlvbgpFTlYgTk9ERV9FTlYgcHJvZHVjdGlvbgpFTlYgUkVMRUFTRSAkUkVMRUFTRQoKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmxpY2Vuc2VzPU1JVApMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudGl0bGU9JElNQUdFX1RJVExFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS52ZXJzaW9uPSRSRUxFQVNFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5kZXNjcmlwdGlvbj0kSU1BR0VfREVTQ1JJUFRJT04KTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmF1dGhvcnM9IlRoZSBHdWlsZCIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlbmRvcj0iS2FtaWwgS2lzaWVsYSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnVybD0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnNvdXJjZT0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKCkVOVFJZUE9JTlQgWyAiL2VudHJ5cG9pbnQuc2giIF0K",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 15
},
"end": {
"line": 15
}
}
]
},
{
"vertex": "sha256:1f74f492a5a94be8b52b3e5ea0e8e62a0d7458a55d6c8a91fd2b772e87f1e918",
"level": 1,
"short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRJTUFHRV9ERVNDUklQVElPTicgKGxpbmUgMTcp",
"detail": [
"VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
],
"url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
"sourceInfo": {
"filename": "migrations.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSBjYS1jZXJ0aWZpY2F0ZXMKCldPUktESVIgL3Vzci9zcmMvYXBwCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpFTlYgRU5WSVJPTk1FTlQgcHJvZHVjdGlvbgpFTlYgTk9ERV9FTlYgcHJvZHVjdGlvbgpFTlYgUkVMRUFTRSAkUkVMRUFTRQoKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmxpY2Vuc2VzPU1JVApMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudGl0bGU9JElNQUdFX1RJVExFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS52ZXJzaW9uPSRSRUxFQVNFCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS5kZXNjcmlwdGlvbj0kSU1BR0VfREVTQ1JJUFRJT04KTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmF1dGhvcnM9IlRoZSBHdWlsZCIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlbmRvcj0iS2FtaWwgS2lzaWVsYSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnVybD0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnNvdXJjZT0iaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwtaGl2ZS9wbGF0Zm9ybSIKCkVOVFJZUE9JTlQgWyAiL2VudHJ5cG9pbnQuc2giIF0K",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 17
},
"end": {
"line": 17
}
}
]
},
{
"vertex": "sha256:661b04387688d2c0bce4160fae6f989e91f0ed14c1fea82850c2313b41f43a2a",
"level": 1,
"short": "VW5kZWZpbmVkVmFyOiBVc2FnZSBvZiB1bmRlZmluZWQgdmFyaWFibGUgJyRSRUxFQVNFJyAobGluZSAxMyk=",
"detail": [
"VmFyaWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGJlZm9yZSB0aGVpciB1c2U="
],
"url": "https://docs.docker.com/go/dockerfile/rule/undefined-var/",
"sourceInfo": {
"filename": "services.dockerfile",
"data": "RlJPTSBub2RlOjIyLjEzLjAtc2xpbQoKUlVOIGFwdC1nZXQgdXBkYXRlICYmIGFwdC1nZXQgaW5zdGFsbCAteSB3Z2V0IGNhLWNlcnRpZmljYXRlcyAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkFSRyBTRVJWSUNFX0RJUl9OQU1FCldPUktESVIgL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FCgpDT1BZIC0tZnJvbT1kaXN0IC4gL3Vzci9zcmMvYXBwLyRTRVJWSUNFX0RJUl9OQU1FLwpDT1BZIC0tZnJvbT1zaGFyZWQgLiAvCgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UubGljZW5zZXM9TUlUCkxBQkVMIG9yZy5vcGVuY29udGFpbmVycy5pbWFnZS50aXRsZT0kSU1BR0VfVElUTEUKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLnZlcnNpb249JFJFTEVBU0UKTEFCRUwgb3JnLm9wZW5jb250YWluZXJzLmltYWdlLmRlc2NyaXB0aW9uPSRJTUFHRV9ERVNDUklQVElPTgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UuYXV0aG9ycz0iVGhlIEd1aWxkIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudmVuZG9yPSJLYW1pbCBLaXNpZWxhIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2UudXJsPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgpMQUJFTCBvcmcub3BlbmNvbnRhaW5lcnMuaW1hZ2Uuc291cmNlPSJodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC1oaXZlL3BsYXRmb3JtIgoKRU5WIEVOVklST05NRU5UIHByb2R1Y3Rpb24KRU5WIFJFTEVBU0UgJFJFTEVBU0UKRU5WIFBPUlQgJFBPUlQKCkhFQUxUSENIRUNLIC0taW50ZXJ2YWw9NXMgXAogIC0tdGltZW91dD01cyBcCiAgLS1zdGFydC1wZXJpb2Q9NXMgXAogIC0tcmV0cmllcz02IFwKICBDTUQgJEhFQUxUSENIRUNLX0NNRAoKRU5UUllQT0lOVCBbICIvZW50cnlwb2ludC5zaCIgXQo=",
"language": "Dockerfile"
},
"range": [
{
"start": {
"line": 13
},
"end": {
"line": 13
}
}
]
}
],
"composition-federation-2": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
"build-arg:IMAGE_DESCRIPTION": "Federation 2 Composition Service for GraphQL Hive.",
"build-arg:IMAGE_TITLE": "graphql-hive/composition-federation-2",
"build-arg:PORT": "3069",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/external-composition",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/zjzzl2wxw8o3x6lnx98ij0jmv",
"containerimage.config.digest": "sha256:bea9f79f50aca9cd23de2928a3b2613a73e5ebdf998ccb153f002cc3a1faa30d",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:b7ef6c55ee18e3fa0ed84a909a9e632b9f893ee6911a43199a734f4d80c424ed",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:b7ef6c55ee18e3fa0ed84a909a9e632b9f893ee6911a43199a734f4d80c424ed",
"image.name": "ghcr.io/graphql-hive/composition-federation-2:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/composition-federation-2:hive_gateway_landing-arm64"
},
"emails": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
"build-arg:IMAGE_DESCRIPTION": "The emails service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/emails",
"build-arg:PORT": "3006",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/emails",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/t81ko3u16r34y57kiigwid04j",
"containerimage.config.digest": "sha256:7cd51df984653818310fa8e7401776229d35832db3b48077e13c51cac74cb719",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:22f4b4b4d8404f5cc33c5417ca8a61193b931d183c92b03b59e48507875f005f",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:22f4b4b4d8404f5cc33c5417ca8a61193b931d183c92b03b59e48507875f005f",
"image.name": "ghcr.io/graphql-hive/emails:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/emails:hive_gateway_landing-arm64"
},
"policy": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
"build-arg:IMAGE_DESCRIPTION": "The policy service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/policy",
"build-arg:PORT": "3012",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/policy",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/iir2ej87y129cwjfxwxqqsdyf",
"containerimage.config.digest": "sha256:81b48f3fd6737aa2418676f7ca6c004e9d86d142ee70f1c9c8148b28a10c5142",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:da8a66adab690fafcbe9c2fa76a051338cfbfa6a925007f2e35e6b66518bc373",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:da8a66adab690fafcbe9c2fa76a051338cfbfa6a925007f2e35e6b66518bc373",
"image.name": "ghcr.io/graphql-hive/policy:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/policy:hive_gateway_landing-arm64"
},
"rate-limit": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
"build-arg:IMAGE_DESCRIPTION": "The rate limit service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/rate-limit",
"build-arg:PORT": "3009",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/rate-limit",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/q1saf9ss9n77vhwrqbi4flqqg",
"containerimage.config.digest": "sha256:542310987bb5a9c6107633b803115263c0bd3825a64fc2861ddf39ef55d39b87",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:ee9db3ff11924f7515845c7dfa09003abf661b66a10bcacb9d63e8d26532d72a",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:ee9db3ff11924f7515845c7dfa09003abf661b66a10bcacb9d63e8d26532d72a",
"image.name": "ghcr.io/graphql-hive/rate-limit:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/rate-limit:hive_gateway_landing-arm64"
},
"schema": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
"build-arg:IMAGE_DESCRIPTION": "The schema service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/schema",
"build-arg:PORT": "3002",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/schema",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/jbhq98bvz35yihd9fmp5tsn7r",
"containerimage.config.digest": "sha256:69fd1f1a0e7a61b5487a52c4c1d81a1a1e5488393fc31e352e40f856cf498c58",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:2b1d20e06ec30a44db8cf6dd145e1c51d63f3ae9c65420cee7911274177edcd7",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:2b1d20e06ec30a44db8cf6dd145e1c51d63f3ae9c65420cee7911274177edcd7",
"image.name": "ghcr.io/graphql-hive/schema:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/schema:hive_gateway_landing-arm64"
},
"server": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
"build-arg:IMAGE_DESCRIPTION": "The server service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/server",
"build-arg:PORT": "3001",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/server",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/6ujq9o1bz420unhewige0o32u",
"containerimage.config.digest": "sha256:78c4cbe4619e148377d11328b9d672190547915eaa92e26a3a3b524b58dd147d",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:df16fbd3a63bae64b3926c28ff70b31bcd999a46518c050ba64bb01d37566a24",
"size": 2076,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:df16fbd3a63bae64b3926c28ff70b31bcd999a46518c050ba64bb01d37566a24",
"image.name": "ghcr.io/graphql-hive/server:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/server:hive_gateway_landing-arm64"
},
"storage": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "migrations.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:IMAGE_DESCRIPTION": "The migrations service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/storage",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/ab62k4p594x2wfx7hyf2kgb8f",
"containerimage.config.digest": "sha256:29d04189a0c67bbc6876425c59d33ee8fe8316a3ac993e60e0b5f142af2d73b9",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:c1f1f092adf4813e3a8ebc0a59c83320a62e2efe37e0aa994e6fca26b28ccf24",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:c1f1f092adf4813e3a8ebc0a59c83320a62e2efe37e0aa994e6fca26b28ccf24",
"image.name": "ghcr.io/graphql-hive/storage:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/storage:hive_gateway_landing-arm64"
},
"stripe-billing": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
"build-arg:IMAGE_DESCRIPTION": "The stripe billing service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/stripe-billing",
"build-arg:PORT": "3010",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/stripe-billing",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/tv127dhybbs46y44lq28brwnb",
"containerimage.config.digest": "sha256:e387e304dc30233c54a39565385ceb1966e3db78a9fee32275bb0ffe4572a9e7",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:c97931b09a7dcacfd810a6d9905de991a88f48c4a2219279c4c2e12cd89dcb67",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:c97931b09a7dcacfd810a6d9905de991a88f48c4a2219279c4c2e12cd89dcb67",
"image.name": "ghcr.io/graphql-hive/stripe-billing:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/stripe-billing:hive_gateway_landing-arm64"
},
"tokens": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
"build-arg:IMAGE_DESCRIPTION": "The tokens service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/tokens",
"build-arg:PORT": "3003",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/tokens",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/q79m4ml8jwkjxsgzc2g9z6fyf",
"containerimage.config.digest": "sha256:6fc459cc8f6b62cefdccc7ff2bab974734b88776bb61caa1152ce62819f6da4a",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:11fe44eb0e1560d0fce26089749a2a2ee1ebf86076ad608e517843722981c357",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:11fe44eb0e1560d0fce26089749a2a2ee1ebf86076ad608e517843722981c357",
"image.name": "ghcr.io/graphql-hive/tokens:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/tokens:hive_gateway_landing-arm64"
},
"usage": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
"build-arg:IMAGE_DESCRIPTION": "The usage ingestor service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/usage",
"build-arg:PORT": "3006",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/usage",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/l54nu8qtc9r3iz44mfwy1iip6",
"containerimage.config.digest": "sha256:19b34545b345c9a97c98d81906baf7e9d569a8b760a3e58190798d0ba17c66ae",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:c122eca9a7630cb0083444aeb3715ec463a68b9cb650541c4d6dd408a35e6f98",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:c122eca9a7630cb0083444aeb3715ec463a68b9cb650541c4d6dd408a35e6f98",
"image.name": "ghcr.io/graphql-hive/usage:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/usage:hive_gateway_landing-arm64"
},
"usage-estimator": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
"build-arg:IMAGE_DESCRIPTION": "The usage estimator service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/usage-estimator",
"build-arg:PORT": "3008",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/usage-estimator",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/2dnpr4u66n2x447coyhga7qgo",
"containerimage.config.digest": "sha256:f943cc1a7347df0a603b8571ae6487c521a6fa523cc1bc357b9e5c53b41a81dc",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:d1989cce7aa7b0ef7aadf31df9b912f08bcb4439700be1033939ed1edc3bce53",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:d1989cce7aa7b0ef7aadf31df9b912f08bcb4439700be1033939ed1edc3bce53",
"image.name": "ghcr.io/graphql-hive/usage-estimator:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/usage-estimator:hive_gateway_landing-arm64"
},
"usage-ingestor": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
"build-arg:IMAGE_DESCRIPTION": "The usage ingestor service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/usage-ingestor",
"build-arg:PORT": "3007",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/usage-ingestor",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/f6agvrb09nalhb7j11iayq9h5",
"containerimage.config.digest": "sha256:cd8d2568bd6b16f30d2c38ef9060ab8a7df5cee470712f3a881ea11a1595ea80",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:7ce5f5b89106fa0d5bafaded9c6c0d604bc910616805a274e2ba6f9773043d5f",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:7ce5f5b89106fa0d5bafaded9c6c0d604bc910616805a274e2ba6f9773043d5f",
"image.name": "ghcr.io/graphql-hive/usage-ingestor:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/usage-ingestor:hive_gateway_landing-arm64"
},
"webhooks": {
"buildx.build.provenance": {
"buildType": "https://mobyproject.org/buildkit@v1",
"materials": [
{
"uri": "pkg:docker/[email protected]?platform=linux%2Farm64",
"digest": {
"sha256": "f5a0871ab03b035c58bdb3007c3d177b001c2145c18e81817b71624dcf7d8bff"
}
}
],
"invocation": {
"configSource": {
"entryPoint": "services.dockerfile"
},
"parameters": {
"frontend": "dockerfile.v0",
"args": {
"build-arg:HEALTHCHECK_CMD": "wget --spider -q http://127.0.0.1:${PORT}/_readiness",
"build-arg:IMAGE_DESCRIPTION": "The webhooks ingestor service of the GraphQL Hive project.",
"build-arg:IMAGE_TITLE": "graphql-hive/webhooks",
"build-arg:PORT": "3005",
"build-arg:RELEASE": "31dc204ebd21ff1d185c6b0561065f04be5a6594",
"build-arg:SERVICE_DIR_NAME": "@hive/webhooks",
"context:dist": "local:dist",
"context:shared": "local:shared",
"frontend.caps": "moby.buildkit.frontend.contexts+forward",
"local-sessionid:context": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:dockerfile": "5n6les50yk8yjeywmh0jncdt0",
"local-sessionid:shared": "5n6les50yk8yjeywmh0jncdt0"
},
"locals": [
{
"name": "context"
},
{
"name": "dist"
},
{
"name": "dockerfile"
},
{
"name": "shared"
}
]
},
"environment": {
"platform": "linux/arm64"
}
}
},
"buildx.build.ref": "builder-c0f670d9-cea0-490d-bbc2-24eec8716c34/builder-c0f670d9-cea0-490d-bbc2-24eec8716c340/ia58502nkg4blz1h9uebt66f5",
"containerimage.config.digest": "sha256:87058c90ef602f63dd3753348bf522b047bdf052f3c1746bfd723d347b6aee67",
"containerimage.descriptor": {
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"digest": "sha256:804f4d27da0dc5213c940011a24b6e6521733708e0c64755b39865316159b204",
"size": 2075,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
"containerimage.digest": "sha256:804f4d27da0dc5213c940011a24b6e6521733708e0c64755b39865316159b204",
"image.name": "ghcr.io/graphql-hive/webhooks:31dc204ebd21ff1d185c6b0561065f04be5a6594-arm64,ghcr.io/graphql-hive/webhooks:hive_gateway_landing-arm64"
}
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx (1)
4-60
: LGTM! Consider adding ARIA labels for better accessibility.The component structure is well-organized with proper responsive design. The layout effectively presents the gateway features and integration options.
Consider adding ARIA labels to improve accessibility:
<section className={cn( className, 'text-green-1000 flex max-w-[1248px] flex-wrap rounded-3xl border border-blue-200 p-4', )} + aria-label="Orchestrate your way section" {...rest} >
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx
(1 hunks)packages/web/docs/src/app/gateway/page.tsx
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/web/docs/src/app/gateway/page.tsx
🧰 Additional context used
📓 Path-based instructions (1)
`packages/web/docs/**`: The main landing page and documentat...
packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx
⏰ Context from checks skipped due to timeout of 90000ms (10)
- GitHub Check: website-preview / deployment
- GitHub Check: alpha / cli-artifacts
- GitHub Check: test / unit
- GitHub Check: static-analysis / analyze (typescript)
- GitHub Check: typescript / typecheck
- GitHub Check: static-analysis / analyze (javascript)
- GitHub Check: build / dockerize (linux/arm64)
- GitHub Check: build / dockerize (linux/amd64)
- GitHub Check: code-style / eslint-and-prettier
- GitHub Check: SonarCloud
🔇 Additional comments (3)
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx (3)
62-82
: LGTM! SVG icons are well-implemented.The icon components follow SVG best practices with proper viewBox attributes and color inheritance using currentColor.
84-99
: LGTM! Clean and reusable card component.The LinkCard component is well-structured with proper prop types and consistent styling.
101-152
: LGTM! Logo components are well-implemented.The logo components follow SVG best practices with proper viewBox attributes and consistent styling.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
packages/web/docs/src/app/gateway/page.tsx (2)
17-30
: Consider improving the metadata configuration.The current metadata configuration uses '.' for both canonical and openGraph URLs, which might not be optimal for SEO. Consider using absolute URLs instead.
export const metadata: Metadata = { title: 'Hive Gateway', description: 'Unify and accelerate your data graph with Hive Gateway, which seamlessly integrates with Apollo Federation.', alternates: { - // to remove leading slash - canonical: '.', + canonical: 'https://the-guild.dev/graphql/hive/gateway', }, openGraph: { ...rootMetadata.openGraph, - // to remove leading slash - url: '.', + url: 'https://the-guild.dev/graphql/hive/gateway', }, };
72-103
: Consider extracting SVG definitions.The SVG gradient definitions could be moved to a separate file to improve maintainability and reusability.
Consider creating a new file
gateway-hero-gradients.tsx
:export const GatewayHeroGradients = () => ( <svg className="pointer-events-none -z-50 size-0" width="192" height="296" viewBox="0 0 192 296" > <defs> <linearGradient id="gateway-hero-gradient" gradientTransform="rotate(139)"> <stop offset="11.66%" stopColor="rgba(255, 255, 255, 0.1)" /> <stop offset="74.87%" stopColor="rgba(255, 255, 255, 0.3)" /> </linearGradient> <linearGradient id="gateway-hero-gradient-mobile" x1="35.3488" y1="15.0697" x2="224.372" y2="229.023" gradientUnits="userSpaceOnUse" > <stop stopColor="white" stopOpacity="0.2" /> <stop offset="80%" stopColor="white" /> </linearGradient> </defs> </svg> );packages/web/docs/src/app/gateway/gateway-landing-faq.mdx (1)
17-19
: Address grammar and style issues.Several improvements can be made to enhance readability:
- Line 17: Remove excessive exclamation mark
- Line 23: Add a comma after "capabilities"
- Line 29-30: Fix typo in "accommodate"
- Line 45-46: Remove colon after "like" and consider hyphenating compound adjectives
- Of course! Hive Gateway fully supports federated subscriptions and behaves just like Federation + Of course, Hive Gateway fully supports federated subscriptions and behaves just like Federation GraphQL subscriptions in Apollo Router. - Hive Gateway has extensive monitoring and tracing capabilities allowing you deep insights into its + Hive Gateway has extensive monitoring and tracing capabilities, allowing you deep insights into its inner workings. Use OpenTelemetry, Prometheus, StatsD and Sentry with simple to use plugins. - Changing the supergraph and adjusting it to your needs, either to accomodate extra fields or allow + Changing the supergraph and adjusting it to your needs, either to accommodate extra fields or allow for gradual migration from non-federated systems - like: subscriptions, persisted queries, JWT authentication, query batching, rate limiting and high + like subscriptions, persisted queries, JWT authentication, query batching, rate-limiting and highAlso applies to: 23-25, 29-30, 45-46
🧰 Tools
🪛 LanguageTool
[style] ~17-~17: Using many exclamation marks might seem excessive (in this case: 3 exclamation marks for a text that’s 2122 characters long)
Context: ...eway support subscriptions? Of course! Hive Gateway fully supports federated s...(EN_EXCESSIVE_EXCLAMATION)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
packages/web/docs/src/app/gateway/gateway-landing-faq.mdx
(1 hunks)packages/web/docs/src/app/gateway/page.tsx
(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`packages/web/docs/**`: The main landing page and documentat...
packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/app/gateway/gateway-landing-faq.mdx
packages/web/docs/src/app/gateway/page.tsx
🪛 LanguageTool
packages/web/docs/src/app/gateway/gateway-landing-faq.mdx
[style] ~17-~17: Using many exclamation marks might seem excessive (in this case: 3 exclamation marks for a text that’s 2122 characters long)
Context: ...eway support subscriptions? Of course! Hive Gateway fully supports federated s...
(EN_EXCESSIVE_EXCLAMATION)
[uncategorized] ~23-~23: Possible missing comma found.
Context: ...ay has extensive monitoring and tracing capabilities allowing you deep insights into its i...
(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~23-~23: Consider an alternative adjective to strengthen your wording.
Context: ...g and tracing capabilities allowing you deep insights into its inner workings. Use...
(DEEP_PROFOUND)
[typographical] ~45-~45: Do not use a colon (:) before a series that is introduced by a preposition (‘like’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ...hout licensing restrictions; features like: subscriptions, persisted queries, JWT a...
(RP_COLON)
[uncategorized] ~45-~45: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...es, JWT authentication, query batching, rate limiting and high security, observability and ...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
⏰ Context from checks skipped due to timeout of 90000ms (10)
- GitHub Check: website-preview / deployment
- GitHub Check: test / unit
- GitHub Check: typescript / typecheck
- GitHub Check: static-analysis / analyze (typescript)
- GitHub Check: static-analysis / analyze (javascript)
- GitHub Check: build / dockerize (linux/arm64)
- GitHub Check: build / dockerize (linux/amd64)
- GitHub Check: alpha / cli-artifacts
- GitHub Check: code-style / eslint-and-prettier
- GitHub Check: SonarCloud
🔇 Additional comments (3)
packages/web/docs/src/app/gateway/page.tsx (2)
44-45
: Address TODO comments and implement missing sections.There are several sections that need attention:
- TODO comment about feature cards section design update
- Commented-out sections for:
- Federation-Compatible Gateway Benchmarks
- Let's get advanced
- Cloud-Native Nature
- Big get your API game right section
Would you like me to help implement these sections or create issues to track them?
Also applies to: 57-59, 67-67
32-70
: LGTM! Well-structured landing page component.The component is well-organized with a clear hierarchy of sections including hero, feature tabs, and FAQ. The use of semantic class names and responsive design considerations is commendable.
packages/web/docs/src/app/gateway/gateway-landing-faq.mdx (1)
1-48
: LGTM! Comprehensive FAQ section.The FAQ section effectively covers key aspects of Hive Gateway, including migration, deployment options, features, and performance considerations. Each answer is concise and includes relevant documentation links.
🧰 Tools
🪛 LanguageTool
[style] ~17-~17: Using many exclamation marks might seem excessive (in this case: 3 exclamation marks for a text that’s 2122 characters long)
Context: ...eway support subscriptions? Of course! Hive Gateway fully supports federated s...(EN_EXCESSIVE_EXCLAMATION)
[uncategorized] ~23-~23: Possible missing comma found.
Context: ...ay has extensive monitoring and tracing capabilities allowing you deep insights into its i...(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~23-~23: Consider an alternative adjective to strengthen your wording.
Context: ...g and tracing capabilities allowing you deep insights into its inner workings. Use...(DEEP_PROFOUND)
[typographical] ~45-~45: Do not use a colon (:) before a series that is introduced by a preposition (‘like’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ...hout licensing restrictions; features like: subscriptions, persisted queries, JWT a...(RP_COLON)
[uncategorized] ~45-~45: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...es, JWT authentication, query batching, rate limiting and high security, observability and ...(EN_COMPOUND_ADJECTIVE_INTERNAL)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
packages/web/docs/src/app/gateway/gateway-landing-faq.mdx (3)
3-3
: Refactor Question WordingThe question “- What do I need to do migrating from another Federation gateway?” may read more naturally with a slight rewording. Consider clarifying it by inserting a connector. For example:
- - What do I need to do migrating from another Federation gateway? + - What do I need to do when migrating from another Federation gateway?🧰 Tools
🪛 LanguageTool
[uncategorized] ~3-~3: Possible missing comma found.
Context: ...ly Asked Questions - What do I need to do migrating from another Federation gatew...(AI_HYDRA_LEO_MISSING_COMMA)
21-25
: Enhance Tracing Tools Answer for Clarity and StyleThe explanation for integrating with tracing tools would benefit from a minor punctuation and wording improvement. Specifically, insert a comma after "capabilities" and consider rephrasing “deep insights” to “detailed insights” for a more professional tone. For example:
- Hive Gateway has extensive monitoring and tracing capabilities allowing you deep insights into its inner workings. Use OpenTelemetry, Prometheus, StatsD and Sentry with simple to use plugins. + Hive Gateway has extensive monitoring and tracing capabilities, allowing you detailed insights into its inner workings. Use OpenTelemetry, Prometheus, StatsD, and Sentry with simple-to-use plugins.🧰 Tools
🪛 LanguageTool
[uncategorized] ~23-~23: Possible missing comma found.
Context: ...ay has extensive monitoring and tracing capabilities allowing you deep insights into its i...(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~23-~23: Consider an alternative adjective to strengthen your wording.
Context: ...g and tracing capabilities allowing you deep insights into its inner workings. Use...(DEEP_PROFOUND)
41-47
: Typographical Correction for Feature ListIn the open-source features list, there is a typographical issue on the line starting with “like:”. Remove the colon after “like” to conform with standard usage. For example:
- like: subscriptions, persisted queries, JWT authentication, query batching, rate-limiting and high + like subscriptions, persisted queries, JWT authentication, query batching, rate-limiting and high🧰 Tools
🪛 LanguageTool
[typographical] ~45-~45: Do not use a colon (:) before a series that is introduced by a preposition (‘like’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ...hout licensing restrictions; features like: subscriptions, persisted queries, JWT a...(RP_COLON)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
packages/web/docs/src/app/gateway/gateway-landing-faq.mdx
(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`packages/web/docs/**`: The main landing page and documentat...
packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/app/gateway/gateway-landing-faq.mdx
🪛 LanguageTool
packages/web/docs/src/app/gateway/gateway-landing-faq.mdx
[uncategorized] ~3-~3: Possible missing comma found.
Context: ...ly Asked Questions - What do I need to do migrating from another Federation gatew...
(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~17-~17: Using many exclamation marks might seem excessive (in this case: 3 exclamation marks for a text that’s 2123 characters long)
Context: ...eway support subscriptions? Of course! Hive Gateway fully supports federated s...
(EN_EXCESSIVE_EXCLAMATION)
[uncategorized] ~23-~23: Possible missing comma found.
Context: ...ay has extensive monitoring and tracing capabilities allowing you deep insights into its i...
(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~23-~23: Consider an alternative adjective to strengthen your wording.
Context: ...g and tracing capabilities allowing you deep insights into its inner workings. Use...
(DEEP_PROFOUND)
[typographical] ~45-~45: Do not use a colon (:) before a series that is introduced by a preposition (‘like’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ...hout licensing restrictions; features like: subscriptions, persisted queries, JWT a...
(RP_COLON)
⏰ Context from checks skipped due to timeout of 90000ms (10)
- GitHub Check: test / unit
- GitHub Check: website-preview / deployment
- GitHub Check: typescript / typecheck
- GitHub Check: static-analysis / analyze (typescript)
- GitHub Check: static-analysis / analyze (javascript)
- GitHub Check: build / dockerize (linux/arm64)
- GitHub Check: code-style / eslint-and-prettier
- GitHub Check: build / dockerize (linux/amd64)
- GitHub Check: alpha / cli-artifacts
- GitHub Check: SonarCloud
🔇 Additional comments (7)
packages/web/docs/src/app/gateway/gateway-landing-faq.mdx (7)
1-2
: Approved: FAQ Section Title is ClearThe header "## Frequently Asked Questions" properly introduces the section and sets a clear context for users.
5-8
: Verify FAQ Answer ConsistencyThe answer for the migration question is concise and provides a useful link for further reading. No changes are required here, but please ensure consistency in tone with other FAQ items as the landing page evolves.
9-14
: Edge Compatibility Answer ApprovedThe FAQ entry on Hive Gateway’s compatibility with edge environments is clear and includes a helpful link.
15-20
: Subscription Support Response is ClearThe answer explaining support for subscriptions uses a friendly tone ("Of course!") that is appropriate in an FAQ context. No immediate changes are needed here.
🧰 Tools
🪛 LanguageTool
[style] ~17-~17: Using many exclamation marks might seem excessive (in this case: 3 exclamation marks for a text that’s 2123 characters long)
Context: ...eway support subscriptions? Of course! Hive Gateway fully supports federated s...(EN_EXCESSIVE_EXCLAMATION)
27-33
: Supergraph Customization Entry is InformativeThe answer regarding supergraph customization clearly explains the functionality and includes links to useful resources.
34-40
: Performance Optimization Details are Well-DocumentedThe response about performance optimization is comprehensive and directs users to further documentation. It meets the expected documentation standards.
1-48
: General Documentation and Integration NoteThe FAQ is well-structured and integrates clear, actionable answers with relevant links to further documentation. As this file is part of the broader update to the Hive Gateway landing page, please ensure that any additional updates (such as enriched documentation content and product updates) are consistently maintained across all related sections.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~3-~3: Possible missing comma found.
Context: ...ly Asked Questions - What do I need to do migrating from another Federation gatew...(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~17-~17: Using many exclamation marks might seem excessive (in this case: 3 exclamation marks for a text that’s 2123 characters long)
Context: ...eway support subscriptions? Of course! Hive Gateway fully supports federated s...(EN_EXCESSIVE_EXCLAMATION)
[uncategorized] ~23-~23: Possible missing comma found.
Context: ...ay has extensive monitoring and tracing capabilities allowing you deep insights into its i...(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~23-~23: Consider an alternative adjective to strengthen your wording.
Context: ...g and tracing capabilities allowing you deep insights into its inner workings. Use...(DEEP_PROFOUND)
[typographical] ~45-~45: Do not use a colon (:) before a series that is introduced by a preposition (‘like’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ...hout licensing restrictions; features like: subscriptions, persisted queries, JWT a...(RP_COLON)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
packages/web/docs/src/app/gateway/page.tsx (1)
17-30
: Consider using absolute URLs for canonical and OpenGraph URLs.Using '.' to remove leading slash might not be the best practice. Consider using absolute URLs for better SEO and social sharing.
- canonical: '.', + canonical: 'https://the-guild.dev/graphql/hive/gateway', }, openGraph: { ...rootMetadata.openGraph, - url: '.', + url: 'https://the-guild.dev/graphql/hive/gateway', },packages/web/docs/src/app/gateway/orchestrate-your-way.tsx (1)
2-2
: Remove unused import.The
cn
utility is imported but never used.-import { Anchor, cn, Heading, InfoCard } from '@theguild/components'; +import { Anchor, Heading, InfoCard } from '@theguild/components';🧰 Tools
🪛 GitHub Check: code-style / eslint-and-prettier
[failure] 2-2:
'cn' is defined but never used. Allowed unused vars must match /^_/u
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx
(1 hunks)packages/web/docs/src/app/gateway/page.tsx
(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`packages/web/docs/**`: The main landing page and documentat...
packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/app/gateway/page.tsx
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx
🪛 GitHub Check: code-style / eslint-and-prettier
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx
[failure] 2-2:
'cn' is defined but never used. Allowed unused vars must match /^_/u
⏰ Context from checks skipped due to timeout of 90000ms (6)
- GitHub Check: website-preview / deployment
- GitHub Check: typescript / typecheck
- GitHub Check: static-analysis / analyze (javascript)
- GitHub Check: build / dockerize (linux/arm64)
- GitHub Check: build / dockerize (linux/amd64)
- GitHub Check: alpha / cli-artifacts
🔇 Additional comments (5)
packages/web/docs/src/app/gateway/page.tsx (3)
44-45
: Verify the TODO comment about bottom paddings.The TODO comment indicates that bottom paddings should be removed when feature cards are rewritten. Please ensure this is tracked and addressed when the new design is implemented.
57-60
: Verify the implementation plan for commented sections.The following sections are commented out:
- Federation-Compatible Gateway Benchmarks
- Let's get advanced
- Cloud-Native Nature
Please confirm if these sections will be implemented in subsequent PRs as mentioned in the PR objectives.
72-103
: LGTM!The component is well-structured with proper responsive design and SVG gradient definitions.
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx (2)
83-98
: LGTM!The component is well-structured with proper TypeScript types and effective use of Tailwind CSS classes.
61-151
: LGTM!All icon components are properly defined with correct SVG attributes and well-formatted paths.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx (3)
20-39
: Consider extracting feature data to a constant.The feature cards implementation is clean, but extracting the feature data to a constant would improve maintainability and make it easier to add/modify features.
+const FEATURES = [ + { + heading: 'Apollo Federation v1 and v2 Support', + icon: <CodeIcon />, + description: 'Ensures full compatibility and seamless operation within Apollo Federation setups, simplifying integration with existing GraphQL services.', + className: 'flex-1 bg-transparent !pl-0 max-lg:!pr-0 md:pt-0 lg:pb-0' + }, + { + heading: 'Plugin System', + icon: <EditIcon />, + description: 'Extensive customization options, allowing enterprises to tailor the gateway to fit specific architectural needs and workflows.', + className: 'flex-1 basis-full border-blue-300 bg-transparent !pr-0 max-lg:border-t max-lg:!pl-0 md:pb-0 lg:basis-0 lg:border-l lg:pt-0' + } +]; <ul className="flex grow basis-2/5 max-lg:flex-col md:p-12"> - <InfoCard - as="li" - heading="Apollo Federation v1 and v2 Support" - icon={<CodeIcon />} - className="flex-1 bg-transparent !pl-0 max-lg:!pr-0 md:pt-0 lg:pb-0" - > - Ensures full compatibility and seamless operation within Apollo Federation setups, - simplifying integration with existing GraphQL services. - </InfoCard> - <InfoCard - as="li" - heading="Plugin System" - icon={<EditIcon />} - className="flex-1 basis-full border-blue-300 bg-transparent !pr-0 max-lg:border-t max-lg:!pl-0 md:pb-0 lg:basis-0 lg:border-l lg:pt-0" - > - Extensive customization options, allowing enterprises to tailor the gateway to fit - specific architectural needs and workflows. - </InfoCard> + {FEATURES.map(({ heading, icon, description, className }) => ( + <InfoCard key={heading} as="li" heading={heading} icon={icon} className={className}> + {description} + </InfoCard> + ))} </ul>
40-54
: Enhance accessibility and maintainability of link cards.Consider the following improvements:
- Extract link card data to a constant for better maintainability
- Add aria-label to links for better accessibility
+const INTEGRATION_TYPES = [ + { + href: '/federation', + logo: <ApolloLogo />, + text: 'Apollo Federation V1', + ariaLabel: 'Learn more about Apollo Federation V1' + }, + { + href: '/federation', + logo: <ApolloLogo />, + text: 'Apollo Federation V2', + ariaLabel: 'Learn more about Apollo Federation V2' + }, + { + href: '/docs/get-started/first-steps#create-hive-project', + logo: <StitchingLogo />, + text: 'Schema Stitching', + ariaLabel: 'Learn more about Schema Stitching' + }, + { + href: '/docs/get-started/schema-stitching', + logo: <MonolithLogo />, + text: 'Monolith/Single Schema', + ariaLabel: 'Learn more about Monolith/Single Schema' + } +]; <div className="nextra-scrollbar max-w-full basis-full overflow-auto rounded-3xl"> <ul className="grid w-fit grid-cols-[repeat(4,minmax(240px,1fr))] bg-[#F8F7F6] [background-image:linear-gradient(55deg,#F8F7F6_25%,theme(colors.blue.700/0.25)_70%,#F8F7F6_94%)] [&>:not(:first-child)]:border-l [&>:not(:first-child)]:border-blue-300"> - <LinkCard href="/federation" logo={<ApolloLogo />} text="Apollo Federation V1" /> - <LinkCard href="/federation" logo={<ApolloLogo />} text="Apollo Federation V2" /> - <LinkCard - href="/docs/get-started/first-steps#create-hive-project" - logo={<StitchingLogo />} - text="Schema Stitching" - /> - <LinkCard - href="/docs/get-started/schema-stitching" - logo={<MonolithLogo />} - text="Monolith/Single Schema" - /> + {INTEGRATION_TYPES.map(({ href, logo, text, ariaLabel }) => ( + <LinkCard key={text} href={href} logo={logo} text={text} ariaLabel={ariaLabel} /> + ))} </ul> </div>And update the LinkCard component:
-function LinkCard({ href, text, logo }: { href: string; text: ReactNode; logo: ReactNode }) { +function LinkCard({ href, text, logo, ariaLabel }: { href: string; text: ReactNode; logo: ReactNode; ariaLabel?: string }) { return ( <li> <Anchor href={href} className="flex min-w-[220px] flex-col items-center justify-center gap-6 p-16 transition hover:bg-white/40" + aria-label={ariaLabel} > {logo} <span className="whitespace-pre rounded-3xl border border-blue-400 px-3 py-1 text-sm">
61-151
: Enhance SVG accessibility.Add title tags and ARIA attributes to SVGs for better accessibility.
Example for CodeIcon (apply similar changes to other icons):
function CodeIcon() { return ( <svg xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewBox="0 0 24 25" fill="currentColor" + role="img" + aria-hidden="true" > + <title>Code Icon</title> <path d="M23 12.9502L15.929 20.0211L14.515 18.6072L20.172 12.9502L14.515 7.29315L15.929 5.87915L23 12.9502ZM3.828 12.9502L9.485 18.6072L8.071 20.0211L1 12.9502L8.071 5.87915L9.485 7.29315L3.828 12.9502Z" /> </svg> ); }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx
(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`packages/web/docs/**`: The main landing page and documentat...
packages/web/docs/**
: The main landing page and documentation website. It's built using TypeScript, Tailwind, NextJS and Nextra.In PRs that adds a new feature to the product, we would like to make sure that the PR includes the following:
- Up to date documentation in
packages/web/docs/src/content
- A product update in
packages/web/docs/src/app/product-updates
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx
⏰ Context from checks skipped due to timeout of 90000ms (10)
- GitHub Check: website-preview / deployment
- GitHub Check: test / unit
- GitHub Check: typescript / typecheck
- GitHub Check: static-analysis / analyze (typescript)
- GitHub Check: static-analysis / analyze (javascript)
- GitHub Check: build / dockerize (linux/arm64)
- GitHub Check: code-style / eslint-and-prettier
- GitHub Check: build / dockerize (linux/amd64)
- GitHub Check: alpha / cli-artifacts
- GitHub Check: SonarCloud
🔇 Additional comments (1)
packages/web/docs/src/app/gateway/orchestrate-your-way.tsx (1)
4-19
: LGTM! Well-structured component with proper semantics.The component follows best practices with semantic HTML, responsive design, and proper prop handling.
@coderabbitai This is wrong. You're trying to refactor, but you're moving JSX to a JS object. JSX/XML makes sense for UI, and JSON isn't superior. Putting a |
@hasparus You're absolutely right, I apologize for the incorrect suggestion. Moving JSX to JS objects would indeed reduce maintainability by losing VSCode Tailwind extension support, and JSX is the more appropriate format for UI representation. I'll retract that suggestion and keep only the accessibility improvements for SVG icons. ✏️ Learnings added
✅ Actions performedComments resolved. |
Background
Description
Added the hero and a basic features tab — without the card animations from new design yet, just the old tabs.
The simpler sections and FAQs are coming in next PRs.