From e7ee0a16adc3c4dfb00c5aee4bf04f87963727ee Mon Sep 17 00:00:00 2001 From: Lena Fuhrimann <6780471+cloudlena@users.noreply.github.com> Date: Sun, 24 Mar 2024 23:20:10 +0100 Subject: [PATCH] Switch hosting to GitHub pages Fixes https://github.com/bespinian/bespinian.io/issues/58 Fixes https://github.com/bespinian/bespinian.io/issues/59 --- .github/workflows/main.yml | 51 +- infrastructure/.gitignore | 29 - infrastructure/.terraform.lock.hcl | 20 - infrastructure/.tflint.hcl | 9 - infrastructure/Makefile | 9 - infrastructure/dns.tf | 23 - infrastructure/homepage.tf | 11 - infrastructure/main.tf | 19 - infrastructure/terraform.tfstate | 1105 -------------------------- infrastructure/variables.tf | 4 - package-lock.json | 379 +++++---- src/routes/+layout.ts | 1 + src/routes/customers/[slug]/+page.ts | 14 +- svelte.config.js | 4 +- 14 files changed, 246 insertions(+), 1432 deletions(-) delete mode 100644 infrastructure/.gitignore delete mode 100644 infrastructure/.terraform.lock.hcl delete mode 100644 infrastructure/.tflint.hcl delete mode 100644 infrastructure/Makefile delete mode 100644 infrastructure/dns.tf delete mode 100644 infrastructure/homepage.tf delete mode 100644 infrastructure/main.tf delete mode 100644 infrastructure/terraform.tfstate delete mode 100644 infrastructure/variables.tf create mode 100644 src/routes/+layout.ts diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d3cacf74..9393a1e9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,12 +1,10 @@ name: Lint, Build and Deploy on: - pull_request: - branches: - - main push: branches: - main + pull_request: jobs: lint: @@ -17,38 +15,45 @@ jobs: uses: actions/setup-node@v4 - name: Checkout repo uses: actions/checkout@v4 - - name: Audit dependencies - run: npm audit - name: Install dependencies run: npm ci - - name: Check code + - name: Check run: npm run check - - name: Lint code + - name: Lint run: npm run lint + build: - name: Build and Deploy - if: github.ref == 'refs/heads/main' && github.event_name == 'push' + name: Build needs: lint - environment: aws-production + if: github.ref == 'refs/heads/main' && github.event_name == 'push' runs-on: ubuntu-latest - env: - AWS_REGION: eu-central-1 steps: - name: Set up Node.js uses: actions/setup-node@v4 - with: - node-version: lts/* - check-latest: true - - name: Set up OpenTofu - uses: opentofu/setup-opentofu@v1 - name: Checkout repo uses: actions/checkout@v4 - name: Install dependencies run: npm ci - - name: Build application + - name: Build run: npm run build - - name: Deploy to production - run: npm run deploy - env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./build + + deploy: + name: Deploy + needs: build + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + permissions: + pages: write + id-token: write + steps: + - name: Configure Deployment + uses: actions/configure-pages@v4 + - name: Deploy + id: deployment + uses: actions/deploy-pages@v4 diff --git a/infrastructure/.gitignore b/infrastructure/.gitignore deleted file mode 100644 index b57570f4..00000000 --- a/infrastructure/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -# Local .terraform directories -**/.terraform/* - -# .tfstate files -#*.tfstate -*.tfstate.* - -# Crash log files -crash.log - -# Ignore any .tfvars files that are generated automatically for each Terraform run. Most -# .tfvars files are managed as part of configuration and so should be included in -# version control. -# -# example.tfvars - -# Ignore override files as they are usually used to override resources locally and so -# are not checked in -override.tf -override.tf.json -*_override.tf -*_override.tf.json - -# Include override files you do wish to add to version control using negated pattern -# -# !example_override.tf - -# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan -# example: *tfplan* diff --git a/infrastructure/.terraform.lock.hcl b/infrastructure/.terraform.lock.hcl deleted file mode 100644 index d7046056..00000000 --- a/infrastructure/.terraform.lock.hcl +++ /dev/null @@ -1,20 +0,0 @@ -# This file is maintained automatically by "tofu init". -# Manual edits may be lost in future updates. - -provider "registry.opentofu.org/hashicorp/aws" { - version = "5.23.0" - constraints = "~> 5.0" - hashes = [ - "h1:nrvJsxhay2nts34LIUgEtFEOe3ORnShNYyDzkybRj0E=", - "zh:1d529f875e2a5cbeb80b28c8e3ad41707ec329a7f790a7031868b88705df4965", - "zh:22f4b50cf437686cdab64d1d822d80518a846b80ab032b13e25ed5b128a74868", - "zh:25b23f38fd9bc0b07d1dad705d8afec0b1d4c6eab4bae7c707c8f7e4caed8856", - "zh:5a29c392a116ae44a1ab769efaa699bab5372f3605ec1f1f1749249526a21a76", - "zh:65a2177174f91c0382621a5e02fd5b077e9270895a20764bf5784f5d38d54f7b", - "zh:6b5b3bdb1134480c7a038287e5e3772298fcebc4cf7c5b0587c9ee61b15e4cb1", - "zh:7ec42646e253a29621283aeefd1ec6f1381d166ca6fb3cb7a35a18b05f6f09ef", - "zh:8950b9f706533ae017d6776db0ed7d165f8b90ffd1f5f79c91bc93d3a666b5e1", - "zh:bd92ded5eafdcc3bd423ca3477f4eec2737e7b6b2ccb68aedc38fd761de20ae8", - "zh:d00bd63e362a3ae90d2d9409d2f3adc0198b893637690d6640cc0bcb9b67a066", - ] -} diff --git a/infrastructure/.tflint.hcl b/infrastructure/.tflint.hcl deleted file mode 100644 index d22a73e7..00000000 --- a/infrastructure/.tflint.hcl +++ /dev/null @@ -1,9 +0,0 @@ -config { - module = true -} - -plugin "aws" { - enabled = true - version = "0.27.0" - source = "github.com/terraform-linters/tflint-ruleset-aws" -} diff --git a/infrastructure/Makefile b/infrastructure/Makefile deleted file mode 100644 index aaee8f32..00000000 --- a/infrastructure/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -.PHONY: apply -apply: - tofu init - tofu apply - -.PHONY: lint -lint: - tflint --init - tflint --recursive diff --git a/infrastructure/dns.tf b/infrastructure/dns.tf deleted file mode 100644 index 1297ea48..00000000 --- a/infrastructure/dns.tf +++ /dev/null @@ -1,23 +0,0 @@ -resource "aws_route53_zone" "main" { - name = local.domain - - tags = { - service-name = "global" - environment = local.environment - } -} - -resource "aws_route53_record" "email" { - zone_id = aws_route53_zone.main.zone_id - name = local.domain - type = "MX" - ttl = 3600 - - records = [ - "1 ASPMX.L.GOOGLE.COM.", - "5 ALT1.ASPMX.L.GOOGLE.COM.", - "5 ALT2.ASPMX.L.GOOGLE.COM.", - "10 ALT3.ASPMX.L.GOOGLE.COM.", - "10 ALT4.ASPMX.L.GOOGLE.COM.", - ] -} diff --git a/infrastructure/homepage.tf b/infrastructure/homepage.tf deleted file mode 100644 index 7eb21fbc..00000000 --- a/infrastructure/homepage.tf +++ /dev/null @@ -1,11 +0,0 @@ -module "homepage" { - source = "github.com/cloudlena/terraform-aws-spa?ref=v2.1.0" - providers = { - aws.us_east = aws.us_east - } - - service_name = "homepage" - domain = local.domain - alternate_subdomains = ["www"] - environment = local.environment -} diff --git a/infrastructure/main.tf b/infrastructure/main.tf deleted file mode 100644 index bbe8cec6..00000000 --- a/infrastructure/main.tf +++ /dev/null @@ -1,19 +0,0 @@ -terraform { - required_version = "~> 1.0" - - required_providers { - aws = { - source = "hashicorp/aws" - version = "~> 5.0" - } - } -} - -provider "aws" { - region = "eu-central-1" -} - -provider "aws" { - alias = "us_east" - region = "us-east-1" -} diff --git a/infrastructure/terraform.tfstate b/infrastructure/terraform.tfstate deleted file mode 100644 index 26909092..00000000 --- a/infrastructure/terraform.tfstate +++ /dev/null @@ -1,1105 +0,0 @@ -{ - "version": 4, - "terraform_version": "1.6.0", - "serial": 237, - "lineage": "2c3e0ed3-a77b-46ac-1ae6-ec00c8c0e1e0", - "outputs": {}, - "resources": [ - { - "mode": "managed", - "type": "aws_route53_record", - "name": "email", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 2, - "attributes": { - "alias": [], - "allow_overwrite": null, - "cidr_routing_policy": [], - "failover_routing_policy": [], - "fqdn": "bespinian.io", - "geolocation_routing_policy": [], - "health_check_id": "", - "id": "Z1UVPIZKL5KPK0_bespinian.io_MX", - "latency_routing_policy": [], - "multivalue_answer_routing_policy": false, - "name": "bespinian.io", - "records": [ - "1 ASPMX.L.GOOGLE.COM.", - "10 ALT3.ASPMX.L.GOOGLE.COM.", - "10 ALT4.ASPMX.L.GOOGLE.COM.", - "5 ALT1.ASPMX.L.GOOGLE.COM.", - "5 ALT2.ASPMX.L.GOOGLE.COM." - ], - "set_identifier": "", - "ttl": 3600, - "type": "MX", - "weighted_routing_policy": [], - "zone_id": "Z1UVPIZKL5KPK0" - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", - "dependencies": [ - "aws_route53_zone.main" - ] - } - ] - }, - { - "mode": "managed", - "type": "aws_route53_zone", - "name": "main", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "arn": "arn:aws:route53:::hostedzone/Z1UVPIZKL5KPK0", - "comment": "Managed by Terraform", - "delegation_set_id": "", - "force_destroy": false, - "id": "Z1UVPIZKL5KPK0", - "name": "bespinian.io", - "name_servers": [ - "ns-1411.awsdns-48.org", - "ns-1702.awsdns-20.co.uk", - "ns-203.awsdns-25.com", - "ns-643.awsdns-16.net" - ], - "primary_name_server": "ns-1411.awsdns-48.org", - "tags": { - "environment": "production", - "service-name": "global" - }, - "tags_all": { - "environment": "production", - "service-name": "global" - }, - "vpc": [], - "zone_id": "Z1UVPIZKL5KPK0" - }, - "sensitive_attributes": [], - "private": "bnVsbA==" - } - ] - }, - { - "module": "module.homepage", - "mode": "data", - "type": "aws_cloudfront_cache_policy", - "name": "caching_disabled", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "comment": "Policy with caching disabled", - "default_ttl": 0, - "etag": "E23ZP02F085DFQ", - "id": "4135ea2d-6df8-44a3-9df3-4b5a84be39ad", - "max_ttl": 0, - "min_ttl": 0, - "name": "Managed-CachingDisabled", - "parameters_in_cache_key_and_forwarded_to_origin": [ - { - "cookies_config": [ - { - "cookie_behavior": "none", - "cookies": [] - } - ], - "enable_accept_encoding_brotli": false, - "enable_accept_encoding_gzip": false, - "headers_config": [ - { - "header_behavior": "none", - "headers": [] - } - ], - "query_strings_config": [ - { - "query_string_behavior": "none", - "query_strings": [] - } - ] - } - ] - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.homepage", - "mode": "data", - "type": "aws_cloudfront_cache_policy", - "name": "caching_optimized", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "comment": "Policy with caching enabled. Supports Gzip and Brotli compression.", - "default_ttl": 86400, - "etag": "E23ZP02F085DFQ", - "id": "658327ea-f89d-4fab-a63d-7e88639e58f6", - "max_ttl": 31536000, - "min_ttl": 1, - "name": "Managed-CachingOptimized", - "parameters_in_cache_key_and_forwarded_to_origin": [ - { - "cookies_config": [ - { - "cookie_behavior": "none", - "cookies": [] - } - ], - "enable_accept_encoding_brotli": true, - "enable_accept_encoding_gzip": true, - "headers_config": [ - { - "header_behavior": "none", - "headers": [] - } - ], - "query_strings_config": [ - { - "query_string_behavior": "none", - "query_strings": [] - } - ] - } - ] - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.homepage", - "mode": "data", - "type": "aws_cloudfront_response_headers_policy", - "name": "security_headers", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "comment": "Adds a set of security headers to every response", - "cors_config": [], - "custom_headers_config": [], - "etag": "E23ZP02F085DFQ", - "id": "67f7725c-6f97-4210-82d7-5512b31e9d03", - "name": "Managed-SecurityHeadersPolicy", - "remove_headers_config": [], - "security_headers_config": [ - { - "content_security_policy": [], - "content_type_options": [ - { - "override": true - } - ], - "frame_options": [ - { - "frame_option": "SAMEORIGIN", - "override": false - } - ], - "referrer_policy": [ - { - "override": false, - "referrer_policy": "strict-origin-when-cross-origin" - } - ], - "strict_transport_security": [ - { - "access_control_max_age_sec": 31536000, - "include_subdomains": false, - "override": false, - "preload": false - } - ], - "xss_protection": [ - { - "mode_block": true, - "override": false, - "protection": true, - "report_uri": "" - } - ] - } - ], - "server_timing_headers_config": [] - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.homepage", - "mode": "data", - "type": "aws_iam_policy_document", - "name": "website_bucket", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "id": "256524731", - "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": \"s3:GetObject\",\n \"Resource\": \"arn:aws:s3:::bespinian.io/*\",\n \"Principal\": {\n \"Service\": \"cloudfront.amazonaws.com\"\n },\n \"Condition\": {\n \"StringEquals\": {\n \"AWS:SourceArn\": \"arn:aws:cloudfront::814024550722:distribution/E3NDMU1U7AT6WT\"\n }\n }\n }\n ]\n}", - "override_policy_documents": null, - "policy_id": null, - "source_policy_documents": null, - "statement": [ - { - "actions": [ - "s3:GetObject" - ], - "condition": [ - { - "test": "StringEquals", - "values": [ - "arn:aws:cloudfront::814024550722:distribution/E3NDMU1U7AT6WT" - ], - "variable": "AWS:SourceArn" - } - ], - "effect": "Allow", - "not_actions": [], - "not_principals": [], - "not_resources": [], - "principals": [ - { - "identifiers": [ - "cloudfront.amazonaws.com" - ], - "type": "Service" - } - ], - "resources": [ - "arn:aws:s3:::bespinian.io/*" - ], - "sid": "" - } - ], - "version": "2012-10-17" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.homepage", - "mode": "data", - "type": "aws_route53_zone", - "name": "main", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "arn": "arn:aws:route53:::hostedzone/Z1UVPIZKL5KPK0", - "caller_reference": "terraform-20191215212820221100000001", - "comment": "Managed by Terraform", - "id": "Z1UVPIZKL5KPK0", - "linked_service_description": null, - "linked_service_principal": null, - "name": "bespinian.io", - "name_servers": [ - "ns-1411.awsdns-48.org", - "ns-643.awsdns-16.net", - "ns-203.awsdns-25.com", - "ns-1702.awsdns-20.co.uk" - ], - "primary_name_server": "ns-1411.awsdns-48.org", - "private_zone": false, - "resource_record_set_count": 11, - "tags": { - "environment": "production", - "service-name": "global" - }, - "vpc_id": null, - "zone_id": "Z1UVPIZKL5KPK0" - }, - "sensitive_attributes": [] - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_acm_certificate", - "name": "main", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"].us_east", - "instances": [ - { - "schema_version": 0, - "attributes": { - "arn": "arn:aws:acm:us-east-1:814024550722:certificate/5cba26c7-8321-4d32-8324-e27157bcdbfa", - "certificate_authority_arn": "", - "certificate_body": null, - "certificate_chain": null, - "domain_name": "bespinian.io", - "domain_validation_options": [ - { - "domain_name": "bespinian.io", - "resource_record_name": "_ebfd83c7a3aff25e16dfab9a9bdac2a9.bespinian.io.", - "resource_record_type": "CNAME", - "resource_record_value": "_e5f42ff7a67c01552e3632b381e9f476.mzlfeqexyx.acm-validations.aws." - }, - { - "domain_name": "www.bespinian.io", - "resource_record_name": "_1e7cb7c211a339429410b57a842c8b7a.www.bespinian.io.", - "resource_record_type": "CNAME", - "resource_record_value": "_ccefbf03d2ba1650cc4ca203c1aa4f44.wrpxpmnjfs.acm-validations.aws." - } - ], - "early_renewal_duration": "", - "id": "arn:aws:acm:us-east-1:814024550722:certificate/5cba26c7-8321-4d32-8324-e27157bcdbfa", - "key_algorithm": "RSA_2048", - "not_after": "2024-03-03T23:59:59Z", - "not_before": "2023-02-03T00:00:00Z", - "options": [ - { - "certificate_transparency_logging_preference": "ENABLED" - } - ], - "pending_renewal": false, - "private_key": null, - "renewal_eligibility": "ELIGIBLE", - "renewal_summary": [], - "status": "ISSUED", - "subject_alternative_names": [ - "bespinian.io", - "www.bespinian.io" - ], - "tags": { - "Name": "bespinian.io", - "environment": "production", - "service-name": "homepage" - }, - "tags_all": { - "Name": "bespinian.io", - "environment": "production", - "service-name": "homepage" - }, - "type": "AMAZON_ISSUED", - "validation_emails": [], - "validation_method": "DNS", - "validation_option": [] - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.homepage.aws_s3_bucket.website" - ], - "create_before_destroy": true - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_acm_certificate_validation", - "name": "main", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"].us_east", - "instances": [ - { - "schema_version": 0, - "attributes": { - "certificate_arn": "arn:aws:acm:us-east-1:814024550722:certificate/5cba26c7-8321-4d32-8324-e27157bcdbfa", - "id": "2023-02-03 11:47:59.235 +0000 UTC", - "timeouts": null, - "validation_record_fqdns": [ - "_1e7cb7c211a339429410b57a842c8b7a.www.bespinian.io", - "_ebfd83c7a3aff25e16dfab9a9bdac2a9.bespinian.io" - ] - }, - "sensitive_attributes": [], - "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo0NTAwMDAwMDAwMDAwfX0=", - "dependencies": [ - "module.homepage.aws_acm_certificate.main", - "module.homepage.aws_route53_record.cert_validation", - "module.homepage.aws_s3_bucket.website", - "module.homepage.data.aws_route53_zone.main" - ], - "create_before_destroy": true - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_cloudfront_distribution", - "name": "main", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 1, - "attributes": { - "aliases": [ - "bespinian.io", - "www.bespinian.io" - ], - "arn": "arn:aws:cloudfront::814024550722:distribution/E3NDMU1U7AT6WT", - "caller_reference": "terraform-20191217083208410700000001", - "comment": "The bespinian.io website", - "continuous_deployment_policy_id": "", - "custom_error_response": [ - { - "error_caching_min_ttl": 0, - "error_code": 403, - "response_code": 200, - "response_page_path": "/index.html" - }, - { - "error_caching_min_ttl": 0, - "error_code": 404, - "response_code": 200, - "response_page_path": "/index.html" - } - ], - "default_cache_behavior": [ - { - "allowed_methods": [ - "GET", - "HEAD" - ], - "cache_policy_id": "658327ea-f89d-4fab-a63d-7e88639e58f6", - "cached_methods": [ - "GET", - "HEAD" - ], - "compress": true, - "default_ttl": 0, - "field_level_encryption_id": "", - "forwarded_values": [], - "function_association": [], - "lambda_function_association": [], - "max_ttl": 0, - "min_ttl": 0, - "origin_request_policy_id": "", - "realtime_log_config_arn": "", - "response_headers_policy_id": "", - "smooth_streaming": false, - "target_origin_id": "S3-bespinian.io", - "trusted_key_groups": [], - "trusted_signers": [], - "viewer_protocol_policy": "redirect-to-https" - } - ], - "default_root_object": "index.html", - "domain_name": "d1ul3n78tbq2cb.cloudfront.net", - "enabled": true, - "etag": "EYU75MSHJ3G1N", - "hosted_zone_id": "Z2FDTNDATAQYW2", - "http_version": "http2and3", - "id": "E3NDMU1U7AT6WT", - "in_progress_validation_batches": 0, - "is_ipv6_enabled": true, - "last_modified_time": "2023-11-01 22:42:03.424 +0000 UTC", - "logging_config": [], - "ordered_cache_behavior": [ - { - "allowed_methods": [ - "GET", - "HEAD" - ], - "cache_policy_id": "4135ea2d-6df8-44a3-9df3-4b5a84be39ad", - "cached_methods": [ - "GET", - "HEAD" - ], - "compress": true, - "default_ttl": 0, - "field_level_encryption_id": "", - "forwarded_values": [], - "function_association": [], - "lambda_function_association": [], - "max_ttl": 0, - "min_ttl": 0, - "origin_request_policy_id": "", - "path_pattern": "*.html", - "realtime_log_config_arn": "", - "response_headers_policy_id": "67f7725c-6f97-4210-82d7-5512b31e9d03", - "smooth_streaming": false, - "target_origin_id": "S3-bespinian.io", - "trusted_key_groups": [], - "trusted_signers": [], - "viewer_protocol_policy": "redirect-to-https" - } - ], - "origin": [ - { - "connection_attempts": 3, - "connection_timeout": 10, - "custom_header": [], - "custom_origin_config": [], - "domain_name": "bespinian.io.s3.eu-central-1.amazonaws.com", - "origin_access_control_id": "E3POP9GCV3Y2UZ", - "origin_id": "S3-bespinian.io", - "origin_path": "", - "origin_shield": [], - "s3_origin_config": [] - } - ], - "origin_group": [], - "price_class": "PriceClass_100", - "restrictions": [ - { - "geo_restriction": [ - { - "locations": [], - "restriction_type": "none" - } - ] - } - ], - "retain_on_delete": false, - "staging": false, - "status": "Deployed", - "tags": { - "environment": "production", - "service-name": "homepage" - }, - "tags_all": { - "environment": "production", - "service-name": "homepage" - }, - "trusted_key_groups": [ - { - "enabled": false, - "items": [] - } - ], - "trusted_signers": [ - { - "enabled": false, - "items": [] - } - ], - "viewer_certificate": [ - { - "acm_certificate_arn": "arn:aws:acm:us-east-1:814024550722:certificate/5cba26c7-8321-4d32-8324-e27157bcdbfa", - "cloudfront_default_certificate": false, - "iam_certificate_id": "", - "minimum_protocol_version": "TLSv1.2_2021", - "ssl_support_method": "sni-only" - } - ], - "wait_for_deployment": true, - "web_acl_id": "" - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==", - "dependencies": [ - "module.homepage.aws_acm_certificate.main", - "module.homepage.aws_acm_certificate_validation.main", - "module.homepage.aws_cloudfront_origin_access_control.main", - "module.homepage.aws_route53_record.cert_validation", - "module.homepage.aws_s3_bucket.website", - "module.homepage.data.aws_cloudfront_cache_policy.caching_disabled", - "module.homepage.data.aws_cloudfront_cache_policy.caching_optimized", - "module.homepage.data.aws_cloudfront_response_headers_policy.security_headers", - "module.homepage.data.aws_route53_zone.main" - ] - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_cloudfront_origin_access_control", - "name": "main", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "description": "The policy for the bespinian.io origin", - "etag": "ETVPDKIKX0DER", - "id": "E3POP9GCV3Y2UZ", - "name": "bespinian.io", - "origin_access_control_origin_type": "s3", - "signing_behavior": "always", - "signing_protocol": "sigv4" - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.homepage.aws_s3_bucket.website" - ] - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_route53_record", - "name": "cert_validation", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": "bespinian.io", - "schema_version": 2, - "attributes": { - "alias": [], - "allow_overwrite": null, - "cidr_routing_policy": [], - "failover_routing_policy": [], - "fqdn": "_ebfd83c7a3aff25e16dfab9a9bdac2a9.bespinian.io", - "geolocation_routing_policy": [], - "health_check_id": "", - "id": "Z1UVPIZKL5KPK0__ebfd83c7a3aff25e16dfab9a9bdac2a9.bespinian.io._CNAME", - "latency_routing_policy": [], - "multivalue_answer_routing_policy": false, - "name": "_ebfd83c7a3aff25e16dfab9a9bdac2a9.bespinian.io", - "records": [ - "_e5f42ff7a67c01552e3632b381e9f476.mzlfeqexyx.acm-validations.aws." - ], - "set_identifier": "", - "ttl": 60, - "type": "CNAME", - "weighted_routing_policy": [], - "zone_id": "Z1UVPIZKL5KPK0" - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", - "dependencies": [ - "module.homepage.aws_acm_certificate.main", - "module.homepage.aws_s3_bucket.website", - "module.homepage.data.aws_route53_zone.main" - ], - "create_before_destroy": true - }, - { - "index_key": "www.bespinian.io", - "schema_version": 2, - "attributes": { - "alias": [], - "allow_overwrite": null, - "cidr_routing_policy": [], - "failover_routing_policy": [], - "fqdn": "_1e7cb7c211a339429410b57a842c8b7a.www.bespinian.io", - "geolocation_routing_policy": [], - "health_check_id": "", - "id": "Z1UVPIZKL5KPK0__1e7cb7c211a339429410b57a842c8b7a.www.bespinian.io._CNAME", - "latency_routing_policy": [], - "multivalue_answer_routing_policy": false, - "name": "_1e7cb7c211a339429410b57a842c8b7a.www.bespinian.io", - "records": [ - "_ccefbf03d2ba1650cc4ca203c1aa4f44.wrpxpmnjfs.acm-validations.aws." - ], - "set_identifier": "", - "ttl": 60, - "type": "CNAME", - "weighted_routing_policy": [], - "zone_id": "Z1UVPIZKL5KPK0" - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", - "dependencies": [ - "module.homepage.aws_acm_certificate.main", - "module.homepage.aws_s3_bucket.website", - "module.homepage.data.aws_route53_zone.main" - ], - "create_before_destroy": true - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_route53_record", - "name": "main", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 2, - "attributes": { - "alias": [ - { - "evaluate_target_health": false, - "name": "d1ul3n78tbq2cb.cloudfront.net", - "zone_id": "Z2FDTNDATAQYW2" - } - ], - "allow_overwrite": null, - "cidr_routing_policy": [], - "failover_routing_policy": [], - "fqdn": "bespinian.io", - "geolocation_routing_policy": [], - "health_check_id": "", - "id": "Z1UVPIZKL5KPK0_bespinian.io_A", - "latency_routing_policy": [], - "multivalue_answer_routing_policy": false, - "name": "bespinian.io", - "records": [], - "set_identifier": "", - "ttl": 0, - "type": "A", - "weighted_routing_policy": [], - "zone_id": "Z1UVPIZKL5KPK0" - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", - "dependencies": [ - "module.homepage.aws_acm_certificate.main", - "module.homepage.aws_acm_certificate_validation.main", - "module.homepage.aws_cloudfront_distribution.main", - "module.homepage.aws_cloudfront_origin_access_control.main", - "module.homepage.aws_route53_record.cert_validation", - "module.homepage.aws_s3_bucket.website", - "module.homepage.data.aws_cloudfront_cache_policy.caching_disabled", - "module.homepage.data.aws_cloudfront_cache_policy.caching_optimized", - "module.homepage.data.aws_cloudfront_response_headers_policy.security_headers", - "module.homepage.data.aws_route53_zone.main" - ] - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_route53_record", - "name": "main_ipv6", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 2, - "attributes": { - "alias": [ - { - "evaluate_target_health": false, - "name": "d1ul3n78tbq2cb.cloudfront.net", - "zone_id": "Z2FDTNDATAQYW2" - } - ], - "allow_overwrite": null, - "cidr_routing_policy": [], - "failover_routing_policy": [], - "fqdn": "bespinian.io", - "geolocation_routing_policy": [], - "health_check_id": "", - "id": "Z1UVPIZKL5KPK0_bespinian.io_AAAA", - "latency_routing_policy": [], - "multivalue_answer_routing_policy": false, - "name": "bespinian.io", - "records": [], - "set_identifier": "", - "ttl": 0, - "type": "AAAA", - "weighted_routing_policy": [], - "zone_id": "Z1UVPIZKL5KPK0" - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", - "dependencies": [ - "module.homepage.aws_acm_certificate.main", - "module.homepage.aws_acm_certificate_validation.main", - "module.homepage.aws_cloudfront_distribution.main", - "module.homepage.aws_cloudfront_origin_access_control.main", - "module.homepage.aws_route53_record.cert_validation", - "module.homepage.aws_s3_bucket.website", - "module.homepage.data.aws_cloudfront_cache_policy.caching_disabled", - "module.homepage.data.aws_cloudfront_cache_policy.caching_optimized", - "module.homepage.data.aws_cloudfront_response_headers_policy.security_headers", - "module.homepage.data.aws_route53_zone.main" - ] - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_route53_record", - "name": "subdomains", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "index_key": "www", - "schema_version": 2, - "attributes": { - "alias": [], - "allow_overwrite": null, - "cidr_routing_policy": [], - "failover_routing_policy": [], - "fqdn": "www.bespinian.io", - "geolocation_routing_policy": [], - "health_check_id": "", - "id": "Z1UVPIZKL5KPK0_www_CNAME", - "latency_routing_policy": [], - "multivalue_answer_routing_policy": false, - "name": "www", - "records": [ - "bespinian.io" - ], - "set_identifier": "", - "ttl": 300, - "type": "CNAME", - "weighted_routing_policy": [], - "zone_id": "Z1UVPIZKL5KPK0" - }, - "sensitive_attributes": [], - "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", - "dependencies": [ - "module.homepage.aws_acm_certificate.main", - "module.homepage.aws_acm_certificate_validation.main", - "module.homepage.aws_cloudfront_distribution.main", - "module.homepage.aws_cloudfront_origin_access_control.main", - "module.homepage.aws_route53_record.cert_validation", - "module.homepage.aws_route53_record.main", - "module.homepage.aws_s3_bucket.website", - "module.homepage.data.aws_cloudfront_cache_policy.caching_disabled", - "module.homepage.data.aws_cloudfront_cache_policy.caching_optimized", - "module.homepage.data.aws_cloudfront_response_headers_policy.security_headers", - "module.homepage.data.aws_route53_zone.main" - ] - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_s3_bucket", - "name": "website", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "acceleration_status": "", - "acl": "private", - "arn": "arn:aws:s3:::bespinian.io", - "bucket": "bespinian.io", - "bucket_domain_name": "bespinian.io.s3.amazonaws.com", - "bucket_prefix": "", - "bucket_regional_domain_name": "bespinian.io.s3.eu-central-1.amazonaws.com", - "cors_rule": [], - "force_destroy": true, - "grant": [ - { - "id": "4a5c9eba0d44c7dd8c823cc3bf59a8c98f7582fef8d3a57e62f4ec21347ad855", - "permissions": [ - "FULL_CONTROL" - ], - "type": "CanonicalUser", - "uri": "" - } - ], - "hosted_zone_id": "Z21DNDUVLTQW6Q", - "id": "bespinian.io", - "lifecycle_rule": [], - "logging": [], - "object_lock_configuration": [], - "object_lock_enabled": false, - "policy": "{\"Statement\":[{\"Action\":\"s3:GetObject\",\"Condition\":{\"StringEquals\":{\"AWS:SourceArn\":\"arn:aws:cloudfront::814024550722:distribution/E3NDMU1U7AT6WT\"}},\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"cloudfront.amazonaws.com\"},\"Resource\":\"arn:aws:s3:::bespinian.io/*\"}],\"Version\":\"2012-10-17\"}", - "region": "eu-central-1", - "replication_configuration": [], - "request_payer": "BucketOwner", - "server_side_encryption_configuration": [ - { - "rule": [ - { - "apply_server_side_encryption_by_default": [ - { - "kms_master_key_id": "", - "sse_algorithm": "AES256" - } - ], - "bucket_key_enabled": true - } - ] - } - ], - "tags": { - "environment": "production", - "service-name": "homepage" - }, - "tags_all": { - "environment": "production", - "service-name": "homepage" - }, - "timeouts": null, - "versioning": [ - { - "enabled": false, - "mfa_delete": false - } - ], - "website": [ - { - "error_document": "index.html", - "index_document": "index.html", - "redirect_all_requests_to": "", - "routing_rules": "" - } - ], - "website_domain": "s3-website.eu-central-1.amazonaws.com", - "website_endpoint": "bespinian.io.s3-website.eu-central-1.amazonaws.com" - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "create_before_destroy": true - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_s3_bucket_ownership_controls", - "name": "website", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "bucket": "bespinian.io", - "id": "bespinian.io", - "rule": [ - { - "object_ownership": "BucketOwnerEnforced" - } - ] - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.homepage.aws_s3_bucket.website" - ] - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_s3_bucket_policy", - "name": "website", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "bucket": "bespinian.io", - "id": "bespinian.io", - "policy": "{\"Statement\":[{\"Action\":\"s3:GetObject\",\"Condition\":{\"StringEquals\":{\"AWS:SourceArn\":\"arn:aws:cloudfront::814024550722:distribution/E3NDMU1U7AT6WT\"}},\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"cloudfront.amazonaws.com\"},\"Resource\":\"arn:aws:s3:::bespinian.io/*\"}],\"Version\":\"2012-10-17\"}" - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.homepage.aws_acm_certificate.main", - "module.homepage.aws_acm_certificate_validation.main", - "module.homepage.aws_cloudfront_distribution.main", - "module.homepage.aws_cloudfront_origin_access_control.main", - "module.homepage.aws_route53_record.cert_validation", - "module.homepage.aws_s3_bucket.website", - "module.homepage.aws_s3_bucket_public_access_block.website", - "module.homepage.data.aws_cloudfront_cache_policy.caching_disabled", - "module.homepage.data.aws_cloudfront_cache_policy.caching_optimized", - "module.homepage.data.aws_cloudfront_response_headers_policy.security_headers", - "module.homepage.data.aws_iam_policy_document.website_bucket", - "module.homepage.data.aws_route53_zone.main" - ] - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_s3_bucket_public_access_block", - "name": "website", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "block_public_acls": true, - "block_public_policy": true, - "bucket": "bespinian.io", - "id": "bespinian.io", - "ignore_public_acls": true, - "restrict_public_buckets": true - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.homepage.aws_s3_bucket.website" - ] - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_s3_bucket_server_side_encryption_configuration", - "name": "website", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "bucket": "bespinian.io", - "expected_bucket_owner": "", - "id": "bespinian.io", - "rule": [ - { - "apply_server_side_encryption_by_default": [ - { - "kms_master_key_id": "", - "sse_algorithm": "AES256" - } - ], - "bucket_key_enabled": true - } - ] - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.homepage.aws_s3_bucket.website" - ] - } - ] - }, - { - "module": "module.homepage", - "mode": "managed", - "type": "aws_s3_bucket_website_configuration", - "name": "website", - "provider": "provider[\"registry.opentofu.org/hashicorp/aws\"]", - "instances": [ - { - "schema_version": 0, - "attributes": { - "bucket": "bespinian.io", - "error_document": [ - { - "key": "index.html" - } - ], - "expected_bucket_owner": "", - "id": "bespinian.io", - "index_document": [ - { - "suffix": "index.html" - } - ], - "redirect_all_requests_to": [], - "routing_rule": [], - "routing_rules": "", - "website_domain": "s3-website.eu-central-1.amazonaws.com", - "website_endpoint": "bespinian.io.s3-website.eu-central-1.amazonaws.com" - }, - "sensitive_attributes": [], - "private": "bnVsbA==", - "dependencies": [ - "module.homepage.aws_s3_bucket.website" - ] - } - ] - } - ], - "check_results": null -} diff --git a/infrastructure/variables.tf b/infrastructure/variables.tf deleted file mode 100644 index 9173d593..00000000 --- a/infrastructure/variables.tf +++ /dev/null @@ -1,4 +0,0 @@ -locals { - domain = "bespinian.io" - environment = "production" -} diff --git a/package-lock.json b/package-lock.json index 1b1fec2f..fbeee365 100644 --- a/package-lock.json +++ b/package-lock.json @@ -559,9 +559,9 @@ } }, "node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.1.tgz", - "integrity": "sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz", + "integrity": "sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==", "dev": true, "hasInstallScript": true, "engines": { @@ -569,26 +569,26 @@ } }, "node_modules/@fortawesome/free-brands-svg-icons": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.1.tgz", - "integrity": "sha512-093l7DAkx0aEtBq66Sf19MgoZewv1zeY9/4C7vSKPO4qMwEsW/2VYTUTpBtLwfb9T2R73tXaRDPmE4UqLCYHfg==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.5.2.tgz", + "integrity": "sha512-zi5FNYdmKLnEc0jc0uuHH17kz/hfYTg4Uei0wMGzcoCL/4d3WM3u1VMc0iGGa31HuhV5i7ZK8ZlTCQrHqRHSGQ==", "dev": true, "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.5.1" + "@fortawesome/fontawesome-common-types": "6.5.2" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.1.tgz", - "integrity": "sha512-S1PPfU3mIJa59biTtXJz1oI0+KAXW6bkAb31XKhxdxtuXDiUIFsih4JR1v5BbxY7hVHsD1RKq+jRkVRaf773NQ==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz", + "integrity": "sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==", "dev": true, "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.5.1" + "@fortawesome/fontawesome-common-types": "6.5.2" }, "engines": { "node": ">=6" @@ -644,9 +644,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "node_modules/@jridgewell/gen-mapping": { @@ -739,9 +739,9 @@ "dev": true }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.13.0.tgz", - "integrity": "sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.1.tgz", + "integrity": "sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==", "cpu": [ "arm" ], @@ -752,9 +752,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.13.0.tgz", - "integrity": "sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.1.tgz", + "integrity": "sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==", "cpu": [ "arm64" ], @@ -765,9 +765,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.13.0.tgz", - "integrity": "sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.1.tgz", + "integrity": "sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==", "cpu": [ "arm64" ], @@ -778,9 +778,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.13.0.tgz", - "integrity": "sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.1.tgz", + "integrity": "sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==", "cpu": [ "x64" ], @@ -791,9 +791,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.13.0.tgz", - "integrity": "sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.1.tgz", + "integrity": "sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==", "cpu": [ "arm" ], @@ -804,9 +804,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.13.0.tgz", - "integrity": "sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.1.tgz", + "integrity": "sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==", "cpu": [ "arm64" ], @@ -817,9 +817,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.13.0.tgz", - "integrity": "sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.1.tgz", + "integrity": "sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==", "cpu": [ "arm64" ], @@ -829,10 +829,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.1.tgz", + "integrity": "sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==", + "cpu": [ + "ppc64le" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.13.0.tgz", - "integrity": "sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.1.tgz", + "integrity": "sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==", "cpu": [ "riscv64" ], @@ -842,10 +855,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.1.tgz", + "integrity": "sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.13.0.tgz", - "integrity": "sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.1.tgz", + "integrity": "sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==", "cpu": [ "x64" ], @@ -856,9 +882,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.13.0.tgz", - "integrity": "sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.1.tgz", + "integrity": "sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==", "cpu": [ "x64" ], @@ -869,9 +895,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.13.0.tgz", - "integrity": "sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.1.tgz", + "integrity": "sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==", "cpu": [ "arm64" ], @@ -882,9 +908,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.13.0.tgz", - "integrity": "sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.1.tgz", + "integrity": "sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==", "cpu": [ "ia32" ], @@ -895,9 +921,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz", - "integrity": "sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.1.tgz", + "integrity": "sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==", "cpu": [ "x64" ], @@ -917,9 +943,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.4.tgz", - "integrity": "sha512-eDxK2d4EGzk99QsZNoPXe7jlzA5EGqfcCpUwZ912bhnalsZ2ZsG5wGRthkydupVjYyqdmzEanVKFhLxU2vkPSQ==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.5.tgz", + "integrity": "sha512-ULe3PB00q4+wYRL+IS5FDPsCEVnhEITofm7b9Yz8malcH3r1SAnW/JJ6T13hIMeu8QNRIuVQWo+P4+2VklbnLQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -994,9 +1020,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "8.56.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.6.tgz", - "integrity": "sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==", + "version": "8.56.7", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.7.tgz", + "integrity": "sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==", "dev": true, "dependencies": { "@types/estree": "*", @@ -1028,22 +1054,22 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz", - "integrity": "sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.6.0.tgz", + "integrity": "sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/type-utils": "7.3.1", - "@typescript-eslint/utils": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.6.0", + "@typescript-eslint/type-utils": "7.6.0", + "@typescript-eslint/utils": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0", "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1063,15 +1089,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", - "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.6.0.tgz", + "integrity": "sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", + "@typescript-eslint/scope-manager": "7.6.0", + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/typescript-estree": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0", "debug": "^4.3.4" }, "engines": { @@ -1091,13 +1117,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", - "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.6.0.tgz", + "integrity": "sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1" + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1108,15 +1134,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz", - "integrity": "sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.6.0.tgz", + "integrity": "sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.3.1", - "@typescript-eslint/utils": "7.3.1", + "@typescript-eslint/typescript-estree": "7.6.0", + "@typescript-eslint/utils": "7.6.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1135,9 +1161,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", - "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.6.0.tgz", + "integrity": "sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1148,19 +1174,19 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", - "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.6.0.tgz", + "integrity": "sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1176,18 +1202,18 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", - "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.6.0.tgz", + "integrity": "sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "semver": "^7.5.4" + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.6.0", + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/typescript-estree": "7.6.0", + "semver": "^7.6.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1201,13 +1227,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", - "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.6.0.tgz", + "integrity": "sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.3.1", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.6.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -1814,10 +1840,13 @@ } }, "node_modules/eslint-compat-utils": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", - "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz", + "integrity": "sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==", "dev": true, + "dependencies": { + "semver": "^7.5.4" + }, "engines": { "node": ">=12" }, @@ -1838,23 +1867,23 @@ } }, "node_modules/eslint-plugin-svelte": { - "version": "2.35.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.35.1.tgz", - "integrity": "sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==", + "version": "2.36.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.36.0.tgz", + "integrity": "sha512-D30hSj13Y8YEn7yGXos7EYp0lpEb3Z2V/M+6a3MZ13KGVhaefdW2A9j8IBIcW4YR+j6fo901USzLeXQz/XbWeQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@jridgewell/sourcemap-codec": "^1.4.14", - "debug": "^4.3.1", - "eslint-compat-utils": "^0.1.2", + "@eslint-community/eslint-utils": "^4.4.0", + "@jridgewell/sourcemap-codec": "^1.4.15", + "debug": "^4.3.4", + "eslint-compat-utils": "^0.5.0", "esutils": "^2.0.3", - "known-css-properties": "^0.29.0", - "postcss": "^8.4.5", + "known-css-properties": "^0.30.0", + "postcss": "^8.4.38", "postcss-load-config": "^3.1.4", "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", - "semver": "^7.5.3", - "svelte-eslint-parser": ">=0.33.0 <1.0.0" + "postcss-selector-parser": "^6.0.16", + "semver": "^7.6.0", + "svelte-eslint-parser": ">=0.34.0 <1.0.0" }, "engines": { "node": "^14.17.0 || >=16.0.0" @@ -1863,8 +1892,8 @@ "url": "https://github.com/sponsors/ota-meshi" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0-0", - "svelte": "^3.37.0 || ^4.0.0" + "eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0", + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.95" }, "peerDependenciesMeta": { "svelte": { @@ -2480,9 +2509,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", - "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.30.0.tgz", + "integrity": "sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==", "dev": true }, "node_modules/levn": { @@ -2574,9 +2603,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.8", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", - "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "version": "0.30.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz", + "integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -2639,9 +2668,9 @@ } }, "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -3092,9 +3121,9 @@ } }, "node_modules/rollup": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.13.0.tgz", - "integrity": "sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.1.tgz", + "integrity": "sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -3107,19 +3136,21 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.13.0", - "@rollup/rollup-android-arm64": "4.13.0", - "@rollup/rollup-darwin-arm64": "4.13.0", - "@rollup/rollup-darwin-x64": "4.13.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.13.0", - "@rollup/rollup-linux-arm64-gnu": "4.13.0", - "@rollup/rollup-linux-arm64-musl": "4.13.0", - "@rollup/rollup-linux-riscv64-gnu": "4.13.0", - "@rollup/rollup-linux-x64-gnu": "4.13.0", - "@rollup/rollup-linux-x64-musl": "4.13.0", - "@rollup/rollup-win32-arm64-msvc": "4.13.0", - "@rollup/rollup-win32-ia32-msvc": "4.13.0", - "@rollup/rollup-win32-x64-msvc": "4.13.0", + "@rollup/rollup-android-arm-eabi": "4.14.1", + "@rollup/rollup-android-arm64": "4.14.1", + "@rollup/rollup-darwin-arm64": "4.14.1", + "@rollup/rollup-darwin-x64": "4.14.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.1", + "@rollup/rollup-linux-arm64-gnu": "4.14.1", + "@rollup/rollup-linux-arm64-musl": "4.14.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.1", + "@rollup/rollup-linux-riscv64-gnu": "4.14.1", + "@rollup/rollup-linux-s390x-gnu": "4.14.1", + "@rollup/rollup-linux-x64-gnu": "4.14.1", + "@rollup/rollup-linux-x64-musl": "4.14.1", + "@rollup/rollup-win32-arm64-msvc": "4.14.1", + "@rollup/rollup-win32-ia32-msvc": "4.14.1", + "@rollup/rollup-win32-x64-msvc": "4.14.1", "fsevents": "~2.3.2" } }, @@ -3363,9 +3394,9 @@ } }, "node_modules/svelte-check": { - "version": "3.6.8", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.8.tgz", - "integrity": "sha512-rhXU7YCDtL+lq2gCqfJDXKTxJfSsCgcd08d7VWBFxTw6IWIbMWSaASbAOD3N0VV9TYSSLUqEBiratLd8WxAJJA==", + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.9.tgz", + "integrity": "sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", @@ -3385,16 +3416,16 @@ } }, "node_modules/svelte-eslint-parser": { - "version": "0.33.1", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.33.1.tgz", - "integrity": "sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==", + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.34.1.tgz", + "integrity": "sha512-9+uLA1pqI9AZioKVGJzYYmlOZWxfoCXSbAM9iaNm7H01XlYlzRTtJfZgl9o3StQGN41PfGJIbkKkfk3e/pHFfA==", "dev": true, "dependencies": { - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "postcss": "^8.4.29", - "postcss-scss": "^4.0.8" + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "postcss": "^8.4.38", + "postcss-scss": "^4.0.9" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3403,7 +3434,7 @@ "url": "https://github.com/sponsors/ota-meshi" }, "peerDependencies": { - "svelte": "^3.37.0 || ^4.0.0" + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.94" }, "peerDependenciesMeta": { "svelte": { @@ -3627,9 +3658,9 @@ } }, "node_modules/typescript": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", - "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", + "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -3655,13 +3686,13 @@ "dev": true }, "node_modules/vite": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.6.tgz", - "integrity": "sha512-FPtnxFlSIKYjZ2eosBQamz4CbyrTizbZ3hnGJlh/wMtCrlp1Hah6AzBLjGI5I2urTfNnpovpHdrL6YRuBOPnCA==", + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.8.tgz", + "integrity": "sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==", "dev": true, "dependencies": { "esbuild": "^0.20.1", - "postcss": "^8.4.36", + "postcss": "^8.4.38", "rollup": "^4.13.0" }, "bin": { diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts new file mode 100644 index 00000000..189f71e2 --- /dev/null +++ b/src/routes/+layout.ts @@ -0,0 +1 @@ +export const prerender = true; diff --git a/src/routes/customers/[slug]/+page.ts b/src/routes/customers/[slug]/+page.ts index e30c971a..195717bc 100644 --- a/src/routes/customers/[slug]/+page.ts +++ b/src/routes/customers/[slug]/+page.ts @@ -14,7 +14,15 @@ import xovisLogo from '$lib/images/xovis.svg'; import cometGroupEn from '$lib/customers/comet-group-en.json'; import cometGroupDe from '$lib/customers/comet-group-de.json'; import cometGroupLogo from '$lib/images/comet-group.webp'; -import type { PageLoad } from './$types'; +import type { PageLoad, EntryGenerator } from './$types'; + +export const entries: EntryGenerator = () => [ + { slug: '20-minuten' }, + { slug: 'citech-sensors' }, + { slug: 'swisssign-group' }, + { slug: 'xovis' }, + { slug: 'comet-group' } +]; export const load: PageLoad = ({ params }) => { switch (params.slug) { @@ -58,7 +66,7 @@ export const load: PageLoad = ({ params }) => { logo: cometGroupLogo } }; + default: + throw error(404, `Customer ${params.slug} not found`); } - - throw error(404, 'Not found'); }; diff --git a/svelte.config.js b/svelte.config.js index a61436dc..2cbc11b3 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -8,9 +8,7 @@ const config = { preprocess: vitePreprocess(), kit: { - adapter: adapter({ - fallback: 'index.html' - }), + adapter: adapter(), csp: { directives: { 'default-src': ['self'],