diff --git a/.astro/astro/content.d.ts b/.astro/astro/content.d.ts index 7842074fc..90043353b 100644 --- a/.astro/astro/content.d.ts +++ b/.astro/astro/content.d.ts @@ -565,1499 +565,49 @@ declare module 'astro:content' { } & { render(): Render[".md"] }; }; "question-groups": { -"backend/backend.md": { - id: "backend/backend.md"; - slug: "backend/backend"; +"backend.md": { + id: "backend.md"; + slug: "backend"; body: string; collection: "question-groups"; data: InferEntrySchema<"question-groups"> } & { render(): Render[".md"] }; -"backend/content/anomaly-detection.md": { - id: "backend/content/anomaly-detection.md"; - slug: "backend/content/anomaly-detection"; +"devops.md": { + id: "devops.md"; + slug: "devops"; body: string; collection: "question-groups"; data: InferEntrySchema<"question-groups"> } & { render(): Render[".md"] }; -"backend/content/api-dependencies.md": { - id: "backend/content/api-dependencies.md"; - slug: "backend/content/api-dependencies"; +"frontend.md": { + id: "frontend.md"; + slug: "frontend"; body: string; collection: "question-groups"; data: InferEntrySchema<"question-groups"> } & { render(): Render[".md"] }; -"backend/content/api-endpoint.md": { - id: "backend/content/api-endpoint.md"; - slug: "backend/content/api-endpoint"; +"javascript.md": { + id: "javascript.md"; + slug: "javascript"; body: string; collection: "question-groups"; data: InferEntrySchema<"question-groups"> } & { render(): Render[".md"] }; -"backend/content/api-tests.md": { - id: "backend/content/api-tests.md"; - slug: "backend/content/api-tests"; +"nodejs.md": { + id: "nodejs.md"; + slug: "nodejs"; body: string; collection: "question-groups"; data: InferEntrySchema<"question-groups"> } & { render(): Render[".md"] }; -"backend/content/api-versioning.md": { - id: "backend/content/api-versioning.md"; - slug: "backend/content/api-versioning"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/batch-processing.md": { - id: "backend/content/batch-processing.md"; - slug: "backend/content/batch-processing"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/benefits-drawbacks-microservices.md": { - id: "backend/content/benefits-drawbacks-microservices.md"; - slug: "backend/content/benefits-drawbacks-microservices"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/bg-tasks.md": { - id: "backend/content/bg-tasks.md"; - slug: "backend/content/bg-tasks"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/blue-green-deployment.md": { - id: "backend/content/blue-green-deployment.md"; - slug: "backend/content/blue-green-deployment"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/cache-eviction.md": { - id: "backend/content/cache-eviction.md"; - slug: "backend/content/cache-eviction"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/cap-theorem.md": { - id: "backend/content/cap-theorem.md"; - slug: "backend/content/cap-theorem"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/ci-cd.md": { - id: "backend/content/ci-cd.md"; - slug: "backend/content/ci-cd"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/containerization.md": { - id: "backend/content/containerization.md"; - slug: "backend/content/containerization"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/correlation-ids.md": { - id: "backend/content/correlation-ids.md"; - slug: "backend/content/correlation-ids"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/data-encryption.md": { - id: "backend/content/data-encryption.md"; - slug: "backend/content/data-encryption"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/db-connections.md": { - id: "backend/content/db-connections.md"; - slug: "backend/content/db-connections"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/deadlock-db-transaction.md": { - id: "backend/content/deadlock-db-transaction.md"; - slug: "backend/content/deadlock-db-transaction"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/debugging-backend.md": { - id: "backend/content/debugging-backend.md"; - slug: "backend/content/debugging-backend"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/decompose-microservices.md": { - id: "backend/content/decompose-microservices.md"; - slug: "backend/content/decompose-microservices"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/distributed-caching.md": { - id: "backend/content/distributed-caching.md"; - slug: "backend/content/distributed-caching"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/eventual-consistency.md": { - id: "backend/content/eventual-consistency.md"; - slug: "backend/content/eventual-consistency"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/fault-tolerance.md": { - id: "backend/content/fault-tolerance.md"; - slug: "backend/content/fault-tolerance"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/file-uploads.md": { - id: "backend/content/file-uploads.md"; - slug: "backend/content/file-uploads"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/fulltext-search.md": { - id: "backend/content/fulltext-search.md"; - slug: "backend/content/fulltext-search"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/gdpr-compliance.md": { - id: "backend/content/gdpr-compliance.md"; - slug: "backend/content/gdpr-compliance"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/high-available-storage.md": { - id: "backend/content/high-available-storage.md"; - slug: "backend/content/high-available-storage"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/http-request-response-cycle.md": { - id: "backend/content/http-request-response-cycle.md"; - slug: "backend/content/http-request-response-cycle"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/idempotency.md": { - id: "backend/content/idempotency.md"; - slug: "backend/content/idempotency"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/instrument-monitor.md": { - id: "backend/content/instrument-monitor.md"; - slug: "backend/content/instrument-monitor"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/iot-streams.md": { - id: "backend/content/iot-streams.md"; - slug: "backend/content/iot-streams"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/load-balanced-session.md": { - id: "backend/content/load-balanced-session.md"; - slug: "backend/content/load-balanced-session"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/load-testing-api.md": { - id: "backend/content/load-testing-api.md"; - slug: "backend/content/load-testing-api"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/long-running.md": { - id: "backend/content/long-running.md"; - slug: "backend/content/long-running"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/maintainable-code.md": { - id: "backend/content/maintainable-code.md"; - slug: "backend/content/maintainable-code"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/message-queue.md": { - id: "backend/content/message-queue.md"; - slug: "backend/content/message-queue"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/optimistic-vs-pessimistic.md": { - id: "backend/content/optimistic-vs-pessimistic.md"; - slug: "backend/content/optimistic-vs-pessimistic"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/protect-sql-injection.md": { - id: "backend/content/protect-sql-injection.md"; - slug: "backend/content/protect-sql-injection"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/rate-limiting.md": { - id: "backend/content/rate-limiting.md"; - slug: "backend/content/rate-limiting"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/realtime-data-sync.md": { - id: "backend/content/realtime-data-sync.md"; - slug: "backend/content/realtime-data-sync"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/rest-core-principles.md": { - id: "backend/content/rest-core-principles.md"; - slug: "backend/content/rest-core-principles"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/reverse-proxy.md": { - id: "backend/content/reverse-proxy.md"; - slug: "backend/content/reverse-proxy"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/scale-backend.md": { - id: "backend/content/scale-backend.md"; - slug: "backend/content/scale-backend"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/schema-migrations.md": { - id: "backend/content/schema-migrations.md"; - slug: "backend/content/schema-migrations"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/secure-api.md": { - id: "backend/content/secure-api.md"; - slug: "backend/content/secure-api"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/secure-interservice.md": { - id: "backend/content/secure-interservice.md"; - slug: "backend/content/secure-interservice"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/session-management.md": { - id: "backend/content/session-management.md"; - slug: "backend/content/session-management"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/sql-vs-nosql.md": { - id: "backend/content/sql-vs-nosql.md"; - slug: "backend/content/sql-vs-nosql"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/sso.md": { - id: "backend/content/sso.md"; - slug: "backend/content/sso"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/statelessness-http.md": { - id: "backend/content/statelessness-http.md"; - slug: "backend/content/statelessness-http"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"backend/content/webhooks.md": { - id: "backend/content/webhooks.md"; - slug: "backend/content/webhooks"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/ansible-benefits.md": { - id: "devops/content/ansible-benefits.md"; - slug: "devops/content/ansible-benefits"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/auto-scaling.md": { - id: "devops/content/auto-scaling.md"; - slug: "devops/content/auto-scaling"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/blue-green-deployment.md": { - id: "devops/content/blue-green-deployment.md"; - slug: "devops/content/blue-green-deployment"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/build-pipelines.md": { - id: "devops/content/build-pipelines.md"; - slug: "devops/content/build-pipelines"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/canary-release.md": { - id: "devops/content/canary-release.md"; - slug: "devops/content/canary-release"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/cicd-setup.md": { - id: "devops/content/cicd-setup.md"; - slug: "devops/content/cicd-setup"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/cluster-health.md": { - id: "devops/content/cluster-health.md"; - slug: "devops/content/cluster-health"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/common-iac-tools.md": { - id: "devops/content/common-iac-tools.md"; - slug: "devops/content/common-iac-tools"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/container-consistency.md": { - id: "devops/content/container-consistency.md"; - slug: "devops/content/container-consistency"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/container-vs-vm.md": { - id: "devops/content/container-vs-vm.md"; - slug: "devops/content/container-vs-vm"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/continuous-monitoring.md": { - id: "devops/content/continuous-monitoring.md"; - slug: "devops/content/continuous-monitoring"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/data-migration.md": { - id: "devops/content/data-migration.md"; - slug: "devops/content/data-migration"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/devsecops.md": { - id: "devops/content/devsecops.md"; - slug: "devops/content/devsecops"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/docker-compose.md": { - id: "devops/content/docker-compose.md"; - slug: "devops/content/docker-compose"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/explain-ci-vs-cd.md": { - id: "devops/content/explain-ci-vs-cd.md"; - slug: "devops/content/explain-ci-vs-cd"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/health-monitor.md": { - id: "devops/content/health-monitor.md"; - slug: "devops/content/health-monitor"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/high-availability.md": { - id: "devops/content/high-availability.md"; - slug: "devops/content/high-availability"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/iac-concept.md": { - id: "devops/content/iac-concept.md"; - slug: "devops/content/iac-concept"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/implement-logging.md": { - id: "devops/content/implement-logging.md"; - slug: "devops/content/implement-logging"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/kubernetes-components.md": { - id: "devops/content/kubernetes-components.md"; - slug: "devops/content/kubernetes-components"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/kubernetes-operators.md": { - id: "devops/content/kubernetes-operators.md"; - slug: "devops/content/kubernetes-operators"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/load-balancer.md": { - id: "devops/content/load-balancer.md"; - slug: "devops/content/load-balancer"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/microservice-challenges.md": { - id: "devops/content/microservice-challenges.md"; - slug: "devops/content/microservice-challenges"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/microservice-vs-monolithic.md": { - id: "devops/content/microservice-vs-monolithic.md"; - slug: "devops/content/microservice-vs-monolithic"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/migrate-environment.md": { - id: "devops/content/migrate-environment.md"; - slug: "devops/content/migrate-environment"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/multi-cloud-kubernetes.md": { - id: "devops/content/multi-cloud-kubernetes.md"; - slug: "devops/content/multi-cloud-kubernetes"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/multi-cloud.md": { - id: "devops/content/multi-cloud.md"; - slug: "devops/content/multi-cloud"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/network-configuration.md": { - id: "devops/content/network-configuration.md"; - slug: "devops/content/network-configuration"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/optimize-cicd.md": { - id: "devops/content/optimize-cicd.md"; - slug: "devops/content/optimize-cicd"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/orchestration.md": { - id: "devops/content/orchestration.md"; - slug: "devops/content/orchestration"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/popular-cicd-tools.md": { - id: "devops/content/popular-cicd-tools.md"; - slug: "devops/content/popular-cicd-tools"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/purpose-of-cm.md": { - id: "devops/content/purpose-of-cm.md"; - slug: "devops/content/purpose-of-cm"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/reverse-proxy.md": { - id: "devops/content/reverse-proxy.md"; - slug: "devops/content/reverse-proxy"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/role-of-devops.md": { - id: "devops/content/role-of-devops.md"; - slug: "devops/content/role-of-devops"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/scaling-differences.md": { - id: "devops/content/scaling-differences.md"; - slug: "devops/content/scaling-differences"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/secret-management.md": { - id: "devops/content/secret-management.md"; - slug: "devops/content/secret-management"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/serverless-computing.md": { - id: "devops/content/serverless-computing.md"; - slug: "devops/content/serverless-computing"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/stateful-applications.md": { - id: "devops/content/stateful-applications.md"; - slug: "devops/content/stateful-applications"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/what-is-devops.md": { - id: "devops/content/what-is-devops.md"; - slug: "devops/content/what-is-devops"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/what-is-docker.md": { - id: "devops/content/what-is-docker.md"; - slug: "devops/content/what-is-docker"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/what-is-gitops.md": { - id: "devops/content/what-is-gitops.md"; - slug: "devops/content/what-is-gitops"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/what-is-helm-chart.md": { - id: "devops/content/what-is-helm-chart.md"; - slug: "devops/content/what-is-helm-chart"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/what-is-iac.md": { - id: "devops/content/what-is-iac.md"; - slug: "devops/content/what-is-iac"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/what-is-kubernetes.md": { - id: "devops/content/what-is-kubernetes.md"; - slug: "devops/content/what-is-kubernetes"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/what-is-prometheus.md": { - id: "devops/content/what-is-prometheus.md"; - slug: "devops/content/what-is-prometheus"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/what-is-rollback.md": { - id: "devops/content/what-is-rollback.md"; - slug: "devops/content/what-is-rollback"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/what-is-service-mesh.md": { - id: "devops/content/what-is-service-mesh.md"; - slug: "devops/content/what-is-service-mesh"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/what-is-shift-left.md": { - id: "devops/content/what-is-shift-left.md"; - slug: "devops/content/what-is-shift-left"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/what-is-version-control.md": { - id: "devops/content/what-is-version-control.md"; - slug: "devops/content/what-is-version-control"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/content/zero-downtime.md": { - id: "devops/content/zero-downtime.md"; - slug: "devops/content/zero-downtime"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"devops/devops.md": { - id: "devops/devops.md"; - slug: "devops/devops"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/async-ops-js.md": { - id: "frontend/content/async-ops-js.md"; - slug: "frontend/content/async-ops-js"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/block-inline-elems.md": { - id: "frontend/content/block-inline-elems.md"; - slug: "frontend/content/block-inline-elems"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/box-model.md": { - id: "frontend/content/box-model.md"; - slug: "frontend/content/box-model"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/browser-render.md": { - id: "frontend/content/browser-render.md"; - slug: "frontend/content/browser-render"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/client-storage.md": { - id: "frontend/content/client-storage.md"; - slug: "frontend/content/client-storage"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/closures.md": { - id: "frontend/content/closures.md"; - slug: "frontend/content/closures"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/critical-css.md": { - id: "frontend/content/critical-css.md"; - slug: "frontend/content/critical-css"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/csp.md": { - id: "frontend/content/csp.md"; - slug: "frontend/content/csp"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/css-grid.md": { - id: "frontend/content/css-grid.md"; - slug: "frontend/content/css-grid"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/css-specificity.md": { - id: "frontend/content/css-specificity.md"; - slug: "frontend/content/css-specificity"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/css-variables.md": { - id: "frontend/content/css-variables.md"; - slug: "frontend/content/css-variables"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/dom.md": { - id: "frontend/content/dom.md"; - slug: "frontend/content/dom"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/em-vs-rem.md": { - id: "frontend/content/em-vs-rem.md"; - slug: "frontend/content/em-vs-rem"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/event-delegation.md": { - id: "frontend/content/event-delegation.md"; - slug: "frontend/content/event-delegation"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/event-listeners.md": { - id: "frontend/content/event-listeners.md"; - slug: "frontend/content/event-listeners"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/event-loop-js.md": { - id: "frontend/content/event-loop-js.md"; - slug: "frontend/content/event-loop-js"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/flexbox-layout.md": { - id: "frontend/content/flexbox-layout.md"; - slug: "frontend/content/flexbox-layout"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/id-vs-class.md": { - id: "frontend/content/id-vs-class.md"; - slug: "frontend/content/id-vs-class"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/improve-web-perf.md": { - id: "frontend/content/improve-web-perf.md"; - slug: "frontend/content/improve-web-perf"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/js-promises.md": { - id: "frontend/content/js-promises.md"; - slug: "frontend/content/js-promises"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/media-queries.md": { - id: "frontend/content/media-queries.md"; - slug: "frontend/content/media-queries"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/null-vs-undefined.md": { - id: "frontend/content/null-vs-undefined.md"; - slug: "frontend/content/null-vs-undefined"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/optimize-assets.md": { - id: "frontend/content/optimize-assets.md"; - slug: "frontend/content/optimize-assets"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/same-origin-policy.md": { - id: "frontend/content/same-origin-policy.md"; - slug: "frontend/content/same-origin-policy"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/seo-best-practices.md": { - id: "frontend/content/seo-best-practices.md"; - slug: "frontend/content/seo-best-practices"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/service-workers.md": { - id: "frontend/content/service-workers.md"; - slug: "frontend/content/service-workers"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/ssr-when.md": { - id: "frontend/content/ssr-when.md"; - slug: "frontend/content/ssr-when"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/state-mgmt-spa.md": { - id: "frontend/content/state-mgmt-spa.md"; - slug: "frontend/content/state-mgmt-spa"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/tree-shaking.md": { - id: "frontend/content/tree-shaking.md"; - slug: "frontend/content/tree-shaking"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/content/vdom.md": { - id: "frontend/content/vdom.md"; - slug: "frontend/content/vdom"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"frontend/frontend.md": { - id: "frontend/frontend.md"; - slug: "frontend/frontend"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/alert-prompt-confirm.md": { - id: "javascript/content/alert-prompt-confirm.md"; - slug: "javascript/content/alert-prompt-confirm"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/append-child-vs-insert-before.md": { - id: "javascript/content/append-child-vs-insert-before.md"; - slug: "javascript/content/append-child-vs-insert-before"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/async-vs-sync.md": { - id: "javascript/content/async-vs-sync.md"; - slug: "javascript/content/async-vs-sync"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/break-and-continue.md": { - id: "javascript/content/break-and-continue.md"; - slug: "javascript/content/break-and-continue"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/callback-hell.md": { - id: "javascript/content/callback-hell.md"; - slug: "javascript/content/callback-hell"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/closure.md": { - id: "javascript/content/closure.md"; - slug: "javascript/content/closure"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/comma-operator.md": { - id: "javascript/content/comma-operator.md"; - slug: "javascript/content/comma-operator"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/create-element.md": { - id: "javascript/content/create-element.md"; - slug: "javascript/content/create-element"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/custom-event.md": { - id: "javascript/content/custom-event.md"; - slug: "javascript/content/custom-event"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/debug-javascript.md": { - id: "javascript/content/debug-javascript.md"; - slug: "javascript/content/debug-javascript"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/defer-vs-async.md": { - id: "javascript/content/defer-vs-async.md"; - slug: "javascript/content/defer-vs-async"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/do-while-loop.md": { - id: "javascript/content/do-while-loop.md"; - slug: "javascript/content/do-while-loop"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/equality-operator.md": { - id: "javascript/content/equality-operator.md"; - slug: "javascript/content/equality-operator"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/error-in-async-await.md": { - id: "javascript/content/error-in-async-await.md"; - slug: "javascript/content/error-in-async-await"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/error-in-promise.md": { - id: "javascript/content/error-in-promise.md"; - slug: "javascript/content/error-in-promise"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/event-bubbling.md": { - id: "javascript/content/event-bubbling.md"; - slug: "javascript/content/event-bubbling"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/event-loop.md": { - id: "javascript/content/event-loop.md"; - slug: "javascript/content/event-loop"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/explicit-binding.md": { - id: "javascript/content/explicit-binding.md"; - slug: "javascript/content/explicit-binding"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/filter-method.md": { - id: "javascript/content/filter-method.md"; - slug: "javascript/content/filter-method"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/finally-block-in-promise.md": { - id: "javascript/content/finally-block-in-promise.md"; - slug: "javascript/content/finally-block-in-promise"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/find-unique-array-values.md": { - id: "javascript/content/find-unique-array-values.md"; - slug: "javascript/content/find-unique-array-values"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/for-each-method.md": { - id: "javascript/content/for-each-method.md"; - slug: "javascript/content/for-each-method"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/heap-and-stack.md": { - id: "javascript/content/heap-and-stack.md"; - slug: "javascript/content/heap-and-stack"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/hoisting.md": { - id: "javascript/content/hoisting.md"; - slug: "javascript/content/hoisting"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/iife.md": { - id: "javascript/content/iife.md"; - slug: "javascript/content/iife"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/immutable-object.md": { - id: "javascript/content/immutable-object.md"; - slug: "javascript/content/immutable-object"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/increment-operator.md": { - id: "javascript/content/increment-operator.md"; - slug: "javascript/content/increment-operator"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/infinite-loop.md": { - id: "javascript/content/infinite-loop.md"; - slug: "javascript/content/infinite-loop"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/inheritance.md": { - id: "javascript/content/inheritance.md"; - slug: "javascript/content/inheritance"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/labelled-statements.md": { - id: "javascript/content/labelled-statements.md"; - slug: "javascript/content/labelled-statements"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/logical-operators.md": { - id: "javascript/content/logical-operators.md"; - slug: "javascript/content/logical-operators"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/map-method.md": { - id: "javascript/content/map-method.md"; - slug: "javascript/content/map-method"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/map.md": { - id: "javascript/content/map.md"; - slug: "javascript/content/map"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/measure-dimensions.md": { - id: "javascript/content/measure-dimensions.md"; - slug: "javascript/content/measure-dimensions"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/merge-arrays.md": { - id: "javascript/content/merge-arrays.md"; - slug: "javascript/content/merge-arrays"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/nullish-coalescing-operator.md": { - id: "javascript/content/nullish-coalescing-operator.md"; - slug: "javascript/content/nullish-coalescing-operator"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/parse-json.md": { - id: "javascript/content/parse-json.md"; - slug: "javascript/content/parse-json"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/prevent-default.md": { - id: "javascript/content/prevent-default.md"; - slug: "javascript/content/prevent-default"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/promise-all-vs-all-settled.md": { - id: "javascript/content/promise-all-vs-all-settled.md"; - slug: "javascript/content/promise-all-vs-all-settled"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/prototype-chain.md": { - id: "javascript/content/prototype-chain.md"; - slug: "javascript/content/prototype-chain"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/query-selector.md": { - id: "javascript/content/query-selector.md"; - slug: "javascript/content/query-selector"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/reduce-method.md": { - id: "javascript/content/reduce-method.md"; - slug: "javascript/content/reduce-method"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/remove-element.md": { - id: "javascript/content/remove-element.md"; - slug: "javascript/content/remove-element"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/scroll-to-top.md": { - id: "javascript/content/scroll-to-top.md"; - slug: "javascript/content/scroll-to-top"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/set-interval.md": { - id: "javascript/content/set-interval.md"; - slug: "javascript/content/set-interval"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/set-timeout.md": { - id: "javascript/content/set-timeout.md"; - slug: "javascript/content/set-timeout"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/set.md": { - id: "javascript/content/set.md"; - slug: "javascript/content/set"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/spread-operator.md": { - id: "javascript/content/spread-operator.md"; - slug: "javascript/content/spread-operator"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/switch-case.md": { - id: "javascript/content/switch-case.md"; - slug: "javascript/content/switch-case"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/ternary-operator.md": { - id: "javascript/content/ternary-operator.md"; - slug: "javascript/content/ternary-operator"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/content/variable-number-of-arguments.md": { - id: "javascript/content/variable-number-of-arguments.md"; - slug: "javascript/content/variable-number-of-arguments"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"javascript/javascript.md": { - id: "javascript/javascript.md"; - slug: "javascript/javascript"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"nodejs/content/commonjs-vs-esm.md": { - id: "nodejs/content/commonjs-vs-esm.md"; - slug: "nodejs/content/commonjs-vs-esm"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"nodejs/content/error-handling.md": { - id: "nodejs/content/error-handling.md"; - slug: "nodejs/content/error-handling"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"nodejs/content/exit-codes.md": { - id: "nodejs/content/exit-codes.md"; - slug: "nodejs/content/exit-codes"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"nodejs/content/input-from-command-line.md": { - id: "nodejs/content/input-from-command-line.md"; - slug: "nodejs/content/input-from-command-line"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"nodejs/content/order-priority.md": { - id: "nodejs/content/order-priority.md"; - slug: "nodejs/content/order-priority"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"nodejs/content/process-argv.md": { - id: "nodejs/content/process-argv.md"; - slug: "nodejs/content/process-argv"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"nodejs/content/process-cwd-vs-dirname.md": { - id: "nodejs/content/process-cwd-vs-dirname.md"; - slug: "nodejs/content/process-cwd-vs-dirname"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"nodejs/content/web-server.md": { - id: "nodejs/content/web-server.md"; - slug: "nodejs/content/web-server"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"nodejs/nodejs.md": { - id: "nodejs/nodejs.md"; - slug: "nodejs/nodejs"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/component-lifecycle.md": { - id: "react/content/component-lifecycle.md"; - slug: "react/content/component-lifecycle"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/controlled-vs-uncontrolled.md": { - id: "react/content/controlled-vs-uncontrolled.md"; - slug: "react/content/controlled-vs-uncontrolled"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/create-portal.md": { - id: "react/content/create-portal.md"; - slug: "react/content/create-portal"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/custom-hook.md": { - id: "react/content/custom-hook.md"; - slug: "react/content/custom-hook"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/error-boundaries.md": { - id: "react/content/error-boundaries.md"; - slug: "react/content/error-boundaries"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/flush-sync.md": { - id: "react/content/flush-sync.md"; - slug: "react/content/flush-sync"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/investigate-slow-app.md": { - id: "react/content/investigate-slow-app.md"; - slug: "react/content/investigate-slow-app"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/lazy-loading.md": { - id: "react/content/lazy-loading.md"; - slug: "react/content/lazy-loading"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/pure-components.md": { - id: "react/content/pure-components.md"; - slug: "react/content/pure-components"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/re-renders.md": { - id: "react/content/re-renders.md"; - slug: "react/content/re-renders"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/ref-forwarding.md": { - id: "react/content/ref-forwarding.md"; - slug: "react/content/ref-forwarding"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/render-list.md": { - id: "react/content/render-list.md"; - slug: "react/content/render-list"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/strict-mode.md": { - id: "react/content/strict-mode.md"; - slug: "react/content/strict-mode"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/suspense.md": { - id: "react/content/suspense.md"; - slug: "react/content/suspense"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/synthetic-events.md": { - id: "react/content/synthetic-events.md"; - slug: "react/content/synthetic-events"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/use-transition.md": { - id: "react/content/use-transition.md"; - slug: "react/content/use-transition"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/content/virtual-dom.md": { - id: "react/content/virtual-dom.md"; - slug: "react/content/virtual-dom"; - body: string; - collection: "question-groups"; - data: InferEntrySchema<"question-groups"> -} & { render(): Render[".md"] }; -"react/react.md": { - id: "react/react.md"; - slug: "react/react"; +"react.md": { + id: "react.md"; + slug: "react"; body: string; collection: "question-groups"; data: InferEntrySchema<"question-groups"> } & { render(): Render[".md"] }; }; -"questions": Record; }; diff --git a/.gitignore b/.gitignore index af5f0247e..2f58356a1 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ tests-examples !/editor/readonly-editor.tsx !/editor/renderer/renderer.ts !/editor/renderer/index.tsx +/.astro diff --git a/src/components/Guide/GuideContent.astro b/src/components/Guide/GuideContent.astro index 3eeb4db1e..d07edd159 100644 --- a/src/components/Guide/GuideContent.astro +++ b/src/components/Guide/GuideContent.astro @@ -10,11 +10,11 @@ interface Props { const { guide } = Astro.props; -const allHeadings = guide.getHeadings(); +const { headings: allHeadings, Content } = await guide.render(); const tableOfContent = getGuideTableOfContent(allHeadings); const showTableOfContent = tableOfContent.length > 0; -const { frontmatter: guideFrontmatter, author } = guide; +const { data: guideFrontmatter, author } = guide; ---
@@ -44,11 +44,11 @@ const { frontmatter: guideFrontmatter, author } = guide; class='inline-flex items-center font-medium underline-offset-2 hover:text-gray-600 hover:underline' > {author.frontmatter.name} - {author.frontmatter.name} + {author.data.name}

- +
diff --git a/src/components/GuideListItem.astro b/src/components/GuideListItem.astro index 7b9e278c2..a4b972673 100644 --- a/src/components/GuideListItem.astro +++ b/src/components/GuideListItem.astro @@ -1,7 +1,7 @@ --- -import type { GuideFileType, GuideFrontmatter } from '../lib/guide'; +import type { GuideFileType } from '../lib/guide'; import { replaceVariables } from '../lib/markdown'; -import { QuestionGroupType } from '../lib/question-group'; +import type { QuestionGroupType } from '../lib/question-group'; export interface Props { guide: GuideFileType | QuestionGroupType; @@ -14,7 +14,7 @@ function isQuestionGroupType( } const { guide } = Astro.props; -const { data, id } = guide; +const { data: frontmatter, slug: id } = guide; let pageUrl = ''; let guideType = ''; @@ -23,9 +23,9 @@ if (isQuestionGroupType(guide)) { pageUrl = `/questions/${id}`; guideType = 'Questions'; } else { - const excludedBySlug = (frontmatter as GuideFrontmatter).excludedBySlug; + const excludedBySlug = (frontmatter as GuideFileType['data']).excludedBySlug; pageUrl = excludedBySlug ? excludedBySlug : `/guides/${id}`; - guideType = (frontmatter as GuideFrontmatter).type; + guideType = (frontmatter as GuideFileType['data']).type; } --- @@ -46,7 +46,7 @@ if (isQuestionGroupType(guide)) { New diff --git a/src/content/question-group.ts b/src/content/question-group.ts index 3bc632e12..6e2a965e9 100644 --- a/src/content/question-group.ts +++ b/src/content/question-group.ts @@ -10,7 +10,7 @@ export const questionGroupCollection = defineCollection({ description: z.string(), isNew: z.boolean(), authorId: z.string().optional(), - date: z.string().optional(), + date: z.date().optional(), seo: z.object({ title: z.string(), description: z.string(), diff --git a/src/content/question-groups/backend/backend.md b/src/content/question-groups/backend.md similarity index 100% rename from src/content/question-groups/backend/backend.md rename to src/content/question-groups/backend.md diff --git a/src/content/question-groups/devops/devops.md b/src/content/question-groups/devops.md similarity index 100% rename from src/content/question-groups/devops/devops.md rename to src/content/question-groups/devops.md diff --git a/src/content/question-groups/frontend/frontend.md b/src/content/question-groups/frontend.md similarity index 100% rename from src/content/question-groups/frontend/frontend.md rename to src/content/question-groups/frontend.md diff --git a/src/content/question-groups/javascript/javascript.md b/src/content/question-groups/javascript.md similarity index 100% rename from src/content/question-groups/javascript/javascript.md rename to src/content/question-groups/javascript.md diff --git a/src/content/question-groups/nodejs/nodejs.md b/src/content/question-groups/nodejs.md similarity index 100% rename from src/content/question-groups/nodejs/nodejs.md rename to src/content/question-groups/nodejs.md diff --git a/src/content/question-groups/react/react.md b/src/content/question-groups/react.md similarity index 100% rename from src/content/question-groups/react/react.md rename to src/content/question-groups/react.md diff --git a/src/content/question-groups/backend/content/anomaly-detection.md b/src/data/question-groups/backend/content/anomaly-detection.md similarity index 100% rename from src/content/question-groups/backend/content/anomaly-detection.md rename to src/data/question-groups/backend/content/anomaly-detection.md diff --git a/src/content/question-groups/backend/content/api-dependencies.md b/src/data/question-groups/backend/content/api-dependencies.md similarity index 100% rename from src/content/question-groups/backend/content/api-dependencies.md rename to src/data/question-groups/backend/content/api-dependencies.md diff --git a/src/content/question-groups/backend/content/api-endpoint.md b/src/data/question-groups/backend/content/api-endpoint.md similarity index 100% rename from src/content/question-groups/backend/content/api-endpoint.md rename to src/data/question-groups/backend/content/api-endpoint.md diff --git a/src/content/question-groups/backend/content/api-tests.md b/src/data/question-groups/backend/content/api-tests.md similarity index 100% rename from src/content/question-groups/backend/content/api-tests.md rename to src/data/question-groups/backend/content/api-tests.md diff --git a/src/content/question-groups/backend/content/api-versioning.md b/src/data/question-groups/backend/content/api-versioning.md similarity index 100% rename from src/content/question-groups/backend/content/api-versioning.md rename to src/data/question-groups/backend/content/api-versioning.md diff --git a/src/content/question-groups/backend/content/batch-processing.md b/src/data/question-groups/backend/content/batch-processing.md similarity index 100% rename from src/content/question-groups/backend/content/batch-processing.md rename to src/data/question-groups/backend/content/batch-processing.md diff --git a/src/content/question-groups/backend/content/benefits-drawbacks-microservices.md b/src/data/question-groups/backend/content/benefits-drawbacks-microservices.md similarity index 100% rename from src/content/question-groups/backend/content/benefits-drawbacks-microservices.md rename to src/data/question-groups/backend/content/benefits-drawbacks-microservices.md diff --git a/src/content/question-groups/backend/content/bg-tasks.md b/src/data/question-groups/backend/content/bg-tasks.md similarity index 100% rename from src/content/question-groups/backend/content/bg-tasks.md rename to src/data/question-groups/backend/content/bg-tasks.md diff --git a/src/content/question-groups/backend/content/blue-green-deployment.md b/src/data/question-groups/backend/content/blue-green-deployment.md similarity index 100% rename from src/content/question-groups/backend/content/blue-green-deployment.md rename to src/data/question-groups/backend/content/blue-green-deployment.md diff --git a/src/content/question-groups/backend/content/cache-eviction.md b/src/data/question-groups/backend/content/cache-eviction.md similarity index 100% rename from src/content/question-groups/backend/content/cache-eviction.md rename to src/data/question-groups/backend/content/cache-eviction.md diff --git a/src/content/question-groups/backend/content/cap-theorem.md b/src/data/question-groups/backend/content/cap-theorem.md similarity index 100% rename from src/content/question-groups/backend/content/cap-theorem.md rename to src/data/question-groups/backend/content/cap-theorem.md diff --git a/src/content/question-groups/backend/content/ci-cd.md b/src/data/question-groups/backend/content/ci-cd.md similarity index 100% rename from src/content/question-groups/backend/content/ci-cd.md rename to src/data/question-groups/backend/content/ci-cd.md diff --git a/src/content/question-groups/backend/content/containerization.md b/src/data/question-groups/backend/content/containerization.md similarity index 100% rename from src/content/question-groups/backend/content/containerization.md rename to src/data/question-groups/backend/content/containerization.md diff --git a/src/content/question-groups/backend/content/correlation-ids.md b/src/data/question-groups/backend/content/correlation-ids.md similarity index 100% rename from src/content/question-groups/backend/content/correlation-ids.md rename to src/data/question-groups/backend/content/correlation-ids.md diff --git a/src/content/question-groups/backend/content/data-encryption.md b/src/data/question-groups/backend/content/data-encryption.md similarity index 100% rename from src/content/question-groups/backend/content/data-encryption.md rename to src/data/question-groups/backend/content/data-encryption.md diff --git a/src/content/question-groups/backend/content/db-connections.md b/src/data/question-groups/backend/content/db-connections.md similarity index 100% rename from src/content/question-groups/backend/content/db-connections.md rename to src/data/question-groups/backend/content/db-connections.md diff --git a/src/content/question-groups/backend/content/deadlock-db-transaction.md b/src/data/question-groups/backend/content/deadlock-db-transaction.md similarity index 100% rename from src/content/question-groups/backend/content/deadlock-db-transaction.md rename to src/data/question-groups/backend/content/deadlock-db-transaction.md diff --git a/src/content/question-groups/backend/content/debugging-backend.md b/src/data/question-groups/backend/content/debugging-backend.md similarity index 100% rename from src/content/question-groups/backend/content/debugging-backend.md rename to src/data/question-groups/backend/content/debugging-backend.md diff --git a/src/content/question-groups/backend/content/decompose-microservices.md b/src/data/question-groups/backend/content/decompose-microservices.md similarity index 100% rename from src/content/question-groups/backend/content/decompose-microservices.md rename to src/data/question-groups/backend/content/decompose-microservices.md diff --git a/src/content/question-groups/backend/content/distributed-caching.md b/src/data/question-groups/backend/content/distributed-caching.md similarity index 100% rename from src/content/question-groups/backend/content/distributed-caching.md rename to src/data/question-groups/backend/content/distributed-caching.md diff --git a/src/content/question-groups/backend/content/eventual-consistency.md b/src/data/question-groups/backend/content/eventual-consistency.md similarity index 100% rename from src/content/question-groups/backend/content/eventual-consistency.md rename to src/data/question-groups/backend/content/eventual-consistency.md diff --git a/src/content/question-groups/backend/content/fault-tolerance.md b/src/data/question-groups/backend/content/fault-tolerance.md similarity index 100% rename from src/content/question-groups/backend/content/fault-tolerance.md rename to src/data/question-groups/backend/content/fault-tolerance.md diff --git a/src/content/question-groups/backend/content/file-uploads.md b/src/data/question-groups/backend/content/file-uploads.md similarity index 100% rename from src/content/question-groups/backend/content/file-uploads.md rename to src/data/question-groups/backend/content/file-uploads.md diff --git a/src/content/question-groups/backend/content/fulltext-search.md b/src/data/question-groups/backend/content/fulltext-search.md similarity index 100% rename from src/content/question-groups/backend/content/fulltext-search.md rename to src/data/question-groups/backend/content/fulltext-search.md diff --git a/src/content/question-groups/backend/content/gdpr-compliance.md b/src/data/question-groups/backend/content/gdpr-compliance.md similarity index 100% rename from src/content/question-groups/backend/content/gdpr-compliance.md rename to src/data/question-groups/backend/content/gdpr-compliance.md diff --git a/src/content/question-groups/backend/content/high-available-storage.md b/src/data/question-groups/backend/content/high-available-storage.md similarity index 100% rename from src/content/question-groups/backend/content/high-available-storage.md rename to src/data/question-groups/backend/content/high-available-storage.md diff --git a/src/content/question-groups/backend/content/http-request-response-cycle.md b/src/data/question-groups/backend/content/http-request-response-cycle.md similarity index 100% rename from src/content/question-groups/backend/content/http-request-response-cycle.md rename to src/data/question-groups/backend/content/http-request-response-cycle.md diff --git a/src/content/question-groups/backend/content/idempotency.md b/src/data/question-groups/backend/content/idempotency.md similarity index 100% rename from src/content/question-groups/backend/content/idempotency.md rename to src/data/question-groups/backend/content/idempotency.md diff --git a/src/content/question-groups/backend/content/instrument-monitor.md b/src/data/question-groups/backend/content/instrument-monitor.md similarity index 100% rename from src/content/question-groups/backend/content/instrument-monitor.md rename to src/data/question-groups/backend/content/instrument-monitor.md diff --git a/src/content/question-groups/backend/content/iot-streams.md b/src/data/question-groups/backend/content/iot-streams.md similarity index 100% rename from src/content/question-groups/backend/content/iot-streams.md rename to src/data/question-groups/backend/content/iot-streams.md diff --git a/src/content/question-groups/backend/content/load-balanced-session.md b/src/data/question-groups/backend/content/load-balanced-session.md similarity index 100% rename from src/content/question-groups/backend/content/load-balanced-session.md rename to src/data/question-groups/backend/content/load-balanced-session.md diff --git a/src/content/question-groups/backend/content/load-testing-api.md b/src/data/question-groups/backend/content/load-testing-api.md similarity index 100% rename from src/content/question-groups/backend/content/load-testing-api.md rename to src/data/question-groups/backend/content/load-testing-api.md diff --git a/src/content/question-groups/backend/content/long-running.md b/src/data/question-groups/backend/content/long-running.md similarity index 100% rename from src/content/question-groups/backend/content/long-running.md rename to src/data/question-groups/backend/content/long-running.md diff --git a/src/content/question-groups/backend/content/maintainable-code.md b/src/data/question-groups/backend/content/maintainable-code.md similarity index 100% rename from src/content/question-groups/backend/content/maintainable-code.md rename to src/data/question-groups/backend/content/maintainable-code.md diff --git a/src/content/question-groups/backend/content/message-queue.md b/src/data/question-groups/backend/content/message-queue.md similarity index 100% rename from src/content/question-groups/backend/content/message-queue.md rename to src/data/question-groups/backend/content/message-queue.md diff --git a/src/content/question-groups/backend/content/optimistic-vs-pessimistic.md b/src/data/question-groups/backend/content/optimistic-vs-pessimistic.md similarity index 100% rename from src/content/question-groups/backend/content/optimistic-vs-pessimistic.md rename to src/data/question-groups/backend/content/optimistic-vs-pessimistic.md diff --git a/src/content/question-groups/backend/content/protect-sql-injection.md b/src/data/question-groups/backend/content/protect-sql-injection.md similarity index 100% rename from src/content/question-groups/backend/content/protect-sql-injection.md rename to src/data/question-groups/backend/content/protect-sql-injection.md diff --git a/src/content/question-groups/backend/content/rate-limiting.md b/src/data/question-groups/backend/content/rate-limiting.md similarity index 100% rename from src/content/question-groups/backend/content/rate-limiting.md rename to src/data/question-groups/backend/content/rate-limiting.md diff --git a/src/content/question-groups/backend/content/realtime-data-sync.md b/src/data/question-groups/backend/content/realtime-data-sync.md similarity index 100% rename from src/content/question-groups/backend/content/realtime-data-sync.md rename to src/data/question-groups/backend/content/realtime-data-sync.md diff --git a/src/content/question-groups/backend/content/rest-core-principles.md b/src/data/question-groups/backend/content/rest-core-principles.md similarity index 100% rename from src/content/question-groups/backend/content/rest-core-principles.md rename to src/data/question-groups/backend/content/rest-core-principles.md diff --git a/src/content/question-groups/backend/content/reverse-proxy.md b/src/data/question-groups/backend/content/reverse-proxy.md similarity index 100% rename from src/content/question-groups/backend/content/reverse-proxy.md rename to src/data/question-groups/backend/content/reverse-proxy.md diff --git a/src/content/question-groups/backend/content/scale-backend.md b/src/data/question-groups/backend/content/scale-backend.md similarity index 100% rename from src/content/question-groups/backend/content/scale-backend.md rename to src/data/question-groups/backend/content/scale-backend.md diff --git a/src/content/question-groups/backend/content/schema-migrations.md b/src/data/question-groups/backend/content/schema-migrations.md similarity index 100% rename from src/content/question-groups/backend/content/schema-migrations.md rename to src/data/question-groups/backend/content/schema-migrations.md diff --git a/src/content/question-groups/backend/content/secure-api.md b/src/data/question-groups/backend/content/secure-api.md similarity index 100% rename from src/content/question-groups/backend/content/secure-api.md rename to src/data/question-groups/backend/content/secure-api.md diff --git a/src/content/question-groups/backend/content/secure-interservice.md b/src/data/question-groups/backend/content/secure-interservice.md similarity index 100% rename from src/content/question-groups/backend/content/secure-interservice.md rename to src/data/question-groups/backend/content/secure-interservice.md diff --git a/src/content/question-groups/backend/content/session-management.md b/src/data/question-groups/backend/content/session-management.md similarity index 100% rename from src/content/question-groups/backend/content/session-management.md rename to src/data/question-groups/backend/content/session-management.md diff --git a/src/content/question-groups/backend/content/sql-vs-nosql.md b/src/data/question-groups/backend/content/sql-vs-nosql.md similarity index 100% rename from src/content/question-groups/backend/content/sql-vs-nosql.md rename to src/data/question-groups/backend/content/sql-vs-nosql.md diff --git a/src/content/question-groups/backend/content/sso.md b/src/data/question-groups/backend/content/sso.md similarity index 100% rename from src/content/question-groups/backend/content/sso.md rename to src/data/question-groups/backend/content/sso.md diff --git a/src/content/question-groups/backend/content/statelessness-http.md b/src/data/question-groups/backend/content/statelessness-http.md similarity index 100% rename from src/content/question-groups/backend/content/statelessness-http.md rename to src/data/question-groups/backend/content/statelessness-http.md diff --git a/src/content/question-groups/backend/content/webhooks.md b/src/data/question-groups/backend/content/webhooks.md similarity index 100% rename from src/content/question-groups/backend/content/webhooks.md rename to src/data/question-groups/backend/content/webhooks.md diff --git a/src/content/question-groups/devops/content/ansible-benefits.md b/src/data/question-groups/devops/content/ansible-benefits.md similarity index 100% rename from src/content/question-groups/devops/content/ansible-benefits.md rename to src/data/question-groups/devops/content/ansible-benefits.md diff --git a/src/content/question-groups/devops/content/auto-scaling.md b/src/data/question-groups/devops/content/auto-scaling.md similarity index 100% rename from src/content/question-groups/devops/content/auto-scaling.md rename to src/data/question-groups/devops/content/auto-scaling.md diff --git a/src/content/question-groups/devops/content/blue-green-deployment.md b/src/data/question-groups/devops/content/blue-green-deployment.md similarity index 100% rename from src/content/question-groups/devops/content/blue-green-deployment.md rename to src/data/question-groups/devops/content/blue-green-deployment.md diff --git a/src/content/question-groups/devops/content/build-pipelines.md b/src/data/question-groups/devops/content/build-pipelines.md similarity index 100% rename from src/content/question-groups/devops/content/build-pipelines.md rename to src/data/question-groups/devops/content/build-pipelines.md diff --git a/src/content/question-groups/devops/content/canary-release.md b/src/data/question-groups/devops/content/canary-release.md similarity index 100% rename from src/content/question-groups/devops/content/canary-release.md rename to src/data/question-groups/devops/content/canary-release.md diff --git a/src/content/question-groups/devops/content/cicd-setup.md b/src/data/question-groups/devops/content/cicd-setup.md similarity index 100% rename from src/content/question-groups/devops/content/cicd-setup.md rename to src/data/question-groups/devops/content/cicd-setup.md diff --git a/src/content/question-groups/devops/content/cluster-health.md b/src/data/question-groups/devops/content/cluster-health.md similarity index 100% rename from src/content/question-groups/devops/content/cluster-health.md rename to src/data/question-groups/devops/content/cluster-health.md diff --git a/src/content/question-groups/devops/content/common-iac-tools.md b/src/data/question-groups/devops/content/common-iac-tools.md similarity index 100% rename from src/content/question-groups/devops/content/common-iac-tools.md rename to src/data/question-groups/devops/content/common-iac-tools.md diff --git a/src/content/question-groups/devops/content/container-consistency.md b/src/data/question-groups/devops/content/container-consistency.md similarity index 100% rename from src/content/question-groups/devops/content/container-consistency.md rename to src/data/question-groups/devops/content/container-consistency.md diff --git a/src/content/question-groups/devops/content/container-vs-vm.md b/src/data/question-groups/devops/content/container-vs-vm.md similarity index 100% rename from src/content/question-groups/devops/content/container-vs-vm.md rename to src/data/question-groups/devops/content/container-vs-vm.md diff --git a/src/content/question-groups/devops/content/continuous-monitoring.md b/src/data/question-groups/devops/content/continuous-monitoring.md similarity index 100% rename from src/content/question-groups/devops/content/continuous-monitoring.md rename to src/data/question-groups/devops/content/continuous-monitoring.md diff --git a/src/content/question-groups/devops/content/data-migration.md b/src/data/question-groups/devops/content/data-migration.md similarity index 100% rename from src/content/question-groups/devops/content/data-migration.md rename to src/data/question-groups/devops/content/data-migration.md diff --git a/src/content/question-groups/devops/content/devsecops.md b/src/data/question-groups/devops/content/devsecops.md similarity index 100% rename from src/content/question-groups/devops/content/devsecops.md rename to src/data/question-groups/devops/content/devsecops.md diff --git a/src/content/question-groups/devops/content/docker-compose.md b/src/data/question-groups/devops/content/docker-compose.md similarity index 100% rename from src/content/question-groups/devops/content/docker-compose.md rename to src/data/question-groups/devops/content/docker-compose.md diff --git a/src/content/question-groups/devops/content/explain-ci-vs-cd.md b/src/data/question-groups/devops/content/explain-ci-vs-cd.md similarity index 100% rename from src/content/question-groups/devops/content/explain-ci-vs-cd.md rename to src/data/question-groups/devops/content/explain-ci-vs-cd.md diff --git a/src/content/question-groups/devops/content/health-monitor.md b/src/data/question-groups/devops/content/health-monitor.md similarity index 100% rename from src/content/question-groups/devops/content/health-monitor.md rename to src/data/question-groups/devops/content/health-monitor.md diff --git a/src/content/question-groups/devops/content/high-availability.md b/src/data/question-groups/devops/content/high-availability.md similarity index 100% rename from src/content/question-groups/devops/content/high-availability.md rename to src/data/question-groups/devops/content/high-availability.md diff --git a/src/content/question-groups/devops/content/iac-concept.md b/src/data/question-groups/devops/content/iac-concept.md similarity index 100% rename from src/content/question-groups/devops/content/iac-concept.md rename to src/data/question-groups/devops/content/iac-concept.md diff --git a/src/content/question-groups/devops/content/implement-logging.md b/src/data/question-groups/devops/content/implement-logging.md similarity index 100% rename from src/content/question-groups/devops/content/implement-logging.md rename to src/data/question-groups/devops/content/implement-logging.md diff --git a/src/content/question-groups/devops/content/kubernetes-components.md b/src/data/question-groups/devops/content/kubernetes-components.md similarity index 100% rename from src/content/question-groups/devops/content/kubernetes-components.md rename to src/data/question-groups/devops/content/kubernetes-components.md diff --git a/src/content/question-groups/devops/content/kubernetes-operators.md b/src/data/question-groups/devops/content/kubernetes-operators.md similarity index 100% rename from src/content/question-groups/devops/content/kubernetes-operators.md rename to src/data/question-groups/devops/content/kubernetes-operators.md diff --git a/src/content/question-groups/devops/content/load-balancer.md b/src/data/question-groups/devops/content/load-balancer.md similarity index 100% rename from src/content/question-groups/devops/content/load-balancer.md rename to src/data/question-groups/devops/content/load-balancer.md diff --git a/src/content/question-groups/devops/content/microservice-challenges.md b/src/data/question-groups/devops/content/microservice-challenges.md similarity index 100% rename from src/content/question-groups/devops/content/microservice-challenges.md rename to src/data/question-groups/devops/content/microservice-challenges.md diff --git a/src/content/question-groups/devops/content/microservice-vs-monolithic.md b/src/data/question-groups/devops/content/microservice-vs-monolithic.md similarity index 100% rename from src/content/question-groups/devops/content/microservice-vs-monolithic.md rename to src/data/question-groups/devops/content/microservice-vs-monolithic.md diff --git a/src/content/question-groups/devops/content/migrate-environment.md b/src/data/question-groups/devops/content/migrate-environment.md similarity index 100% rename from src/content/question-groups/devops/content/migrate-environment.md rename to src/data/question-groups/devops/content/migrate-environment.md diff --git a/src/content/question-groups/devops/content/multi-cloud-kubernetes.md b/src/data/question-groups/devops/content/multi-cloud-kubernetes.md similarity index 100% rename from src/content/question-groups/devops/content/multi-cloud-kubernetes.md rename to src/data/question-groups/devops/content/multi-cloud-kubernetes.md diff --git a/src/content/question-groups/devops/content/multi-cloud.md b/src/data/question-groups/devops/content/multi-cloud.md similarity index 100% rename from src/content/question-groups/devops/content/multi-cloud.md rename to src/data/question-groups/devops/content/multi-cloud.md diff --git a/src/content/question-groups/devops/content/network-configuration.md b/src/data/question-groups/devops/content/network-configuration.md similarity index 100% rename from src/content/question-groups/devops/content/network-configuration.md rename to src/data/question-groups/devops/content/network-configuration.md diff --git a/src/content/question-groups/devops/content/optimize-cicd.md b/src/data/question-groups/devops/content/optimize-cicd.md similarity index 100% rename from src/content/question-groups/devops/content/optimize-cicd.md rename to src/data/question-groups/devops/content/optimize-cicd.md diff --git a/src/content/question-groups/devops/content/orchestration.md b/src/data/question-groups/devops/content/orchestration.md similarity index 100% rename from src/content/question-groups/devops/content/orchestration.md rename to src/data/question-groups/devops/content/orchestration.md diff --git a/src/content/question-groups/devops/content/popular-cicd-tools.md b/src/data/question-groups/devops/content/popular-cicd-tools.md similarity index 100% rename from src/content/question-groups/devops/content/popular-cicd-tools.md rename to src/data/question-groups/devops/content/popular-cicd-tools.md diff --git a/src/content/question-groups/devops/content/purpose-of-cm.md b/src/data/question-groups/devops/content/purpose-of-cm.md similarity index 100% rename from src/content/question-groups/devops/content/purpose-of-cm.md rename to src/data/question-groups/devops/content/purpose-of-cm.md diff --git a/src/content/question-groups/devops/content/reverse-proxy.md b/src/data/question-groups/devops/content/reverse-proxy.md similarity index 100% rename from src/content/question-groups/devops/content/reverse-proxy.md rename to src/data/question-groups/devops/content/reverse-proxy.md diff --git a/src/content/question-groups/devops/content/role-of-devops.md b/src/data/question-groups/devops/content/role-of-devops.md similarity index 100% rename from src/content/question-groups/devops/content/role-of-devops.md rename to src/data/question-groups/devops/content/role-of-devops.md diff --git a/src/content/question-groups/devops/content/scaling-differences.md b/src/data/question-groups/devops/content/scaling-differences.md similarity index 100% rename from src/content/question-groups/devops/content/scaling-differences.md rename to src/data/question-groups/devops/content/scaling-differences.md diff --git a/src/content/question-groups/devops/content/secret-management.md b/src/data/question-groups/devops/content/secret-management.md similarity index 100% rename from src/content/question-groups/devops/content/secret-management.md rename to src/data/question-groups/devops/content/secret-management.md diff --git a/src/content/question-groups/devops/content/serverless-computing.md b/src/data/question-groups/devops/content/serverless-computing.md similarity index 100% rename from src/content/question-groups/devops/content/serverless-computing.md rename to src/data/question-groups/devops/content/serverless-computing.md diff --git a/src/content/question-groups/devops/content/stateful-applications.md b/src/data/question-groups/devops/content/stateful-applications.md similarity index 100% rename from src/content/question-groups/devops/content/stateful-applications.md rename to src/data/question-groups/devops/content/stateful-applications.md diff --git a/src/content/question-groups/devops/content/what-is-devops.md b/src/data/question-groups/devops/content/what-is-devops.md similarity index 100% rename from src/content/question-groups/devops/content/what-is-devops.md rename to src/data/question-groups/devops/content/what-is-devops.md diff --git a/src/content/question-groups/devops/content/what-is-docker.md b/src/data/question-groups/devops/content/what-is-docker.md similarity index 100% rename from src/content/question-groups/devops/content/what-is-docker.md rename to src/data/question-groups/devops/content/what-is-docker.md diff --git a/src/content/question-groups/devops/content/what-is-gitops.md b/src/data/question-groups/devops/content/what-is-gitops.md similarity index 100% rename from src/content/question-groups/devops/content/what-is-gitops.md rename to src/data/question-groups/devops/content/what-is-gitops.md diff --git a/src/content/question-groups/devops/content/what-is-helm-chart.md b/src/data/question-groups/devops/content/what-is-helm-chart.md similarity index 100% rename from src/content/question-groups/devops/content/what-is-helm-chart.md rename to src/data/question-groups/devops/content/what-is-helm-chart.md diff --git a/src/content/question-groups/devops/content/what-is-iac.md b/src/data/question-groups/devops/content/what-is-iac.md similarity index 100% rename from src/content/question-groups/devops/content/what-is-iac.md rename to src/data/question-groups/devops/content/what-is-iac.md diff --git a/src/content/question-groups/devops/content/what-is-kubernetes.md b/src/data/question-groups/devops/content/what-is-kubernetes.md similarity index 100% rename from src/content/question-groups/devops/content/what-is-kubernetes.md rename to src/data/question-groups/devops/content/what-is-kubernetes.md diff --git a/src/content/question-groups/devops/content/what-is-prometheus.md b/src/data/question-groups/devops/content/what-is-prometheus.md similarity index 100% rename from src/content/question-groups/devops/content/what-is-prometheus.md rename to src/data/question-groups/devops/content/what-is-prometheus.md diff --git a/src/content/question-groups/devops/content/what-is-rollback.md b/src/data/question-groups/devops/content/what-is-rollback.md similarity index 100% rename from src/content/question-groups/devops/content/what-is-rollback.md rename to src/data/question-groups/devops/content/what-is-rollback.md diff --git a/src/content/question-groups/devops/content/what-is-service-mesh.md b/src/data/question-groups/devops/content/what-is-service-mesh.md similarity index 100% rename from src/content/question-groups/devops/content/what-is-service-mesh.md rename to src/data/question-groups/devops/content/what-is-service-mesh.md diff --git a/src/content/question-groups/devops/content/what-is-shift-left.md b/src/data/question-groups/devops/content/what-is-shift-left.md similarity index 100% rename from src/content/question-groups/devops/content/what-is-shift-left.md rename to src/data/question-groups/devops/content/what-is-shift-left.md diff --git a/src/content/question-groups/devops/content/what-is-version-control.md b/src/data/question-groups/devops/content/what-is-version-control.md similarity index 100% rename from src/content/question-groups/devops/content/what-is-version-control.md rename to src/data/question-groups/devops/content/what-is-version-control.md diff --git a/src/content/question-groups/devops/content/zero-downtime.md b/src/data/question-groups/devops/content/zero-downtime.md similarity index 100% rename from src/content/question-groups/devops/content/zero-downtime.md rename to src/data/question-groups/devops/content/zero-downtime.md diff --git a/src/content/question-groups/frontend/content/async-ops-js.md b/src/data/question-groups/frontend/content/async-ops-js.md similarity index 100% rename from src/content/question-groups/frontend/content/async-ops-js.md rename to src/data/question-groups/frontend/content/async-ops-js.md diff --git a/src/content/question-groups/frontend/content/block-inline-elems.md b/src/data/question-groups/frontend/content/block-inline-elems.md similarity index 100% rename from src/content/question-groups/frontend/content/block-inline-elems.md rename to src/data/question-groups/frontend/content/block-inline-elems.md diff --git a/src/content/question-groups/frontend/content/box-model.md b/src/data/question-groups/frontend/content/box-model.md similarity index 100% rename from src/content/question-groups/frontend/content/box-model.md rename to src/data/question-groups/frontend/content/box-model.md diff --git a/src/content/question-groups/frontend/content/browser-render.md b/src/data/question-groups/frontend/content/browser-render.md similarity index 100% rename from src/content/question-groups/frontend/content/browser-render.md rename to src/data/question-groups/frontend/content/browser-render.md diff --git a/src/content/question-groups/frontend/content/client-storage.md b/src/data/question-groups/frontend/content/client-storage.md similarity index 100% rename from src/content/question-groups/frontend/content/client-storage.md rename to src/data/question-groups/frontend/content/client-storage.md diff --git a/src/content/question-groups/frontend/content/closures.md b/src/data/question-groups/frontend/content/closures.md similarity index 100% rename from src/content/question-groups/frontend/content/closures.md rename to src/data/question-groups/frontend/content/closures.md diff --git a/src/content/question-groups/frontend/content/critical-css.md b/src/data/question-groups/frontend/content/critical-css.md similarity index 100% rename from src/content/question-groups/frontend/content/critical-css.md rename to src/data/question-groups/frontend/content/critical-css.md diff --git a/src/content/question-groups/frontend/content/csp.md b/src/data/question-groups/frontend/content/csp.md similarity index 100% rename from src/content/question-groups/frontend/content/csp.md rename to src/data/question-groups/frontend/content/csp.md diff --git a/src/content/question-groups/frontend/content/css-grid.md b/src/data/question-groups/frontend/content/css-grid.md similarity index 100% rename from src/content/question-groups/frontend/content/css-grid.md rename to src/data/question-groups/frontend/content/css-grid.md diff --git a/src/content/question-groups/frontend/content/css-specificity.md b/src/data/question-groups/frontend/content/css-specificity.md similarity index 100% rename from src/content/question-groups/frontend/content/css-specificity.md rename to src/data/question-groups/frontend/content/css-specificity.md diff --git a/src/content/question-groups/frontend/content/css-variables.md b/src/data/question-groups/frontend/content/css-variables.md similarity index 100% rename from src/content/question-groups/frontend/content/css-variables.md rename to src/data/question-groups/frontend/content/css-variables.md diff --git a/src/content/question-groups/frontend/content/dom.md b/src/data/question-groups/frontend/content/dom.md similarity index 100% rename from src/content/question-groups/frontend/content/dom.md rename to src/data/question-groups/frontend/content/dom.md diff --git a/src/content/question-groups/frontend/content/em-vs-rem.md b/src/data/question-groups/frontend/content/em-vs-rem.md similarity index 100% rename from src/content/question-groups/frontend/content/em-vs-rem.md rename to src/data/question-groups/frontend/content/em-vs-rem.md diff --git a/src/content/question-groups/frontend/content/event-delegation.md b/src/data/question-groups/frontend/content/event-delegation.md similarity index 100% rename from src/content/question-groups/frontend/content/event-delegation.md rename to src/data/question-groups/frontend/content/event-delegation.md diff --git a/src/content/question-groups/frontend/content/event-listeners.md b/src/data/question-groups/frontend/content/event-listeners.md similarity index 100% rename from src/content/question-groups/frontend/content/event-listeners.md rename to src/data/question-groups/frontend/content/event-listeners.md diff --git a/src/content/question-groups/frontend/content/event-loop-js.md b/src/data/question-groups/frontend/content/event-loop-js.md similarity index 100% rename from src/content/question-groups/frontend/content/event-loop-js.md rename to src/data/question-groups/frontend/content/event-loop-js.md diff --git a/src/content/question-groups/frontend/content/flexbox-layout.md b/src/data/question-groups/frontend/content/flexbox-layout.md similarity index 100% rename from src/content/question-groups/frontend/content/flexbox-layout.md rename to src/data/question-groups/frontend/content/flexbox-layout.md diff --git a/src/content/question-groups/frontend/content/id-vs-class.md b/src/data/question-groups/frontend/content/id-vs-class.md similarity index 100% rename from src/content/question-groups/frontend/content/id-vs-class.md rename to src/data/question-groups/frontend/content/id-vs-class.md diff --git a/src/content/question-groups/frontend/content/improve-web-perf.md b/src/data/question-groups/frontend/content/improve-web-perf.md similarity index 100% rename from src/content/question-groups/frontend/content/improve-web-perf.md rename to src/data/question-groups/frontend/content/improve-web-perf.md diff --git a/src/content/question-groups/frontend/content/js-promises.md b/src/data/question-groups/frontend/content/js-promises.md similarity index 100% rename from src/content/question-groups/frontend/content/js-promises.md rename to src/data/question-groups/frontend/content/js-promises.md diff --git a/src/content/question-groups/frontend/content/media-queries.md b/src/data/question-groups/frontend/content/media-queries.md similarity index 100% rename from src/content/question-groups/frontend/content/media-queries.md rename to src/data/question-groups/frontend/content/media-queries.md diff --git a/src/content/question-groups/frontend/content/null-vs-undefined.md b/src/data/question-groups/frontend/content/null-vs-undefined.md similarity index 100% rename from src/content/question-groups/frontend/content/null-vs-undefined.md rename to src/data/question-groups/frontend/content/null-vs-undefined.md diff --git a/src/content/question-groups/frontend/content/optimize-assets.md b/src/data/question-groups/frontend/content/optimize-assets.md similarity index 100% rename from src/content/question-groups/frontend/content/optimize-assets.md rename to src/data/question-groups/frontend/content/optimize-assets.md diff --git a/src/content/question-groups/frontend/content/same-origin-policy.md b/src/data/question-groups/frontend/content/same-origin-policy.md similarity index 100% rename from src/content/question-groups/frontend/content/same-origin-policy.md rename to src/data/question-groups/frontend/content/same-origin-policy.md diff --git a/src/content/question-groups/frontend/content/seo-best-practices.md b/src/data/question-groups/frontend/content/seo-best-practices.md similarity index 100% rename from src/content/question-groups/frontend/content/seo-best-practices.md rename to src/data/question-groups/frontend/content/seo-best-practices.md diff --git a/src/content/question-groups/frontend/content/service-workers.md b/src/data/question-groups/frontend/content/service-workers.md similarity index 100% rename from src/content/question-groups/frontend/content/service-workers.md rename to src/data/question-groups/frontend/content/service-workers.md diff --git a/src/content/question-groups/frontend/content/ssr-when.md b/src/data/question-groups/frontend/content/ssr-when.md similarity index 100% rename from src/content/question-groups/frontend/content/ssr-when.md rename to src/data/question-groups/frontend/content/ssr-when.md diff --git a/src/content/question-groups/frontend/content/state-mgmt-spa.md b/src/data/question-groups/frontend/content/state-mgmt-spa.md similarity index 100% rename from src/content/question-groups/frontend/content/state-mgmt-spa.md rename to src/data/question-groups/frontend/content/state-mgmt-spa.md diff --git a/src/content/question-groups/frontend/content/tree-shaking.md b/src/data/question-groups/frontend/content/tree-shaking.md similarity index 100% rename from src/content/question-groups/frontend/content/tree-shaking.md rename to src/data/question-groups/frontend/content/tree-shaking.md diff --git a/src/content/question-groups/frontend/content/vdom.md b/src/data/question-groups/frontend/content/vdom.md similarity index 100% rename from src/content/question-groups/frontend/content/vdom.md rename to src/data/question-groups/frontend/content/vdom.md diff --git a/src/content/question-groups/javascript/content/alert-prompt-confirm.md b/src/data/question-groups/javascript/content/alert-prompt-confirm.md similarity index 100% rename from src/content/question-groups/javascript/content/alert-prompt-confirm.md rename to src/data/question-groups/javascript/content/alert-prompt-confirm.md diff --git a/src/content/question-groups/javascript/content/append-child-vs-insert-before.md b/src/data/question-groups/javascript/content/append-child-vs-insert-before.md similarity index 100% rename from src/content/question-groups/javascript/content/append-child-vs-insert-before.md rename to src/data/question-groups/javascript/content/append-child-vs-insert-before.md diff --git a/src/content/question-groups/javascript/content/async-vs-sync.md b/src/data/question-groups/javascript/content/async-vs-sync.md similarity index 100% rename from src/content/question-groups/javascript/content/async-vs-sync.md rename to src/data/question-groups/javascript/content/async-vs-sync.md diff --git a/src/content/question-groups/javascript/content/break-and-continue.md b/src/data/question-groups/javascript/content/break-and-continue.md similarity index 100% rename from src/content/question-groups/javascript/content/break-and-continue.md rename to src/data/question-groups/javascript/content/break-and-continue.md diff --git a/src/content/question-groups/javascript/content/callback-hell.md b/src/data/question-groups/javascript/content/callback-hell.md similarity index 100% rename from src/content/question-groups/javascript/content/callback-hell.md rename to src/data/question-groups/javascript/content/callback-hell.md diff --git a/src/content/question-groups/javascript/content/closure.md b/src/data/question-groups/javascript/content/closure.md similarity index 100% rename from src/content/question-groups/javascript/content/closure.md rename to src/data/question-groups/javascript/content/closure.md diff --git a/src/content/question-groups/javascript/content/comma-operator.md b/src/data/question-groups/javascript/content/comma-operator.md similarity index 100% rename from src/content/question-groups/javascript/content/comma-operator.md rename to src/data/question-groups/javascript/content/comma-operator.md diff --git a/src/content/question-groups/javascript/content/create-element.md b/src/data/question-groups/javascript/content/create-element.md similarity index 100% rename from src/content/question-groups/javascript/content/create-element.md rename to src/data/question-groups/javascript/content/create-element.md diff --git a/src/content/question-groups/javascript/content/custom-event.md b/src/data/question-groups/javascript/content/custom-event.md similarity index 100% rename from src/content/question-groups/javascript/content/custom-event.md rename to src/data/question-groups/javascript/content/custom-event.md diff --git a/src/content/question-groups/javascript/content/debug-javascript.md b/src/data/question-groups/javascript/content/debug-javascript.md similarity index 100% rename from src/content/question-groups/javascript/content/debug-javascript.md rename to src/data/question-groups/javascript/content/debug-javascript.md diff --git a/src/content/question-groups/javascript/content/defer-vs-async.md b/src/data/question-groups/javascript/content/defer-vs-async.md similarity index 100% rename from src/content/question-groups/javascript/content/defer-vs-async.md rename to src/data/question-groups/javascript/content/defer-vs-async.md diff --git a/src/content/question-groups/javascript/content/do-while-loop.md b/src/data/question-groups/javascript/content/do-while-loop.md similarity index 100% rename from src/content/question-groups/javascript/content/do-while-loop.md rename to src/data/question-groups/javascript/content/do-while-loop.md diff --git a/src/content/question-groups/javascript/content/equality-operator.md b/src/data/question-groups/javascript/content/equality-operator.md similarity index 100% rename from src/content/question-groups/javascript/content/equality-operator.md rename to src/data/question-groups/javascript/content/equality-operator.md diff --git a/src/content/question-groups/javascript/content/error-in-async-await.md b/src/data/question-groups/javascript/content/error-in-async-await.md similarity index 100% rename from src/content/question-groups/javascript/content/error-in-async-await.md rename to src/data/question-groups/javascript/content/error-in-async-await.md diff --git a/src/content/question-groups/javascript/content/error-in-promise.md b/src/data/question-groups/javascript/content/error-in-promise.md similarity index 100% rename from src/content/question-groups/javascript/content/error-in-promise.md rename to src/data/question-groups/javascript/content/error-in-promise.md diff --git a/src/content/question-groups/javascript/content/event-bubbling.md b/src/data/question-groups/javascript/content/event-bubbling.md similarity index 100% rename from src/content/question-groups/javascript/content/event-bubbling.md rename to src/data/question-groups/javascript/content/event-bubbling.md diff --git a/src/content/question-groups/javascript/content/event-loop.md b/src/data/question-groups/javascript/content/event-loop.md similarity index 100% rename from src/content/question-groups/javascript/content/event-loop.md rename to src/data/question-groups/javascript/content/event-loop.md diff --git a/src/content/question-groups/javascript/content/explicit-binding.md b/src/data/question-groups/javascript/content/explicit-binding.md similarity index 100% rename from src/content/question-groups/javascript/content/explicit-binding.md rename to src/data/question-groups/javascript/content/explicit-binding.md diff --git a/src/content/question-groups/javascript/content/filter-method.md b/src/data/question-groups/javascript/content/filter-method.md similarity index 100% rename from src/content/question-groups/javascript/content/filter-method.md rename to src/data/question-groups/javascript/content/filter-method.md diff --git a/src/content/question-groups/javascript/content/finally-block-in-promise.md b/src/data/question-groups/javascript/content/finally-block-in-promise.md similarity index 100% rename from src/content/question-groups/javascript/content/finally-block-in-promise.md rename to src/data/question-groups/javascript/content/finally-block-in-promise.md diff --git a/src/content/question-groups/javascript/content/find-unique-array-values.md b/src/data/question-groups/javascript/content/find-unique-array-values.md similarity index 100% rename from src/content/question-groups/javascript/content/find-unique-array-values.md rename to src/data/question-groups/javascript/content/find-unique-array-values.md diff --git a/src/content/question-groups/javascript/content/for-each-method.md b/src/data/question-groups/javascript/content/for-each-method.md similarity index 100% rename from src/content/question-groups/javascript/content/for-each-method.md rename to src/data/question-groups/javascript/content/for-each-method.md diff --git a/src/content/question-groups/javascript/content/heap-and-stack.md b/src/data/question-groups/javascript/content/heap-and-stack.md similarity index 100% rename from src/content/question-groups/javascript/content/heap-and-stack.md rename to src/data/question-groups/javascript/content/heap-and-stack.md diff --git a/src/content/question-groups/javascript/content/hoisting.md b/src/data/question-groups/javascript/content/hoisting.md similarity index 100% rename from src/content/question-groups/javascript/content/hoisting.md rename to src/data/question-groups/javascript/content/hoisting.md diff --git a/src/content/question-groups/javascript/content/iife.md b/src/data/question-groups/javascript/content/iife.md similarity index 100% rename from src/content/question-groups/javascript/content/iife.md rename to src/data/question-groups/javascript/content/iife.md diff --git a/src/content/question-groups/javascript/content/immutable-object.md b/src/data/question-groups/javascript/content/immutable-object.md similarity index 100% rename from src/content/question-groups/javascript/content/immutable-object.md rename to src/data/question-groups/javascript/content/immutable-object.md diff --git a/src/content/question-groups/javascript/content/increment-operator.md b/src/data/question-groups/javascript/content/increment-operator.md similarity index 100% rename from src/content/question-groups/javascript/content/increment-operator.md rename to src/data/question-groups/javascript/content/increment-operator.md diff --git a/src/content/question-groups/javascript/content/infinite-loop.md b/src/data/question-groups/javascript/content/infinite-loop.md similarity index 100% rename from src/content/question-groups/javascript/content/infinite-loop.md rename to src/data/question-groups/javascript/content/infinite-loop.md diff --git a/src/content/question-groups/javascript/content/inheritance.md b/src/data/question-groups/javascript/content/inheritance.md similarity index 100% rename from src/content/question-groups/javascript/content/inheritance.md rename to src/data/question-groups/javascript/content/inheritance.md diff --git a/src/content/question-groups/javascript/content/labelled-statements.md b/src/data/question-groups/javascript/content/labelled-statements.md similarity index 100% rename from src/content/question-groups/javascript/content/labelled-statements.md rename to src/data/question-groups/javascript/content/labelled-statements.md diff --git a/src/content/question-groups/javascript/content/logical-operators.md b/src/data/question-groups/javascript/content/logical-operators.md similarity index 100% rename from src/content/question-groups/javascript/content/logical-operators.md rename to src/data/question-groups/javascript/content/logical-operators.md diff --git a/src/content/question-groups/javascript/content/map-method.md b/src/data/question-groups/javascript/content/map-method.md similarity index 100% rename from src/content/question-groups/javascript/content/map-method.md rename to src/data/question-groups/javascript/content/map-method.md diff --git a/src/content/question-groups/javascript/content/map.md b/src/data/question-groups/javascript/content/map.md similarity index 100% rename from src/content/question-groups/javascript/content/map.md rename to src/data/question-groups/javascript/content/map.md diff --git a/src/content/question-groups/javascript/content/measure-dimensions.md b/src/data/question-groups/javascript/content/measure-dimensions.md similarity index 100% rename from src/content/question-groups/javascript/content/measure-dimensions.md rename to src/data/question-groups/javascript/content/measure-dimensions.md diff --git a/src/content/question-groups/javascript/content/merge-arrays.md b/src/data/question-groups/javascript/content/merge-arrays.md similarity index 100% rename from src/content/question-groups/javascript/content/merge-arrays.md rename to src/data/question-groups/javascript/content/merge-arrays.md diff --git a/src/content/question-groups/javascript/content/nullish-coalescing-operator.md b/src/data/question-groups/javascript/content/nullish-coalescing-operator.md similarity index 100% rename from src/content/question-groups/javascript/content/nullish-coalescing-operator.md rename to src/data/question-groups/javascript/content/nullish-coalescing-operator.md diff --git a/src/content/question-groups/javascript/content/parse-json.md b/src/data/question-groups/javascript/content/parse-json.md similarity index 100% rename from src/content/question-groups/javascript/content/parse-json.md rename to src/data/question-groups/javascript/content/parse-json.md diff --git a/src/content/question-groups/javascript/content/prevent-default.md b/src/data/question-groups/javascript/content/prevent-default.md similarity index 100% rename from src/content/question-groups/javascript/content/prevent-default.md rename to src/data/question-groups/javascript/content/prevent-default.md diff --git a/src/content/question-groups/javascript/content/promise-all-vs-all-settled.md b/src/data/question-groups/javascript/content/promise-all-vs-all-settled.md similarity index 100% rename from src/content/question-groups/javascript/content/promise-all-vs-all-settled.md rename to src/data/question-groups/javascript/content/promise-all-vs-all-settled.md diff --git a/src/content/question-groups/javascript/content/prototype-chain.md b/src/data/question-groups/javascript/content/prototype-chain.md similarity index 100% rename from src/content/question-groups/javascript/content/prototype-chain.md rename to src/data/question-groups/javascript/content/prototype-chain.md diff --git a/src/content/question-groups/javascript/content/query-selector.md b/src/data/question-groups/javascript/content/query-selector.md similarity index 100% rename from src/content/question-groups/javascript/content/query-selector.md rename to src/data/question-groups/javascript/content/query-selector.md diff --git a/src/content/question-groups/javascript/content/reduce-method.md b/src/data/question-groups/javascript/content/reduce-method.md similarity index 100% rename from src/content/question-groups/javascript/content/reduce-method.md rename to src/data/question-groups/javascript/content/reduce-method.md diff --git a/src/content/question-groups/javascript/content/remove-element.md b/src/data/question-groups/javascript/content/remove-element.md similarity index 100% rename from src/content/question-groups/javascript/content/remove-element.md rename to src/data/question-groups/javascript/content/remove-element.md diff --git a/src/content/question-groups/javascript/content/scroll-to-top.md b/src/data/question-groups/javascript/content/scroll-to-top.md similarity index 100% rename from src/content/question-groups/javascript/content/scroll-to-top.md rename to src/data/question-groups/javascript/content/scroll-to-top.md diff --git a/src/content/question-groups/javascript/content/set-interval.md b/src/data/question-groups/javascript/content/set-interval.md similarity index 100% rename from src/content/question-groups/javascript/content/set-interval.md rename to src/data/question-groups/javascript/content/set-interval.md diff --git a/src/content/question-groups/javascript/content/set-timeout.md b/src/data/question-groups/javascript/content/set-timeout.md similarity index 100% rename from src/content/question-groups/javascript/content/set-timeout.md rename to src/data/question-groups/javascript/content/set-timeout.md diff --git a/src/content/question-groups/javascript/content/set.md b/src/data/question-groups/javascript/content/set.md similarity index 100% rename from src/content/question-groups/javascript/content/set.md rename to src/data/question-groups/javascript/content/set.md diff --git a/src/content/question-groups/javascript/content/spread-operator.md b/src/data/question-groups/javascript/content/spread-operator.md similarity index 100% rename from src/content/question-groups/javascript/content/spread-operator.md rename to src/data/question-groups/javascript/content/spread-operator.md diff --git a/src/content/question-groups/javascript/content/switch-case.md b/src/data/question-groups/javascript/content/switch-case.md similarity index 100% rename from src/content/question-groups/javascript/content/switch-case.md rename to src/data/question-groups/javascript/content/switch-case.md diff --git a/src/content/question-groups/javascript/content/ternary-operator.md b/src/data/question-groups/javascript/content/ternary-operator.md similarity index 100% rename from src/content/question-groups/javascript/content/ternary-operator.md rename to src/data/question-groups/javascript/content/ternary-operator.md diff --git a/src/content/question-groups/javascript/content/variable-number-of-arguments.md b/src/data/question-groups/javascript/content/variable-number-of-arguments.md similarity index 100% rename from src/content/question-groups/javascript/content/variable-number-of-arguments.md rename to src/data/question-groups/javascript/content/variable-number-of-arguments.md diff --git a/src/content/question-groups/nodejs/content/commonjs-vs-esm.md b/src/data/question-groups/nodejs/content/commonjs-vs-esm.md similarity index 100% rename from src/content/question-groups/nodejs/content/commonjs-vs-esm.md rename to src/data/question-groups/nodejs/content/commonjs-vs-esm.md diff --git a/src/content/question-groups/nodejs/content/error-handling.md b/src/data/question-groups/nodejs/content/error-handling.md similarity index 100% rename from src/content/question-groups/nodejs/content/error-handling.md rename to src/data/question-groups/nodejs/content/error-handling.md diff --git a/src/content/question-groups/nodejs/content/exit-codes.md b/src/data/question-groups/nodejs/content/exit-codes.md similarity index 100% rename from src/content/question-groups/nodejs/content/exit-codes.md rename to src/data/question-groups/nodejs/content/exit-codes.md diff --git a/src/content/question-groups/nodejs/content/input-from-command-line.md b/src/data/question-groups/nodejs/content/input-from-command-line.md similarity index 100% rename from src/content/question-groups/nodejs/content/input-from-command-line.md rename to src/data/question-groups/nodejs/content/input-from-command-line.md diff --git a/src/content/question-groups/nodejs/content/order-priority.md b/src/data/question-groups/nodejs/content/order-priority.md similarity index 100% rename from src/content/question-groups/nodejs/content/order-priority.md rename to src/data/question-groups/nodejs/content/order-priority.md diff --git a/src/content/question-groups/nodejs/content/process-argv.md b/src/data/question-groups/nodejs/content/process-argv.md similarity index 100% rename from src/content/question-groups/nodejs/content/process-argv.md rename to src/data/question-groups/nodejs/content/process-argv.md diff --git a/src/content/question-groups/nodejs/content/process-cwd-vs-dirname.md b/src/data/question-groups/nodejs/content/process-cwd-vs-dirname.md similarity index 100% rename from src/content/question-groups/nodejs/content/process-cwd-vs-dirname.md rename to src/data/question-groups/nodejs/content/process-cwd-vs-dirname.md diff --git a/src/content/question-groups/nodejs/content/web-server.md b/src/data/question-groups/nodejs/content/web-server.md similarity index 100% rename from src/content/question-groups/nodejs/content/web-server.md rename to src/data/question-groups/nodejs/content/web-server.md diff --git a/src/content/question-groups/react/content/component-lifecycle.md b/src/data/question-groups/react/content/component-lifecycle.md similarity index 100% rename from src/content/question-groups/react/content/component-lifecycle.md rename to src/data/question-groups/react/content/component-lifecycle.md diff --git a/src/content/question-groups/react/content/controlled-vs-uncontrolled.md b/src/data/question-groups/react/content/controlled-vs-uncontrolled.md similarity index 100% rename from src/content/question-groups/react/content/controlled-vs-uncontrolled.md rename to src/data/question-groups/react/content/controlled-vs-uncontrolled.md diff --git a/src/content/question-groups/react/content/create-portal.md b/src/data/question-groups/react/content/create-portal.md similarity index 100% rename from src/content/question-groups/react/content/create-portal.md rename to src/data/question-groups/react/content/create-portal.md diff --git a/src/content/question-groups/react/content/custom-hook.md b/src/data/question-groups/react/content/custom-hook.md similarity index 100% rename from src/content/question-groups/react/content/custom-hook.md rename to src/data/question-groups/react/content/custom-hook.md diff --git a/src/content/question-groups/react/content/error-boundaries.md b/src/data/question-groups/react/content/error-boundaries.md similarity index 100% rename from src/content/question-groups/react/content/error-boundaries.md rename to src/data/question-groups/react/content/error-boundaries.md diff --git a/src/content/question-groups/react/content/flush-sync.md b/src/data/question-groups/react/content/flush-sync.md similarity index 100% rename from src/content/question-groups/react/content/flush-sync.md rename to src/data/question-groups/react/content/flush-sync.md diff --git a/src/content/question-groups/react/content/investigate-slow-app.md b/src/data/question-groups/react/content/investigate-slow-app.md similarity index 100% rename from src/content/question-groups/react/content/investigate-slow-app.md rename to src/data/question-groups/react/content/investigate-slow-app.md diff --git a/src/content/question-groups/react/content/lazy-loading.md b/src/data/question-groups/react/content/lazy-loading.md similarity index 100% rename from src/content/question-groups/react/content/lazy-loading.md rename to src/data/question-groups/react/content/lazy-loading.md diff --git a/src/content/question-groups/react/content/pure-components.md b/src/data/question-groups/react/content/pure-components.md similarity index 100% rename from src/content/question-groups/react/content/pure-components.md rename to src/data/question-groups/react/content/pure-components.md diff --git a/src/content/question-groups/react/content/re-renders.md b/src/data/question-groups/react/content/re-renders.md similarity index 100% rename from src/content/question-groups/react/content/re-renders.md rename to src/data/question-groups/react/content/re-renders.md diff --git a/src/content/question-groups/react/content/ref-forwarding.md b/src/data/question-groups/react/content/ref-forwarding.md similarity index 100% rename from src/content/question-groups/react/content/ref-forwarding.md rename to src/data/question-groups/react/content/ref-forwarding.md diff --git a/src/content/question-groups/react/content/render-list.md b/src/data/question-groups/react/content/render-list.md similarity index 100% rename from src/content/question-groups/react/content/render-list.md rename to src/data/question-groups/react/content/render-list.md diff --git a/src/content/question-groups/react/content/strict-mode.md b/src/data/question-groups/react/content/strict-mode.md similarity index 100% rename from src/content/question-groups/react/content/strict-mode.md rename to src/data/question-groups/react/content/strict-mode.md diff --git a/src/content/question-groups/react/content/suspense.md b/src/data/question-groups/react/content/suspense.md similarity index 100% rename from src/content/question-groups/react/content/suspense.md rename to src/data/question-groups/react/content/suspense.md diff --git a/src/content/question-groups/react/content/synthetic-events.md b/src/data/question-groups/react/content/synthetic-events.md similarity index 100% rename from src/content/question-groups/react/content/synthetic-events.md rename to src/data/question-groups/react/content/synthetic-events.md diff --git a/src/content/question-groups/react/content/use-transition.md b/src/data/question-groups/react/content/use-transition.md similarity index 100% rename from src/content/question-groups/react/content/use-transition.md rename to src/data/question-groups/react/content/use-transition.md diff --git a/src/content/question-groups/react/content/virtual-dom.md b/src/data/question-groups/react/content/virtual-dom.md similarity index 100% rename from src/content/question-groups/react/content/virtual-dom.md rename to src/data/question-groups/react/content/virtual-dom.md diff --git a/src/lib/guide.ts b/src/lib/guide.ts index 35e2b4cb3..4639530ef 100644 --- a/src/lib/guide.ts +++ b/src/lib/guide.ts @@ -57,7 +57,7 @@ export async function getGuideById( ): Promise { const allGuides = await getAllGuides(); - return allGuides.find((guide) => guide.id === id); + return allGuides.find((guide) => guide.slug === id); } type HeadingType = ReturnType[number]; diff --git a/src/lib/question-group.ts b/src/lib/question-group.ts index c1b848c79..7c25d25a1 100644 --- a/src/lib/question-group.ts +++ b/src/lib/question-group.ts @@ -1,7 +1,6 @@ -import type { MarkdownFileType } from './file'; import slugify from 'slugify'; import { getAllAuthors } from './author.ts'; -import type { CollectionEntry } from 'astro:content'; +import { getCollection, type CollectionEntry } from 'astro:content'; type RawQuestionGroupFileType = CollectionEntry<'question-groups'>; @@ -24,14 +23,9 @@ export type QuestionGroupType = RawQuestionGroupFileType & { * @returns Promisified BestPracticeFileType[] */ export async function getAllQuestionGroups(): Promise { - const questionGroupFilesMap = import.meta.glob( - `/src/data/question-groups/*/*.md`, - { - eager: true, - }, - ); - - const answerFilesMap = import.meta.glob( + const questionGroupEntries = await getCollection('question-groups'); + const allAuthors = await getAllAuthors(); + const answerFilesMap = import.meta.glob( // get the files inside /src/data/question-groups/[ignore]/content/*.md `/src/data/question-groups/*/content/*.md`, { @@ -40,25 +34,19 @@ export async function getAllQuestionGroups(): Promise { }, ); - const allAuthors = await getAllAuthors(); - - return Object.values(questionGroupFilesMap) - .map((questionGroupFile) => { - const fileParts = questionGroupFile?.file?.split('/'); - const [questionGroupDir, questionGroupFileName] = fileParts?.slice(-2); - - const questionGroupFileId = questionGroupFileName?.replace('.md', ''); + return questionGroupEntries + .map((questionGroupEntry) => { const formattedAnswers: QuestionType[] = - questionGroupFile.frontmatter.questions.map((qa) => { + questionGroupEntry.data.questions.map((qa) => { const questionText = qa.question; let answerText = qa.answer; let isLongAnswer = false; if (answerText.endsWith('.md')) { - const answerFilePath = `/src/data/question-groups/${questionGroupDir}/content/${answerText}`; + const answerFilePath = `/src/data/question-groups/${questionGroupEntry.slug}/content/${answerText}`; answerText = - (answerFilesMap[answerFilePath] as any)?.default || - answerFilesMap[answerFilePath] || + // @ts-ignore + answerFilesMap[answerFilePath]?.default || `File missing: ${answerFilePath}`; isLongAnswer = true; @@ -84,23 +72,24 @@ export async function getAllQuestionGroups(): Promise { return acc; }, [] as string[]); + const author = allAuthors.find( + (author) => author.slug === questionGroupEntry.data.authorId, + ); + return { - ...questionGroupFile, - id: questionGroupFileId, + ...questionGroupEntry, questions: formattedAnswers, allTopics: uniqueTopics, - author: allAuthors.find( - (author) => author.id === questionGroupFile.frontmatter.authorId, - )!, + author, }; }) - .sort((a, b) => a.frontmatter.order - b.frontmatter.order); + .sort((a, b) => a.data.order - b.data.order); } -export async function getQuestionGroupById(id: string) { +export async function getQuestionGroupById(slug: string) { const questionGroups = await getAllQuestionGroups(); - return questionGroups.find((group) => group.id === id); + return questionGroups.find((group) => group.slug === slug); } export async function getQuestionGroupsByIds( @@ -110,24 +99,14 @@ export async function getQuestionGroupsByIds( return []; } - const questionGroupFilesMap = import.meta.glob< - MarkdownFileType - >(`/src/data/question-groups/*/*.md`, { - eager: true, - }); - - return Object.values(questionGroupFilesMap) + const questionGroups = await getAllQuestionGroups(); + return questionGroups + .filter((group) => ids.includes(group.slug)) .map((group) => { - const fileId = group?.file?.split('/')?.pop()?.replace('.md', ''); - const frontmatter = group.frontmatter; - return { - id: fileId!, - title: frontmatter.briefTitle, - description: `${frontmatter.questions.length} Questions`, + id: group.id, + title: group.data.title, + description: `${group.questions.length} Questions`, }; - }) - .filter((group) => { - return ids.includes(group.id); }); } diff --git a/src/pages/authors/[authorId].astro b/src/pages/authors/[authorId].astro index b67361202..18947fc91 100644 --- a/src/pages/authors/[authorId].astro +++ b/src/pages/authors/[authorId].astro @@ -26,7 +26,7 @@ const { Content } = await author.render(); const guides = await getGuidesByAuthor(authorId); const questionGuides = (await getAllQuestionGroups()).filter( - (group) => group.frontmatter.authorId === authorId, + (group) => group.data.authorId === authorId, ); const videos = await getVideosByAuthor(authorId); --- @@ -135,12 +135,10 @@ const videos = await getVideosByAuthor(authorId); class='rounded-t-xl bg-gradient-to-b from-gray-100 to-white px-3 py-2 md:px-6 md:py-3 [&>*:last-child]:border-b-0' > { - [...guides] + [...guides, ...questionGuides] .sort((a, b) => { - const aDate = a.data.date; - // const aDate = a.data.date || a.data.publishedAt; - const bDate = b.data.date; - // const bDate = b.data.date || b.data.publishedAt; + const aDate = a.data.date!; + const bDate = b.data.date!; return new Date(bDate).getTime() - new Date(aDate).getTime(); }) .map((guide) => ) diff --git a/src/pages/backend/developer-skills.astro b/src/pages/backend/developer-skills.astro index fb1cf59c6..edc27d616 100644 --- a/src/pages/backend/developer-skills.astro +++ b/src/pages/backend/developer-skills.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'backend-developer-skills'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || diff --git a/src/pages/backend/developer-tools.astro b/src/pages/backend/developer-tools.astro index b788dacda..9199e54d6 100644 --- a/src/pages/backend/developer-tools.astro +++ b/src/pages/backend/developer-tools.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'backend-developer-tools'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || diff --git a/src/pages/backend/languages.astro b/src/pages/backend/languages.astro index 76da82b2a..432a577eb 100644 --- a/src/pages/backend/languages.astro +++ b/src/pages/backend/languages.astro @@ -12,7 +12,7 @@ if (!guide) { return Astro.redirect('/404'); } -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || diff --git a/src/pages/backend/project-ideas.astro b/src/pages/backend/project-ideas.astro index 1e1d960fe..f1beadac7 100644 --- a/src/pages/backend/project-ideas.astro +++ b/src/pages/backend/project-ideas.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'backend-project-ideas'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || diff --git a/src/pages/backend/technologies.astro b/src/pages/backend/technologies.astro index 18df34e73..25e0236e6 100644 --- a/src/pages/backend/technologies.astro +++ b/src/pages/backend/technologies.astro @@ -12,7 +12,7 @@ if (!guide) { return Astro.redirect('/404'); } -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || @@ -25,7 +25,7 @@ const ogImageUrl = diff --git a/src/pages/devops/career-path.astro b/src/pages/devops/career-path.astro index af1f52631..9f1363f4e 100644 --- a/src/pages/devops/career-path.astro +++ b/src/pages/devops/career-path.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'devops-career-path'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || @@ -22,7 +22,7 @@ const ogImageUrl = diff --git a/src/pages/devops/devops-engineer.astro b/src/pages/devops/devops-engineer.astro index c90546429..063fc285d 100644 --- a/src/pages/devops/devops-engineer.astro +++ b/src/pages/devops/devops-engineer.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'devops-engineer'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || @@ -22,7 +22,7 @@ const ogImageUrl = diff --git a/src/pages/devops/devops-vs-sre.astro b/src/pages/devops/devops-vs-sre.astro index fb90dbb7e..096277921 100644 --- a/src/pages/devops/devops-vs-sre.astro +++ b/src/pages/devops/devops-vs-sre.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'devops-vs-sre'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || @@ -22,7 +22,7 @@ const ogImageUrl = diff --git a/src/pages/devops/how-to-become-devops-engineer.astro b/src/pages/devops/how-to-become-devops-engineer.astro index 19b85ca49..e535d008b 100644 --- a/src/pages/devops/how-to-become-devops-engineer.astro +++ b/src/pages/devops/how-to-become-devops-engineer.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'how-to-become-devops-engineer'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || @@ -22,7 +22,7 @@ const ogImageUrl = diff --git a/src/pages/devops/skills.astro b/src/pages/devops/skills.astro index 43029d0a1..da5bac958 100644 --- a/src/pages/devops/skills.astro +++ b/src/pages/devops/skills.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'devops-skills'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || @@ -22,7 +22,7 @@ const ogImageUrl = diff --git a/src/pages/frontend/developer-skills.astro b/src/pages/frontend/developer-skills.astro index ad90760e5..b35d65ed1 100644 --- a/src/pages/frontend/developer-skills.astro +++ b/src/pages/frontend/developer-skills.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'frontend-developer-skills'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || @@ -22,7 +22,7 @@ const ogImageUrl = diff --git a/src/pages/frontend/how-to-become-frontend-developer.astro b/src/pages/frontend/how-to-become-frontend-developer.astro index 5a2f32954..ffc537370 100644 --- a/src/pages/frontend/how-to-become-frontend-developer.astro +++ b/src/pages/frontend/how-to-become-frontend-developer.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'how-to-become-frontend-developer'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || @@ -22,7 +22,7 @@ const ogImageUrl = diff --git a/src/pages/frontend/languages.astro b/src/pages/frontend/languages.astro index 06b1a1840..05f5b25eb 100644 --- a/src/pages/frontend/languages.astro +++ b/src/pages/frontend/languages.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'frontend-languages'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || @@ -22,7 +22,7 @@ const ogImageUrl = diff --git a/src/pages/full-stack/developer-skills.astro b/src/pages/full-stack/developer-skills.astro index fb6c53871..60f60ac41 100644 --- a/src/pages/full-stack/developer-skills.astro +++ b/src/pages/full-stack/developer-skills.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'full-stack-developer-skills'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || @@ -22,7 +22,7 @@ const ogImageUrl = diff --git a/src/pages/full-stack/vs-software-engineer.astro b/src/pages/full-stack/vs-software-engineer.astro index 2abdba17e..7a2668825 100644 --- a/src/pages/full-stack/vs-software-engineer.astro +++ b/src/pages/full-stack/vs-software-engineer.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'full-stack-vs-software-engineer'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || @@ -22,7 +22,7 @@ const ogImageUrl = diff --git a/src/pages/guides/[guideId].astro b/src/pages/guides/[guideId].astro index 5b26c13e8..946891ba8 100644 --- a/src/pages/guides/[guideId].astro +++ b/src/pages/guides/[guideId].astro @@ -12,18 +12,18 @@ export interface Props { export async function getStaticPaths() { const guides = (await getAllGuides()).filter( - (guide) => !guide.frontmatter.excludedBySlug, + (guide) => !guide.data.excludedBySlug, ); return guides.map((guide) => ({ - params: { guideId: guide.id }, + params: { guideId: guide.slug }, props: { guide }, })); } const { guideId } = Astro.params; const { guide } = Astro.props; -const { frontmatter: guideData, author } = guide; +const { data: guideData, author } = guide; const ogImageUrl = guideData.seo.ogImageUrl || diff --git a/src/pages/guides/index.astro b/src/pages/guides/index.astro index d3b7a75ef..b0fb6d01f 100644 --- a/src/pages/guides/index.astro +++ b/src/pages/guides/index.astro @@ -7,13 +7,13 @@ import { getAllQuestionGroups } from '../../lib/question-group'; const guides = await getAllGuides(); const questionGuides = (await getAllQuestionGroups()).filter( - (questionGroup) => questionGroup.frontmatter.authorId, + (questionGroup) => questionGroup.data.authorId, ); const allGuides = [...guides, ...questionGuides]; const sortedGuides = allGuides.sort((a, b) => { - const aDate = new Date(a.frontmatter.date); - const bDate = new Date(b.frontmatter.date); + const aDate = new Date(a.data.date!); + const bDate = new Date(b.data.date!); return bDate.getTime() - aDate.getTime(); }); diff --git a/src/pages/java/developer-skills.astro b/src/pages/java/developer-skills.astro index 5b0061bb1..63cf918a2 100644 --- a/src/pages/java/developer-skills.astro +++ b/src/pages/java/developer-skills.astro @@ -9,7 +9,7 @@ import { replaceVariables } from '../../lib/markdown'; const guideId = 'java-developer-skills'; const guide = await getGuideById(guideId); -const { frontmatter: guideData } = guide!; +const { data: guideData } = guide!; const ogImageUrl = guideData.seo.ogImageUrl || @@ -22,7 +22,7 @@ const ogImageUrl = diff --git a/src/pages/pages.json.ts b/src/pages/pages.json.ts index d79ec3d12..16703b170 100644 --- a/src/pages/pages.json.ts +++ b/src/pages/pages.json.ts @@ -36,17 +36,17 @@ export async function GET() { ...questionGroups.map((questionGroup) => ({ id: questionGroup.id, url: `/questions/${questionGroup.id}`, - title: questionGroup.frontmatter.briefTitle, + title: questionGroup.data.briefTitle, group: 'Questions', })), ...guides.map((guide) => ({ id: guide.id, - url: guide.frontmatter.excludedBySlug - ? guide.frontmatter.excludedBySlug + url: guide.data.excludedBySlug + ? guide.data.excludedBySlug : `/guides/${guide.id}`, - title: guide.frontmatter.title, - description: guide.frontmatter.description, - authorId: guide.frontmatter.authorId, + title: guide.data.title, + description: guide.data.description, + authorId: guide.data.authorId, group: 'Guides', })), ...videos.map((video) => ({ diff --git a/src/pages/questions/[questionGroupId].astro b/src/pages/questions/[questionGroupId].astro index d782db83d..6ea62c146 100644 --- a/src/pages/questions/[questionGroupId].astro +++ b/src/pages/questions/[questionGroupId].astro @@ -1,9 +1,6 @@ --- -import GridItem from '../../components/GridItem.astro'; -import SimplePageHeader from '../../components/SimplePageHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import Footer from '../../components/Footer.astro'; -import AstroIcon from '../../components/AstroIcon.astro'; import { QuestionsList } from '../../components/Questions/QuestionsList'; import { @@ -22,14 +19,14 @@ export async function getStaticPaths() { return questionGroups.map((questionGroup) => { return { - params: { questionGroupId: questionGroup.id }, + params: { questionGroupId: questionGroup.slug }, props: { questionGroup }, }; }); } const { questionGroup } = Astro.props; -const { frontmatter } = questionGroup; +const { data: frontmatter } = questionGroup; --- { - !questionGroup.frontmatter.authorId && ( + !frontmatter.authorId && (
@@ -64,7 +61,7 @@ const { frontmatter } = questionGroup;
@@ -73,11 +70,7 @@ const { frontmatter } = questionGroup; ) } - { - questionGroup.frontmatter.authorId && ( - - ) - } + {frontmatter?.authorId && }