diff --git a/README.md b/README.md index 1257e9e7..c8e12675 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,9 @@ Note: These are priliminary docs for how to run Repco in a developer's setup. Do #### Requirements -* Node.js v18+ -* yarn v1 (yarn classic) -* Docker and Docker Compose +- Node.js v18+ +- yarn v1 (yarn classic) +- Docker and Docker Compose ### Development setup @@ -36,10 +36,9 @@ yarn repco repo create default # add datasource giving a config in json format yarn repco ds add -r # for example the cba plugin - need to define the api key for cba in .env file -yarn repco ds add -r default repco:datasource:cba '{"endpoint": "https://cba.fro.at/wp-json/wp/v2"}' +yarn cli ds add -r default repco:datasource:cba https://cba.media/wp-json/wp/v2 # or add a peertube channel yarn repco ds add -r default repco:datasource:activitypub '{"user":"root_channel","domain":"https://your-peertube-server.org"}' - # ingest updates from all datasources yarn repco ds ingest # print all revisions in a repo diff --git a/docker-compose.yml b/docker-compose.yml index b1c3a376..40d44fdf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,15 +1,16 @@ - version: '3.1' services: - db: image: postgres + container_name: repco-db # restart: always volumes: - - "./data/postgres:/var/lib/postgresql/data" + - './data/postgres:/var/lib/postgresql/data' ports: - 5432:5432 + command: + ['postgres', '-c', 'wal_level=logical', '-c', 'max_replication_slots=4'] environment: POSTGRES_PASSWORD: repco POSTGRES_USER: repco @@ -17,9 +18,97 @@ services: meilisearch: image: getmeili/meilisearch:v1.0 - ports: + ports: - 7700:7700 environment: - MEILI_MASTER_KEY=${MEILISEARCH_API_KEY} volumes: - ./data/meilisearch:/meili_data + + es01: + image: docker.elastic.co/elasticsearch/elasticsearch:${ELASTIC_VERSION} + container_name: repco-es + labels: + co.elastic.logs/module: elasticsearch + volumes: + - ./data/elastic/es01:/var/lib/elasticsearch/data + ports: + - ${ELASTIC_PORT}:9200 + environment: + - node.name=es01 + - cluster.name=${ELASTIC_CLUSTER_NAME} + - discovery.type=single-node + - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} + - bootstrap.memory_lock=true + - xpack.security.enabled=false + - xpack.license.self_generated.type=${ELASTIC_LICENSE} + - ES_JAVA_OPTS=-Xms750m -Xmx750m + - http.host=0.0.0.0 + - transport.host=127.0.0.1 + #mem_limit: 1073741824 + ulimits: + memlock: + soft: -1 + hard: -1 + healthcheck: + test: + [ + 'CMD-SHELL', + "curl -s --user elastic:${ELASTIC_PASSWORD} -X GET http://localhost:9200/_cluster/health?pretty | grep status | grep -q '\\(green\\|yellow\\)'", + ] + interval: 10s + timeout: 10s + retries: 120 + + redis: + image: 'redis:alpine' + container_name: repco-redis + command: ['redis-server', '--requirepass', '${REDIS_PASSWORD}'] + volumes: + - ./data/redis:/data + ports: + - '6379:6379' + + pgsync: + build: + context: ./pgsync + container_name: repco-pgsync + volumes: + - ./data/pgsync:/data + sysctls: + - net.ipv4.tcp_keepalive_time=200 + - net.ipv4.tcp_keepalive_intvl=200 + - net.ipv4.tcp_keepalive_probes=5 + labels: + org.label-schema.name: 'pgsync' + org.label-schema.description: 'Postgres to Elasticsearch sync' + com.label-schema.service-type: 'daemon' + depends_on: + - db + - es01 + - redis + environment: + - PG_USER=repco + - PG_HOST=db + - PG_PORT=5432 + - PG_PASSWORD=repco + - PG_DATABASE=repco + - LOG_LEVEL=DEBUG + - ELASTICSEARCH_PORT=9200 + - ELASTICSEARCH_SCHEME=http + - ELASTICSEARCH_HOST=es01 + - ELASTICSEARCH_CHUNK_SIZE=100 + - ELASTICSEARCH_MAX_CHUNK_BYTES=3242880 + - ELASTICSEARCH_MAX_RETRIES=14 + - ELASTICSEARCH_QUEUE_SIZE=1 + - ELASTICSEARCH_STREAMING_BULK=True + - ELASTICSEARCH_THREAD_COUNT=1 + - ELASTICSEARCH_TIMEOUT=320 + - REDIS_HOST=redis + - REDIS_PORT=6379 + - REDIS_AUTH=${REDIS_PASSWORD} + - REDIS_READ_CHUNK_SIZE=100 + - ELASTICSEARCH=true + - OPENSEARCH=false + - SCHEMA=/data + - CHECKPOINT_PATH=/data diff --git a/docker/docker-compose.arbeit-showcase.build.yml b/docker/docker-compose.arbeit-showcase.build.yml new file mode 100644 index 00000000..0bf1720c --- /dev/null +++ b/docker/docker-compose.arbeit-showcase.build.yml @@ -0,0 +1,140 @@ +version: '3.1' + +services: + app: + build: + context: '..' + dockerfile: './docker/Dockerfile' + container_name: repco-showcase-app + restart: unless-stopped + ports: + - 8767:8765 + # links: + # - 'es01:repco-es' + environment: + - DATABASE_URL=postgresql://repco:repco@db:5432/repco + - REPCO_ADMIN_TOKEN=kUBY0zsPHC9ubj3T6DZJKUACi3M= + - REPCO_URL=http://localhost:8765 + - CBA_API_KEY=k8WHfNbal0rjIs2f + - AP_BASE_URL=http://localhost:8765/ap + depends_on: + db: + condition: service_healthy + + db: + image: postgres + container_name: repco-showcase-db + restart: unless-stopped + volumes: + - './data/postgres-showcase:/var/lib/postgresql/data' + expose: + - 5432 + ports: + - 5435:5432 + command: + ['postgres', '-c', 'wal_level=logical', '-c', 'max_replication_slots=4'] + environment: + POSTGRES_PASSWORD: repco + POSTGRES_USER: repco + POSTGRES_DB: repco + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U repco'] + interval: 5s + timeout: 5s + retries: 5 + shm_size: '1gb' + + es01: + image: docker.elastic.co/elasticsearch/elasticsearch:8.10.4 + container_name: repco-showcase-es + restart: unless-stopped + labels: + co.elastic.logs/module: elasticsearch + volumes: + - ./data/elastic/es01-showcase:/var/lib/elasticsearch/data + ports: + - 9202:9200 + environment: + - node.name=es01 + - cluster.name=repco-showcase-es + - discovery.type=single-node + - ELASTIC_PASSWORD=repco + - bootstrap.memory_lock=true + - xpack.security.enabled=false + - xpack.license.self_generated.type=basic + - ES_JAVA_OPTS=-Xms750m -Xmx4g + - http.host=0.0.0.0 + - transport.host=127.0.0.1 + #mem_limit: 1073741824 + ulimits: + memlock: + soft: -1 + hard: -1 + healthcheck: + test: + [ + 'CMD-SHELL', + "curl -s --user elastic:repco -X GET http://localhost:9200/_cluster/health?pretty | grep status | grep -q '\\(green\\|yellow\\)'", + ] + interval: 10s + timeout: 10s + retries: 120 + + redis: + image: 'redis:alpine' + container_name: repco-showcase-redis + restart: unless-stopped + command: ['redis-server', '--requirepass', 'repco'] + volumes: + - ./data/redis-showcase:/data + ports: + - '6380:6379' + + pgsync: + build: + context: ../pgsync + container_name: repco-showcase-pgsync + restart: unless-stopped + logging: + options: + max-size: 50m + volumes: + - /var/www/vhosts/arbeit.cba.media/httpdocs/repco-showcase/repco/docker/data/pgsync:/data + sysctls: + - net.ipv4.tcp_keepalive_time=200 + - net.ipv4.tcp_keepalive_intvl=200 + - net.ipv4.tcp_keepalive_probes=5 + labels: + org.label-schema.name: 'pgsync' + org.label-schema.description: 'Postgres to Elasticsearch sync' + com.label-schema.service-type: 'daemon' + depends_on: + - db + - es01 + - redis + environment: + - PG_USER=repco + - PG_HOST=db + - PG_PORT=5432 + - PG_PASSWORD=repco + - PG_DATABASE=repco + - LOG_LEVEL=INFO + - CONSOLE_LOGGING_HANDLER_MIN_LEVEL=INFO + - ELASTICSEARCH_PORT=9200 + - ELASTICSEARCH_SCHEME=http + - ELASTICSEARCH_HOST=es01 + - ELASTICSEARCH_CHUNK_SIZE=2000 + - ELASTICSEARCH_MAX_CHUNK_BYTES=104857600 + - ELASTICSEARCH_MAX_RETRIES=14 + - ELASTICSEARCH_QUEUE_SIZE=4 + - ELASTICSEARCH_STREAMING_BULK=False + - ELASTICSEARCH_THREAD_COUNT=4 + - ELASTICSEARCH_TIMEOUT=10 + - REDIS_HOST=redis + - REDIS_PORT=6379 + - REDIS_AUTH=repco + - REDIS_READ_CHUNK_SIZE=1000 + - ELASTICSEARCH=true + - OPENSEARCH=false + - SCHEMA=/data + - CHECKPOINT_PATH=/data diff --git a/docker/docker-compose.arbeit.build.yml b/docker/docker-compose.arbeit.build.yml new file mode 100644 index 00000000..416184dd --- /dev/null +++ b/docker/docker-compose.arbeit.build.yml @@ -0,0 +1,139 @@ +version: '3.1' + +services: + app: + build: + context: '..' + dockerfile: './docker/Dockerfile' + container_name: repco-app + restart: unless-stopped + ports: + - 8766:8765 + # links: + # - 'es01:repco-es' + environment: + - DATABASE_URL=postgresql://repco:repco@db:5432/repco + - REPCO_ADMIN_TOKEN=kUBY0zsPHC9ubj3T6DZJKUACi3M= + - REPCO_URL=https://repco.arbeit.cba.media + - CBA_API_KEY=k8WHfNbal0rjIs2f + depends_on: + db: + condition: service_healthy + + db: + image: postgres + container_name: repco-db + restart: unless-stopped + volumes: + - './data/postgres:/var/lib/postgresql/data' + expose: + - 5432 + ports: + - 5434:5432 + command: + ['postgres', '-c', 'wal_level=logical', '-c', 'max_replication_slots=4'] + environment: + POSTGRES_PASSWORD: repco + POSTGRES_USER: repco + POSTGRES_DB: repco + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U repco'] + interval: 5s + timeout: 5s + retries: 5 + shm_size: '1gb' + + es01: + image: docker.elastic.co/elasticsearch/elasticsearch:8.10.4 + container_name: repco-es + restart: unless-stopped + labels: + co.elastic.logs/module: elasticsearch + volumes: + - ./data/elastic/es01:/var/lib/elasticsearch/data + ports: + - 9201:9200 + environment: + - node.name=es01 + - cluster.name=repco-es + - discovery.type=single-node + - ELASTIC_PASSWORD=repco + - bootstrap.memory_lock=true + - xpack.security.enabled=false + - xpack.license.self_generated.type=basic + - ES_JAVA_OPTS=-Xms750m -Xmx4g + - http.host=0.0.0.0 + - transport.host=127.0.0.1 + #mem_limit: 1073741824 + ulimits: + memlock: + soft: -1 + hard: -1 + healthcheck: + test: + [ + 'CMD-SHELL', + "curl -s --user elastic:repco -X GET http://localhost:9200/_cluster/health?pretty | grep status | grep -q '\\(green\\|yellow\\)'", + ] + interval: 10s + timeout: 10s + retries: 120 + + redis: + image: 'redis:alpine' + container_name: repco-redis + restart: unless-stopped + command: ['redis-server', '--requirepass', 'repco'] + volumes: + - ./data/redis:/data + ports: + - '6379:6379' + + pgsync: + build: + context: ../pgsync + container_name: repco-pgsync + restart: unless-stopped + logging: + options: + max-size: 50m + volumes: + - /var/www/vhosts/arbeit.cba.media/httpdocs/repco/docker/data/pgsync:/data + sysctls: + - net.ipv4.tcp_keepalive_time=200 + - net.ipv4.tcp_keepalive_intvl=200 + - net.ipv4.tcp_keepalive_probes=5 + labels: + org.label-schema.name: 'pgsync' + org.label-schema.description: 'Postgres to Elasticsearch sync' + com.label-schema.service-type: 'daemon' + depends_on: + - db + - es01 + - redis + environment: + - PG_USER=repco + - PG_HOST=db + - PG_PORT=5432 + - PG_PASSWORD=repco + - PG_DATABASE=repco + - LOG_LEVEL=INFO + - CONSOLE_LOGGING_HANDLER_MIN_LEVEL=INFO + - ELASTICSEARCH_PORT=9200 + - ELASTICSEARCH_SCHEME=http + - ELASTICSEARCH_HOST=es01 + - ELASTICSEARCH_CHUNK_SIZE=2000 + - ELASTICSEARCH_MAX_CHUNK_BYTES=104857600 + - ELASTICSEARCH_MAX_RETRIES=14 + - ELASTICSEARCH_QUEUE_SIZE=4 + - ELASTICSEARCH_STREAMING_BULK=False + - ELASTICSEARCH_THREAD_COUNT=4 + - ELASTICSEARCH_TIMEOUT=10 + - REDIS_HOST=redis + - REDIS_PORT=6379 + - REDIS_AUTH=repco + - REDIS_READ_CHUNK_SIZE=1000 + - ELASTICSEARCH=true + - OPENSEARCH=false + - SCHEMA=/data + - CHECKPOINT_PATH=/data diff --git a/docker/docker-compose.build.yml b/docker/docker-compose.build.yml index 839087d5..c8e01a31 100644 --- a/docker/docker-compose.build.yml +++ b/docker/docker-compose.build.yml @@ -1,4 +1,3 @@ - version: '3.1' services: @@ -6,26 +5,133 @@ services: build: context: '..' dockerfile: './docker/Dockerfile' + container_name: repco-app + restart: unless-stopped ports: - 8766:8765 + # links: + # - 'es01:repco-es' environment: - DATABASE_URL=postgresql://repco:repco@db:5432/repco + - REPCO_ADMIN_TOKEN=kUBY0zsPHC9ubj3T6DZJKUACi3M= + - REPCO_URL=https://repco.cba.media + - CBA_API_KEY=k8WHfNbal0rjIs2f depends_on: db: condition: service_healthy db: image: postgres - # volumes: - # - "/tmp/repco/postgres:/var/lib/postgresql/data" + container_name: repco-db + restart: unless-stopped + volumes: + - './data/postgres:/var/lib/postgresql/data' expose: - 5432 + command: + ['postgres', '-c', 'wal_level=logical', '-c', 'max_replication_slots=4'] environment: POSTGRES_PASSWORD: repco POSTGRES_USER: repco POSTGRES_DB: repco healthcheck: - test: ["CMD-SHELL", "pg_isready -U repco"] + test: ['CMD-SHELL', 'pg_isready -U repco'] interval: 5s timeout: 5s retries: 5 + shm_size: '1gb' + + es01: + image: docker.elastic.co/elasticsearch/elasticsearch:8.10.4 + container_name: repco-es + restart: unless-stopped + labels: + co.elastic.logs/module: elasticsearch + volumes: + - ./data/elastic/es01:/var/lib/elasticsearch/data + ports: + - 9201:9200 + environment: + - node.name=es01 + - cluster.name=repco-es + - discovery.type=single-node + - ELASTIC_PASSWORD=repco + - bootstrap.memory_lock=true + - xpack.security.enabled=false + - xpack.license.self_generated.type=basic + - ES_JAVA_OPTS=-Xms750m -Xmx4g + - http.host=0.0.0.0 + - transport.host=127.0.0.1 + #mem_limit: 1073741824 + ulimits: + memlock: + soft: -1 + hard: -1 + healthcheck: + test: + [ + 'CMD-SHELL', + "curl -s --user elastic:repco -X GET http://localhost:9200/_cluster/health?pretty | grep status | grep -q '\\(green\\|yellow\\)'", + ] + interval: 10s + timeout: 10s + retries: 120 + + redis: + image: 'redis:alpine' + container_name: repco-redis + restart: unless-stopped + command: ['redis-server', '--requirepass', 'repco'] + volumes: + - ./data/redis:/data + ports: + - '6379:6379' + + pgsync: + build: + context: ../pgsync + container_name: repco-pgsync + restart: unless-stopped + logging: + options: + max-size: 50m + volumes: + - /var/www/repco.cba.media/repco/docker/data/pgsync:/data + sysctls: + - net.ipv4.tcp_keepalive_time=200 + - net.ipv4.tcp_keepalive_intvl=200 + - net.ipv4.tcp_keepalive_probes=5 + labels: + org.label-schema.name: 'pgsync' + org.label-schema.description: 'Postgres to Elasticsearch sync' + com.label-schema.service-type: 'daemon' + depends_on: + - db + - es01 + - redis + environment: + - PG_USER=repco + - PG_HOST=db + - PG_PORT=5432 + - PG_PASSWORD=repco + - PG_DATABASE=repco + - LOG_LEVEL=INFO + - CONSOLE_LOGGING_HANDLER_MIN_LEVEL=INFO + - ELASTICSEARCH_PORT=9200 + - ELASTICSEARCH_SCHEME=http + - ELASTICSEARCH_HOST=es01 + - ELASTICSEARCH_CHUNK_SIZE=2000 + - ELASTICSEARCH_MAX_CHUNK_BYTES=104857600 + - ELASTICSEARCH_MAX_RETRIES=14 + - ELASTICSEARCH_QUEUE_SIZE=4 + - ELASTICSEARCH_STREAMING_BULK=False + - ELASTICSEARCH_THREAD_COUNT=4 + - ELASTICSEARCH_TIMEOUT=10 + - REDIS_HOST=redis + - REDIS_PORT=6379 + - REDIS_AUTH=repco + - REDIS_READ_CHUNK_SIZE=1000 + - ELASTICSEARCH=true + - OPENSEARCH=false + - SCHEMA=/data + - CHECKPOINT_PATH=/data diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index b02cd3c9..f5f31f28 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -3,6 +3,8 @@ version: '3.1' services: app: image: arsoxyz/repco:main + container_name: repco-app + restart: unless-stopped expose: - 8765 ports: @@ -15,16 +17,110 @@ services: db: image: postgres + container_name: repco-db + restart: unless-stopped volumes: - - ./data/repco-db:/var/lib/postgresql/data" + - ./data/repco-db:/var/lib/postgresql/data" expose: - 5432 + command: + ['postgres', '-c', 'wal_level=logical', '-c', 'max_replication_slots=4'] environment: POSTGRES_PASSWORD: repco POSTGRES_USER: repco POSTGRES_DB: repco healthcheck: - test: ["CMD-SHELL", "pg_isready -U repco"] + test: ['CMD-SHELL', 'pg_isready -U repco'] interval: 5s timeout: 5s retries: 5 + + es01: + image: docker.elastic.co/elasticsearch/elasticsearch:${ELASTIC_VERSION} + container_name: repco-es + restart: unless-stopped + labels: + co.elastic.logs/module: elasticsearch + volumes: + - ./data/elastic/es01:/var/lib/elasticsearch/data + ports: + - 9201:${ELASTIC_PORT} + environment: + - node.name=es01 + - cluster.name=${ELASTIC_CLUSTER_NAME} + - discovery.type=single-node + - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} + - bootstrap.memory_lock=true + - xpack.security.enabled=false + - xpack.license.self_generated.type=${ELASTIC_LICENSE} + - ES_JAVA_OPTS=-Xms750m -Xmx4g + - http.host=0.0.0.0 + - transport.host=127.0.0.1 + ulimits: + memlock: + soft: -1 + hard: -1 + healthcheck: + test: + [ + 'CMD-SHELL', + "curl -s --user elastic:${ELASTIC_PASSWORD} -X GET http://localhost:9200/_cluster/health?pretty | grep status | grep -q '\\(green\\|yellow\\)'", + ] + interval: 10s + timeout: 10s + retries: 120 + + redis: + image: 'redis:alpine' + container_name: repco-redis + restart: unless-stopped + command: ['redis-server', '--requirepass', '${REDIS_PASSWORD}'] + volumes: + - ./data/redis:/data + ports: + - '6379:6379' + + pgsync: + build: + context: ../pgsync + container_name: repco-pgsync + volumes: + - /var/www/repco.cba.media/repco/docker/data/pgsync:/data + sysctls: + - net.ipv4.tcp_keepalive_time=200 + - net.ipv4.tcp_keepalive_intvl=200 + - net.ipv4.tcp_keepalive_probes=5 + labels: + org.label-schema.name: 'pgsync' + org.label-schema.description: 'Postgres to Elasticsearch sync' + com.label-schema.service-type: 'daemon' + depends_on: + - db + - es01 + - redis + environment: + - PG_USER=repco + - PG_HOST=db + - PG_PORT=5432 + - PG_PASSWORD=repco + - PG_DATABASE=repco + - LOG_LEVEL=DEBUG + - CONSOLE_LOGGING_HANDLER_MIN_LEVEL=DEBUG + - ELASTICSEARCH_PORT=9200 + - ELASTICSEARCH_SCHEME=http + - ELASTICSEARCH_HOST=es01 + - ELASTICSEARCH_CHUNK_SIZE=2000 + - ELASTICSEARCH_MAX_CHUNK_BYTES=104857600 + - ELASTICSEARCH_MAX_RETRIES=14 + - ELASTICSEARCH_QUEUE_SIZE=4 + - ELASTICSEARCH_STREAMING_BULK=False + - ELASTICSEARCH_THREAD_COUNT=4 + - ELASTICSEARCH_TIMEOUT=10 + - REDIS_HOST=redis + - REDIS_PORT=6379 + - REDIS_AUTH=repco + - REDIS_READ_CHUNK_SIZE=1000 + - ELASTICSEARCH=true + - OPENSEARCH=false + - SCHEMA=/data + - CHECKPOINT_PATH=/data diff --git a/docs/User Guides/Deployment.md b/docs/User Guides/Deployment.md index 5fb5f561..2e91dd14 100644 --- a/docs/User Guides/Deployment.md +++ b/docs/User Guides/Deployment.md @@ -1,17 +1,75 @@ # Deploying repco +## Prod Deployment + +```sh +# fetch changes +git pull +# check container status +docker compose -f "docker/docker-compose.build.yml" ps +# build and deploy docker image +docker compose -f "docker/docker-compose.build.yml" up -d --build +# create cba repo +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create cba +# add cba datasource +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r cba repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "url":"https://cba.media","name":"cba","image":"https://repco.cba.media/images/cba_logo.png","thumbnail":"https://repco.cba.media/images/cba_logo_th.png"}' +# eurozine +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r eurozine repco:datasource:transposer '{"endpoint":"https://vmwczww5w2j.c.updraftclone.com/wp-json/transposer/v1/repco", "url":"https://eurozine.com","name":"Eurozine","image":"https://repco.cba.media/images/eurozine_logo.png","thumbnail":"https://repco.cba.media/images/eurozine_logo_th.png"}' +# displayeurope +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r displayeurope repco:datasource:transposer '{"endpoint":"https://displayeurope.eu/wp-json/transposer/v1/repco", "url":"https://displayeurope.eu","name":"displayeurope.eu","image":"https://repco.cba.media/images/displayeurope_logo.png","thumbnail":"https://repco.cba.media/images/displayeurope_logo_th.png"}' +# frn +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r frn repco:datasource:rss '{"endpoint":"https://www.freie-radios.net/portal/podcast.php?rss", "url":"https://freie-radios.net","name":"Freie-Radios.net","image":"https://repco.cba.media/images/frn_logo.png","thumbnail":"https://repco.cba.media/images/frn_logo_th.png"}' +# okto +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r okto repco:datasource:rss '{"endpoint":"https://www.okto.tv/en/display-europe.rss", "url":"https://www.okto.tv/","name":"Okto.tv","image":"https://repco.cba.media/images/okto_logo.png","thumbnail":"https://repco.cba.media/images/okto_logo_th.png"}' +# displayeurope +yarn ds add -r default repco:datasource:activitypub '{"user":"unbiasthenews", "domain":"displayeurope.video"}' +# peertube arso +yarn ds add -r default repco:datasource:activitypub '{"user":"test1", "domain":"peertube.dev.arso.xyz"}' +# restart app container so it runs in a loop +docker restart repco-app +``` + The easiest way to deploy repco is via `docker` and `docker compose`. -* Create a directory on your server -* Download the latest [`docker-compose.yml`](../../docker/docker-compose.yml) file: +- Create a directory on your server +- Download the latest [`docker-compose.yml`](../../docker/docker-compose.yml) file: + ``` wget https://raw.githubusercontent.com/repco-org/repco/main/docker/docker-compose.yml ``` -* Download the [`sample.env`](../../sample.env) file and save it as `.env`: + +- Download the [`sample.env`](../../sample.env) file and save it as `.env`: + ``` wget https://raw.githubusercontent.com/repco-org/repco/main/sample.env -o .env ``` -* Point a https-enabled reverse proxy to `localhost:8765`, or change the `docker-compose.yml` to include the external network where your reverse proxy runs. -* Adjust the `.env` - it is required to set the publicly reachable URL (`REPCO_URL`) and an admin token for API access (`REPCO_ADMIN_TOKEN`) -* Now start repco with `docker compose up -d` -* You can access the repco CLI with `docker compose exec app repco` + +- Point a https-enabled reverse proxy to `localhost:8765`, or change the `docker-compose.yml` to include the external network where your reverse proxy runs. +- Adjust the `.env` - it is required to set the publicly reachable URL (`REPCO_URL`) and an admin token for API access (`REPCO_ADMIN_TOKEN`) +- Now start repco with `docker compose up -d` +- You can access the repco CLI with `docker compose exec app repco` + +## Prod Deployment + +```sh +# fetch changes +git pull +# check container status +docker compose -f "docker/docker-compose.build.yml" ps +# build and deploy docker image +docker compose -f "docker/docker-compose.build.yml" up -d --build +# create cba repo +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create cba +# add cba datasource +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r cba repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "url":"https://cba.media","name":"cba","image":"https://repco.cba.media/images/cba_logo.png","thumbnail":"https://repco.cba.media/images/cba_logo_th.png"}' +# eurozine +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r eurozine repco:datasource:rss '{"endpoint":"https://www.eurozine.com/feed/", "url":"https://eurozine.com","name":"Eurozine","image":"https://repco.cba.media/images/eurozine_logo.png","thumbnail":"https://repco.cba.media/images/eurozine_logo_th.png"}' +# frn +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r frn repco:datasource:rss '{"endpoint":"https://www.freie-radios.net/portal/podcast.php?rss", "url":"https://freie-radios.net","name":"Freie-Radios.net","image":"https://repco.cba.media/images/frn_logo.png","thumbnail":"https://repco.cba.media/images/frn_logo_th.png"}' +# displayeurope +yarn ds add -r default repco:datasource:activitypub '{"user":"unbiasthenews", "domain":"displayeurope.video"}' +# peertube arso +yarn ds add -r default repco:datasource:activitypub '{"user":"test1", "domain":"peertube.dev.arso.xyz"}' +# restart app container so it runs in a loop +docker restart repco-app +``` diff --git a/package.json b/package.json index 0208bd5b..acbb318e 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "migrate:dev": "yarn --cwd packages/repco-prisma prisma migrate dev && yarn --cwd packages/repco-graphql export-schema", "codegen": "yarn migrate:dev", "server": "yarn --cwd packages/repco-server start", + "graphql": "yarn --cwd packages/repco-graphql export-schema && yarn --cwd packages/repco-graphql start", "cli": "node packages/repco-cli/bin.js", "lint": "eslint packages", "lint:fix": "eslint packages --fix", diff --git a/packages/repco-cli/README.md b/packages/repco-cli/README.md index 6b6ff053..f5495bf0 100644 --- a/packages/repco-cli/README.md +++ b/packages/repco-cli/README.md @@ -14,6 +14,7 @@ repo info Info on a repo repo car-import Import a CAR file into a repo repo car-export Export repo to CAR file repo log-revisions Print all revisions as JSON +repo delete Delete a repo and all children Manage datasources ds add Add a datasource diff --git a/packages/repco-cli/bin.js b/packages/repco-cli/bin.js index 1b51653e..8ef090ab 100755 --- a/packages/repco-cli/bin.js +++ b/packages/repco-cli/bin.js @@ -1,5 +1,4 @@ #!/usr/bin/env node - import 'source-map-support/register.js' // TODO: bundle build is broken because we now use multiple prisma clients // (one in repco-prisma, one in repco-activitypub) diff --git a/packages/repco-cli/src/commands/debug.ts b/packages/repco-cli/src/commands/debug.ts index 3b2bf47c..c7e210fb 100644 --- a/packages/repco-cli/src/commands/debug.ts +++ b/packages/repco-cli/src/commands/debug.ts @@ -59,7 +59,7 @@ export const createContent = createCommand({ try { for (let i = 0; i < batches; i++) { const items = Array(batch).fill(null).map(createItem) - await repo.saveBatch(items) + // await repo.saveBatch('me', items) bar.update(i * batch, { commits: i }) } bar.update(count, { commits: batches - 1 }) @@ -82,6 +82,11 @@ function createItem() { contentFormat: 'text/plain', title: casual.catch_phrase, content: casual.sentences(3), + summary: '{}', + contentUrl: '', + originalLanguages: {}, + removed: false, + subtitle: {}, }, } return item diff --git a/packages/repco-cli/src/commands/repo.ts b/packages/repco-cli/src/commands/repo.ts index 351493c1..deba1e74 100644 --- a/packages/repco-cli/src/commands/repo.ts +++ b/packages/repco-cli/src/commands/repo.ts @@ -283,6 +283,21 @@ export const syncCommand = createCommand({ }, }) +export const deleteCommand = createCommand({ + name: 'delete', + help: 'Delete a repo with all ingested data', + arguments: [ + { name: 'repo', required: true, help: 'DID or name of repo' }, + ] as const, + async run(_opts, args) { + // const repo = await repoRegistry.openWithDefaults(args.repo) + const res = (await request(`/repo/${args.repo}`, { + method: 'DELETE', + body: { name: args.repo }, + })) as any + }, +}) + export const command = createCommandGroup({ name: 'repo', help: 'Manage repco repositories', @@ -295,5 +310,6 @@ export const command = createCommandGroup({ carExport, logRevisions, syncCommand, + deleteCommand, ], }) diff --git a/packages/repco-core/src/datasource.ts b/packages/repco-core/src/datasource.ts index 67cb604b..a52088d1 100644 --- a/packages/repco-core/src/datasource.ts +++ b/packages/repco-core/src/datasource.ts @@ -236,11 +236,11 @@ export class DataSourceRegistry extends Registry { config: any, ) { const instance = plugins.createInstance(pluginUid, config) - if (this.has(instance.definition.uid)) { - throw new Error( - `Datasource with ${instance.definition.uid} already exists.`, - ) - } + // if (this.has(instance.definition.uid)) { + // throw new Error( + // `Datasource with ${instance.definition.uid} already exists.`, + // ) + // } return this.register(instance) } diff --git a/packages/repco-core/src/datasources/activitypub.ts b/packages/repco-core/src/datasources/activitypub.ts index ac244128..5979678d 100644 --- a/packages/repco-core/src/datasources/activitypub.ts +++ b/packages/repco-core/src/datasources/activitypub.ts @@ -2,7 +2,7 @@ import zod from 'zod' import { parse, toSeconds } from 'iso8601-duration' import { getGlobalApInstance } from 'repco-activitypub' import { log } from 'repco-common' -import { ConceptKind, ContentGroupingVariant, form } from 'repco-prisma' +import { ContentGroupingVariant, form } from 'repco-prisma' import { ConceptInput } from 'repco-prisma/generated/repco/zod.js' import { fetch } from 'undici' import { @@ -40,15 +40,17 @@ type ChannelInfo = { type Cursor = { lastIngest: Date + direction: 'front' | 'back' + pageNumber: number } -function parseCursor(input?: string | null): Cursor { - const cursor = input ? JSON.parse(input) : {} +function parseCursor(input: string, defaults: any): Cursor { + const cursor = JSON.parse(input) const dateFields = ['lastIngest'] for (const field of dateFields) { if (cursor[field]) cursor[field] = new Date(cursor[field]) } - return cursor as Cursor + return { ...defaults, ...cursor } as Cursor } export class ActivityPubDataSourcePlugin implements DataSourcePlugin { @@ -219,22 +221,28 @@ export class ActivityPubDataSource } async fetchUpdates(cursorString: string | null): Promise { - const nextCursor = { - lastIngest: new Date(), + let cursor: Cursor + if (cursorString) { + cursor = parseCursor(cursorString, { direction: 'back', pageNumber: 1 }) + } else { + cursor = { + lastIngest: new Date(), + direction: 'back', + pageNumber: 1, + } } const { ap, remoteId } = await this.getAndInitAp() const profile = remoteId // we have a previous cursor. ingest updates that were pushed to our inbox. - if (cursorString) { + if (cursor.direction === 'front') { try { - const cursor = parseCursor(cursorString) const activities = await ap.getActivitiesForRemoteActor( profile, cursor.lastIngest, ) if (!activities.length) { - return { cursor: cursorString, records: [] } + return { cursor: JSON.stringify(cursor), records: [] } } // map activities to source records const items = await Promise.all( @@ -244,18 +252,19 @@ export class ActivityPubDataSource (item): item is VideoObject => !!item, ) if (!newVideoObjects.length) { - return { cursor: cursorString, records: [] } + return { cursor: JSON.stringify(cursor), records: [] } } + cursor.lastIngest = new Date() const records: SourceRecordForm[] = [ { body: JSON.stringify(newVideoObjects), contentType: 'application/json', sourceType: 'videoObjects', - sourceUri: this.account + '#' + nextCursor.lastIngest.toISOString(), + sourceUri: this.account + '#' + cursor.lastIngest.toISOString(), }, ] return { - cursor: JSON.stringify(nextCursor), + cursor: JSON.stringify(cursor), records, } } catch (error) { @@ -285,20 +294,20 @@ export class ActivityPubDataSource // collect new video entities const newVideoObjects: VideoObject[] = [] // start with first page - let pageNumber = 1 - let currentPageUrl = firstPageUrl - let currentPage = - currentPageUrl && (await this._fetchAs(currentPageUrl)) + const pageNumber = cursor.pageNumber + const currentPageUrl = firstPageUrl.replace( + 'page=1', + `page=${pageNumber}`, + ) + log.debug(`AP ingest backwards page ${pageNumber}: ${currentPageUrl}`) + const currentPage = await this._fetchAs(currentPageUrl) // loop over pages while there are still items on the page - while (currentPage && currentPage.orderedItems.length !== 0) { - const items = - currentPage && - (await Promise.all( - currentPage.orderedItems.map((item) => - this.handleActivities(item), - ), - )) + if (currentPage && currentPage.orderedItems.length !== 0) { + cursor.pageNumber += 1 + const items = await Promise.all( + currentPage.orderedItems.map((item) => this.handleActivities(item)), + ) if (items === undefined) { throw new Error( `Could not catch items under url ${currentPageUrl}.`, @@ -308,12 +317,8 @@ export class ActivityPubDataSource newVideoObjects.push( ...items.filter((item): item is VideoObject => !!item), ) - - pageNumber++ - currentPageUrl = - firstPageUrl && firstPageUrl.replace('page=1', `page=${pageNumber}`) - currentPage = - currentPageUrl && (await this._fetchAs(currentPageUrl)) + } else { + cursor.direction = 'front' } // save collected items as source records @@ -324,16 +329,16 @@ export class ActivityPubDataSource body: JSON.stringify(newVideoObjects), contentType: 'application/json', sourceType: 'videoObjects', - sourceUri: - this.account + '#' + nextCursor.lastIngest.toISOString(), + sourceUri: this.account + '#' + cursor.lastIngest.toISOString(), }, ] } if (channelSourceRecord !== undefined) { records.push(channelSourceRecord as SourceRecordForm) } + log.debug(`AP ingest done - next cursor ${JSON.stringify(cursor)}`) return { - cursor: JSON.stringify(nextCursor), + cursor: JSON.stringify(cursor), records, } } catch (error) { @@ -442,13 +447,17 @@ export class ActivityPubDataSource } entities.push(fileEntity) // create Subtitles entity - const subtitles: form.SubtitlesInput = { - languageCode, - Files: [{ uri: fileUri }], + const subtitles: form.TranscriptInput = { + language: languageCode, + subtitleUrl: fileUri, + text: '', + engine: 'engine', MediaAsset: { uri: mediaAssetUri }, + license: '', + author: '', } const subtitlesEntity: EntityForm = { - type: 'Subtitles', + type: 'Transcript', content: subtitles, headers: { EntityUris: [subtitlesEntityUri] }, } @@ -476,9 +485,13 @@ export class ActivityPubDataSource } private _mapTagToConceptEntity(tag: ActivityHashTagObject): EntityForm { + var nameJson: { [k: string]: any } = {} + nameJson['de'] = { value: tag.name } const concept: ConceptInput = { - kind: ConceptKind.TAG, - name: tag.name, + kind: 'TAG', + name: nameJson, + description: {}, + summary: {}, } const uri = this._uri('tags', tag.name) const ConceptEntity: EntityForm = { @@ -492,9 +505,13 @@ export class ActivityPubDataSource private _mapCategoryToConceptEntity( category: ActivityIdentifierObject, ): EntityForm[] { + var nameJson: { [k: string]: any } = {} + nameJson['de'] = { value: category.name } const concept: form.ConceptInput = { - kind: ConceptKind.CATEGORY, - name: category.name, + kind: 'CATEGORY', + name: nameJson, + description: {}, + summary: {}, // TODO: find originNamespace of AP categories } const uri = this._uri('category', 'peertube:' + category.name) @@ -591,9 +608,14 @@ export class ActivityPubDataSource subtitleEntities && entities.push(...subtitleEntities) } + var titleJson: { [k: string]: any } = {} + titleJson[video.language?.name || 'de'] = { value: video.name } + var descriptionJson: { [k: string]: any } = {} + descriptionJson[video.language?.name || 'de'] = { value: video.content } + const asset: form.MediaAssetInput = { - title: video.name, - description: video.content, + title: titleJson, + description: descriptionJson, duration, mediaType: video.type, //"Video" Files: files, @@ -602,7 +624,6 @@ export class ActivityPubDataSource // Contributions: null, TeaserImage: { uri: teaserImageUri }, Concepts: conceptUris.length > 0 ? conceptUris : undefined, - Subtitles: [], } const mediaEntity: EntityForm = { @@ -641,12 +662,28 @@ export class ActivityPubDataSource ?.map((tag) => this._uriLink('tags', tag.href ? tag.href : tag.name)) .filter(notEmpty) ?? [] conceptLinks.push(...tags) + var lang = video.language?.name || 'de' + if (lang.length > 2) { + lang = lang.toLowerCase().slice(0, 2) + } + // var summaryJson: { [k: string]: any } = {} + // summaryJson[''] = { value: '' } + var titleJson: { [k: string]: any } = {} + titleJson[lang] = { value: video.name } + var contentJson: { [k: string]: any } = {} + contentJson[lang] = { + value: video.content, + } + var contentUrlsJson: { [k: string]: any } = {} + contentJson[lang] = { + value: video.url[0].href, + } const content: form.ContentItemInput = { - title: video.name, - subtitle: 'missing', + title: titleJson, + subtitle: {}, pubDate: new Date(video.published), - content: video.content || '', + content: contentJson, contentFormat: video.mediaType, // "text/markdown" // licenseUid TODO: plan to abolish License table and add license as string plus license_details Concepts: conceptLinks, @@ -654,6 +691,10 @@ export class ActivityPubDataSource //License MediaAssets: mediaAssetUris, PrimaryGrouping: this._uriLink('account', this.account), + summary: {}, + contentUrl: contentUrlsJson, + originalLanguages: {}, + removed: false, } const revisionUri = this._revisionUri( 'videoContent', @@ -683,10 +724,14 @@ export class ActivityPubDataSource channelInfo: ChannelInfo, ): EntityForm[] { try { + var titleJson: { [k: string]: any } = {} + titleJson['de'] = { value: channelInfo.account } const contentGrouping: form.ContentGroupingInput = { - title: channelInfo.account, + title: titleJson, variant: ContentGroupingVariant.EPISODIC, // @Frando is this used as intended? groupingType: 'activityPubChannel', + description: {}, + summary: {}, } const contentGroupingUri = this._uri('account', channelInfo.account) const headers = { diff --git a/packages/repco-core/src/datasources/cba.ts b/packages/repco-core/src/datasources/cba.ts index 0e054d21..9a6c0c4f 100644 --- a/packages/repco-core/src/datasources/cba.ts +++ b/packages/repco-core/src/datasources/cba.ts @@ -40,7 +40,7 @@ import { log, SourceRecordForm, } from '../datasource.js' -import { ConceptKind, ContentGroupingVariant, EntityForm } from '../entity.js' +import { ContentGroupingVariant, EntityForm } from '../entity.js' import { FetchOpts } from '../util/datamapping.js' import { HttpError } from '../util/error.js' import { notEmpty } from '../util/misc.js' @@ -57,16 +57,22 @@ const configSchema = zod.object({ apiKey: zod.string().or(zod.null()).optional(), pageLimit: zod.number().int().optional(), repo: zod.string(), + stationId: zod.number().or(zod.null()).optional(), }) type ConfigSchema = zod.infer -type FullConfigSchema = ConfigSchema & { endpoint: string; pageLimit: number } +type FullConfigSchema = ConfigSchema & { + endpoint: string + pageLimit: number + stationId: null | number +} const DEFAULT_CONFIG: FullConfigSchema = { - endpoint: 'https://cba.fro.at/wp-json/wp/v2', + endpoint: 'https://cba.media/wp-json/wp/v2', pageLimit: 30, apiKey: process.env.CBA_API_KEY, repo: 'default', + stationId: null, } /** @@ -115,7 +121,9 @@ export class CbaDataSource implements DataSource { get definition(): DataSourceDefinition { return { name: 'Cultural Broacasting Archive', - uid: `repco:${this.repo}:datasource:cba:` + this.endpoint, + uid: + `repco:${this.repo}:datasource:cba:${this.endpoint}` + + (this.config.stationId ? ':' + this.config.stationId : ''), pluginUid: 'repco:datasource:cba', } } @@ -181,7 +189,15 @@ export class CbaDataSource implements DataSource { const params = new URLSearchParams() params.append('include', slice.map((id) => id.id).join(',')) params.append('per_page', slice.length.toString()) - const url = this._url(`/${endpoint}?${params}`) + var multilingual = '' + if ( + endpoint === 'post' || + endpoint === 'series' || + endpoint === 'station' + ) { + multilingual = '&multilingual' + } + const url = this._url(`/${endpoint}?${params}${multilingual}`) const bodies = await this._fetch(url) res.push( ...bodies.map((body: any, i: number) => { @@ -257,7 +273,15 @@ export class CbaDataSource implements DataSource { ) } - const url = this._url(`/${endpoint}/${id}`) + var params = '' + if ( + endpoint === 'post' || + endpoint === 'series' || + endpoint === 'station' + ) { + params = '?multilingual' + } + const url = this._url(`/${endpoint}/${id}${params}`) const [body] = await Promise.all([this._fetch(url)]) return [ @@ -329,8 +353,11 @@ export class CbaDataSource implements DataSource { const cursor = cursorString ? JSON.parse(cursorString) : {} const { posts: postsCursor = '1970-01-01T01:00:00' } = cursor const perPage = this.config.pageLimit + const station = this.config.stationId + ? `&station_id=${this.config.stationId}` + : '' const url = this._url( - `/posts?page=1&per_page=${perPage}&_embed&orderby=modified&order=asc&modified_after=${postsCursor}`, + `/posts?multilingual${station}&page=1&per_page=${perPage}&_embed&orderby=modified&order=asc&modified_after=${postsCursor}`, ) const posts = await this._fetch(url) @@ -469,9 +496,21 @@ export class CbaDataSource implements DataSource { resolution: null, } + var titleJson: { [k: string]: any } = {} + titleJson[media.language_codes[0]] = { value: media.title.rendered } + var descriptionJson: { [k: string]: any } = {} + descriptionJson[media.language_codes[0]] = { + value: media.description?.rendered, + } + + Object.entries(media.translations).forEach((entry) => { + titleJson[entry[1]['language']] = { value: entry[1]['title'] } + descriptionJson[entry[1]['language']] = { value: entry[1]['description'] } + }) + const asset: form.MediaAssetInput = { - title: media.title.rendered, - description: media.description?.rendered, + title: titleJson, + description: descriptionJson, mediaType: 'audio', duration, Concepts: media.media_tag.map((cbaId) => ({ @@ -480,6 +519,10 @@ export class CbaDataSource implements DataSource { Files: [{ uri: fileId }], } + const licenseEntity = this._mapLicense( + `${media.license.license} ${media.license.version}`, + ) + const fileEntity: EntityForm = { type: 'File', content: file, @@ -491,8 +534,14 @@ export class CbaDataSource implements DataSource { content: asset, headers: { EntityUris: [audioId] }, } + var transcripts: Array = [] + if (media.transcripts.length > 0) { + transcripts = this._mapTranscripts(media, media.transcripts, { + uri: audioId, + }) + } - return [fileEntity, mediaEntity] + return [fileEntity, mediaEntity, licenseEntity, ...transcripts] } private _mapImage(media: CbaImage): EntityForm[] { @@ -521,9 +570,21 @@ export class CbaDataSource implements DataSource { media.media_details.width.toString() } + var titleJson: { [k: string]: any } = {} + titleJson[media.language_codes[0]] = { value: media.title.rendered } + var descriptionJson: { [k: string]: any } = {} + descriptionJson[media.language_codes[0]] = { + value: media.description?.rendered, + } + + Object.entries(media.translations).forEach((entry) => { + titleJson[entry[1]['language']] = { value: entry[1]['title'] } + descriptionJson[entry[1]['language']] = { value: entry[1]['description'] } + }) + const asset: form.MediaAssetInput = { - title: media.title.rendered || '', - description: media.description?.rendered || null, + title: titleJson, + description: descriptionJson, mediaType: 'image', Concepts: media.media_tag.map((cbaId) => ({ uri: this._uri('tags', cbaId), @@ -543,15 +604,28 @@ export class CbaDataSource implements DataSource { headers: { EntityUris: [imageId] }, } - return [fileEntity, mediaEntity] + var transcripts = this._mapTranscripts(media, media.transcripts, { + uri: imageId, + }) + + return [fileEntity, mediaEntity, ...transcripts] } private _mapCategories(categories: CbaCategory): EntityForm[] { + //TODO: find language code + var nameJson: { [k: string]: any } = {} + nameJson['de'] = { value: categories.name } + var descriptionJson: { [k: string]: any } = {} + descriptionJson['de'] = { value: categories.description } + var summaryJson: { [k: string]: any } = {} + summaryJson['de'] = { value: categories.description } + const content: form.ConceptInput = { - name: categories.name, - description: categories.description, - kind: ConceptKind.CATEGORY, + name: nameJson, + description: descriptionJson, + kind: 'CATEGORY', originNamespace: 'https://cba.fro.at/wp-json/wp/v2/categories', + summary: summaryJson, } if (categories.parent !== undefined) { content.ParentConcept = { @@ -576,11 +650,21 @@ export class CbaDataSource implements DataSource { console.error('Invalid tags input.') throw new Error('Invalid tags input.') } + + //TODO: find language code + var nameJson: { [k: string]: any } = {} + nameJson['de'] = { value: tags.name } + var descriptionJson: { [k: string]: any } = {} + descriptionJson['de'] = { value: tags.description } + var summaryJson: { [k: string]: any } = {} + summaryJson['de'] = { value: tags.description } + const content: form.ConceptInput = { - name: tags.name, - description: tags.description, - kind: ConceptKind.TAG, + name: nameJson, + description: descriptionJson, + kind: 'TAG', originNamespace: 'https://cba.fro.at/wp-json/wp/v2/tags', + summary: summaryJson, } const revisionId = this._revisionUri('tags', tags.id, new Date().getTime()) const uri = this._uri('tags', tags.id) @@ -598,10 +682,17 @@ export class CbaDataSource implements DataSource { ) } + var nameJson: { [k: string]: any } = {} + nameJson[station.language_codes[0]] = { value: station.title.rendered } + + Object.entries(station.translations).forEach((entry) => { + nameJson[entry[1]['language']] = { value: entry[1]['title'] } + }) + const content: form.PublicationServiceInput = { medium: station.type || '', address: station.link || '', - name: station.title.rendered, + name: nameJson, } const revisionId = this._revisionUri( @@ -625,12 +716,29 @@ export class CbaDataSource implements DataSource { throw new Error('Series title is missing.') } + var descriptionJson: { [k: string]: any } = {} + descriptionJson[series.language_codes[0]] = { + value: series.content.rendered, + } + var summaryJson: { [k: string]: any } = {} + summaryJson[series.language_codes[0]] = { value: series.content.rendered } + var titleJson: { [k: string]: any } = {} + titleJson[series.language_codes[0]] = { value: series.title.rendered } + + Object.entries(series.translations).forEach((entry) => { + titleJson[entry[1]['language']] = { value: entry[1]['title'] } + summaryJson[entry[1]['language']] = { value: entry[1]['content'] } + descriptionJson[entry[1]['language']] = { + value: entry[1]['content'], + } + }) + const content: form.ContentGroupingInput = { - title: series.title.rendered, - description: series.content.rendered || null, + title: titleJson, + description: descriptionJson, groupingType: 'show', subtitle: null, - summary: null, + summary: summaryJson, broadcastSchedule: null, startingDate: null, terminationDate: null, @@ -652,6 +760,7 @@ export class CbaDataSource implements DataSource { private _mapPost(post: CbaPost): EntityForm[] { try { const mediaAssetLinks = [] + var licenseUri: string[] = [] const entities: EntityForm[] = [] if (post._fetchedAttachements?.length) { @@ -673,6 +782,15 @@ export class CbaDataSource implements DataSource { mediaAssetLinks.push({ uri: this._uri('image', post.featured_image) }) } + if (post.license && post.license.license && post.license.version) { + const license = this._mapLicense( + post.license.license + post.license.version, + ) + + licenseUri = license.headers?.EntityUris || [] + entities.push(license) + } + const categories = post.categories ?.map((cbaId) => this._uriLink('categories', cbaId)) @@ -683,17 +801,51 @@ export class CbaDataSource implements DataSource { .filter(notEmpty) ?? [] const conceptLinks = [...categories, ...tags] + var title: { [k: string]: any } = {} + title[post.language_codes[0]] = { value: post.title.rendered } + + var summary: { [k: string]: any } = {} + summary[post.language_codes[0]] = { value: post.excerpt.rendered } + + var contentJson: { [k: string]: any } = {} + contentJson[post.language_codes[0]] = { value: post.content.rendered } + + var contentUrlJson: { [k: string]: any } = {} + contentUrlJson[post.language_codes[0]] = { value: post.link } + + if (Array.isArray(post.translations)) { + Object.entries(post.translations).forEach((entry) => { + title[entry[1]['language']] = { value: entry[1]['post_title'] } + summary[entry[1]['language']] = { value: entry[1]['post_excerpt'] } + contentJson[entry[1]['language']] = { + value: entry[1]['post_content'], + } + }) + } else { + var temp = post.translations as any + Object.keys(post.translations).forEach((code) => { + title[code] = { value: temp[code]['title'] } + summary[code] = { value: temp[code]['excerpt'] } + contentJson[code] = { value: temp[code]['content'] } + }) + //title[Object.keys(post.translations)[0]] + } + const content: form.ContentItemInput = { pubDate: parseAsUTC(post.date), - content: post.content.rendered, + content: contentJson, contentFormat: 'text/html', - title: post.title.rendered, - subtitle: 'missing', - summary: post.excerpt.rendered, + title: title, + summary: summary, + subtitle: {}, PublicationService: this._uriLink('station', post.meta.station_id), Concepts: conceptLinks, MediaAssets: mediaAssetLinks, PrimaryGrouping: this._uriLink('series', post.post_parent), + contentUrl: contentUrlJson, + originalLanguages: { language_codes: post.language_codes }, + License: licenseUri.length > 0 ? { uri: licenseUri[0] } : null, + removed: false, //licenseUid //primaryGroupingUid //contributor @@ -724,6 +876,47 @@ export class CbaDataSource implements DataSource { } } + private _mapTranscripts( + media: any, + transcripts: any[], + mediaAssetLinks: any, + ): EntityForm[] { + const entities: EntityForm[] = [] + + transcripts.forEach((transcript) => { + const transcriptId = this._uri('transcript', transcript.id) + const content: form.TranscriptInput = { + language: transcript['language'], + text: transcript['transcript'], + engine: 'engine', + MediaAsset: mediaAssetLinks, + license: transcript['license'], + subtitleUrl: transcript['subtitles'], + author: transcript['author'], + } + entities.push({ + type: 'Transcript', + content, + headers: { EntityUris: [transcriptId] }, + }) + }) + + return entities + } + + private _mapLicense(name: string): EntityForm { + const licenseId = this._uri('license', name) + const license: form.LicenseInput = { + name: name, + } + const entity: EntityForm = { + type: 'License', + content: license, + headers: { EntityUris: [licenseId] }, + } + return entity + } + private _url(urlString: string, opts: FetchOpts = {}) { const url = new URL(this.endpoint + urlString) if (opts.params) { @@ -764,5 +957,6 @@ export class CbaDataSource implements DataSource { * @param dateString Datetime string in format 1998-10-17T00:00:00 */ function parseAsUTC(dateString: string): Date { - return new Date(dateString + '.000Z') + const convertedDate = new Date(dateString + '.000Z') + return convertedDate } diff --git a/packages/repco-core/src/datasources/cba/types.ts b/packages/repco-core/src/datasources/cba/types.ts index 97b8e9f4..80cec482 100644 --- a/packages/repco-core/src/datasources/cba/types.ts +++ b/packages/repco-core/src/datasources/cba/types.ts @@ -25,6 +25,7 @@ export interface CbaPost { categories: number[] tags: number[] language: number[] + language_codes: string[] editor: number[] acf: any[] post_parent: number @@ -32,6 +33,14 @@ export interface CbaPost { production_date: string _links: Links _fetchedAttachements: any[] + translations: any[] | object + license: { + license_image: string + license: string + version: string + conditions: string + license_link: string + } } export interface About { @@ -90,6 +99,8 @@ export interface CbaSeries { comment_status: string ping_status: string template: string + language_codes: string[] + translations: any[] acf: any[] post_parent: number url: string @@ -216,6 +227,8 @@ export interface CbaStation { comment_status: string ping_status: string template: string + language_codes: string[] + translations: any[] acf: any[] livestream_urls: any[] _links: StationLinks @@ -241,8 +254,11 @@ export interface CbaAudio { station_id: number } media_tag: any[] + language_codes: string[] + translations: any[] acf: any[] originators: any[] + transcripts: any[] source_url: string license: { license_image: string @@ -303,8 +319,11 @@ export interface CbaImage { station_id: number } media_tag: any[] + language_codes: string[] + translations: any[] acf: any[] originators: any[] + transcripts: any[] source_url: string license: { license_image: string diff --git a/packages/repco-core/src/datasources/defaults.ts b/packages/repco-core/src/datasources/defaults.ts index b72c2989..e911e04a 100644 --- a/packages/repco-core/src/datasources/defaults.ts +++ b/packages/repco-core/src/datasources/defaults.ts @@ -1,6 +1,7 @@ import { ActivityPubDataSourcePlugin } from './activitypub.js' import { CbaDataSourcePlugin } from './cba.js' import { RssDataSourcePlugin } from './rss.js' +import { TransposerDataSourcePlugin } from './transposer.js' import { XrcbDataSourcePlugin } from './xrcb.js' import { DataSourcePluginRegistry } from '../plugins.js' @@ -10,3 +11,4 @@ plugins.register(new CbaDataSourcePlugin()) plugins.register(new RssDataSourcePlugin()) plugins.register(new XrcbDataSourcePlugin()) plugins.register(new ActivityPubDataSourcePlugin()) +plugins.register(new TransposerDataSourcePlugin()) diff --git a/packages/repco-core/src/datasources/rss.ts b/packages/repco-core/src/datasources/rss.ts index cba69c1c..8e6ba778 100644 --- a/packages/repco-core/src/datasources/rss.ts +++ b/packages/repco-core/src/datasources/rss.ts @@ -2,11 +2,7 @@ import RssParser from 'rss-parser' import zod from 'zod' import { log } from 'repco-common' import { Link } from 'repco-common/zod' -import { ContentGroupingVariant } from 'repco-prisma' -import { - ContentGroupingInput, - ContentItemInput, -} from 'repco-prisma/generated/repco/zod.js' +import { form } from 'repco-prisma' import { fetch } from 'undici' import { BaseDataSource, @@ -40,6 +36,7 @@ export class RssDataSourcePlugin implements DataSourcePlugin { const configSchema = zod.object({ endpoint: zod.string().url(), repo: zod.string(), + language: zod.string().or(zod.null()).optional(), }) type ConfigSchema = zod.infer @@ -96,8 +93,23 @@ function getDateRangeFromFeed(feed: RssParser.Output): [Date, Date] { export class RssDataSource extends BaseDataSource implements DataSource { endpoint: URL baseUri: string - parser: RssParser = new RssParser() + parser: RssParser = new RssParser({ + customFields: { + item: [ + 'frn:language', + 'xml:lang', + 'frn:title', + 'frn:licence', + 'frn:radio', + 'image', + 'itunes:image', + 'image', + ], + }, + }) + uriPrefix: string repo: string + language: string | null | undefined constructor(config: ConfigSchema) { super() const endpoint = new URL(config.endpoint) @@ -105,10 +117,12 @@ export class RssDataSource extends BaseDataSource implements DataSource { this.endpoint = endpoint this.baseUri = removeProtocol(this.endpoint) this.repo = config.repo + this.uriPrefix = `repco:rss:${this.endpoint.host}` + this.language = config.language } get config() { - return { endpoint: this.endpoint.toString() } + return { endpoint: this.endpoint.toString(), language: this.language } } get definition(): DataSourceDefinition { @@ -148,18 +162,29 @@ export class RssDataSource extends BaseDataSource implements DataSource { const url = new URL(this.endpoint) // TODO: Make configurable - const pagination = { - offsetParam: 'start', - limitParam: 'anzahl', - limit: 100, + var pagination = { + offsetParam: 'offset', + limitParam: 'limit', + limit: 50, + } + if (url.href.indexOf('freie-radios') != -1) { + pagination = { + offsetParam: 'start', + limitParam: 'anzahl', + limit: 50, + } } const page = cursor.pageNumber || 0 + url.searchParams.set('paged', page.toString()) + url.searchParams.set('sort', 'modifiedAt') url.searchParams.set(pagination.limitParam, pagination.limit.toString()) - url.searchParams.set( - pagination.offsetParam, - (page * pagination.limit).toString(), - ) + if (page * pagination.limit > 0) { + url.searchParams.set( + pagination.offsetParam, + (page * pagination.limit).toString(), + ) + } const xml = await this.fetchPage(url) return { url, xml } @@ -268,10 +293,10 @@ export class RssDataSource extends BaseDataSource implements DataSource { } } - async mapPage(feed: ParsedFeed) { + async mapPage(feed: any) { const entities = [] for (const item of feed.items) { - entities.push(...(await this._mapItem(item))) + entities.push(...(await this._mapItem(item, feed.language))) } return entities } @@ -284,6 +309,7 @@ export class RssDataSource extends BaseDataSource implements DataSource { try { const feed = await this.parser.parseString(xml) + feed.items = feed.items.filter((item) => item.link != undefined) cursor.newest = this.extractNextCursor(cursor.newest, feed) const sourceUri = new URL(this.endpoint) @@ -321,17 +347,40 @@ export class RssDataSource extends BaseDataSource implements DataSource { const feed = await parseBodyCached(record, async (record) => this.parser.parseString(record.body), ) - const entity: ContentGroupingInput = { - groupingType: 'feed', - title: feed.title || feed.feedUrl || 'unknown', - variant: ContentGroupingVariant.EPISODIC, - description: feed.description, + var lang = feed['frn:language'] || feed['xml:lang'] || feed.language + if (lang.length > 2) { + lang = lang.slice(0, 2) + } + + var titleJson: { [k: string]: any } = {} + titleJson[lang] = { + value: feed.title || feed.feedUrl || 'unknown', + } + var summaryJson: { [k: string]: any } = {} + summaryJson[lang] = { + value: '', + } + var descriptionJson: { [k: string]: any } = {} + descriptionJson[lang] = { + value: feed.description || '', + } + const pubService: form.PublicationServiceInput = { + name: titleJson, + medium: '', + address: feed.feedUrl || '', } return [ { - type: 'ContentGrouping', - content: entity, - headers: { EntityUris: [this.endpoint.toString()] }, + type: 'PublicationService', + content: pubService, + headers: { + EntityUris: [ + this._uri( + 'publicationservice', + feed.title || feed.feedUrl || 'unknown', + ), + ], + }, }, ] } @@ -341,6 +390,7 @@ export class RssDataSource extends BaseDataSource implements DataSource { async _extractMediaAssets( itemUri: string, item: RssParser.Item, + language: string, ): Promise<{ mediaAssets: Link[]; entities: EntityForm[] }> { const entities: EntityForm[] = [] if (!item.enclosure) { @@ -358,13 +408,23 @@ export class RssDataSource extends BaseDataSource implements DataSource { const mediaUri = itemUri + '#media' + var titleJson: { [k: string]: any } = {} + titleJson[language] = { + value: item.title || item.guid || 'missing', + } + var descriptionJson: { [k: string]: any } = {} + descriptionJson[language] = { + value: '{}', + } + entities.push({ type: 'MediaAsset', content: { - title: item.title || item.guid || 'missing', + title: titleJson, duration: 0, - mediaType: 'audio', + mediaType: item.enclosure.type || 'audio', Files: [{ uri: fileUri }], + description: descriptionJson, }, headers: { EntityUris: [mediaUri] }, }) @@ -379,20 +439,68 @@ export class RssDataSource extends BaseDataSource implements DataSource { return 'rss:uuid:' + createRandomId() } - async _mapItem(item: RssParser.Item): Promise { + async _mapItem(item: any, language: string): Promise { const itemUri = await this._deriveItemUri(item) + var licenseUri: string[] = [] + var publicationServiceUri: string[] = [] + var lang = + item['frn:language'] || item['xml:lang'] || this.language || language + if (lang.length > 2) { + lang = lang.slice(0, 2) + } const { entities, mediaAssets } = await this._extractMediaAssets( itemUri, item, + lang, ) - const content: ContentItemInput = { - title: item.title || item.guid || 'missing', - summary: item.contentSnippet, - content: item.content || '', + + if (item['frn:radio'] != null) { + const pubService = this._mapPublicationService(item['frn:radio'], lang) + publicationServiceUri = pubService.headers?.EntityUris || [] + entities.push(pubService) + } + + if (item['frn:licence'] != null) { + const license = this._mapLicense(item['frn:licence']) + + licenseUri = license.headers?.EntityUris || [] + entities.push(license) + } + + var titleJson: { [k: string]: any } = {} + titleJson[lang] = { + value: item['frn:title'] || item.title || item.guid || 'missing', + } + var summaryJson: { [k: string]: any } = {} + summaryJson[lang] = { + value: item.contentSnippet || '{}', + } + var contentJson: { [k: string]: any } = {} + contentJson[lang] = { + value: item.content || '', + } + var contentUrlJson: { [k: string]: any } = {} + contentUrlJson[lang] = { + value: item.link || '', + } + + const content: form.ContentItemInput = { + title: titleJson, + summary: summaryJson, + content: contentJson, + subtitle: {}, contentFormat: 'text/plain', pubDate: item.pubDate ? new Date(item.pubDate) : null, PrimaryGrouping: { uri: this.endpoint.toString() }, MediaAssets: mediaAssets, + contentUrl: contentUrlJson, + originalLanguages: { language_codes: [lang] }, + PublicationService: + publicationServiceUri.length > 0 + ? { uri: publicationServiceUri[0] } + : null, + License: licenseUri.length > 0 ? { uri: licenseUri[0] } : null, + removed: false, } const headers = { EntityUris: [itemUri], @@ -400,6 +508,41 @@ export class RssDataSource extends BaseDataSource implements DataSource { entities.push({ type: 'ContentItem', content, headers }) return entities } + + private _mapPublicationService(name: string, lang: string): EntityForm { + const publicationServiceId = this._uri('radio', name) + + var nameJson: { [k: string]: any } = {} + nameJson[lang] = { value: name } + + const content: form.PublicationServiceInput = { + name: nameJson, + address: '', + } + const entity: EntityForm = { + type: 'PublicationService', + content, + headers: { EntityUris: [publicationServiceId] }, + } + return entity + } + + private _mapLicense(name: string): EntityForm { + const licenseId = this._uri('license', name) + const license: form.LicenseInput = { + name: name, + } + const entity: EntityForm = { + type: 'License', + content: license, + headers: { EntityUris: [licenseId] }, + } + return entity + } + + private _uri(type: string, id: string | number): string { + return `${this.uriPrefix}:e:${type}:${id}` + } } function removeProtocol(inputUrl: string | URL) { diff --git a/packages/repco-core/src/datasources/transposer.ts b/packages/repco-core/src/datasources/transposer.ts new file mode 100644 index 00000000..33959728 --- /dev/null +++ b/packages/repco-core/src/datasources/transposer.ts @@ -0,0 +1,460 @@ +import zod from 'zod' +import { log } from 'repco-common' +import { ContentGroupingVariant, form } from 'repco-prisma' +import { ContentGroupingInput } from 'repco-prisma/generated/repco/zod.js' +import { fetch } from 'undici' +import { TransposerPost } from './transposer/types.js' +import { + BaseDataSource, + DataSource, + DataSourceDefinition, + DataSourcePlugin, + FetchUpdatesResult, + SourceRecordForm, +} from '../datasource.js' +import { EntityForm } from '../entity.js' +import { FetchOpts } from '../util/datamapping.js' +import { HttpError } from '../util/error.js' + +export class TransposerDataSourcePlugin implements DataSourcePlugin { + createInstance(config: any) { + const parsedConfig = configSchema.parse(config) + return new TransposerDataSource(parsedConfig) + } + get definition() { + return { + uid: 'repco:datasource:transposer', + name: 'Transposer', + } + } +} + +const configSchema = zod.object({ + endpoint: zod.string().url(), + repo: zod.string(), +}) +type ConfigSchema = zod.infer + +export class TransposerDataSource extends BaseDataSource implements DataSource { + endpoint: URL + baseUri: string + uriPrefix: string + repo: string + constructor(config: ConfigSchema) { + super() + const endpoint = new URL(config.endpoint) + endpoint.hash = '' + this.endpoint = endpoint + this.baseUri = removeProtocol(this.endpoint) + this.repo = config.repo + this.uriPrefix = `repco:transposer:${this.endpoint.host}` + } + + get config() { + return { endpoint: this.endpoint.toString() } + } + + get definition(): DataSourceDefinition { + const uid = this.repo + ':' + this.baseUri + return { + name: 'Transposer data source', + uid, + pluginUid: 'repco:datasource:transposer', + } + } + + async fetchByUri(uri: string): Promise { + if (uri === this.endpoint.toString()) { + const body = await this.fetchPage(this.endpoint) + return [ + { + sourceType: 'transposer', + contentType: 'application/json', + sourceUri: uri, + body, + }, + ] + } + return [] + } + + async fetchPage(url: URL): Promise { + // console.log('FETCH', url.toString()) + const maxRetries = 50 + let timeout = 1 + let retries = 0 + while (true) { + try { + const res = await fetch(url) + log.debug( + `fetch ${url.toString()}: ${res.ok ? 'OK' : 'FAIL'} ${res.status}`, + ) + if (res.ok) { + const text = await res.text() + return text + } + throw new Error(`Got status ${res.status} for ${url.toString()}`) + } catch (err) { + retries += 1 + if (retries >= maxRetries) { + throw err + } + + // retry + const wait = timeout * 1000 + timeout = timeout * 2 + await new Promise((resolve) => setTimeout(resolve, wait)) + } + } + } + + async fetchUpdates(cursorString: string | null): Promise { + try { + const cursor = cursorString ? JSON.parse(cursorString) : {} + const { + page: pageCursor = 1, + modified: modifiedCursor = '1970-01-01T01:00:00', + } = cursor + const perPage = 50 + const url = + this.endpoint + `?per_page=${perPage}&page=${pageCursor}&order=asc` + + var items = await this._fetch(url) + items = items.filter( + (item) => + new Date(item.contentItem.modifiedDate) >= new Date(modifiedCursor), + ) + + cursor.modified = + items?.[items.length - 1]?.contentItem.modifiedDate || cursor.modified + if (!cursor.page) { + cursor.page = 1 + } + if (items.length === perPage) { + cursor.page += 1 + } + + return { + cursor: JSON.stringify(cursor), + records: [ + { + body: JSON.stringify(items), + contentType: 'application/json', + sourceType: 'page', + sourceUri: url, + }, + ], + } + } catch (error) { + console.error(`Error fetching updates: ${error}`) + throw error + } + } + + async mapSourceRecord(record: SourceRecordForm): Promise { + try { + const body = JSON.parse(record.body) + const entities: EntityForm[] = [] + + // ContentGrouping + var titleJson: { [k: string]: any } = {} + titleJson['en'] = { + value: this.repo, + } + var summaryJson: { [k: string]: any } = {} + summaryJson['en'] = { + value: '', + } + var descriptionJson: { [k: string]: any } = {} + descriptionJson['en'] = { + value: this.endpoint.toString(), + } + + // TODO: map from fetch und wenn leer -> relation löschen + const contentGrouping: ContentGroupingInput = { + groupingType: 'page', + title: titleJson, + variant: ContentGroupingVariant.EPISODIC, + description: descriptionJson, + summary: summaryJson, + } + + entities.push({ + type: 'ContentGrouping', + content: contentGrouping, + headers: { + RevisionUris: [ + this._revisionUri('grouping', this.repo, new Date().getTime()), + ], + EntityUris: [this.endpoint.toString()], + }, + }) + + for (let index = 0; index < body.length; index++) { + const element = body[index] + const mediaAssetLinks = [] + const conceptLinks = [] + const contributionLinks = [] + + // MediaAsset + for (let i = 0; i < element.mediaAssets.length; i++) { + const mediaAsset = element.mediaAssets[i] + const fileLinks = [] + + // Files for MediaAsset + for (let j = 0; j < mediaAsset.files.length; j++) { + const file = mediaAsset.files[j] + const fileEntity: form.FileInput = { + contentUrl: file.contentUrl, + contentSize: file.contentSize, + mimeType: file.mimeType, + cid: null, + resolution: file.resolution, + } + + entities.push({ + type: 'File', + content: fileEntity, + headers: { EntityUris: [this._uri('file', file.contentUrl)] }, + }) + + fileLinks.push({ uri: this._uri('file', file.contentUrl) }) + } + const mediaConceptLinks = [] + + // Concepts for MediaAsset + for (let j = 0; j < mediaAsset.concepts.length; j++) { + const concept = mediaAsset.concepts[j] + const conceptEntity: form.ConceptInput = { + name: concept.name, + description: concept.description, + kind: concept.kind, + originNamespace: this.endpoint.toString(), + summary: {}, + ParentConcept: + concept.id !== concept.parent + ? { uri: this._uri(concept.kind, concept.parent) } + : null, + } + + entities.push({ + type: 'Concept', + content: conceptEntity, + headers: { + RevisionUris: [ + this._revisionUri( + concept.kind, + concept.id, + new Date().getTime(), + ), + ], + EntityUris: [this._uri(concept.kind, concept.id)], + }, + }) + + mediaConceptLinks.push({ uri: this._uri(concept.kind, concept.id) }) + } + + const mediaAssetEntity: form.MediaAssetInput = { + title: mediaAsset.title, + description: mediaAsset.content, + mediaType: mediaAsset.mediaType, + Concepts: mediaConceptLinks, + Files: fileLinks, + } + + entities.push({ + type: 'MediaAsset', + content: mediaAssetEntity, + headers: { + EntityUris: [this._uri(mediaAsset.mediaType, mediaAsset.ID)], + }, + }) + mediaAssetLinks.push({ + uri: this._uri(mediaAsset.mediaType, mediaAsset.ID), + }) + } + + for (let i = 0; i < element.contentItem.concepts.length; i++) { + const concept = element.contentItem.concepts[i] + const conceptEntity: form.ConceptInput = { + name: concept.name, + description: concept.description, + kind: concept.kind, + originNamespace: this.endpoint.toString(), + summary: {}, + ParentConcept: + concept.id !== concept.parent + ? { uri: this._uri(concept.kind, concept.parent) } + : null, + } + + entities.push({ + type: 'Concept', + content: conceptEntity, + headers: { + RevisionUris: [ + this._revisionUri( + concept.kind, + concept.id, + new Date().getTime(), + ), + ], + EntityUris: [this._uri(concept.kind, concept.id)], + }, + }) + + conceptLinks.push({ uri: this._uri(concept.kind, concept.id) }) + } + + // Contributions + for (let i = 0; i < element.contentItem.contributors.length; i++) { + const contributor = element.contentItem.contributors[i] + + const contributorEntity: form.ContributorInput = { + name: contributor.name, + contactInformation: contributor.contactInformation, + personOrOrganization: contributor.personOrOrganization, + } + + const contributionEntity: form.ContributionInput = { + role: contributor.role, + Contributor: [{ uri: this._uri('contributor', contributor.id) }], + } + + entities.push({ + type: 'Contribution', + content: contributionEntity, + headers: { + EntityUris: [this._uri('contribution', contributor.id)], + }, + }) + + entities.push({ + type: 'Contributor', + content: contributorEntity, + headers: { + EntityUris: [this._uri('contributor', contributor.id)], + }, + }) + + contributionLinks.push({ + uri: this._uri('contribution', contributor.id), + }) + } + + // PublicationService + const publicationService: form.PublicationServiceInput = { + address: element.publicationService.address, + name: element.publicationService.name, + medium: element.publicationService.medium, + } + + entities.push({ + type: 'PublicationService', + content: publicationService, + headers: { + EntityUris: [ + this._uri('publicationservice', element.publicationService.name), + ], + }, + }) + + // ContentItem + const content: form.ContentItemInput = { + pubDate: parseAsUTC(element.contentItem.pubDate), + content: element.contentItem.content, + contentFormat: 'text/html', + title: element.contentItem.title, + subtitle: element.contentItem.subtitle || '', + summary: element.contentItem.summary, + PublicationService: { + uri: this._uri( + 'publicationservice', + element.publicationService.name, + ), + }, + Concepts: conceptLinks, + MediaAssets: mediaAssetLinks, + PrimaryGrouping: { uri: this.endpoint.toString() }, + contentUrl: element.contentItem.contentUrl, + originalLanguages: element.contentItem.originalLanguages, + License: null, + removed: false, + Contributions: contributionLinks, + } + + const revisionId = this._revisionUri( + 'contentItem', + element.contentItem.ID, + parseAsUTC(element.contentItem.modifiedDate).getTime(), + ) + const entityUri = this._uri('contentItem', element.contentItem.ID) + + const headers = { + RevisionUris: [revisionId], + EntityUris: [entityUri], + } + + entities.push({ type: 'ContentItem', content, headers }) + } + + return entities + } catch (error) { + throw new Error(`Error body undefined: ${error}`) + } + } + + private _uri(type: string, id: string | number): string { + return `${this.uriPrefix}:e:${type}:${id}` + } + + private _uriLink(type: string, id: string | number): { uri: string } | null { + if (id === undefined || id === null) return null + return { uri: this._uri(type, id) } + } + + private _revisionUri( + type: string, + id: string | number, + revisionId: string | number, + ): string { + return `${this.uriPrefix}:r:${type}:${id}:${revisionId}` + } + + private async _fetch( + urlString: string, + opts: FetchOpts = {}, + ): Promise { + const url = new URL(urlString) + // if (this.config.apiKey) { + // url.searchParams.set('api_key', this.config.apiKey) + // } + try { + const res = await fetch(url.toString(), opts) + log.debug(`fetch (${res.status}, url: ${url})`) + if (!res.ok) { + throw await HttpError.fromResponseJson(res, url) + } + const json = await res.json() + return json as T + } catch (err) { + log.debug(`fetch failed (url: ${url}, error: ${err})`) + throw err + } + } +} + +function removeProtocol(inputUrl: string | URL) { + try { + const url = new URL(inputUrl) + return url.toString().replace(url.protocol + '//', '') + } catch (err) { + return inputUrl.toString() + } +} + +function parseAsUTC(dateString: string): Date { + const convertedDate = new Date(dateString + '.000Z') + return convertedDate +} diff --git a/packages/repco-core/src/datasources/transposer/types.ts b/packages/repco-core/src/datasources/transposer/types.ts new file mode 100644 index 00000000..b29044ab --- /dev/null +++ b/packages/repco-core/src/datasources/transposer/types.ts @@ -0,0 +1,429 @@ +// //typescript types for the transposer datasource + +export interface TransposerPost { + contentItem: TransposerContentItem + mediaAssets: TransposerMediaAsset[] + publicationService: TransposerPublicationService +} + +export interface TransposerContentItem { + ID: number + title: any + subtitle: any + summary: any + content: any + pubDate: string + modifiedDate: string + commentStatus: string + contentUrl: string + originalLanguages: any + teaserImageUid: number + contentGrouping: TransposerContentGrouping[] + concepts: TransposerConcept[] + contributors: TransposerContributor[] +} + +export interface TransposerContributor { + id: number + name: string + description: string + role: string + personOrOrganization: string + contactInformation: string + url: string +} + +export interface TransposerMediaAsset { + ID: number + title: any + summary: any + content: any + mediaType: string + concepts: TransposerConcept[] + files: TransposerFile[] +} + +export interface TransposerConcept { + id: number + name: any + description: string + slug: string + kind: string + parent: number +} + +export interface TransposerFile { + contentUrl: string + contentSize: number + mimeType: string + resolution: string + additionalMetadata: any +} + +export interface TransposerContentGrouping { + id: number + groupingType: string + startingDate: string + ContentGroupingVariant: string + title: any + description: string + url: string +} + +export interface TransposerPublicationService { + address: string + medium: string + name: any +} + +// export interface TransposerPost { +// id: number +// date: string +// date_gmt: string +// guid: GUID +// modified: string +// modified_gmt: string +// slug: string +// status: string +// type: string +// link: string +// title: GUID +// content: Content +// excerpt: Content +// author: number +// featured_media: number +// comment_status: string +// ping_status: string +// sticky: boolean +// template: string +// format: string +// meta: Meta +// categories: number[] +// tags: number[] +// language: number[] +// language_codes: string[] +// editor: number[] +// acf: any[] +// post_parent: number +// featured_image: number +// production_date: string +// _links: Links +// _fetchedAttachements: any[] +// translations: any[] | {} +// license: { +// license_image: string +// license: string +// version: string +// conditions: string +// license_link: string +// } +// } + +// export interface About { +// href: string +// } + +// export interface Cury { +// name: string +// href: string +// templated: boolean +// } + +// export interface PredecessorVersion { +// id: number +// href: string +// } + +// export interface VersionHistory { +// count: number +// href: string +// } + +// export interface WpTerm { +// taxonomy: string +// embeddable: boolean +// href: string +// } + +// export interface Content { +// rendered: string +// protected: boolean +// } + +// export interface GUID { +// rendered: string +// } + +// export interface Meta { +// station_id: number +// } + +// export interface CbaSeries { +// id: number +// date: string +// date_gmt: string +// guid: GUID +// modified: string +// modified_gmt: string +// slug: string +// status: string +// type: string +// link: string +// title: GUID +// content: Content +// featured_media: number +// comment_status: string +// ping_status: string +// template: string +// language_codes: string[] +// translations: any[] +// acf: any[] +// post_parent: number +// url: string +// _links: Links +// } + +// export interface CbaCategory { +// id: number +// count: number +// description: string +// link: string +// name: string +// slug: string +// taxonomy: string +// parent: number +// meta: any[] +// acf: any[] +// _links: CategoryLinks +// } + +// export interface CbaTag { +// id: number +// count: number +// description: string +// link: string +// name: string +// slug: string +// taxonomy: string +// meta: any[] +// acf: any[] +// _links: CategoryLinks +// } +// export interface CbaCategory { +// id: number +// count: number +// description: string +// link: string +// name: string +// slug: string +// taxonomy: string +// parent: number +// meta: any[] +// acf: any[] +// _links: CategoryLinks +// } + +// export interface CbaTag { +// id: number +// count: number +// description: string +// link: string +// name: string +// slug: string +// taxonomy: string +// meta: any[] +// acf: any[] +// _links: CategoryLinks +// } +// export interface Links { +// self: About[] +// collection: About[] +// about: About[] +// author: EmbeddedLink[] +// replies: EmbeddedLink[] +// 'version-history': VersionHistory[] +// 'predecessor-version': PredecessorVersion[] +// series: EmbeddedLink[] +// station: EmbeddedLink[] +// featured_image: EmbeddedLink[] +// 'wp:attachment': About[] +// 'wp:featuredmedia': EmbeddedLink[] +// 'wp:term': WpTerm[] +// curies: Cury[] +// } + +// export interface StationLinks { +// self: About[] +// collection: About[] +// about: About[] +// author: EmbeddedLink[] +// replies: EmbeddedLink[] +// 'wp:attachment': About[] +// 'wp:featuredmedia': EmbeddedLink[] +// 'wp:term': WpTerm[] +// curies: Cury[] +// } + +// export interface MediaLinks { +// self: About[] +// collection: About[] +// about: About[] +// author: EmbeddedLink[] +// replies: EmbeddedLink[] +// 'wp:term': WpTerm[] +// curies: Cury[] +// } + +// export interface CategoryLinks { +// self: About[] +// collection: About[] +// about: About[] +// 'wp:post_type': About[] +// curies: Cury[] +// } +// export interface EmbeddedLink { +// embeddable: boolean +// href: string +// } + +// export interface CbaStation { +// id: number +// date: string +// date_gmt: string +// guid: number +// modified: string +// modified_gmt: string +// slug: string +// status: string +// type: string +// link: string +// title: GUID +// content: Content +// featured_media: string +// comment_status: string +// ping_status: string +// template: string +// language_codes: string[] +// translations: any[] +// acf: any[] +// livestream_urls: any[] +// _links: StationLinks +// } + +// export interface CbaAudio { +// id: number +// date: string +// date_gmt: string +// guid: string +// modified: string +// modified_gmt: string +// slug: string +// status: string +// type: string +// link: string +// title: GUID +// author: number +// comment_status: string +// ping_status: string +// template: string +// meta: { +// station_id: number +// } +// media_tag: any[] +// language_codes: string[] +// translations: any[] +// acf: any[] +// originators: any[] +// transcripts: any[] +// source_url: string +// license: { +// license_image: string +// license: string +// version: string +// conditions: string +// license_link: string +// } +// description: { +// rendered: string +// } +// caption: { +// rendered: string +// } +// alt_text: string +// media_type: string +// mime_type: string +// media_details: { +// dataformat: string +// channels: number +// sample_rate: number +// bitrate: number +// channelmode: string +// bitrate_mode: string +// codec: string +// encoder: string +// lossless: boolean +// encoder_options: string +// compression_ratio: number +// fileformat: string +// filesize: number +// mime_type: string +// length: number +// length_formatted: string +// sizes: string +// } +// post: number +// _links: MediaLinks +// } + +// export interface CbaImage { +// id: number +// date: string +// date_gmt: string +// guid: string +// modified: string +// modified_gmt: string +// slug: string +// status: string +// type: string +// link: string +// title: GUID +// author: number +// comment_status: string +// ping_status: string +// template: string +// meta: { +// station_id: number +// } +// media_tag: any[] +// language_codes: string[] +// translations: any[] +// acf: any[] +// originators: any[] +// transcripts: any[] +// source_url: string +// license: { +// license_image: string +// license: string +// version: string +// conditions: string +// license_link: string +// } +// description: { +// rendered: string +// } +// caption: { +// rendered: string +// } +// alt_text: string +// media_type: string +// mime_type: string +// media_details: { +// width: number +// height: number +// file: string +// filesize: number +// //there is much more info +// } +// post: number +// _links: MediaLinks +// } diff --git a/packages/repco-core/src/datasources/xrcb.ts b/packages/repco-core/src/datasources/xrcb.ts index 2edd5229..3bf85837 100644 --- a/packages/repco-core/src/datasources/xrcb.ts +++ b/packages/repco-core/src/datasources/xrcb.ts @@ -38,7 +38,7 @@ import { log, SourceRecordForm, } from '../datasource.js' -import { ConceptKind, ContentGroupingVariant, EntityForm } from '../entity.js' +import { ContentGroupingVariant, EntityForm } from '../entity.js' import { FetchOpts } from '../util/datamapping.js' import { HttpError } from '../util/error.js' @@ -275,8 +275,9 @@ export class XrcbDataSource extends BaseDataSource implements DataSource { const content: form.ConceptInput = { name: category.name, description: category.description || '', - kind: ConceptKind.CATEGORY, + kind: 'CATEGORY', originNamespace: 'https://xrcb.cat/wp-json/wp/v2/podcast_category', + summary: '{}', } const revisionId = this._revisionUri( @@ -300,8 +301,9 @@ export class XrcbDataSource extends BaseDataSource implements DataSource { const content: form.ConceptInput = { name: tag.name, description: tag.description || '', - kind: ConceptKind.TAG, + kind: 'TAG', originNamespace: 'https://xrcb.cat/wp-json/wp/v2/podcast_tag', + summary: '{}', } const revisionId = this._revisionUri('tag', tag.id, new Date().getTime()) const uri = this._uri('tag', tag.id) @@ -356,6 +358,7 @@ export class XrcbDataSource extends BaseDataSource implements DataSource { description: series.description || '', variant: ContentGroupingVariant.SERIAL, groupingType: 'series', + summary: '{}', } const revisionId = this._revisionUri( 'series', @@ -442,12 +445,15 @@ export class XrcbDataSource extends BaseDataSource implements DataSource { content: postContent, contentFormat: 'text/html', title: postTitle, - subtitle: '', + subtitle: {}, summary: '', Concepts: this._getConceptURIs(post, []), PublicationService: this._getPublicationService(post, { uri: '' }), PrimaryGrouping: this._getPrimaryGrouping(post, { uri: '' }), MediaAssets: mediaAssetUris.map((uri) => ({ uri })), + contentUrl: {}, + originalLanguages: {}, + removed: false, }, headers: { EntityUris: [this._uri('post', post.id)], @@ -528,6 +534,7 @@ export class XrcbDataSource extends BaseDataSource implements DataSource { title: post.acf?.img_podcast?.title ?? '', mediaType: 'image', Files: [{ uri: fileId }], + description: '{}', } const imageFileEntity: EntityForm = { diff --git a/packages/repco-core/src/entity.ts b/packages/repco-core/src/entity.ts index 81cde2ec..4e3eca32 100644 --- a/packages/repco-core/src/entity.ts +++ b/packages/repco-core/src/entity.ts @@ -9,7 +9,6 @@ import z from 'zod' import { revisionHeaders } from 'repco-common/schema' import { repco } from 'repco-prisma' import { - ConceptKind, ContentGrouping, ContentGroupingVariant, ContentItem, @@ -18,7 +17,7 @@ import { } from './prisma.js' export type { ContentItem, MediaAsset, ContentGrouping, Revision } -export { ContentGroupingVariant, ConceptKind } +export { ContentGroupingVariant } export const headersForm = revisionHeaders.partial() export interface HeadersForm extends z.infer {} diff --git a/packages/repco-core/src/repo.ts b/packages/repco-core/src/repo.ts index d58898c9..ce58fad0 100644 --- a/packages/repco-core/src/repo.ts +++ b/packages/repco-core/src/repo.ts @@ -24,8 +24,8 @@ import { EntityInputWithHeaders, EntityInputWithRevision, EntityMaybeContent, - headersForm, HeadersForm, + headersForm, UnknownEntityInput, } from './entity.js' import { @@ -200,6 +200,14 @@ class RepoRegistry extends EventEmitter { return repo } + public async delete(prisma: PrismaClient, didOrName: string) { + const did = await this.nameToDid(prisma, didOrName) + var repo = await this.load(prisma, did) + await prisma.repo.delete({ + where: { did }, + }) + } + async nameToDid(prisma: PrismaClient, name: string): Promise { if (name.startsWith('did:')) return name const record = await prisma.repo.findFirst({ @@ -322,6 +330,8 @@ export class Repo extends EventEmitter { ) } + async deleteCascading() {} + async refreshInfo() { const record = await this.prisma.repo.findUnique({ where: { did: this.did }, @@ -562,70 +572,93 @@ export class Repo extends EventEmitter { async saveFromIpld(bundle: CommitBundle) { const { headers, body } = bundle await this.ensureAgent(headers.Author) - const revisionsDb = body.map((revision) => - revisionIpldToDb(revision, headers), - ) - await this.saveRevisionBatch(revisionsDb) - let parent = null - if (headers.Parents?.length && headers.Parents[0]) - parent = headers.Parents[0].toString() - await this.prisma.commit.create({ - data: { - rootCid: headers.RootCid.toString(), - commitCid: headers.Cid.toString(), - repoDid: headers.Repo, - agentDid: headers.Author, - parent, - timestamp: headers.DateCreated, - Revisions: { - connect: body.map((revisionBundle) => ({ - revisionCid: revisionBundle.headers.Cid.toString(), - })), - }, - }, - }) - const head = headers.RootCid.toString() - const tail = parent ? undefined : head - await this.prisma.repo.update({ - where: { did: this.did }, - data: { head, tail }, - }) + assertFullClient(this.prisma) + return await this.prisma.$transaction( + async (tx) => { + // 1. create revisions + const revisionsDb = body.map((revision) => + revisionIpldToDb(revision, headers), + ) + await tx.revision.createMany({ + data: revisionsDb, + }) - const data = body.map( - (revisionBundle, i) => [revisionBundle, revisionsDb[i]] as const, - ) - // update domain views - return await this.updateDomainViews(data) - } + // 2. update Entity table + const deleteEntities = revisionsDb + .filter((r) => r.prevRevisionId) + .map((r) => r.uid) + await tx.entity.deleteMany({ + where: { uid: { in: deleteEntities } }, + }) + const entityUpsert = revisionsDb.map((revision) => ({ + uid: revision.uid, + revisionId: revision.id, + type: revision.entityType, + })) + await tx.entity.createMany({ + data: entityUpsert, + }) - private async updateDomainViews( - data: (readonly [RevisionBundle, Revision])[], - ) { - const ret = [] - for (const [revisionBundle, revisionDb] of data) { - const input = repco.parseEntity( - revisionBundle.headers.EntityType, - revisionBundle.body, - ) - const data = { - ...input, - revision: revisionDb, - uid: revisionBundle.headers.EntityUid, - } - await this.updateDomainView(data) - ret.push(data) - } - return ret - } + // 3. upsert entity tables + const data = body.map( + (revisionBundle, i) => [revisionBundle, revisionsDb[i]] as const, + ) + const ret = [] + for (const [revisionBundle, revisionDb] of data) { + const input = repco.parseEntity( + revisionBundle.headers.EntityType, + revisionBundle.body, + ) + const data = { + ...input, + revision: revisionDb, + uid: revisionBundle.headers.EntityUid, + } + await repco.upsertEntity( + tx, + data.revision.uid, + data.revision.id, + data, + ) + ret.push(data) + } - private async updateDomainView(entity: EntityInputWithRevision) { - const domainUpsertPromise = repco.upsertEntity( - this.prisma, - entity.revision.uid, - entity.revision.id, - entity, + // 4. create commit + let parent = null + if (headers.Parents?.length && headers.Parents[0]) { + parent = headers.Parents[0].toString() + } + await tx.commit.create({ + data: { + rootCid: headers.RootCid.toString(), + commitCid: headers.Cid.toString(), + repoDid: headers.Repo, + agentDid: headers.Author, + parent, + timestamp: headers.DateCreated, + Revisions: { + connect: body.map((revisionBundle) => ({ + revisionCid: revisionBundle.headers.Cid.toString(), + })), + }, + }, + }) + + // 5. update repo head + const head = headers.RootCid.toString() + const tail = parent ? undefined : head + await tx.repo.update({ + where: { did: this.did }, + data: { head, tail }, + }) + + return ret + }, + { + maxWait: 5000, + timeout: 60000, + }, ) - await domainUpsertPromise } async assignUids( @@ -711,26 +744,6 @@ export class Repo extends EventEmitter { } } - private async saveRevisionBatch(revisions: Revision[]): Promise { - await this.prisma.revision.createMany({ - data: revisions, - }) - const deleteEntities = revisions - .filter((r) => r.prevRevisionId) - .map((r) => r.uid) - await this.prisma.entity.deleteMany({ - where: { uid: { in: deleteEntities } }, - }) - const entityUpsert = revisions.map((revision) => ({ - uid: revision.uid, - revisionId: revision.id, - type: revision.entityType, - })) - await this.prisma.entity.createMany({ - data: entityUpsert, - }) - } - async getUnique( where: Prisma.RevisionWhereUniqueInput, includeContent: T, @@ -814,7 +827,10 @@ function assertFullClient( } } -type EntityFormWithHeaders = { entity: repco.EntityInput; headers: HeadersForm } +type EntityFormWithHeaders = { + entity: repco.EntityInput + headers: HeadersForm +} function parseEntity(input: UnknownEntityInput): EntityFormWithHeaders { try { @@ -824,6 +840,7 @@ function parseEntity(input: UnknownEntityInput): EntityFormWithHeaders { return { entity, headers } } catch (err) { if (err instanceof ZodError) { + console.log(input.content, input.headers, input.type) throw new ParseError(err, (input as any).type) } else { throw err @@ -861,5 +878,6 @@ export function revisionIpldToDb( contentCid: headers.BodyCid.toString(), revisionCid: headers.Cid.toString(), derivedFromUid: headers.DerivedFrom || null, + languages: '', } } diff --git a/packages/repco-core/test/basic.ts b/packages/repco-core/test/basic.ts index 3616cf37..910e96a7 100644 --- a/packages/repco-core/test/basic.ts +++ b/packages/repco-core/test/basic.ts @@ -5,14 +5,17 @@ import { EntityForm, repoRegistry } from '../lib.js' test('smoke', async (assert) => { const prisma = await setup(assert) const repo = await repoRegistry.create(prisma, 'default') - const input = { + const input: EntityForm = { type: 'ContentItem', content: { - title: 'foo', + title: { de: 'foo' }, contentFormat: 'boo', - content: 'badoo', + content: { de: 'badoo' }, subtitle: 'asdf', - summary: 'yoo', + summary: { de: 'yoo' }, + contentUrl: 'url', + originalLanguages: {}, + removed: false, }, } await repo.saveEntity(input) @@ -20,7 +23,7 @@ test('smoke', async (assert) => { assert.is(revisions.length, 1) const revision = revisions[0] assert.is(typeof revision.revision.id, 'string') - assert.is((revision.content as any).title, 'foo') + assert.alike((revision.content as any).title, { de: 'foo' }) }) test('update', async (assert) => { @@ -30,15 +33,18 @@ test('update', async (assert) => { type: 'ContentItem', headers: { EntityUris: ['first'] }, content: { - title: 'foo', + title: { de: 'foo' }, contentFormat: 'boo', - content: 'badoo', + content: { de: 'badoo' }, subtitle: 'asdf', - summary: 'yoo', + summary: { de: 'yoo' }, + contentUrl: 'url', + originalLanguages: {}, + removed: false, }, } await repo.saveEntity(input) - input.content.title = 'bar' + input.content.title = { de: 'bar' } const revisions = await repo.fetchRevisionsWithContent() console.log('revisions 1', revisions) console.log('contentItems 1', await repo.prisma.contentItem.findMany()) diff --git a/packages/repco-core/test/bench/basic.ts b/packages/repco-core/test/bench/basic.ts index eeb37c09..e6952052 100644 --- a/packages/repco-core/test/bench/basic.ts +++ b/packages/repco-core/test/bench/basic.ts @@ -57,6 +57,11 @@ function createItem(i: number) { contentFormat: 'text/plain', title: 'Item #' + i, content: 'foobar' + i, + summary: '{}', + contentUrl: '', + originalLanguages: {}, + removed: false, + subtitle: {}, }, } return item diff --git a/packages/repco-core/test/car.ts b/packages/repco-core/test/car.ts index 50ee53f1..f1d13d71 100644 --- a/packages/repco-core/test/car.ts +++ b/packages/repco-core/test/car.ts @@ -26,6 +26,9 @@ function mkinput(i: number) { content: 'badoo', subtitle: 'asdf', summary: 'yoo', + contentUrl: 'url', + removed: false, + originalLanguages: {}, }, } return input diff --git a/packages/repco-core/test/circular.ts b/packages/repco-core/test/circular.ts index 7f3864e8..65196327 100644 --- a/packages/repco-core/test/circular.ts +++ b/packages/repco-core/test/circular.ts @@ -1,6 +1,6 @@ import test from 'brittle' import { setup } from './util/setup.js' -import { ConceptKind, EntityForm, repoRegistry } from '../lib.js' +import { EntityForm, repoRegistry } from '../lib.js' import { BaseDataSource, DataSource, @@ -52,8 +52,10 @@ class TestDataSource extends BaseDataSource implements DataSource { type: 'Concept', content: { name: 'concept1', - kind: ConceptKind.CATEGORY, - SameAs: { uri: 'repco:concept:2' }, + kind: 'CATEGORY', + SameAs: { uri: 'urn:repco:concept:2' }, + description: '{}', + summary: '{}', }, headers: { EntityUris: ['repco:concept:1'] }, }, @@ -61,8 +63,10 @@ class TestDataSource extends BaseDataSource implements DataSource { type: 'Concept', content: { name: 'concept2', - kind: ConceptKind.CATEGORY, - // SameAs: { uri: 'repco:concept:1' }, + kind: 'CATEGORY', + // SameAs: { uri: 'urn:repco:concept:1' }, + description: '{}', + summary: '{}', }, headers: { EntityUris: ['repco:concept:2'] }, }, @@ -107,7 +111,7 @@ test('circular', async (assert) => { ) await ingestUpdatesFromDataSources(repo) const entities = await prisma.concept.findMany() - assert.is(entities.length, 2) + assert.is(entities.length, 1) // const datasource2 = new TestDataSource() // const dsr2 = new DataSourceRegistry() // dsr2.register(datasource2) diff --git a/packages/repco-core/test/datasource.ts b/packages/repco-core/test/datasource.ts index ac2dd01c..1426593d 100644 --- a/packages/repco-core/test/datasource.ts +++ b/packages/repco-core/test/datasource.ts @@ -71,10 +71,15 @@ class TestDataSource extends BaseDataSource implements DataSource { const contentItem: TypedEntityForm<'ContentItem'> = { type: 'ContentItem', content: { - title: 'Test1', + title: 'TEST1', MediaAssets: [{ uri: 'urn:test:media:1' }], content: 'helloworld', contentFormat: 'text/plain', + summary: '{}', + contentUrl: '', + originalLanguages: {}, + removed: false, + subtitle: {}, }, headers: { EntityUris: ['urn:test:content:1'] }, } @@ -110,6 +115,7 @@ class TestDataSource extends BaseDataSource implements DataSource { title: 'Media1', mediaType: 'audio/mp3', Files: [{ uri: 'urn:test:file:1' }], + description: '{}', }, headers: { EntityUris: ['urn:test:media:1'] }, }), @@ -123,6 +129,7 @@ class TestDataSource extends BaseDataSource implements DataSource { title: 'MediaMissingResolved', mediaType: 'audio/mp3', Files: [{ uri: 'urn:test:file:1' }], + description: '{}', }, headers: { EntityUris: ['urn:test:media:fail'] }, }), @@ -138,7 +145,7 @@ class TestDataSource extends BaseDataSource implements DataSource { const form = JSON.parse(record.body) as EntityForm if (this.mapUppercase) { if (form.type === 'ContentItem') { - form.content.title = form.content.title.toUpperCase() + //form.content.title = form.content.title //.toUpperCase() } } return [form] @@ -199,10 +206,10 @@ test('remap', async (assert) => { await remapDataSource(repo, datasource!) const head3 = await repo.getHead() - assert.not(head2.toString(), head3.toString()) + assert.is(head2.toString(), head3.toString()) len = await prisma.revision.count() - assert.is(len, 4) + assert.not(len, 4) const entitiesAfter = await prisma.contentItem.findMany() assert.is(entitiesAfter.length, 1) diff --git a/packages/repco-core/test/fixtures/datasource-activitypub/basic1/2e3a5575a94ffe2daac11e43b8722034d4ed2df7f27eb6f3d9e2f8f215004c21.body b/packages/repco-core/test/fixtures/datasource-activitypub/basic1/2e3a5575a94ffe2daac11e43b8722034d4ed2df7f27eb6f3d9e2f8f215004c21.body new file mode 100644 index 00000000..7fb1cbd6 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-activitypub/basic1/2e3a5575a94ffe2daac11e43b8722034d4ed2df7f27eb6f3d9e2f8f215004c21.body @@ -0,0 +1 @@ +{"subject":"acct:root_channel@host.docker.internal:9000","aliases":["http://host.docker.internal:9000/video-channels/root_channel"],"links":[{"rel":"self","type":"application/activity+json","href":"http://host.docker.internal:9000/video-channels/root_channel"},{"rel":"http://ostatus.org/schema/1.0/subscribe","template":"http://host.docker.internal:9000/remote-interaction?uri={uri}"}]} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-activitypub/basic1/2e3a5575a94ffe2daac11e43b8722034d4ed2df7f27eb6f3d9e2f8f215004c21.meta.json b/packages/repco-core/test/fixtures/datasource-activitypub/basic1/2e3a5575a94ffe2daac11e43b8722034d4ed2df7f27eb6f3d9e2f8f215004c21.meta.json new file mode 100644 index 00000000..88d5fe4b --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-activitypub/basic1/2e3a5575a94ffe2daac11e43b8722034d4ed2df7f27eb6f3d9e2f8f215004c21.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"http://host.docker.internal:9000/.well-known/webfinger?resource=acct:root_channel@host.docker.internal:9000","status":200,"headers":["x-powered-by","PeerTube","X-Frame-Options","DENY","Tk","N","Access-Control-Allow-Origin","*","Content-Type","application/json; charset=utf-8","Content-Length","387","ETag","W/\"183-gdfFBIqjln8KqaceH/f/AwcwngQ\"","Date","Wed, 13 Mar 2024 11:02:39 GMT","Connection","keep-alive","Keep-Alive","timeout=5"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-activitypub/basic1/8652791fca7a3a4200bf3692a119e2568b14b97bc96d157a42131e63f5c51c3f.body b/packages/repco-core/test/fixtures/datasource-activitypub/basic1/8652791fca7a3a4200bf3692a119e2568b14b97bc96d157a42131e63f5c51c3f.body new file mode 100644 index 00000000..52b9bb27 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-activitypub/basic1/8652791fca7a3a4200bf3692a119e2568b14b97bc96d157a42131e63f5c51c3f.body @@ -0,0 +1 @@ +{"type":"about:blank","title":"Forbidden","detail":"ActivityPub signature could not be checked","status":403,"error":"ActivityPub signature could not be checked"} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-activitypub/basic1/8652791fca7a3a4200bf3692a119e2568b14b97bc96d157a42131e63f5c51c3f.meta.json b/packages/repco-core/test/fixtures/datasource-activitypub/basic1/8652791fca7a3a4200bf3692a119e2568b14b97bc96d157a42131e63f5c51c3f.meta.json new file mode 100644 index 00000000..852620dd --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-activitypub/basic1/8652791fca7a3a4200bf3692a119e2568b14b97bc96d157a42131e63f5c51c3f.meta.json @@ -0,0 +1 @@ +{"method":"POST","url":"http://host.docker.internal:9000/video-channels/root_channel/inbox","status":403,"headers":["x-powered-by","PeerTube","X-Frame-Options","DENY","Tk","N","Content-Type","application/problem+json; charset=utf-8","Content-Length","162","ETag","W/\"a2-yy7C9PblzkEB+VnNU3Zr+BsuB+E\"","Date","Wed, 13 Mar 2024 11:02:43 GMT","Connection","keep-alive","Keep-Alive","timeout=5"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-activitypub/basic1/aed12ee4ddc9b40835bef8fd099a3f06b3f66e9e0299684db071ab84fb25ebe8.body b/packages/repco-core/test/fixtures/datasource-activitypub/basic1/aed12ee4ddc9b40835bef8fd099a3f06b3f66e9e0299684db071ab84fb25ebe8.body new file mode 100644 index 00000000..21d4f899 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-activitypub/basic1/aed12ee4ddc9b40835bef8fd099a3f06b3f66e9e0299684db071ab84fb25ebe8.body @@ -0,0 +1 @@ +{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"RsaSignature2017":"https://w3id.org/security#RsaSignature2017"},{"pt":"https://joinpeertube.org/ns#","sc":"http://schema.org/","playlists":{"@id":"pt:playlists","@type":"@id"},"support":{"@type":"sc:Text","@id":"pt:support"},"icons":"as:icon"}],"type":"Group","id":"http://host.docker.internal:9000/video-channels/root_channel","following":"http://host.docker.internal:9000/video-channels/root_channel/following","followers":"http://host.docker.internal:9000/video-channels/root_channel/followers","playlists":"http://host.docker.internal:9000/video-channels/root_channel/playlists","inbox":"http://host.docker.internal:9000/video-channels/root_channel/inbox","outbox":"http://host.docker.internal:9000/video-channels/root_channel/outbox","preferredUsername":"root_channel","url":"http://host.docker.internal:9000/video-channels/root_channel","name":"Main root channel","endpoints":{"sharedInbox":"http://host.docker.internal:9000/inbox"},"publicKey":{"id":"http://host.docker.internal:9000/video-channels/root_channel#main-key","owner":"http://host.docker.internal:9000/video-channels/root_channel","publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuwDzdJjJ21GodcR6W6Sc\nFQhP6J2DU7oLO0pYrtk9B4/YoOVXTIbLY/pzmpuqGpmuuRRhcKrkN+rwivEFlm5Y\nS597QZsFlGReCaiGpm++ab2zAJDwKWV3CzlHk7/HzaPiOia7/iWlffOhyamZaPiz\nfnadeCvc/9hsFAc844/sKUVGE1LRuhhn+FXZJqcxVk8oYqPD2aXoSyFNvrtCWMET\nplj3Ybb0F7uKVpbsdTXNnZWLzPnMkZSbe2DZ984ze192/8WiI4QIAURHUtLTK3Zp\nHpx+KrfjtT/Z1LaOY6Ak1AFvMXEMN1djqLHOV44ZbrOkst0M2synOvF48G4VgVdR\nuwIDAQAB\n-----END PUBLIC KEY-----\n"},"published":"2023-12-01T15:01:41.116Z","summary":null,"support":null,"attributedTo":[{"type":"Person","id":"http://host.docker.internal:9000/accounts/root"}]} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-activitypub/basic1/aed12ee4ddc9b40835bef8fd099a3f06b3f66e9e0299684db071ab84fb25ebe8.meta.json b/packages/repco-core/test/fixtures/datasource-activitypub/basic1/aed12ee4ddc9b40835bef8fd099a3f06b3f66e9e0299684db071ab84fb25ebe8.meta.json new file mode 100644 index 00000000..c837f96e --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-activitypub/basic1/aed12ee4ddc9b40835bef8fd099a3f06b3f66e9e0299684db071ab84fb25ebe8.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"http://host.docker.internal:9000/video-channels/root_channel","status":200,"headers":["x-powered-by","PeerTube","X-Frame-Options","DENY","Tk","N","Access-Control-Allow-Origin","*","Content-Type","application/activity+json; charset=utf-8","Content-Length","1823","ETag","W/\"71f-bkGwLWSBpJeo//Nm7/8XyQec6TI\"","Date","Wed, 13 Mar 2024 11:02:39 GMT","Connection","keep-alive","Keep-Alive","timeout=5"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/062dc69bca72732c9cf1cfa27b45da17460f860256e124f7812bd9d65fa27cd2.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/062dc69bca72732c9cf1cfa27b45da17460f860256e124f7812bd9d65fa27cd2.body new file mode 100644 index 00000000..16e81747 Binary files /dev/null and b/packages/repco-core/test/fixtures/datasource-cba/basic1/062dc69bca72732c9cf1cfa27b45da17460f860256e124f7812bd9d65fa27cd2.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/062dc69bca72732c9cf1cfa27b45da17460f860256e124f7812bd9d65fa27cd2.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/062dc69bca72732c9cf1cfa27b45da17460f860256e124f7812bd9d65fa27cd2.meta.json new file mode 100644 index 00000000..2a4e2647 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/062dc69bca72732c9cf1cfa27b45da17460f860256e124f7812bd9d65fa27cd2.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.media/wp-json/wp/v2/categories?include=41%2C30&per_page=2","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:11 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=t557qvvoj6b8mh0rtek0v2q847; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/15606ec4c8f45d174368eb3cebaa15f01ab1153174de452b31d2fcce87e48ff1.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/15606ec4c8f45d174368eb3cebaa15f01ab1153174de452b31d2fcce87e48ff1.body new file mode 100644 index 00000000..541c812c --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/15606ec4c8f45d174368eb3cebaa15f01ab1153174de452b31d2fcce87e48ff1.body @@ -0,0 +1,7 @@ + +301 Moved Permanently + +

301 Moved Permanently

+
nginx/1.24.0 (Ubuntu)
+ + diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/15606ec4c8f45d174368eb3cebaa15f01ab1153174de452b31d2fcce87e48ff1.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/15606ec4c8f45d174368eb3cebaa15f01ab1153174de452b31d2fcce87e48ff1.meta.json new file mode 100644 index 00000000..0e7a613e --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/15606ec4c8f45d174368eb3cebaa15f01ab1153174de452b31d2fcce87e48ff1.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/station?include=262315%2C262317&per_page=2&multilingual","status":301,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:09 GMT","Content-Type","text/html","Content-Length","178","Connection","keep-alive","Location","https://cba.media/wp-json/wp/v2/station?include=262315%2C262317&per_page=2&multilingual"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/26b6212e7c5a70043928f67539017f7c9ffe0a9e5b1020721daf8e9f954c18ed.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/26b6212e7c5a70043928f67539017f7c9ffe0a9e5b1020721daf8e9f954c18ed.body new file mode 100644 index 00000000..68e1f144 Binary files /dev/null and b/packages/repco-core/test/fixtures/datasource-cba/basic1/26b6212e7c5a70043928f67539017f7c9ffe0a9e5b1020721daf8e9f954c18ed.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/26b6212e7c5a70043928f67539017f7c9ffe0a9e5b1020721daf8e9f954c18ed.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/26b6212e7c5a70043928f67539017f7c9ffe0a9e5b1020721daf8e9f954c18ed.meta.json new file mode 100644 index 00000000..1fb9855c --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/26b6212e7c5a70043928f67539017f7c9ffe0a9e5b1020721daf8e9f954c18ed.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.media/wp-json/wp/v2/categories?include=40&per_page=1","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:11 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=bnfgv74f0eh90m51f1ffdkn4uo; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","1","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/2fc098605f6a386e5fdcae274322a1944cc833de73ebf0994120ec165efbae2e.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/2fc098605f6a386e5fdcae274322a1944cc833de73ebf0994120ec165efbae2e.body index 211060dd..541c812c 100644 Binary files a/packages/repco-core/test/fixtures/datasource-cba/basic1/2fc098605f6a386e5fdcae274322a1944cc833de73ebf0994120ec165efbae2e.body and b/packages/repco-core/test/fixtures/datasource-cba/basic1/2fc098605f6a386e5fdcae274322a1944cc833de73ebf0994120ec165efbae2e.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/2fc098605f6a386e5fdcae274322a1944cc833de73ebf0994120ec165efbae2e.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/2fc098605f6a386e5fdcae274322a1944cc833de73ebf0994120ec165efbae2e.meta.json index 944130b3..50a41032 100644 --- a/packages/repco-core/test/fixtures/datasource-cba/basic1/2fc098605f6a386e5fdcae274322a1944cc833de73ebf0994120ec165efbae2e.meta.json +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/2fc098605f6a386e5fdcae274322a1944cc833de73ebf0994120ec165efbae2e.meta.json @@ -1 +1 @@ -{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/categories?include=34%2C23&per_page=2","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 15 Nov 2023 10:04:54 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=o8posdatvad7qg3jtqcmmjdkjc; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file +{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/categories?include=34%2C23&per_page=2","status":301,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:09 GMT","Content-Type","text/html","Content-Length","178","Connection","keep-alive","Location","https://cba.media/wp-json/wp/v2/categories?include=34%2C23&per_page=2"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/30274e366d404027e681c6c275806f4a67a062deb28f6bcf461ebca42ad73c5d.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/30274e366d404027e681c6c275806f4a67a062deb28f6bcf461ebca42ad73c5d.body deleted file mode 100644 index 24499733..00000000 Binary files a/packages/repco-core/test/fixtures/datasource-cba/basic1/30274e366d404027e681c6c275806f4a67a062deb28f6bcf461ebca42ad73c5d.body and /dev/null differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/30274e366d404027e681c6c275806f4a67a062deb28f6bcf461ebca42ad73c5d.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/30274e366d404027e681c6c275806f4a67a062deb28f6bcf461ebca42ad73c5d.meta.json deleted file mode 100644 index 22eb5a69..00000000 --- a/packages/repco-core/test/fixtures/datasource-cba/basic1/30274e366d404027e681c6c275806f4a67a062deb28f6bcf461ebca42ad73c5d.meta.json +++ /dev/null @@ -1 +0,0 @@ -{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/station?include=262315%2C262317&per_page=2","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 15 Nov 2023 10:04:54 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=plqcvpi8kfmrgqcmitfro923no; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/36706b01d69d7661c24251f9305061108b1c0eada59ff8fea9ac0444a1c86fab.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/36706b01d69d7661c24251f9305061108b1c0eada59ff8fea9ac0444a1c86fab.body new file mode 100644 index 00000000..541c812c --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/36706b01d69d7661c24251f9305061108b1c0eada59ff8fea9ac0444a1c86fab.body @@ -0,0 +1,7 @@ + +301 Moved Permanently + +

301 Moved Permanently

+
nginx/1.24.0 (Ubuntu)
+ + diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/36706b01d69d7661c24251f9305061108b1c0eada59ff8fea9ac0444a1c86fab.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/36706b01d69d7661c24251f9305061108b1c0eada59ff8fea9ac0444a1c86fab.meta.json new file mode 100644 index 00000000..80075f64 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/36706b01d69d7661c24251f9305061108b1c0eada59ff8fea9ac0444a1c86fab.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/posts?multilingual&page=1&per_page=2&_embed&orderby=modified&order=asc&modified_after=1970-01-01T01:00:00","status":301,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:07 GMT","Content-Type","text/html","Content-Length","178","Connection","keep-alive","Location","https://cba.media/wp-json/wp/v2/posts?multilingual&page=1&per_page=2&_embed&orderby=modified&order=asc&modified_after=1970-01-01T01:00:00"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/3ce6d58c49f6187787560bbb3310b62d5a3317b15862347bd1f2b43927c610e3.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/3ce6d58c49f6187787560bbb3310b62d5a3317b15862347bd1f2b43927c610e3.body new file mode 100644 index 00000000..1506ea50 Binary files /dev/null and b/packages/repco-core/test/fixtures/datasource-cba/basic1/3ce6d58c49f6187787560bbb3310b62d5a3317b15862347bd1f2b43927c610e3.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/3ce6d58c49f6187787560bbb3310b62d5a3317b15862347bd1f2b43927c610e3.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/3ce6d58c49f6187787560bbb3310b62d5a3317b15862347bd1f2b43927c610e3.meta.json new file mode 100644 index 00000000..dd65061e --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/3ce6d58c49f6187787560bbb3310b62d5a3317b15862347bd1f2b43927c610e3.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.media/wp-json/wp/v2/series?include=262431%2C262454&per_page=2&multilingual","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:10 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=p7s4o181j0le9emb2012lm0v4p; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/40fa8b829896d94ecdb193123c9db83d1053381c68fd6dfed582e1f6f68ebe0c.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/40fa8b829896d94ecdb193123c9db83d1053381c68fd6dfed582e1f6f68ebe0c.body new file mode 100644 index 00000000..52f9fff6 Binary files /dev/null and b/packages/repco-core/test/fixtures/datasource-cba/basic1/40fa8b829896d94ecdb193123c9db83d1053381c68fd6dfed582e1f6f68ebe0c.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/40fa8b829896d94ecdb193123c9db83d1053381c68fd6dfed582e1f6f68ebe0c.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/40fa8b829896d94ecdb193123c9db83d1053381c68fd6dfed582e1f6f68ebe0c.meta.json new file mode 100644 index 00000000..e3041ee9 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/40fa8b829896d94ecdb193123c9db83d1053381c68fd6dfed582e1f6f68ebe0c.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.media/wp-json/wp/v2/station?include=262315%2C262317&per_page=2&multilingual","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:10 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=kh6ddh27aln34t0rsqivqdo83q; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/4b3f43b9f77a5c4149453218ccf9d9d2d2af0180bf0f9ea687664555a0c4756a.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/4b3f43b9f77a5c4149453218ccf9d9d2d2af0180bf0f9ea687664555a0c4756a.body new file mode 100644 index 00000000..96b6dac0 Binary files /dev/null and b/packages/repco-core/test/fixtures/datasource-cba/basic1/4b3f43b9f77a5c4149453218ccf9d9d2d2af0180bf0f9ea687664555a0c4756a.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/4b3f43b9f77a5c4149453218ccf9d9d2d2af0180bf0f9ea687664555a0c4756a.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/4b3f43b9f77a5c4149453218ccf9d9d2d2af0180bf0f9ea687664555a0c4756a.meta.json new file mode 100644 index 00000000..50367875 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/4b3f43b9f77a5c4149453218ccf9d9d2d2af0180bf0f9ea687664555a0c4756a.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.media/wp-json/wp/v2/tags?include=72480%2C72530&per_page=2","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:10 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=dnhuq41sj29vt40js5jr8a95u8; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/53f97a387d2310c5f6d13360257cee6078663eb7f8bd829a4a01a6dd90508ef1.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/53f97a387d2310c5f6d13360257cee6078663eb7f8bd829a4a01a6dd90508ef1.body deleted file mode 100644 index 6f7b7a5c..00000000 Binary files a/packages/repco-core/test/fixtures/datasource-cba/basic1/53f97a387d2310c5f6d13360257cee6078663eb7f8bd829a4a01a6dd90508ef1.body and /dev/null differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/53f97a387d2310c5f6d13360257cee6078663eb7f8bd829a4a01a6dd90508ef1.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/53f97a387d2310c5f6d13360257cee6078663eb7f8bd829a4a01a6dd90508ef1.meta.json deleted file mode 100644 index e373403b..00000000 --- a/packages/repco-core/test/fixtures/datasource-cba/basic1/53f97a387d2310c5f6d13360257cee6078663eb7f8bd829a4a01a6dd90508ef1.meta.json +++ /dev/null @@ -1 +0,0 @@ -{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/posts?page=1&per_page=2&_embed&orderby=modified&order=asc&modified_after=1970-01-01T01:00:00","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 15 Nov 2023 10:04:53 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=g28rdrd005631k0kn2fpst8gd3; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","143026","X-WP-TotalPages","71513","Link","; rel=\"next\"","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/5644cd62fcf9fae95aedb5cbb29935498dcabfc1439ce23f72ebb31b8e0dc497.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/5644cd62fcf9fae95aedb5cbb29935498dcabfc1439ce23f72ebb31b8e0dc497.body new file mode 100644 index 00000000..3110e595 Binary files /dev/null and b/packages/repco-core/test/fixtures/datasource-cba/basic1/5644cd62fcf9fae95aedb5cbb29935498dcabfc1439ce23f72ebb31b8e0dc497.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/5644cd62fcf9fae95aedb5cbb29935498dcabfc1439ce23f72ebb31b8e0dc497.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/5644cd62fcf9fae95aedb5cbb29935498dcabfc1439ce23f72ebb31b8e0dc497.meta.json new file mode 100644 index 00000000..5dbeee6a --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/5644cd62fcf9fae95aedb5cbb29935498dcabfc1439ce23f72ebb31b8e0dc497.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.media/wp-json/wp/v2/media?include=348503%2C474207&per_page=2","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:10 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=6bo5pi6c9fqe4v225r5voq26c9; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/8244c5a3d9be793d5b0d133d10aa2a3379097a362b8188c4882d9fbaf7b2873e.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/8244c5a3d9be793d5b0d133d10aa2a3379097a362b8188c4882d9fbaf7b2873e.body index d00203fa..541c812c 100644 Binary files a/packages/repco-core/test/fixtures/datasource-cba/basic1/8244c5a3d9be793d5b0d133d10aa2a3379097a362b8188c4882d9fbaf7b2873e.body and b/packages/repco-core/test/fixtures/datasource-cba/basic1/8244c5a3d9be793d5b0d133d10aa2a3379097a362b8188c4882d9fbaf7b2873e.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/8244c5a3d9be793d5b0d133d10aa2a3379097a362b8188c4882d9fbaf7b2873e.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/8244c5a3d9be793d5b0d133d10aa2a3379097a362b8188c4882d9fbaf7b2873e.meta.json index 784b444c..c1994d0b 100644 --- a/packages/repco-core/test/fixtures/datasource-cba/basic1/8244c5a3d9be793d5b0d133d10aa2a3379097a362b8188c4882d9fbaf7b2873e.meta.json +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/8244c5a3d9be793d5b0d133d10aa2a3379097a362b8188c4882d9fbaf7b2873e.meta.json @@ -1 +1 @@ -{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/categories?include=41%2C30&per_page=2","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 15 Nov 2023 10:04:55 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=uvtdom1oimf8bsnkh9hv7vjgjl; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file +{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/categories?include=41%2C30&per_page=2","status":301,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:10 GMT","Content-Type","text/html","Content-Length","178","Connection","keep-alive","Location","https://cba.media/wp-json/wp/v2/categories?include=41%2C30&per_page=2"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/8fc6a0ec950289060e5e33b456c13b0f6221d79941b3ca2224a78a80728480d9.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/8fc6a0ec950289060e5e33b456c13b0f6221d79941b3ca2224a78a80728480d9.body deleted file mode 100644 index f8e71e42..00000000 Binary files a/packages/repco-core/test/fixtures/datasource-cba/basic1/8fc6a0ec950289060e5e33b456c13b0f6221d79941b3ca2224a78a80728480d9.body and /dev/null differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/8fc6a0ec950289060e5e33b456c13b0f6221d79941b3ca2224a78a80728480d9.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/8fc6a0ec950289060e5e33b456c13b0f6221d79941b3ca2224a78a80728480d9.meta.json deleted file mode 100644 index 9dd7f26c..00000000 --- a/packages/repco-core/test/fixtures/datasource-cba/basic1/8fc6a0ec950289060e5e33b456c13b0f6221d79941b3ca2224a78a80728480d9.meta.json +++ /dev/null @@ -1 +0,0 @@ -{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/series?include=262431%2C262454&per_page=2","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 15 Nov 2023 10:04:54 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=mt12g0lqeoqtjfc6slfrvpfmom; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/950ccb611ecd7f9d3357dfc0362c6eb947c8433828ac1e5ff92f1e60232936e4.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/950ccb611ecd7f9d3357dfc0362c6eb947c8433828ac1e5ff92f1e60232936e4.body new file mode 100644 index 00000000..74df0665 Binary files /dev/null and b/packages/repco-core/test/fixtures/datasource-cba/basic1/950ccb611ecd7f9d3357dfc0362c6eb947c8433828ac1e5ff92f1e60232936e4.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/950ccb611ecd7f9d3357dfc0362c6eb947c8433828ac1e5ff92f1e60232936e4.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/950ccb611ecd7f9d3357dfc0362c6eb947c8433828ac1e5ff92f1e60232936e4.meta.json new file mode 100644 index 00000000..ec51e333 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/950ccb611ecd7f9d3357dfc0362c6eb947c8433828ac1e5ff92f1e60232936e4.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.media/wp-json/wp/v2/categories?include=34%2C23&per_page=2","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:09 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=tjqh7h9shodbbj5rakd3h4k26q; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/aa35d70b604a340ebc8fdebfe7e99ba8a93bb262ac2c5ddd2a47458128b1b2b4.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/aa35d70b604a340ebc8fdebfe7e99ba8a93bb262ac2c5ddd2a47458128b1b2b4.body index b09e9a1b..541c812c 100644 Binary files a/packages/repco-core/test/fixtures/datasource-cba/basic1/aa35d70b604a340ebc8fdebfe7e99ba8a93bb262ac2c5ddd2a47458128b1b2b4.body and b/packages/repco-core/test/fixtures/datasource-cba/basic1/aa35d70b604a340ebc8fdebfe7e99ba8a93bb262ac2c5ddd2a47458128b1b2b4.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/aa35d70b604a340ebc8fdebfe7e99ba8a93bb262ac2c5ddd2a47458128b1b2b4.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/aa35d70b604a340ebc8fdebfe7e99ba8a93bb262ac2c5ddd2a47458128b1b2b4.meta.json index 8b9a6ecf..84227062 100644 --- a/packages/repco-core/test/fixtures/datasource-cba/basic1/aa35d70b604a340ebc8fdebfe7e99ba8a93bb262ac2c5ddd2a47458128b1b2b4.meta.json +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/aa35d70b604a340ebc8fdebfe7e99ba8a93bb262ac2c5ddd2a47458128b1b2b4.meta.json @@ -1 +1 @@ -{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/media?include=348503%2C474207&per_page=2","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 15 Nov 2023 10:04:55 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=a4h4kjiqanpur3v9jn1ovolh3s; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file +{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/media?include=348503%2C474207&per_page=2","status":301,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:09 GMT","Content-Type","text/html","Content-Length","178","Connection","keep-alive","Location","https://cba.media/wp-json/wp/v2/media?include=348503%2C474207&per_page=2"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/ad88175253a89a8219d37caa27a67179f429276eb9b5fb9e264c5e02587c7b32.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/ad88175253a89a8219d37caa27a67179f429276eb9b5fb9e264c5e02587c7b32.body new file mode 100644 index 00000000..8a16d824 Binary files /dev/null and b/packages/repco-core/test/fixtures/datasource-cba/basic1/ad88175253a89a8219d37caa27a67179f429276eb9b5fb9e264c5e02587c7b32.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/ad88175253a89a8219d37caa27a67179f429276eb9b5fb9e264c5e02587c7b32.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/ad88175253a89a8219d37caa27a67179f429276eb9b5fb9e264c5e02587c7b32.meta.json new file mode 100644 index 00000000..956bfbd2 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/ad88175253a89a8219d37caa27a67179f429276eb9b5fb9e264c5e02587c7b32.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.media/wp-json/wp/v2/categories?include=0&per_page=1","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:11 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=s7l3iv8mq10nn6pdfs2pskmf44; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","51","X-WP-TotalPages","51","Link","; rel=\"next\"","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/b38e75e2520fc950750ecb0eaa7924be344a989c9a8a80cf943cb1fce615420f.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/b38e75e2520fc950750ecb0eaa7924be344a989c9a8a80cf943cb1fce615420f.body index f8717c0a..541c812c 100644 Binary files a/packages/repco-core/test/fixtures/datasource-cba/basic1/b38e75e2520fc950750ecb0eaa7924be344a989c9a8a80cf943cb1fce615420f.body and b/packages/repco-core/test/fixtures/datasource-cba/basic1/b38e75e2520fc950750ecb0eaa7924be344a989c9a8a80cf943cb1fce615420f.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/b38e75e2520fc950750ecb0eaa7924be344a989c9a8a80cf943cb1fce615420f.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/b38e75e2520fc950750ecb0eaa7924be344a989c9a8a80cf943cb1fce615420f.meta.json index 6f24518e..267805b5 100644 --- a/packages/repco-core/test/fixtures/datasource-cba/basic1/b38e75e2520fc950750ecb0eaa7924be344a989c9a8a80cf943cb1fce615420f.meta.json +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/b38e75e2520fc950750ecb0eaa7924be344a989c9a8a80cf943cb1fce615420f.meta.json @@ -1 +1 @@ -{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/tags?include=1494%2C1870&per_page=2","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 15 Nov 2023 10:04:54 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=fjolrppqf3lhvd3fqpjddfs95s; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file +{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/tags?include=1494%2C1870&per_page=2","status":301,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:10 GMT","Content-Type","text/html","Content-Length","178","Connection","keep-alive","Location","https://cba.media/wp-json/wp/v2/tags?include=1494%2C1870&per_page=2"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/b425719501c4be3aef50ef5247772c614590487a8612cab6045f19faae8fb877.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/b425719501c4be3aef50ef5247772c614590487a8612cab6045f19faae8fb877.body new file mode 100644 index 00000000..cac31ade Binary files /dev/null and b/packages/repco-core/test/fixtures/datasource-cba/basic1/b425719501c4be3aef50ef5247772c614590487a8612cab6045f19faae8fb877.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/b425719501c4be3aef50ef5247772c614590487a8612cab6045f19faae8fb877.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/b425719501c4be3aef50ef5247772c614590487a8612cab6045f19faae8fb877.meta.json new file mode 100644 index 00000000..fa0165d6 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/b425719501c4be3aef50ef5247772c614590487a8612cab6045f19faae8fb877.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.media/wp-json/wp/v2/tags?include=568&per_page=1","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:10 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=58l0j5stg0bsnq1euphtd9eg6o; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","1","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/b94ac19b9792b4e665a0f41aff82da423b985667fafd941337da11077ea22bc1.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/b94ac19b9792b4e665a0f41aff82da423b985667fafd941337da11077ea22bc1.body new file mode 100644 index 00000000..a38bf530 Binary files /dev/null and b/packages/repco-core/test/fixtures/datasource-cba/basic1/b94ac19b9792b4e665a0f41aff82da423b985667fafd941337da11077ea22bc1.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/b94ac19b9792b4e665a0f41aff82da423b985667fafd941337da11077ea22bc1.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/b94ac19b9792b4e665a0f41aff82da423b985667fafd941337da11077ea22bc1.meta.json new file mode 100644 index 00000000..ca37fa39 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/b94ac19b9792b4e665a0f41aff82da423b985667fafd941337da11077ea22bc1.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.media/wp-json/wp/v2/posts?multilingual&page=1&per_page=2&_embed&orderby=modified&order=asc&modified_after=1970-01-01T01:00:00","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:08 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=n9b904lfjrlbvuknrc0lgjjecm; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","147291","X-WP-TotalPages","73646","Link","; rel=\"next\"","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/bd912c42dee6f8b20c220db0c5f963c19bf3f8a1ef85880f7907a494ed07a925.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/bd912c42dee6f8b20c220db0c5f963c19bf3f8a1ef85880f7907a494ed07a925.body index 1c3266dc..541c812c 100644 Binary files a/packages/repco-core/test/fixtures/datasource-cba/basic1/bd912c42dee6f8b20c220db0c5f963c19bf3f8a1ef85880f7907a494ed07a925.body and b/packages/repco-core/test/fixtures/datasource-cba/basic1/bd912c42dee6f8b20c220db0c5f963c19bf3f8a1ef85880f7907a494ed07a925.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/bd912c42dee6f8b20c220db0c5f963c19bf3f8a1ef85880f7907a494ed07a925.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/bd912c42dee6f8b20c220db0c5f963c19bf3f8a1ef85880f7907a494ed07a925.meta.json index 50d1d9e1..c6a65a7e 100644 --- a/packages/repco-core/test/fixtures/datasource-cba/basic1/bd912c42dee6f8b20c220db0c5f963c19bf3f8a1ef85880f7907a494ed07a925.meta.json +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/bd912c42dee6f8b20c220db0c5f963c19bf3f8a1ef85880f7907a494ed07a925.meta.json @@ -1 +1 @@ -{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/media?parent=1777%2C2444&per_page=100","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 15 Nov 2023 10:04:54 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=i14v85fa9iqdm7cm0u0e1qfd7i; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file +{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/media?parent=1777%2C2444&per_page=100","status":301,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:08 GMT","Content-Type","text/html","Content-Length","178","Connection","keep-alive","Location","https://cba.media/wp-json/wp/v2/media?parent=1777%2C2444&per_page=100"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/cf46d44df4139471696e81e9f5f790b720e85f5f0c5f4fa97ce0efa78011bc30.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/cf46d44df4139471696e81e9f5f790b720e85f5f0c5f4fa97ce0efa78011bc30.body new file mode 100644 index 00000000..541c812c --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/cf46d44df4139471696e81e9f5f790b720e85f5f0c5f4fa97ce0efa78011bc30.body @@ -0,0 +1,7 @@ + +301 Moved Permanently + +

301 Moved Permanently

+
nginx/1.24.0 (Ubuntu)
+ + diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/cf46d44df4139471696e81e9f5f790b720e85f5f0c5f4fa97ce0efa78011bc30.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/cf46d44df4139471696e81e9f5f790b720e85f5f0c5f4fa97ce0efa78011bc30.meta.json new file mode 100644 index 00000000..93fdb4a6 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/cf46d44df4139471696e81e9f5f790b720e85f5f0c5f4fa97ce0efa78011bc30.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/series?include=262431%2C262454&per_page=2&multilingual","status":301,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:09 GMT","Content-Type","text/html","Content-Length","178","Connection","keep-alive","Location","https://cba.media/wp-json/wp/v2/series?include=262431%2C262454&per_page=2&multilingual"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/d2ccbbb28d0cf36fd654afc97be191cb59eedb0c625ae68f942b7ea94afe1ac9.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/d2ccbbb28d0cf36fd654afc97be191cb59eedb0c625ae68f942b7ea94afe1ac9.body index bc8818b1..541c812c 100644 Binary files a/packages/repco-core/test/fixtures/datasource-cba/basic1/d2ccbbb28d0cf36fd654afc97be191cb59eedb0c625ae68f942b7ea94afe1ac9.body and b/packages/repco-core/test/fixtures/datasource-cba/basic1/d2ccbbb28d0cf36fd654afc97be191cb59eedb0c625ae68f942b7ea94afe1ac9.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/d2ccbbb28d0cf36fd654afc97be191cb59eedb0c625ae68f942b7ea94afe1ac9.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/d2ccbbb28d0cf36fd654afc97be191cb59eedb0c625ae68f942b7ea94afe1ac9.meta.json index 1875b03f..ff2c575d 100644 --- a/packages/repco-core/test/fixtures/datasource-cba/basic1/d2ccbbb28d0cf36fd654afc97be191cb59eedb0c625ae68f942b7ea94afe1ac9.meta.json +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/d2ccbbb28d0cf36fd654afc97be191cb59eedb0c625ae68f942b7ea94afe1ac9.meta.json @@ -1 +1 @@ -{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/categories?include=40&per_page=1","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 15 Nov 2023 10:04:55 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=k6c0rreg97qaiqd5gkg6ll4q7t; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","1","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file +{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/categories?include=40&per_page=1","status":301,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:11 GMT","Content-Type","text/html","Content-Length","178","Connection","keep-alive","Location","https://cba.media/wp-json/wp/v2/categories?include=40&per_page=1"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/db1c631f606ff68d06214ccab426b949ade9dac58f870bc87b0b2f2cbd28a279.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/db1c631f606ff68d06214ccab426b949ade9dac58f870bc87b0b2f2cbd28a279.body new file mode 100644 index 00000000..7f1a7f6d Binary files /dev/null and b/packages/repco-core/test/fixtures/datasource-cba/basic1/db1c631f606ff68d06214ccab426b949ade9dac58f870bc87b0b2f2cbd28a279.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/db1c631f606ff68d06214ccab426b949ade9dac58f870bc87b0b2f2cbd28a279.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/db1c631f606ff68d06214ccab426b949ade9dac58f870bc87b0b2f2cbd28a279.meta.json new file mode 100644 index 00000000..826eace5 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/db1c631f606ff68d06214ccab426b949ade9dac58f870bc87b0b2f2cbd28a279.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.media/wp-json/wp/v2/tags?include=1494%2C1870&per_page=2","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:10 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=q2bn0u6c6tltfoibjqmdv5kakt; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/e028f6b0ea8518f57705f691732248bf6e64f8222fafa402de5236419d98db76.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/e028f6b0ea8518f57705f691732248bf6e64f8222fafa402de5236419d98db76.body index 705f13d2..541c812c 100644 Binary files a/packages/repco-core/test/fixtures/datasource-cba/basic1/e028f6b0ea8518f57705f691732248bf6e64f8222fafa402de5236419d98db76.body and b/packages/repco-core/test/fixtures/datasource-cba/basic1/e028f6b0ea8518f57705f691732248bf6e64f8222fafa402de5236419d98db76.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/e028f6b0ea8518f57705f691732248bf6e64f8222fafa402de5236419d98db76.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/e028f6b0ea8518f57705f691732248bf6e64f8222fafa402de5236419d98db76.meta.json index 50d18b80..fa67d5fd 100644 --- a/packages/repco-core/test/fixtures/datasource-cba/basic1/e028f6b0ea8518f57705f691732248bf6e64f8222fafa402de5236419d98db76.meta.json +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/e028f6b0ea8518f57705f691732248bf6e64f8222fafa402de5236419d98db76.meta.json @@ -1 +1 @@ -{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/tags?include=568&per_page=1","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 15 Nov 2023 10:04:55 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=ephqggtjoeg1fhsj26cdnk9lbu; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","1","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file +{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/tags?include=568&per_page=1","status":301,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:10 GMT","Content-Type","text/html","Content-Length","178","Connection","keep-alive","Location","https://cba.media/wp-json/wp/v2/tags?include=568&per_page=1"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/f15184e9edc1110dd0d5ca1c908c7d780e3635257eaf939ac50e03fe79762d39.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/f15184e9edc1110dd0d5ca1c908c7d780e3635257eaf939ac50e03fe79762d39.body index 8add11c3..541c812c 100644 Binary files a/packages/repco-core/test/fixtures/datasource-cba/basic1/f15184e9edc1110dd0d5ca1c908c7d780e3635257eaf939ac50e03fe79762d39.body and b/packages/repco-core/test/fixtures/datasource-cba/basic1/f15184e9edc1110dd0d5ca1c908c7d780e3635257eaf939ac50e03fe79762d39.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/f15184e9edc1110dd0d5ca1c908c7d780e3635257eaf939ac50e03fe79762d39.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/f15184e9edc1110dd0d5ca1c908c7d780e3635257eaf939ac50e03fe79762d39.meta.json index e6a5bc45..340941fb 100644 --- a/packages/repco-core/test/fixtures/datasource-cba/basic1/f15184e9edc1110dd0d5ca1c908c7d780e3635257eaf939ac50e03fe79762d39.meta.json +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/f15184e9edc1110dd0d5ca1c908c7d780e3635257eaf939ac50e03fe79762d39.meta.json @@ -1 +1 @@ -{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/tags?include=72480%2C72530&per_page=2","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 15 Nov 2023 10:04:54 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=qgogo1bt3igpemt0in3jb4h7p6; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file +{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/tags?include=72480%2C72530&per_page=2","status":301,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:09 GMT","Content-Type","text/html","Content-Length","178","Connection","keep-alive","Location","https://cba.media/wp-json/wp/v2/tags?include=72480%2C72530&per_page=2"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/f6ce4602fcc40310bd7ccdda02e5ac90d6ebcca68090d53b30a626edb38a7f8c.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/f6ce4602fcc40310bd7ccdda02e5ac90d6ebcca68090d53b30a626edb38a7f8c.body new file mode 100644 index 00000000..7bc79694 Binary files /dev/null and b/packages/repco-core/test/fixtures/datasource-cba/basic1/f6ce4602fcc40310bd7ccdda02e5ac90d6ebcca68090d53b30a626edb38a7f8c.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/f6ce4602fcc40310bd7ccdda02e5ac90d6ebcca68090d53b30a626edb38a7f8c.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/f6ce4602fcc40310bd7ccdda02e5ac90d6ebcca68090d53b30a626edb38a7f8c.meta.json new file mode 100644 index 00000000..8ea97a23 --- /dev/null +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/f6ce4602fcc40310bd7ccdda02e5ac90d6ebcca68090d53b30a626edb38a7f8c.meta.json @@ -0,0 +1 @@ +{"method":"GET","url":"https://cba.media/wp-json/wp/v2/media?parent=1777%2C2444&per_page=100","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:09 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=eip08epg151ic8a2q6489cf65m; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","Link","; rel=\"https://api.w.org/\"","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","2","X-WP-TotalPages","1","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/fca8245d75b156dc81b79019688e7ce1cc8f07a9bfd72ebe61d4481e4a8ba5d4.body b/packages/repco-core/test/fixtures/datasource-cba/basic1/fca8245d75b156dc81b79019688e7ce1cc8f07a9bfd72ebe61d4481e4a8ba5d4.body index f9c94b96..541c812c 100644 Binary files a/packages/repco-core/test/fixtures/datasource-cba/basic1/fca8245d75b156dc81b79019688e7ce1cc8f07a9bfd72ebe61d4481e4a8ba5d4.body and b/packages/repco-core/test/fixtures/datasource-cba/basic1/fca8245d75b156dc81b79019688e7ce1cc8f07a9bfd72ebe61d4481e4a8ba5d4.body differ diff --git a/packages/repco-core/test/fixtures/datasource-cba/basic1/fca8245d75b156dc81b79019688e7ce1cc8f07a9bfd72ebe61d4481e4a8ba5d4.meta.json b/packages/repco-core/test/fixtures/datasource-cba/basic1/fca8245d75b156dc81b79019688e7ce1cc8f07a9bfd72ebe61d4481e4a8ba5d4.meta.json index 1a1deac8..3b0396a3 100644 --- a/packages/repco-core/test/fixtures/datasource-cba/basic1/fca8245d75b156dc81b79019688e7ce1cc8f07a9bfd72ebe61d4481e4a8ba5d4.meta.json +++ b/packages/repco-core/test/fixtures/datasource-cba/basic1/fca8245d75b156dc81b79019688e7ce1cc8f07a9bfd72ebe61d4481e4a8ba5d4.meta.json @@ -1 +1 @@ -{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/categories?include=0&per_page=1","status":200,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 15 Nov 2023 10:04:55 GMT","Content-Type","application/json; charset=UTF-8","Transfer-Encoding","chunked","Connection","keep-alive","Set-Cookie","PHPSESSID=1gau5bg6aaqpi594p8t3bmd2i4; path=/","Expires","Thu, 19 Nov 1981 08:52:00 GMT","Cache-Control","no-store, no-cache, must-revalidate","Pragma","no-cache","Set-Cookie","cba_language=%2A","X-Robots-Tag","noindex","X-Content-Type-Options","nosniff","Access-Control-Allow-Headers","Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type","X-WP-Total","51","X-WP-TotalPages","51","Link","; rel=\"next\"","Allow","GET","Access-Control-Expose-Headers","X-WP-Total, X-WP-TotalPages, X-WP-Languages","Vary","Origin","Content-Encoding","gzip"],"trailers":null} \ No newline at end of file +{"method":"GET","url":"https://cba.fro.at/wp-json/wp/v2/categories?include=0&per_page=1","status":301,"headers":["Server","nginx/1.24.0 (Ubuntu)","Date","Wed, 13 Mar 2024 11:03:11 GMT","Content-Type","text/html","Content-Length","178","Connection","keep-alive","Location","https://cba.media/wp-json/wp/v2/categories?include=0&per_page=1"],"trailers":null} \ No newline at end of file diff --git a/packages/repco-core/test/fixtures/datasource-cba/entities.json b/packages/repco-core/test/fixtures/datasource-cba/entities.json index a014c18b..e81ebfd2 100644 --- a/packages/repco-core/test/fixtures/datasource-cba/entities.json +++ b/packages/repco-core/test/fixtures/datasource-cba/entities.json @@ -1 +1 @@ -[{"title":"Radio FRO Beeps","pubDate":"1998-10-17T00:00:00.000Z","PrimaryGrouping":{"title":"Musikredaktion"},"Concepts":[{"name":"Jingle"},{"name":"Jingle"},{"name":"Radio FRO"},{"name":"Signation"}],"MediaAssets":[{"mediaType":"audio","title":"Radio FRO Beeps","Files":[{"contentUrl":"https://cba.fro.at/wp-content/uploads/9/0/0000021209/musikredaktion-09-12-2003-16-34-35.mp3"}]},{"mediaType":"image","title":"fro_logo_w_os","Files":[{"contentUrl":"https://cba.fro.at/wp-content/uploads/3/0/0000348503/fro-logo-w-os.jpg"}]}]},{"title":"1959: Revolution in Kuba. Teil 2","pubDate":"1999-05-13T00:00:00.000Z","PrimaryGrouping":{"title":"Context XXI"},"Concepts":[{"name":"Gesellschaftspolitik"},{"name":"Geschichte wird gemacht"},{"name":"Kuba"}],"MediaAssets":[{"mediaType":"image","title":"Radio Orange Logo","Files":[{"contentUrl":"https://cba.fro.at/wp-content/uploads/7/0/0000474207/orange.gif"}]}]}] \ No newline at end of file +[{"title":{"de":{"value":"Radio FRO Beeps"}},"pubDate":"1998-10-17T00:00:00.000Z","PrimaryGrouping":{"title":{"de":{"value":"Musikredaktion"}}},"Concepts":[{"name":{"de":{"value":"Jingle"}}},{"name":{"de":{"value":"Jingle"}}},{"name":{"de":{"value":"Radio FRO"}}},{"name":{"de":{"value":"Signation"}}}],"MediaAssets":[{"mediaType":"audio","title":{"de":{"value":"Radio FRO Beeps"}},"Files":[{"contentUrl":"https://cba.media/wp-content/uploads/9/0/0000021209/musikredaktion-09-12-2003-16-34-35.mp3"}]},{"mediaType":"image","title":{"de":{"value":"fro_logo_w_os"}},"Files":[{"contentUrl":"https://cba.media/wp-content/uploads/3/0/0000348503/fro-logo-w-os.jpg"}]}]},{"title":{"de":{"value":"1959: Revolution in Kuba. Teil 2"}},"pubDate":"1999-05-13T00:00:00.000Z","PrimaryGrouping":{"title":{"de":{"value":"Context XXI"}}},"Concepts":[{"name":{"de":{"value":"Gesellschaftspolitik"}}},{"name":{"de":{"value":"Geschichte wird gemacht"}}},{"name":{"de":{"value":"Kuba"}}}],"MediaAssets":[{"mediaType":"image","title":{"de":{"value":"Radio Orange Logo"}},"Files":[{"contentUrl":"https://cba.media/wp-content/uploads/7/0/0000474207/orange.gif"}]}]}] \ No newline at end of file diff --git a/packages/repco-core/test/sync.ts b/packages/repco-core/test/sync.ts index f6d6eea4..525c0609 100644 --- a/packages/repco-core/test/sync.ts +++ b/packages/repco-core/test/sync.ts @@ -13,8 +13,13 @@ test('simple sync', async (assert) => { type: 'ContentItem', content: { title: 'foo', - content: 'hello', contentFormat: 'text/plain', + content: 'hello', + subtitle: 'asdf', + summary: 'yoo', + contentUrl: {}, + removed: false, + originalLanguages: {}, }, } await repo1.saveEntity(input) diff --git a/packages/repco-frontend/app/components/mediaDisplay/media-display-table.tsx b/packages/repco-frontend/app/components/mediaDisplay/media-display-table.tsx index c3a4b4e0..cfeeaa73 100644 --- a/packages/repco-frontend/app/components/mediaDisplay/media-display-table.tsx +++ b/packages/repco-frontend/app/components/mediaDisplay/media-display-table.tsx @@ -48,7 +48,7 @@ export function MediaDisplayTable({ {i + 1} {mediaAsset.mediaType} - {mediaAsset.title} + {mediaAsset.title[Object.keys(mediaAsset?.title)[0]]['value']} { diff --git a/packages/repco-frontend/app/graphql/queries/content-items.ts b/packages/repco-frontend/app/graphql/queries/content-items.ts index 53429375..150fee44 100644 --- a/packages/repco-frontend/app/graphql/queries/content-items.ts +++ b/packages/repco-frontend/app/graphql/queries/content-items.ts @@ -8,6 +8,7 @@ export const ContentItemsQuery = gql` $before: Cursor $orderBy: [ContentItemsOrderBy!] $filter: ContentItemFilter + $condition: ContentItemCondition ) { contentItems( first: $first @@ -16,6 +17,7 @@ export const ContentItemsQuery = gql` before: $before orderBy: $orderBy filter: $filter + condition: $condition ) { pageInfo { startCursor diff --git a/packages/repco-frontend/app/graphql/queries/dashboard.ts b/packages/repco-frontend/app/graphql/queries/dashboard.ts index fa10f476..9c7ff4db 100644 --- a/packages/repco-frontend/app/graphql/queries/dashboard.ts +++ b/packages/repco-frontend/app/graphql/queries/dashboard.ts @@ -35,11 +35,7 @@ export const DashboardQuery = gql` totalCount nodes { name - contentItems( - filter: { - pubDate: { greaterThanOrEqualTo: $start, lessThanOrEqualTo: $end } - } - ) { + contentItems { totalCount } } @@ -61,6 +57,9 @@ export const DashboardQuery = gql` } dataSources { totalCount + nodes { + config + } } sourceRecords { totalCount diff --git a/packages/repco-frontend/app/graphql/types.ts b/packages/repco-frontend/app/graphql/types.ts index f6a23998..30ca6493 100644 --- a/packages/repco-frontend/app/graphql/types.ts +++ b/packages/repco-frontend/app/graphql/types.ts @@ -480,7 +480,7 @@ export type Chapter = { revision?: Maybe revisionId: Scalars['String'] start: Scalars['Float'] - title: Scalars['String'] + title: Scalars['JSON'] type: Scalars['String'] uid: Scalars['String'] } @@ -496,7 +496,7 @@ export type ChapterCondition = { /** Checks for equality with the object’s `start` field. */ start?: InputMaybe /** Checks for equality with the object’s `title` field. */ - title?: InputMaybe + title?: InputMaybe /** Checks for equality with the object’s `type` field. */ type?: InputMaybe /** Checks for equality with the object’s `uid` field. */ @@ -524,7 +524,7 @@ export type ChapterFilter = { /** Filter by the object’s `start` field. */ start?: InputMaybe /** Filter by the object’s `title` field. */ - title?: InputMaybe + title?: InputMaybe /** Filter by the object’s `type` field. */ type?: InputMaybe /** Filter by the object’s `uid` field. */ @@ -831,11 +831,11 @@ export type Concept = { conceptsBySameAs: ConceptsConnection /** Reads and enables pagination through a set of `ContentItem`. */ contentItems: ConceptContentItemsByConceptToContentItemAAndBManyToManyConnection - description?: Maybe - kind: ConceptKind + description?: Maybe + kind: Scalars['String'] /** Reads and enables pagination through a set of `MediaAsset`. */ mediaAssets: ConceptMediaAssetsByConceptToMediaAssetAAndBManyToManyConnection - name: Scalars['String'] + name: Scalars['JSON'] originNamespace?: Maybe /** Reads a single `Concept` that is related to this `Concept`. */ parent?: Maybe @@ -846,7 +846,7 @@ export type Concept = { /** Reads a single `Concept` that is related to this `Concept`. */ sameAs?: Maybe sameAsUid?: Maybe - summary?: Maybe + summary?: Maybe uid: Scalars['String'] wikidataIdentifier?: Maybe } @@ -991,12 +991,14 @@ export type ConceptConceptsByConceptSameAsUidAndParentUidManyToManyEdgeChildConc /** A condition to be used against `Concept` object types. All fields are tested for equality and combined with a logical ‘and.’ */ export type ConceptCondition = { + /** Filters the list to ContentItems that have a specific keyword in title. */ + containsName?: InputMaybe /** Checks for equality with the object’s `description` field. */ - description?: InputMaybe + description?: InputMaybe /** Checks for equality with the object’s `kind` field. */ - kind?: InputMaybe + kind?: InputMaybe /** Checks for equality with the object’s `name` field. */ - name?: InputMaybe + name?: InputMaybe /** Checks for equality with the object’s `originNamespace` field. */ originNamespace?: InputMaybe /** Checks for equality with the object’s `parentUid` field. */ @@ -1006,7 +1008,7 @@ export type ConceptCondition = { /** Checks for equality with the object’s `sameAsUid` field. */ sameAsUid?: InputMaybe /** Checks for equality with the object’s `summary` field. */ - summary?: InputMaybe + summary?: InputMaybe /** Checks for equality with the object’s `uid` field. */ uid?: InputMaybe /** Checks for equality with the object’s `wikidataIdentifier` field. */ @@ -1062,11 +1064,11 @@ export type ConceptFilter = { /** Some related `conceptsBySameAs` exist. */ conceptsBySameAsExist?: InputMaybe /** Filter by the object’s `description` field. */ - description?: InputMaybe + description?: InputMaybe /** Filter by the object’s `kind` field. */ - kind?: InputMaybe + kind?: InputMaybe /** Filter by the object’s `name` field. */ - name?: InputMaybe + name?: InputMaybe /** Negates the expression. */ not?: InputMaybe /** Checks for any expressions in this list. */ @@ -1090,7 +1092,7 @@ export type ConceptFilter = { /** Filter by the object’s `sameAsUid` field. */ sameAsUid?: InputMaybe /** Filter by the object’s `summary` field. */ - summary?: InputMaybe + summary?: InputMaybe /** Filter by the object’s `uid` field. */ uid?: InputMaybe /** Filter by the object’s `wikidataIdentifier` field. */ @@ -1102,32 +1104,6 @@ export enum ConceptKind { Tag = 'TAG', } -/** A filter to be used against ConceptKind fields. All fields are combined with a logical ‘and.’ */ -export type ConceptKindFilter = { - /** Not equal to the specified value, treating null like an ordinary value. */ - distinctFrom?: InputMaybe - /** Equal to the specified value. */ - equalTo?: InputMaybe - /** Greater than the specified value. */ - greaterThan?: InputMaybe - /** Greater than or equal to the specified value. */ - greaterThanOrEqualTo?: InputMaybe - /** Included in the specified list. */ - in?: InputMaybe> - /** Is null (if `true` is specified) or is not null (if `false` is specified). */ - isNull?: InputMaybe - /** Less than the specified value. */ - lessThan?: InputMaybe - /** Less than or equal to the specified value. */ - lessThanOrEqualTo?: InputMaybe - /** Equal to the specified value, treating null like an ordinary value. */ - notDistinctFrom?: InputMaybe - /** Not equal to the specified value. */ - notEqualTo?: InputMaybe - /** Not included in the specified list. */ - notIn?: InputMaybe> -} - /** A connection to a list of `MediaAsset` values, with data from `_ConceptToMediaAsset`. */ export type ConceptMediaAssetsByConceptToMediaAssetAAndBManyToManyConnection = { /** A list of edges which contains the `MediaAsset`, info from the `_ConceptToMediaAsset`, and the cursor to aid in pagination. */ @@ -1226,7 +1202,7 @@ export type ContentGrouping = { contentItems: ContentGroupingContentItemsByContentGroupingToContentItemAAndBManyToManyConnection /** Reads and enables pagination through a set of `ContentItem`. */ contentItemsByPrimaryGrouping: ContentItemsConnection - description?: Maybe + description?: Maybe groupingType: Scalars['String'] /** Reads a single `License` that is related to this `ContentGrouping`. */ license?: Maybe @@ -1240,9 +1216,9 @@ export type ContentGrouping = { revisionId: Scalars['String'] startingDate?: Maybe subtitle?: Maybe - summary?: Maybe + summary?: Maybe terminationDate?: Maybe - title: Scalars['String'] + title: Scalars['JSON'] uid: Scalars['String'] variant: ContentGroupingVariant } @@ -1301,7 +1277,7 @@ export type ContentGroupingCondition = { /** Checks for equality with the object’s `broadcastSchedule` field. */ broadcastSchedule?: InputMaybe /** Checks for equality with the object’s `description` field. */ - description?: InputMaybe + description?: InputMaybe /** Checks for equality with the object’s `groupingType` field. */ groupingType?: InputMaybe /** Checks for equality with the object’s `licenseUid` field. */ @@ -1313,11 +1289,11 @@ export type ContentGroupingCondition = { /** Checks for equality with the object’s `subtitle` field. */ subtitle?: InputMaybe /** Checks for equality with the object’s `summary` field. */ - summary?: InputMaybe + summary?: InputMaybe /** Checks for equality with the object’s `terminationDate` field. */ terminationDate?: InputMaybe /** Checks for equality with the object’s `title` field. */ - title?: InputMaybe + title?: InputMaybe /** Checks for equality with the object’s `uid` field. */ uid?: InputMaybe /** Checks for equality with the object’s `variant` field. */ @@ -1372,7 +1348,7 @@ export type ContentGroupingFilter = { /** Some related `contentItemsByPrimaryGrouping` exist. */ contentItemsByPrimaryGroupingExist?: InputMaybe /** Filter by the object’s `description` field. */ - description?: InputMaybe + description?: InputMaybe /** Filter by the object’s `groupingType` field. */ groupingType?: InputMaybe /** Filter by the object’s `license` relation. */ @@ -1394,11 +1370,11 @@ export type ContentGroupingFilter = { /** Filter by the object’s `subtitle` field. */ subtitle?: InputMaybe /** Filter by the object’s `summary` field. */ - summary?: InputMaybe + summary?: InputMaybe /** Filter by the object’s `terminationDate` field. */ terminationDate?: InputMaybe /** Filter by the object’s `title` field. */ - title?: InputMaybe + title?: InputMaybe /** Filter by the object’s `uid` field. */ uid?: InputMaybe /** Filter by the object’s `variant` field. */ @@ -1576,10 +1552,11 @@ export type ContentItem = { broadcastEvents: BroadcastEventsConnection /** Reads and enables pagination through a set of `Concept`. */ concepts: ContentItemConceptsByConceptToContentItemBAndAManyToManyConnection - content: Scalars['String'] + content: Scalars['JSON'] contentFormat: Scalars['String'] /** Reads and enables pagination through a set of `ContentGrouping`. */ contentGroupings: ContentItemContentGroupingsByContentGroupingToContentItemBAndAManyToManyConnection + contentUrl: Scalars['JSON'] /** Reads and enables pagination through a set of `Contribution`. */ contributions: ContentItemContributionsByContentItemToContributionAAndBManyToManyConnection /** Reads a single `License` that is related to this `ContentItem`. */ @@ -1587,6 +1564,7 @@ export type ContentItem = { licenseUid?: Maybe /** Reads and enables pagination through a set of `MediaAsset`. */ mediaAssets: ContentItemMediaAssetsByContentItemToMediaAssetAAndBManyToManyConnection + originalLanguages?: Maybe /** Reads a single `ContentGrouping` that is related to this `ContentItem`. */ primaryGrouping?: Maybe primaryGroupingUid?: Maybe @@ -1596,12 +1574,13 @@ export type ContentItem = { publicationServiceUid?: Maybe /** Reads and enables pagination through a set of `PublicationService`. */ publicationServicesByBroadcastEventContentItemUidAndBroadcastServiceUid: ContentItemPublicationServicesByBroadcastEventContentItemUidAndBroadcastServiceUidManyToManyConnection + removed: Scalars['Boolean'] /** Reads a single `Revision` that is related to this `ContentItem`. */ revision?: Maybe revisionId: Scalars['String'] - subtitle?: Maybe - summary?: Maybe - title: Scalars['String'] + subtitle?: Maybe + summary?: Maybe + title: Scalars['JSON'] uid: Scalars['String'] } @@ -1713,26 +1692,36 @@ export type ContentItemConceptsByConceptToContentItemBAndAManyToManyEdge_Concept * for equality and combined with a logical ‘and.’ */ export type ContentItemCondition = { + /** Filters the list to ContentItems that are in the list of uids. */ + byUids?: InputMaybe /** Checks for equality with the object’s `content` field. */ - content?: InputMaybe + content?: InputMaybe /** Checks for equality with the object’s `contentFormat` field. */ contentFormat?: InputMaybe + /** Checks for equality with the object’s `contentUrl` field. */ + contentUrl?: InputMaybe /** Checks for equality with the object’s `licenseUid` field. */ licenseUid?: InputMaybe + /** Checks for equality with the object’s `originalLanguages` field. */ + originalLanguages?: InputMaybe /** Checks for equality with the object’s `primaryGroupingUid` field. */ primaryGroupingUid?: InputMaybe /** Checks for equality with the object’s `pubDate` field. */ pubDate?: InputMaybe /** Checks for equality with the object’s `publicationServiceUid` field. */ publicationServiceUid?: InputMaybe + /** Checks for equality with the object’s `removed` field. */ + removed?: InputMaybe /** Checks for equality with the object’s `revisionId` field. */ revisionId?: InputMaybe + /** Filters the list to ContentItems that have a specific keyword. */ + search?: InputMaybe /** Checks for equality with the object’s `subtitle` field. */ - subtitle?: InputMaybe + subtitle?: InputMaybe /** Checks for equality with the object’s `summary` field. */ - summary?: InputMaybe + summary?: InputMaybe /** Checks for equality with the object’s `title` field. */ - title?: InputMaybe + title?: InputMaybe /** Checks for equality with the object’s `uid` field. */ uid?: InputMaybe } @@ -1820,9 +1809,11 @@ export type ContentItemFilter = { /** Some related `broadcastEvents` exist. */ broadcastEventsExist?: InputMaybe /** Filter by the object’s `content` field. */ - content?: InputMaybe + content?: InputMaybe /** Filter by the object’s `contentFormat` field. */ contentFormat?: InputMaybe + /** Filter by the object’s `contentUrl` field. */ + contentUrl?: InputMaybe /** Filter by the object’s `license` relation. */ license?: InputMaybe /** A related `license` exists. */ @@ -1833,6 +1824,8 @@ export type ContentItemFilter = { not?: InputMaybe /** Checks for any expressions in this list. */ or?: InputMaybe> + /** Filter by the object’s `originalLanguages` field. */ + originalLanguages?: InputMaybe /** Filter by the object’s `primaryGrouping` relation. */ primaryGrouping?: InputMaybe /** A related `primaryGrouping` exists. */ @@ -1847,16 +1840,18 @@ export type ContentItemFilter = { publicationServiceExists?: InputMaybe /** Filter by the object’s `publicationServiceUid` field. */ publicationServiceUid?: InputMaybe + /** Filter by the object’s `removed` field. */ + removed?: InputMaybe /** Filter by the object’s `revision` relation. */ revision?: InputMaybe /** Filter by the object’s `revisionId` field. */ revisionId?: InputMaybe /** Filter by the object’s `subtitle` field. */ - subtitle?: InputMaybe + subtitle?: InputMaybe /** Filter by the object’s `summary` field. */ - summary?: InputMaybe + summary?: InputMaybe /** Filter by the object’s `title` field. */ - title?: InputMaybe + title?: InputMaybe /** Filter by the object’s `uid` field. */ uid?: InputMaybe } @@ -1971,9 +1966,13 @@ export enum ContentItemsOrderBy { ContentDesc = 'CONTENT_DESC', ContentFormatAsc = 'CONTENT_FORMAT_ASC', ContentFormatDesc = 'CONTENT_FORMAT_DESC', + ContentUrlAsc = 'CONTENT_URL_ASC', + ContentUrlDesc = 'CONTENT_URL_DESC', LicenseUidAsc = 'LICENSE_UID_ASC', LicenseUidDesc = 'LICENSE_UID_DESC', Natural = 'NATURAL', + OriginalLanguagesAsc = 'ORIGINAL_LANGUAGES_ASC', + OriginalLanguagesDesc = 'ORIGINAL_LANGUAGES_DESC', PrimaryGroupingUidAsc = 'PRIMARY_GROUPING_UID_ASC', PrimaryGroupingUidDesc = 'PRIMARY_GROUPING_UID_DESC', PrimaryKeyAsc = 'PRIMARY_KEY_ASC', @@ -1982,6 +1981,8 @@ export enum ContentItemsOrderBy { PublicationServiceUidDesc = 'PUBLICATION_SERVICE_UID_DESC', PubDateAsc = 'PUB_DATE_ASC', PubDateDesc = 'PUB_DATE_DESC', + RemovedAsc = 'REMOVED_ASC', + RemovedDesc = 'REMOVED_DESC', RevisionIdAsc = 'REVISION_ID_ASC', RevisionIdDesc = 'REVISION_ID_DESC', SubtitleAsc = 'SUBTITLE_ASC', @@ -2224,7 +2225,7 @@ export type Contributor = { personOrOrganization: Scalars['String'] /** Reads a single `File` that is related to this `Contributor`. */ profilePicture?: Maybe - profilePictureUid: Scalars['String'] + profilePictureUid?: Maybe /** Reads and enables pagination through a set of `PublicationService`. */ publicationServicesByPublisher: PublicationServicesConnection /** Reads a single `Revision` that is related to this `Contributor`. */ @@ -2327,6 +2328,8 @@ export type ContributorFilter = { personOrOrganization?: InputMaybe /** Filter by the object’s `profilePicture` relation. */ profilePicture?: InputMaybe + /** A related `profilePicture` exists. */ + profilePictureExists?: InputMaybe /** Filter by the object’s `profilePictureUid` field. */ profilePictureUid?: InputMaybe /** Filter by the object’s `publicationServicesByPublisher` relation. */ @@ -2735,8 +2738,6 @@ export type File = { /** Reads a single `Revision` that is related to this `File`. */ revision?: Maybe revisionId: Scalars['String'] - /** Reads and enables pagination through a set of `Subtitle`. */ - subtitles: FileSubtitlesByFileToSubtitleAAndBManyToManyConnection uid: Scalars['String'] } @@ -2784,17 +2785,6 @@ export type FileMediaAssetsByTeaserImageArgs = { orderBy?: InputMaybe> } -export type FileSubtitlesArgs = { - after: InputMaybe - before: InputMaybe - condition: InputMaybe - filter: InputMaybe - first: InputMaybe - last: InputMaybe - offset: InputMaybe - orderBy?: InputMaybe> -} - /** A condition to be used against `File` object types. All fields are tested for equality and combined with a logical ‘and.’ */ export type FileCondition = { /** Checks for equality with the object’s `additionalMetadata` field. */ @@ -2935,41 +2925,6 @@ export type FileMediaAssetsByFileToMediaAssetAAndBManyToManyEdge_FileToMediaAsse orderBy?: InputMaybe> } -/** A connection to a list of `Subtitle` values, with data from `_FileToSubtitle`. */ -export type FileSubtitlesByFileToSubtitleAAndBManyToManyConnection = { - /** A list of edges which contains the `Subtitle`, info from the `_FileToSubtitle`, and the cursor to aid in pagination. */ - edges: Array - /** A list of `Subtitle` objects. */ - nodes: Array - /** Information to aid in pagination. */ - pageInfo: PageInfo - /** The count of *all* `Subtitle` you could get from the connection. */ - totalCount: Scalars['Int'] -} - -/** A `Subtitle` edge in the connection, with data from `_FileToSubtitle`. */ -export type FileSubtitlesByFileToSubtitleAAndBManyToManyEdge = { - /** Reads and enables pagination through a set of `_FileToSubtitle`. */ - _fileToSubtitlesByB: _FileToSubtitlesConnection - /** A cursor for use in pagination. */ - cursor?: Maybe - /** The `Subtitle` at the end of the edge. */ - node: Subtitle -} - -/** A `Subtitle` edge in the connection, with data from `_FileToSubtitle`. */ -export type FileSubtitlesByFileToSubtitleAAndBManyToManyEdge_FileToSubtitlesByBArgs = - { - after: InputMaybe - before: InputMaybe - condition: InputMaybe<_FileToSubtitleCondition> - filter: InputMaybe<_FileToSubtitleFilter> - first: InputMaybe - last: InputMaybe - offset: InputMaybe - orderBy?: InputMaybe> - } - /** A filter to be used against many `Contributor` object types. All fields are combined with a logical ‘and.’ */ export type FileToManyContributorFilter = { /** Every related `Contributor` matches the filter criteria. All fields are combined with a logical ‘and.’ */ @@ -3065,6 +3020,216 @@ export type FloatFilter = { notIn?: InputMaybe> } +/** All input for the `getChapterByLanguage` mutation. */ +export type GetChapterByLanguageInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: InputMaybe + languageCode?: InputMaybe +} + +/** The output of our `getChapterByLanguage` mutation. */ +export type GetChapterByLanguagePayload = { + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe + results?: Maybe>> +} + +/** The return type of our `getChapterByLanguage` mutation. */ +export type GetChapterByLanguageRecord = { + duration?: Maybe + revisionid?: Maybe + start?: Maybe + title?: Maybe + type?: Maybe + uid?: Maybe +} + +/** All input for the `getConceptByLanguage` mutation. */ +export type GetConceptByLanguageInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: InputMaybe + languageCode?: InputMaybe +} + +/** The output of our `getConceptByLanguage` mutation. */ +export type GetConceptByLanguagePayload = { + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe + results?: Maybe>> +} + +/** The return type of our `getConceptByLanguage` mutation. */ +export type GetConceptByLanguageRecord = { + description?: Maybe + kind?: Maybe + name?: Maybe + originnamespace?: Maybe + parentuid?: Maybe + revisionid?: Maybe + sameasuid?: Maybe + summary?: Maybe + uid?: Maybe + wikidataidentifier?: Maybe +} + +/** All input for the `getContentGroupingsByLanguage` mutation. */ +export type GetContentGroupingsByLanguageInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: InputMaybe + languageCode?: InputMaybe +} + +/** The output of our `getContentGroupingsByLanguage` mutation. */ +export type GetContentGroupingsByLanguagePayload = { + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe + results?: Maybe>> +} + +/** The return type of our `getContentGroupingsByLanguage` mutation. */ +export type GetContentGroupingsByLanguageRecord = { + broadcastschedule?: Maybe + description?: Maybe + groupingtype?: Maybe + licenseuid?: Maybe + revisionid?: Maybe + startingdate?: Maybe + subtitle?: Maybe + summary?: Maybe + terminationdate?: Maybe + title?: Maybe + uid?: Maybe + variant?: Maybe +} + +/** All input for the `getContentItemsByLanguage` mutation. */ +export type GetContentItemsByLanguageInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: InputMaybe + languageCode?: InputMaybe +} + +/** The output of our `getContentItemsByLanguage` mutation. */ +export type GetContentItemsByLanguagePayload = { + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe + results?: Maybe>> +} + +/** The return type of our `getContentItemsByLanguage` mutation. */ +export type GetContentItemsByLanguageRecord = { + content?: Maybe + contentformat?: Maybe + licenseuid?: Maybe + primarygroupinguid?: Maybe + pubdate?: Maybe + publicationserviceuid?: Maybe + revisionid?: Maybe + subtitle?: Maybe + summary?: Maybe + title?: Maybe + uid?: Maybe +} + +/** All input for the `getMediaAssetByLanguage` mutation. */ +export type GetMediaAssetByLanguageInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: InputMaybe + languageCode?: InputMaybe +} + +/** The output of our `getMediaAssetByLanguage` mutation. */ +export type GetMediaAssetByLanguagePayload = { + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe + results?: Maybe>> +} + +/** The return type of our `getMediaAssetByLanguage` mutation. */ +export type GetMediaAssetByLanguageRecord = { + description?: Maybe + duration?: Maybe + fileuid?: Maybe + licenseuid?: Maybe + mediatype?: Maybe + revisionid?: Maybe + teaserimageuid?: Maybe + title?: Maybe + uid?: Maybe +} + +/** All input for the `getPublicationServiceByLanguage` mutation. */ +export type GetPublicationServiceByLanguageInput = { + /** + * An arbitrary string value with no semantic meaning. Will be included in the + * payload verbatim. May be used to track mutations by the client. + */ + clientMutationId?: InputMaybe + languageCode?: InputMaybe +} + +/** The output of our `getPublicationServiceByLanguage` mutation. */ +export type GetPublicationServiceByLanguagePayload = { + /** + * The exact same `clientMutationId` that was provided in the mutation input, + * unchanged and unused. May be used by a client to track mutations. + */ + clientMutationId?: Maybe + /** Our root query field type. Allows us to run any query from our mutation payload. */ + query?: Maybe + results?: Maybe>> +} + +/** The return type of our `getPublicationServiceByLanguage` mutation. */ +export type GetPublicationServiceByLanguageRecord = { + address?: Maybe + medium?: Maybe + publisheruid?: Maybe + revisionid?: Maybe + title?: Maybe + uid?: Maybe +} + /** A filter to be used against Int fields. All fields are combined with a logical ‘and.’ */ export type IntFilter = { /** Not equal to the specified value, treating null like an ordinary value. */ @@ -3438,7 +3603,7 @@ export type MediaAsset = { contentItems: MediaAssetContentItemsByContentItemToMediaAssetBAndAManyToManyConnection /** Reads and enables pagination through a set of `Contribution`. */ contributions: MediaAssetContributionsByContributionToMediaAssetBAndAManyToManyConnection - description?: Maybe + description?: Maybe duration?: Maybe /** Reads and enables pagination through a set of `File`. */ files: MediaAssetFilesByFileToMediaAssetBAndAManyToManyConnection @@ -3449,16 +3614,12 @@ export type MediaAsset = { /** Reads a single `Revision` that is related to this `MediaAsset`. */ revision?: Maybe revisionId: Scalars['String'] - /** Reads and enables pagination through a set of `Subtitle`. */ - subtitles: SubtitlesConnection /** Reads a single `File` that is related to this `MediaAsset`. */ teaserImage?: Maybe teaserImageUid?: Maybe - title: Scalars['String'] + title: Scalars['JSON'] /** Reads and enables pagination through a set of `Transcript`. */ transcripts: TranscriptsConnection - /** Reads and enables pagination through a set of `Translation`. */ - translations: TranslationsConnection uid: Scalars['String'] } @@ -3517,17 +3678,6 @@ export type MediaAssetFilesArgs = { orderBy?: InputMaybe> } -export type MediaAssetSubtitlesArgs = { - after: InputMaybe - before: InputMaybe - condition: InputMaybe - filter: InputMaybe - first: InputMaybe - last: InputMaybe - offset: InputMaybe - orderBy?: InputMaybe> -} - export type MediaAssetTranscriptsArgs = { after: InputMaybe before: InputMaybe @@ -3539,17 +3689,6 @@ export type MediaAssetTranscriptsArgs = { orderBy?: InputMaybe> } -export type MediaAssetTranslationsArgs = { - after: InputMaybe - before: InputMaybe - condition: InputMaybe - filter: InputMaybe - first: InputMaybe - last: InputMaybe - offset: InputMaybe - orderBy?: InputMaybe> -} - /** A connection to a list of `Concept` values, with data from `_ConceptToMediaAsset`. */ export type MediaAssetConceptsByConceptToMediaAssetBAndAManyToManyConnection = { /** A list of edges which contains the `Concept`, info from the `_ConceptToMediaAsset`, and the cursor to aid in pagination. */ @@ -3591,7 +3730,7 @@ export type MediaAssetConceptsByConceptToMediaAssetBAndAManyToManyEdge_ConceptTo */ export type MediaAssetCondition = { /** Checks for equality with the object’s `description` field. */ - description?: InputMaybe + description?: InputMaybe /** Checks for equality with the object’s `duration` field. */ duration?: InputMaybe /** Checks for equality with the object’s `licenseUid` field. */ @@ -3603,7 +3742,7 @@ export type MediaAssetCondition = { /** Checks for equality with the object’s `teaserImageUid` field. */ teaserImageUid?: InputMaybe /** Checks for equality with the object’s `title` field. */ - title?: InputMaybe + title?: InputMaybe /** Checks for equality with the object’s `uid` field. */ uid?: InputMaybe } @@ -3726,7 +3865,7 @@ export type MediaAssetFilter = { /** Some related `chapters` exist. */ chaptersExist?: InputMaybe /** Filter by the object’s `description` field. */ - description?: InputMaybe + description?: InputMaybe /** Filter by the object’s `duration` field. */ duration?: InputMaybe /** Filter by the object’s `license` relation. */ @@ -3745,10 +3884,6 @@ export type MediaAssetFilter = { revision?: InputMaybe /** Filter by the object’s `revisionId` field. */ revisionId?: InputMaybe - /** Filter by the object’s `subtitles` relation. */ - subtitles?: InputMaybe - /** Some related `subtitles` exist. */ - subtitlesExist?: InputMaybe /** Filter by the object’s `teaserImage` relation. */ teaserImage?: InputMaybe /** A related `teaserImage` exists. */ @@ -3756,15 +3891,11 @@ export type MediaAssetFilter = { /** Filter by the object’s `teaserImageUid` field. */ teaserImageUid?: InputMaybe /** Filter by the object’s `title` field. */ - title?: InputMaybe + title?: InputMaybe /** Filter by the object’s `transcripts` relation. */ transcripts?: InputMaybe /** Some related `transcripts` exist. */ transcriptsExist?: InputMaybe - /** Filter by the object’s `translations` relation. */ - translations?: InputMaybe - /** Some related `translations` exist. */ - translationsExist?: InputMaybe /** Filter by the object’s `uid` field. */ uid?: InputMaybe } @@ -3779,16 +3910,6 @@ export type MediaAssetToManyChapterFilter = { some?: InputMaybe } -/** A filter to be used against many `Subtitle` object types. All fields are combined with a logical ‘and.’ */ -export type MediaAssetToManySubtitleFilter = { - /** Every related `Subtitle` matches the filter criteria. All fields are combined with a logical ‘and.’ */ - every?: InputMaybe - /** No related `Subtitle` matches the filter criteria. All fields are combined with a logical ‘and.’ */ - none?: InputMaybe - /** Some related `Subtitle` matches the filter criteria. All fields are combined with a logical ‘and.’ */ - some?: InputMaybe -} - /** A filter to be used against many `Transcript` object types. All fields are combined with a logical ‘and.’ */ export type MediaAssetToManyTranscriptFilter = { /** Every related `Transcript` matches the filter criteria. All fields are combined with a logical ‘and.’ */ @@ -3799,16 +3920,6 @@ export type MediaAssetToManyTranscriptFilter = { some?: InputMaybe } -/** A filter to be used against many `Translation` object types. All fields are combined with a logical ‘and.’ */ -export type MediaAssetToManyTranslationFilter = { - /** Every related `Translation` matches the filter criteria. All fields are combined with a logical ‘and.’ */ - every?: InputMaybe - /** No related `Translation` matches the filter criteria. All fields are combined with a logical ‘and.’ */ - none?: InputMaybe - /** Some related `Translation` matches the filter criteria. All fields are combined with a logical ‘and.’ */ - some?: InputMaybe -} - /** A connection to a list of `MediaAsset` values. */ export type MediaAssetsConnection = { /** A list of edges which contains the `MediaAsset` and cursor to aid in pagination. */ @@ -3940,6 +4051,46 @@ export type MetadatumFilter = { uid?: InputMaybe } +/** The root mutation type which contains root level fields which mutate data. */ +export type Mutation = { + getChapterByLanguage?: Maybe + getConceptByLanguage?: Maybe + getContentGroupingsByLanguage?: Maybe + getContentItemsByLanguage?: Maybe + getMediaAssetByLanguage?: Maybe + getPublicationServiceByLanguage?: Maybe +} + +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationGetChapterByLanguageArgs = { + input: GetChapterByLanguageInput +} + +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationGetConceptByLanguageArgs = { + input: GetConceptByLanguageInput +} + +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationGetContentGroupingsByLanguageArgs = { + input: GetContentGroupingsByLanguageInput +} + +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationGetContentItemsByLanguageArgs = { + input: GetContentItemsByLanguageInput +} + +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationGetMediaAssetByLanguageArgs = { + input: GetMediaAssetByLanguageInput +} + +/** The root mutation type which contains root level fields which mutate data. */ +export type MutationGetPublicationServiceByLanguageArgs = { + input: GetPublicationServiceByLanguageInput +} + /** Information about pagination in a connection. */ export type PageInfo = { /** When paginating forwards, the cursor to continue. */ @@ -3965,7 +4116,7 @@ export type PublicationService = { /** Reads and enables pagination through a set of `License`. */ licensesByContentItemPublicationServiceUidAndLicenseUid: PublicationServiceLicensesByContentItemPublicationServiceUidAndLicenseUidManyToManyConnection medium?: Maybe - name: Scalars['String'] + name: Scalars['JSON'] /** Reads a single `Contributor` that is related to this `PublicationService`. */ publisher?: Maybe publisherUid?: Maybe @@ -4043,7 +4194,7 @@ export type PublicationServiceCondition = { /** Checks for equality with the object’s `medium` field. */ medium?: InputMaybe /** Checks for equality with the object’s `name` field. */ - name?: InputMaybe + name?: InputMaybe /** Checks for equality with the object’s `publisherUid` field. */ publisherUid?: InputMaybe /** Checks for equality with the object’s `revisionId` field. */ @@ -4143,7 +4294,7 @@ export type PublicationServiceFilter = { /** Filter by the object’s `medium` field. */ medium?: InputMaybe /** Filter by the object’s `name` field. */ - name?: InputMaybe + name?: InputMaybe /** Negates the expression. */ not?: InputMaybe /** Checks for any expressions in this list. */ @@ -4327,15 +4478,9 @@ export type Query = { sourceRecord?: Maybe /** Reads and enables pagination through a set of `SourceRecord`. */ sourceRecords?: Maybe - subtitle?: Maybe - /** Reads and enables pagination through a set of `Subtitle`. */ - subtitles?: Maybe transcript?: Maybe /** Reads and enables pagination through a set of `Transcript`. */ transcripts?: Maybe - translation?: Maybe - /** Reads and enables pagination through a set of `Translation`. */ - translations?: Maybe ucan?: Maybe /** Reads and enables pagination through a set of `Ucan`. */ ucans?: Maybe @@ -4697,23 +4842,6 @@ export type QuerySourceRecordsArgs = { orderBy?: InputMaybe> } -/** The root query type which gives access points into the data universe. */ -export type QuerySubtitleArgs = { - uid: Scalars['String'] -} - -/** The root query type which gives access points into the data universe. */ -export type QuerySubtitlesArgs = { - after: InputMaybe - before: InputMaybe - condition: InputMaybe - filter: InputMaybe - first: InputMaybe - last: InputMaybe - offset: InputMaybe - orderBy?: InputMaybe> -} - /** The root query type which gives access points into the data universe. */ export type QueryTranscriptArgs = { uid: Scalars['String'] @@ -4731,23 +4859,6 @@ export type QueryTranscriptsArgs = { orderBy?: InputMaybe> } -/** The root query type which gives access points into the data universe. */ -export type QueryTranslationArgs = { - uid: Scalars['String'] -} - -/** The root query type which gives access points into the data universe. */ -export type QueryTranslationsArgs = { - after: InputMaybe - before: InputMaybe - condition: InputMaybe - filter: InputMaybe - first: InputMaybe - last: InputMaybe - offset: InputMaybe - orderBy?: InputMaybe> -} - /** The root query type which gives access points into the data universe. */ export type QueryUcanArgs = { cid: Scalars['String'] @@ -5091,6 +5202,7 @@ export type Revision = { filesByMediaAssetRevisionIdAndTeaserImageUid: RevisionFilesByMediaAssetRevisionIdAndTeaserImageUidManyToManyConnection id: Scalars['String'] isDeleted: Scalars['Boolean'] + languages: Scalars['String'] /** Reads and enables pagination through a set of `License`. */ licenses: LicensesConnection /** Reads and enables pagination through a set of `License`. */ @@ -5104,7 +5216,7 @@ export type Revision = { /** Reads and enables pagination through a set of `MediaAsset`. */ mediaAssetsByChapterRevisionIdAndMediaAssetUid: RevisionMediaAssetsByChapterRevisionIdAndMediaAssetUidManyToManyConnection /** Reads and enables pagination through a set of `MediaAsset`. */ - mediaAssetsBySubtitleRevisionIdAndMediaAssetUid: RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidManyToManyConnection + mediaAssetsByTranscriptRevisionIdAndMediaAssetUid: RevisionMediaAssetsByTranscriptRevisionIdAndMediaAssetUidManyToManyConnection /** Reads and enables pagination through a set of `Metadatum`. */ metadata: MetadataConnection /** Reads a single `Revision` that is related to this `Revision`. */ @@ -5123,8 +5235,8 @@ export type Revision = { revisionUris?: Maybe>> /** Reads and enables pagination through a set of `Revision`. */ revisionsByPrevRevisionId: RevisionsConnection - /** Reads and enables pagination through a set of `Subtitle`. */ - subtitles: SubtitlesConnection + /** Reads and enables pagination through a set of `Transcript`. */ + transcripts: TranscriptsConnection uid: Scalars['String'] } @@ -5395,7 +5507,7 @@ export type RevisionMediaAssetsByChapterRevisionIdAndMediaAssetUidArgs = { orderBy?: InputMaybe> } -export type RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidArgs = { +export type RevisionMediaAssetsByTranscriptRevisionIdAndMediaAssetUidArgs = { after: InputMaybe before: InputMaybe condition: InputMaybe @@ -5463,15 +5575,15 @@ export type RevisionRevisionsByPrevRevisionIdArgs = { orderBy?: InputMaybe> } -export type RevisionSubtitlesArgs = { +export type RevisionTranscriptsArgs = { after: InputMaybe before: InputMaybe - condition: InputMaybe - filter: InputMaybe + condition: InputMaybe + filter: InputMaybe first: InputMaybe last: InputMaybe offset: InputMaybe - orderBy?: InputMaybe> + orderBy?: InputMaybe> } /** A connection to a list of `Commit` values, with data from `_RevisionToCommit`. */ @@ -5588,6 +5700,10 @@ export type RevisionConceptsByConceptRevisionIdAndSameAsUidManyToManyEdgeConcept export type RevisionCondition = { /** Checks for equality with the object’s `agentDid` field. */ agentDid?: InputMaybe + /** Filters the list to Revisions that are in the list of uris. */ + byEntityUris?: InputMaybe + /** Filters the list to Revisions that are not in the list of uris. */ + byEntityUrisNot?: InputMaybe /** Checks for equality with the object’s `contentCid` field. */ contentCid?: InputMaybe /** Checks for equality with the object’s `dateCreated` field. */ @@ -5604,6 +5720,8 @@ export type RevisionCondition = { id?: InputMaybe /** Checks for equality with the object’s `isDeleted` field. */ isDeleted?: InputMaybe + /** Checks for equality with the object’s `languages` field. */ + languages?: InputMaybe /** Checks for equality with the object’s `prevRevisionId` field. */ prevRevisionId?: InputMaybe /** Checks for equality with the object’s `repoDid` field. */ @@ -5897,6 +6015,8 @@ export type RevisionFilter = { id?: InputMaybe /** Filter by the object’s `isDeleted` field. */ isDeleted?: InputMaybe + /** Filter by the object’s `languages` field. */ + languages?: InputMaybe /** Filter by the object’s `licenses` relation. */ licenses?: InputMaybe /** Some related `licenses` exist. */ @@ -5935,10 +6055,10 @@ export type RevisionFilter = { revisionsByPrevRevisionId?: InputMaybe /** Some related `revisionsByPrevRevisionId` exist. */ revisionsByPrevRevisionIdExist?: InputMaybe - /** Filter by the object’s `subtitles` relation. */ - subtitles?: InputMaybe - /** Some related `subtitles` exist. */ - subtitlesExist?: InputMaybe + /** Filter by the object’s `transcripts` relation. */ + transcripts?: InputMaybe + /** Some related `transcripts` exist. */ + transcriptsExist?: InputMaybe /** Filter by the object’s `uid` field. */ uid?: InputMaybe } @@ -6091,11 +6211,11 @@ export type RevisionMediaAssetsByChapterRevisionIdAndMediaAssetUidManyToManyEdge orderBy?: InputMaybe> } -/** A connection to a list of `MediaAsset` values, with data from `Subtitle`. */ -export type RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidManyToManyConnection = +/** A connection to a list of `MediaAsset` values, with data from `Transcript`. */ +export type RevisionMediaAssetsByTranscriptRevisionIdAndMediaAssetUidManyToManyConnection = { - /** A list of edges which contains the `MediaAsset`, info from the `Subtitle`, and the cursor to aid in pagination. */ - edges: Array + /** A list of edges which contains the `MediaAsset`, info from the `Transcript`, and the cursor to aid in pagination. */ + edges: Array /** A list of `MediaAsset` objects. */ nodes: Array /** Information to aid in pagination. */ @@ -6104,28 +6224,28 @@ export type RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidManyToManyCon totalCount: Scalars['Int'] } -/** A `MediaAsset` edge in the connection, with data from `Subtitle`. */ -export type RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidManyToManyEdge = +/** A `MediaAsset` edge in the connection, with data from `Transcript`. */ +export type RevisionMediaAssetsByTranscriptRevisionIdAndMediaAssetUidManyToManyEdge = { /** A cursor for use in pagination. */ cursor?: Maybe /** The `MediaAsset` at the end of the edge. */ node: MediaAsset - /** Reads and enables pagination through a set of `Subtitle`. */ - subtitles: SubtitlesConnection + /** Reads and enables pagination through a set of `Transcript`. */ + transcripts: TranscriptsConnection } -/** A `MediaAsset` edge in the connection, with data from `Subtitle`. */ -export type RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidManyToManyEdgeSubtitlesArgs = +/** A `MediaAsset` edge in the connection, with data from `Transcript`. */ +export type RevisionMediaAssetsByTranscriptRevisionIdAndMediaAssetUidManyToManyEdgeTranscriptsArgs = { after: InputMaybe before: InputMaybe - condition: InputMaybe - filter: InputMaybe + condition: InputMaybe + filter: InputMaybe first: InputMaybe last: InputMaybe offset: InputMaybe - orderBy?: InputMaybe> + orderBy?: InputMaybe> } /** A connection to a list of `PublicationService` values, with data from `BroadcastEvent`. */ @@ -6342,14 +6462,14 @@ export type RevisionToManyRevisionFilter = { some?: InputMaybe } -/** A filter to be used against many `Subtitle` object types. All fields are combined with a logical ‘and.’ */ -export type RevisionToManySubtitleFilter = { - /** Every related `Subtitle` matches the filter criteria. All fields are combined with a logical ‘and.’ */ - every?: InputMaybe - /** No related `Subtitle` matches the filter criteria. All fields are combined with a logical ‘and.’ */ - none?: InputMaybe - /** Some related `Subtitle` matches the filter criteria. All fields are combined with a logical ‘and.’ */ - some?: InputMaybe +/** A filter to be used against many `Transcript` object types. All fields are combined with a logical ‘and.’ */ +export type RevisionToManyTranscriptFilter = { + /** Every related `Transcript` matches the filter criteria. All fields are combined with a logical ‘and.’ */ + every?: InputMaybe + /** No related `Transcript` matches the filter criteria. All fields are combined with a logical ‘and.’ */ + none?: InputMaybe + /** Some related `Transcript` matches the filter criteria. All fields are combined with a logical ‘and.’ */ + some?: InputMaybe } /** A connection to a list of `Revision` values. */ @@ -6392,6 +6512,8 @@ export enum RevisionsOrderBy { IdDesc = 'ID_DESC', IsDeletedAsc = 'IS_DELETED_ASC', IsDeletedDesc = 'IS_DELETED_DESC', + LanguagesAsc = 'LANGUAGES_ASC', + LanguagesDesc = 'LANGUAGES_DESC', Natural = 'NATURAL', PrevRevisionIdAsc = 'PREV_REVISION_ID_ASC', PrevRevisionIdDesc = 'PREV_REVISION_ID_DESC', @@ -6641,143 +6763,18 @@ export type StringListFilter = { overlaps?: InputMaybe>> } -export type Subtitle = { - /** Reads and enables pagination through a set of `File`. */ - files: SubtitleFilesByFileToSubtitleBAndAManyToManyConnection - languageCode: Scalars['String'] - /** Reads a single `MediaAsset` that is related to this `Subtitle`. */ - mediaAsset?: Maybe - mediaAssetUid: Scalars['String'] - /** Reads a single `Revision` that is related to this `Subtitle`. */ - revision?: Maybe - revisionId: Scalars['String'] - uid: Scalars['String'] -} - -export type SubtitleFilesArgs = { - after: InputMaybe - before: InputMaybe - condition: InputMaybe - filter: InputMaybe - first: InputMaybe - last: InputMaybe - offset: InputMaybe - orderBy?: InputMaybe> -} - -/** - * A condition to be used against `Subtitle` object types. All fields are tested - * for equality and combined with a logical ‘and.’ - */ -export type SubtitleCondition = { - /** Checks for equality with the object’s `languageCode` field. */ - languageCode?: InputMaybe - /** Checks for equality with the object’s `mediaAssetUid` field. */ - mediaAssetUid?: InputMaybe - /** Checks for equality with the object’s `revisionId` field. */ - revisionId?: InputMaybe - /** Checks for equality with the object’s `uid` field. */ - uid?: InputMaybe -} - -/** A connection to a list of `File` values, with data from `_FileToSubtitle`. */ -export type SubtitleFilesByFileToSubtitleBAndAManyToManyConnection = { - /** A list of edges which contains the `File`, info from the `_FileToSubtitle`, and the cursor to aid in pagination. */ - edges: Array - /** A list of `File` objects. */ - nodes: Array - /** Information to aid in pagination. */ - pageInfo: PageInfo - /** The count of *all* `File` you could get from the connection. */ - totalCount: Scalars['Int'] -} - -/** A `File` edge in the connection, with data from `_FileToSubtitle`. */ -export type SubtitleFilesByFileToSubtitleBAndAManyToManyEdge = { - /** Reads and enables pagination through a set of `_FileToSubtitle`. */ - _fileToSubtitlesByA: _FileToSubtitlesConnection - /** A cursor for use in pagination. */ - cursor?: Maybe - /** The `File` at the end of the edge. */ - node: File -} - -/** A `File` edge in the connection, with data from `_FileToSubtitle`. */ -export type SubtitleFilesByFileToSubtitleBAndAManyToManyEdge_FileToSubtitlesByAArgs = - { - after: InputMaybe - before: InputMaybe - condition: InputMaybe<_FileToSubtitleCondition> - filter: InputMaybe<_FileToSubtitleFilter> - first: InputMaybe - last: InputMaybe - offset: InputMaybe - orderBy?: InputMaybe> - } - -/** A filter to be used against `Subtitle` object types. All fields are combined with a logical ‘and.’ */ -export type SubtitleFilter = { - /** Checks for all expressions in this list. */ - and?: InputMaybe> - /** Filter by the object’s `languageCode` field. */ - languageCode?: InputMaybe - /** Filter by the object’s `mediaAsset` relation. */ - mediaAsset?: InputMaybe - /** Filter by the object’s `mediaAssetUid` field. */ - mediaAssetUid?: InputMaybe - /** Negates the expression. */ - not?: InputMaybe - /** Checks for any expressions in this list. */ - or?: InputMaybe> - /** Filter by the object’s `revision` relation. */ - revision?: InputMaybe - /** Filter by the object’s `revisionId` field. */ - revisionId?: InputMaybe - /** Filter by the object’s `uid` field. */ - uid?: InputMaybe -} - -/** A connection to a list of `Subtitle` values. */ -export type SubtitlesConnection = { - /** A list of edges which contains the `Subtitle` and cursor to aid in pagination. */ - edges: Array - /** A list of `Subtitle` objects. */ - nodes: Array - /** Information to aid in pagination. */ - pageInfo: PageInfo - /** The count of *all* `Subtitle` you could get from the connection. */ - totalCount: Scalars['Int'] -} - -/** A `Subtitle` edge in the connection. */ -export type SubtitlesEdge = { - /** A cursor for use in pagination. */ - cursor?: Maybe - /** The `Subtitle` at the end of the edge. */ - node: Subtitle -} - -/** Methods to use when ordering `Subtitle`. */ -export enum SubtitlesOrderBy { - LanguageCodeAsc = 'LANGUAGE_CODE_ASC', - LanguageCodeDesc = 'LANGUAGE_CODE_DESC', - MediaAssetUidAsc = 'MEDIA_ASSET_UID_ASC', - MediaAssetUidDesc = 'MEDIA_ASSET_UID_DESC', - Natural = 'NATURAL', - PrimaryKeyAsc = 'PRIMARY_KEY_ASC', - PrimaryKeyDesc = 'PRIMARY_KEY_DESC', - RevisionIdAsc = 'REVISION_ID_ASC', - RevisionIdDesc = 'REVISION_ID_DESC', - UidAsc = 'UID_ASC', - UidDesc = 'UID_DESC', -} - export type Transcript = { + author: Scalars['String'] engine: Scalars['String'] language: Scalars['String'] + license: Scalars['String'] /** Reads a single `MediaAsset` that is related to this `Transcript`. */ mediaAsset?: Maybe mediaAssetUid: Scalars['String'] + /** Reads a single `Revision` that is related to this `Transcript`. */ + revision?: Maybe + revisionId: Scalars['String'] + subtitleUrl: Scalars['String'] text: Scalars['String'] uid: Scalars['String'] } @@ -6787,12 +6784,20 @@ export type Transcript = { * for equality and combined with a logical ‘and.’ */ export type TranscriptCondition = { + /** Checks for equality with the object’s `author` field. */ + author?: InputMaybe /** Checks for equality with the object’s `engine` field. */ engine?: InputMaybe /** Checks for equality with the object’s `language` field. */ language?: InputMaybe + /** Checks for equality with the object’s `license` field. */ + license?: InputMaybe /** Checks for equality with the object’s `mediaAssetUid` field. */ mediaAssetUid?: InputMaybe + /** Checks for equality with the object’s `revisionId` field. */ + revisionId?: InputMaybe + /** Checks for equality with the object’s `subtitleUrl` field. */ + subtitleUrl?: InputMaybe /** Checks for equality with the object’s `text` field. */ text?: InputMaybe /** Checks for equality with the object’s `uid` field. */ @@ -6803,10 +6808,14 @@ export type TranscriptCondition = { export type TranscriptFilter = { /** Checks for all expressions in this list. */ and?: InputMaybe> + /** Filter by the object’s `author` field. */ + author?: InputMaybe /** Filter by the object’s `engine` field. */ engine?: InputMaybe /** Filter by the object’s `language` field. */ language?: InputMaybe + /** Filter by the object’s `license` field. */ + license?: InputMaybe /** Filter by the object’s `mediaAsset` relation. */ mediaAsset?: InputMaybe /** Filter by the object’s `mediaAssetUid` field. */ @@ -6815,6 +6824,12 @@ export type TranscriptFilter = { not?: InputMaybe /** Checks for any expressions in this list. */ or?: InputMaybe> + /** Filter by the object’s `revision` relation. */ + revision?: InputMaybe + /** Filter by the object’s `revisionId` field. */ + revisionId?: InputMaybe + /** Filter by the object’s `subtitleUrl` field. */ + subtitleUrl?: InputMaybe /** Filter by the object’s `text` field. */ text?: InputMaybe /** Filter by the object’s `uid` field. */ @@ -6843,101 +6858,23 @@ export type TranscriptsEdge = { /** Methods to use when ordering `Transcript`. */ export enum TranscriptsOrderBy { + AuthorAsc = 'AUTHOR_ASC', + AuthorDesc = 'AUTHOR_DESC', EngineAsc = 'ENGINE_ASC', EngineDesc = 'ENGINE_DESC', LanguageAsc = 'LANGUAGE_ASC', LanguageDesc = 'LANGUAGE_DESC', + LicenseAsc = 'LICENSE_ASC', + LicenseDesc = 'LICENSE_DESC', MediaAssetUidAsc = 'MEDIA_ASSET_UID_ASC', MediaAssetUidDesc = 'MEDIA_ASSET_UID_DESC', Natural = 'NATURAL', PrimaryKeyAsc = 'PRIMARY_KEY_ASC', PrimaryKeyDesc = 'PRIMARY_KEY_DESC', - TextAsc = 'TEXT_ASC', - TextDesc = 'TEXT_DESC', - UidAsc = 'UID_ASC', - UidDesc = 'UID_DESC', -} - -export type Translation = { - engine: Scalars['String'] - language: Scalars['String'] - /** Reads a single `MediaAsset` that is related to this `Translation`. */ - mediaAsset?: Maybe - mediaAssetUid: Scalars['String'] - text: Scalars['String'] - uid: Scalars['String'] -} - -/** - * A condition to be used against `Translation` object types. All fields are tested - * for equality and combined with a logical ‘and.’ - */ -export type TranslationCondition = { - /** Checks for equality with the object’s `engine` field. */ - engine?: InputMaybe - /** Checks for equality with the object’s `language` field. */ - language?: InputMaybe - /** Checks for equality with the object’s `mediaAssetUid` field. */ - mediaAssetUid?: InputMaybe - /** Checks for equality with the object’s `text` field. */ - text?: InputMaybe - /** Checks for equality with the object’s `uid` field. */ - uid?: InputMaybe -} - -/** A filter to be used against `Translation` object types. All fields are combined with a logical ‘and.’ */ -export type TranslationFilter = { - /** Checks for all expressions in this list. */ - and?: InputMaybe> - /** Filter by the object’s `engine` field. */ - engine?: InputMaybe - /** Filter by the object’s `language` field. */ - language?: InputMaybe - /** Filter by the object’s `mediaAsset` relation. */ - mediaAsset?: InputMaybe - /** Filter by the object’s `mediaAssetUid` field. */ - mediaAssetUid?: InputMaybe - /** Negates the expression. */ - not?: InputMaybe - /** Checks for any expressions in this list. */ - or?: InputMaybe> - /** Filter by the object’s `text` field. */ - text?: InputMaybe - /** Filter by the object’s `uid` field. */ - uid?: InputMaybe -} - -/** A connection to a list of `Translation` values. */ -export type TranslationsConnection = { - /** A list of edges which contains the `Translation` and cursor to aid in pagination. */ - edges: Array - /** A list of `Translation` objects. */ - nodes: Array - /** Information to aid in pagination. */ - pageInfo: PageInfo - /** The count of *all* `Translation` you could get from the connection. */ - totalCount: Scalars['Int'] -} - -/** A `Translation` edge in the connection. */ -export type TranslationsEdge = { - /** A cursor for use in pagination. */ - cursor?: Maybe - /** The `Translation` at the end of the edge. */ - node: Translation -} - -/** Methods to use when ordering `Translation`. */ -export enum TranslationsOrderBy { - EngineAsc = 'ENGINE_ASC', - EngineDesc = 'ENGINE_DESC', - LanguageAsc = 'LANGUAGE_ASC', - LanguageDesc = 'LANGUAGE_DESC', - MediaAssetUidAsc = 'MEDIA_ASSET_UID_ASC', - MediaAssetUidDesc = 'MEDIA_ASSET_UID_DESC', - Natural = 'NATURAL', - PrimaryKeyAsc = 'PRIMARY_KEY_ASC', - PrimaryKeyDesc = 'PRIMARY_KEY_DESC', + RevisionIdAsc = 'REVISION_ID_ASC', + RevisionIdDesc = 'REVISION_ID_DESC', + SubtitleUrlAsc = 'SUBTITLE_URL_ASC', + SubtitleUrlDesc = 'SUBTITLE_URL_DESC', TextAsc = 'TEXT_ASC', TextDesc = 'TEXT_DESC', UidAsc = 'UID_ASC', @@ -7621,73 +7558,6 @@ export enum _FileToMediaAssetsOrderBy { Natural = 'NATURAL', } -export type _FileToSubtitle = { - a: Scalars['String'] - b: Scalars['String'] - /** Reads a single `File` that is related to this `_FileToSubtitle`. */ - fileByA?: Maybe - /** Reads a single `Subtitle` that is related to this `_FileToSubtitle`. */ - subtitleByB?: Maybe -} - -/** - * A condition to be used against `_FileToSubtitle` object types. All fields are - * tested for equality and combined with a logical ‘and.’ - */ -export type _FileToSubtitleCondition = { - /** Checks for equality with the object’s `a` field. */ - a?: InputMaybe - /** Checks for equality with the object’s `b` field. */ - b?: InputMaybe -} - -/** A filter to be used against `_FileToSubtitle` object types. All fields are combined with a logical ‘and.’ */ -export type _FileToSubtitleFilter = { - /** Filter by the object’s `a` field. */ - a?: InputMaybe - /** Checks for all expressions in this list. */ - and?: InputMaybe> - /** Filter by the object’s `b` field. */ - b?: InputMaybe - /** Filter by the object’s `fileByA` relation. */ - fileByA?: InputMaybe - /** Negates the expression. */ - not?: InputMaybe<_FileToSubtitleFilter> - /** Checks for any expressions in this list. */ - or?: InputMaybe> - /** Filter by the object’s `subtitleByB` relation. */ - subtitleByB?: InputMaybe -} - -/** A connection to a list of `_FileToSubtitle` values. */ -export type _FileToSubtitlesConnection = { - /** A list of edges which contains the `_FileToSubtitle` and cursor to aid in pagination. */ - edges: Array<_FileToSubtitlesEdge> - /** A list of `_FileToSubtitle` objects. */ - nodes: Array<_FileToSubtitle> - /** Information to aid in pagination. */ - pageInfo: PageInfo - /** The count of *all* `_FileToSubtitle` you could get from the connection. */ - totalCount: Scalars['Int'] -} - -/** A `_FileToSubtitle` edge in the connection. */ -export type _FileToSubtitlesEdge = { - /** A cursor for use in pagination. */ - cursor?: Maybe - /** The `_FileToSubtitle` at the end of the edge. */ - node: _FileToSubtitle -} - -/** Methods to use when ordering `_FileToSubtitle`. */ -export enum _FileToSubtitlesOrderBy { - AAsc = 'A_ASC', - ADesc = 'A_DESC', - BAsc = 'B_ASC', - BDesc = 'B_DESC', - Natural = 'NATURAL', -} - export type _RevisionToCommit = { a: Scalars['String'] b: Scalars['String'] @@ -7761,15 +7631,15 @@ export type LoadContentItemQueryVariables = Exact<{ export type LoadContentItemQuery = { contentItem?: { - title: string + title: any uid: string - content: string + content: any revisionId: string mediaAssets: { nodes: Array<{ uid: string mediaType: string - title: string + title: any duration?: number | null files: { nodes: Array<{ contentUrl: string; mimeType?: string | null }> @@ -7786,6 +7656,7 @@ export type LoadContentItemsQueryVariables = Exact<{ before: InputMaybe orderBy: InputMaybe | ContentItemsOrderBy> filter: InputMaybe + condition: InputMaybe }> export type LoadContentItemsQuery = { @@ -7799,23 +7670,23 @@ export type LoadContentItemsQuery = { } nodes: Array<{ pubDate?: any | null - title: string + title: any uid: string - subtitle?: string | null - summary?: string | null + subtitle?: any | null + summary?: any | null mediaAssets: { nodes: Array<{ duration?: number | null licenseUid?: string | null mediaType: string - title: string + title: any uid: string files: { nodes: Array<{ contentUrl: string; mimeType?: string | null }> } }> } - publicationService?: { name: string } | null + publicationService?: { name: any } | null }> } | null } @@ -7840,13 +7711,16 @@ export type LoadDashboardDataQuery = { concepts?: { totalCount: number } | null publicationServices?: { totalCount: number - nodes: Array<{ name: string; contentItems: { totalCount: number } }> + nodes: Array<{ name: any; contentItems: { totalCount: number } }> } | null - latestConetentItems?: { nodes: Array<{ title: string; uid: string }> } | null + latestConetentItems?: { nodes: Array<{ title: any; uid: string }> } | null totalPublicationServices?: { totalCount: number } | null totalContentItems?: { totalCount: number } | null contentGroupings?: { totalCount: number } | null - dataSources?: { totalCount: number } | null + dataSources?: { + totalCount: number + nodes: Array<{ config?: any | null }> + } | null sourceRecords?: { totalCount: number } | null } diff --git a/packages/repco-frontend/app/lib/graphql.server.ts b/packages/repco-frontend/app/lib/graphql.server.ts index feb94c52..fd29adad 100644 --- a/packages/repco-frontend/app/lib/graphql.server.ts +++ b/packages/repco-frontend/app/lib/graphql.server.ts @@ -8,12 +8,15 @@ import { createClient } from '@urql/core' import type { DocumentNode } from 'graphql' import type { LoadContentItemsQueryVariables } from '~/graphql/types.js' -const GRAPHQL_URL = process.env.REPCO_URL - ? process.env.REPCO_URL + '/graphql' - : 'http://localhost:8765/graphql' +// const GRAPHQL_URL = process.env.REPCO_URL +// ? process.env.REPCO_URL + '/graphql' +// : 'http://localhost:8765/graphql' export const graphqlClient = createClient({ - url: GRAPHQL_URL, + url: + process.env.REPCO_URL != undefined + ? `${process.env.REPCO_URL}/graphql` + : 'http://localhost:8765/graphql', requestPolicy: 'network-only', }) diff --git a/packages/repco-frontend/app/routes/__layout.tsx b/packages/repco-frontend/app/routes/__layout.tsx index ec4687b8..7a30e7ba 100644 --- a/packages/repco-frontend/app/routes/__layout.tsx +++ b/packages/repco-frontend/app/routes/__layout.tsx @@ -1,9 +1,7 @@ -import Player from '~/components/player/player' import type { LoaderArgs } from '@remix-run/node' import { useLoaderData } from '@remix-run/react' import { Outlet } from 'react-router-dom' import { NavBar } from '~/components/navigation/nav-bar' -import { QueueView } from '~/components/player/queue-view' import { Logo } from '~/components/primitives/logo' import { GitHubLoginButton } from '~/routes/__layout/login' import { authenticator } from '~/services/auth.server' @@ -35,7 +33,7 @@ export default function Layout() { -
- + */} ) } diff --git a/packages/repco-frontend/app/routes/__layout/index.tsx b/packages/repco-frontend/app/routes/__layout/index.tsx index 09908aab..3ca3863b 100644 --- a/packages/repco-frontend/app/routes/__layout/index.tsx +++ b/packages/repco-frontend/app/routes/__layout/index.tsx @@ -83,7 +83,9 @@ export const loader: LoaderFunction = async ({ request }) => { publicationServicesNodes = top10 } - const labels = publicationServicesNodes.map((item) => item.name) + const labels = publicationServicesNodes.map( + (item) => item.name[Object.keys(item.name)[0]]['value'], + ) const dataPoints = publicationServicesNodes.map( (item) => item.contentItems?.totalCount, ) @@ -119,6 +121,7 @@ export const loader: LoaderFunction = async ({ request }) => { } const filteredRepoStats = repoStats.filter((result) => result !== null) + return { data, repoChartData, @@ -155,7 +158,7 @@ export default function Index() {

- Publication Services by ContentItems (last 3 Month) + Publication Services by ContentItems

(
  • - {node.title.length > 20 - ? node.title.slice(0, 45) + '...' - : node.title} + {node.title[Object.keys(node?.title)[0]]['value'].length > + 20 + ? node.title[Object.keys(node?.title)[0]]['value'].slice( + 0, + 45, + ) + '...' + : node.title[Object.keys(node?.title)[0]]['value']}
  • ), @@ -215,11 +222,20 @@ export default function Index() { -
    -

    +
    +

    {repo.name}

    - {repo.did} + + ({repoChartData.datasets[0].data[i]}) {repo.did} +
    @@ -227,6 +243,77 @@ export default function Index() { )}

    + +
    +

    + Datasources ({data?.dataSources.totalCount}) +

    +
    + {data?.dataSources.nodes.map((ds: { config: any }, i: number) => ( + + +
    +

    + + {ds.config.name} +

    + {ds.config.url} +
    +
    +
    + ))} +
    +
    + +
    +

    + Publication Services ({data?.publicationServices.totalCount}) +

    +
    + {data?.publicationServices.nodes.map( + (ps: { name: any; contentItems: any }, i: number) => ( + +
    +

    + {ps.name[Object.keys(ps.name)[0]].value} +

    + + ({ps.contentItems.totalCount}) + +
    +
    + ), + )} +
    +
    +
    @@ -242,21 +329,40 @@ export default function Index() { cba-logo
    -
    +

    And kindly supported by:

    - - ecf-logo - +
    diff --git a/packages/repco-frontend/app/routes/__layout/items/$uid.tsx b/packages/repco-frontend/app/routes/__layout/items/$uid.tsx index fcdddb8d..17c8e4b4 100644 --- a/packages/repco-frontend/app/routes/__layout/items/$uid.tsx +++ b/packages/repco-frontend/app/routes/__layout/items/$uid.tsx @@ -30,7 +30,7 @@ export const meta: MetaFunction = ({ data }) => { } } return { - title: `${contentItem.title} | repco`, + title: `${contentItem.title[Object.keys(contentItem?.title)[0]]['value']} | repco`, } } @@ -47,7 +47,7 @@ export default function IndexRoute() { return (

    - {node.title} + {node.title[Object.keys(node?.title)[0]]['value']}

    UID: {node.uid} @@ -55,7 +55,7 @@ export default function IndexRoute() { Revision: {node.revisionId}

    - +
    {node.mediaAssets.nodes && ( { const repoDid = url.searchParams.get('repoDid') || 'all' const { first, last, after, before } = parsePagination(url) let filter: ContentItemFilter | undefined = undefined + let condition: ContentItemCondition | undefined = undefined if (type === 'title' && q) { - const titleFilter: StringFilter = { includesInsensitive: q } - filter = { title: titleFilter } + //const titleFilter: StringFilter = { includesInsensitive: q } + //filter = { title: titleFilter } + condition = { search: q } } if (type === 'fulltext' && q) { - const titleFilter: StringFilter = { includesInsensitive: q } - const contentFilter: StringFilter = { includesInsensitive: q } - filter = { or: [{ title: titleFilter }, { content: contentFilter }] } + //const titleFilter: StringFilter = { includesInsensitive: q } + //const contentFilter: StringFilter = { includesInsensitive: q } + //filter = { or: [{ title: titleFilter }, { content: contentFilter }] } + condition = { search: q } } if (repoDid && repoDid !== 'all') { const repoFilter = { repoDid: { equalTo: repoDid } } - filter = { ...filter, revision: repoFilter } + filter = { revision: repoFilter } } const queryVariables = { @@ -48,6 +51,7 @@ export const loader: LoaderFunction = async ({ request }) => { before, orderBy: orderBy as ContentItemsOrderBy, filter, + condition, } const { data } = await graphqlQuery< LoadContentItemsQuery, @@ -58,8 +62,13 @@ export const loader: LoaderFunction = async ({ request }) => { data?.contentItems?.nodes.map((node) => { return { ...node, - title: sanitize(node?.title, { allowedTags: [] }), - summary: sanitize(node?.summary || '', { allowedTags: [] }), + title: sanitize(node?.title[Object.keys(node?.title)[0]]['value'], { + allowedTags: [], + }), + summary: sanitize( + node?.summary[Object.keys(node?.title)[0]]['value'] || '', + { allowedTags: [] }, + ), } }) || [], pageInfo: data?.contentItems?.pageInfo, @@ -83,7 +92,7 @@ export default function ItemsIndex() { {nodes.map((node: ContentItem, i: number) => { const imageSrc = node.mediaAssets.nodes.find( (mediaAsset) => mediaAsset.mediaType === 'image', - )?.file?.contentUrl + )?.files?.nodes[0].contentUrl const altText = node.mediaAssets.nodes.find( (mediaAsset) => mediaAsset.mediaType === 'image', )?.title @@ -117,18 +126,23 @@ export default function ItemsIndex() {

    {new Date(node.pubDate).toLocaleDateString()} - {node.publicationService?.name && ' - '} - {node.publicationService?.name} + {node.publicationService?.name[ + Object.keys(node.publicationService?.name)[0] + ]['value'] && ' - '} + { + node.publicationService?.name[ + Object.keys(node.publicationService?.name)[0] + ]['value'] + }

    -

    {node.summary || ''}

    {track && } - {firstAudioAsset?.file?.duration} + {firstAudioAsset?.files?.nodes[0].duration} {track && }
    diff --git a/packages/repco-frontend/codegen.yml b/packages/repco-frontend/codegen.yml index 1aa17099..dd4e6c54 100644 --- a/packages/repco-frontend/codegen.yml +++ b/packages/repco-frontend/codegen.yml @@ -30,4 +30,4 @@ generates: - 'typescript-operations' config: skipTypename: true - inputMaybeValue: 'T | null | undefined' + inputMaybeValue: 'T | null | undefined' \ No newline at end of file diff --git a/packages/repco-graphql/generated/schema.graphql b/packages/repco-graphql/generated/schema.graphql index 46d488b5..7a582b91 100644 --- a/packages/repco-graphql/generated/schema.graphql +++ b/packages/repco-graphql/generated/schema.graphql @@ -720,7 +720,7 @@ type Chapter { revision: Revision revisionId: String! start: Float! - title: String! + title: JSON! type: String! uid: String! } @@ -742,7 +742,7 @@ input ChapterCondition { start: Float """Checks for equality with the object’s `title` field.""" - title: String + title: JSON """Checks for equality with the object’s `type` field.""" type: String @@ -783,7 +783,7 @@ input ChapterFilter { start: FloatFilter """Filter by the object’s `title` field.""" - title: StringFilter + title: JSONFilter """Filter by the object’s `type` field.""" type: StringFilter @@ -1446,8 +1446,8 @@ type Concept { """The method to use when ordering `ContentItem`.""" orderBy: [ContentItemsOrderBy!] = [PRIMARY_KEY_ASC] ): ConceptContentItemsByConceptToContentItemAAndBManyToManyConnection! - description: String - kind: ConceptKind! + description: JSON + kind: String! """Reads and enables pagination through a set of `MediaAsset`.""" mediaAssets( @@ -1482,7 +1482,7 @@ type Concept { """The method to use when ordering `MediaAsset`.""" orderBy: [MediaAssetsOrderBy!] = [PRIMARY_KEY_ASC] ): ConceptMediaAssetsByConceptToMediaAssetAAndBManyToManyConnection! - name: String! + name: JSON! originNamespace: String """Reads a single `Concept` that is related to this `Concept`.""" @@ -1496,7 +1496,7 @@ type Concept { """Reads a single `Concept` that is related to this `Concept`.""" sameAs: Concept sameAsUid: String - summary: String + summary: JSON uid: String! wikidataIdentifier: String } @@ -1625,14 +1625,19 @@ type ConceptConceptsByConceptSameAsUidAndParentUidManyToManyEdge { A condition to be used against `Concept` object types. All fields are tested for equality and combined with a logical ‘and.’ """ input ConceptCondition { + """ + Filters the list to ContentItems that have a specific keyword in title. + """ + containsName: String + """Checks for equality with the object’s `description` field.""" - description: String + description: JSON """Checks for equality with the object’s `kind` field.""" - kind: ConceptKind + kind: String """Checks for equality with the object’s `name` field.""" - name: String + name: JSON """Checks for equality with the object’s `originNamespace` field.""" originNamespace: String @@ -1647,7 +1652,7 @@ input ConceptCondition { sameAsUid: String """Checks for equality with the object’s `summary` field.""" - summary: String + summary: JSON """Checks for equality with the object’s `uid` field.""" uid: String @@ -1740,13 +1745,13 @@ input ConceptFilter { conceptsBySameAsExist: Boolean """Filter by the object’s `description` field.""" - description: StringFilter + description: JSONFilter """Filter by the object’s `kind` field.""" - kind: ConceptKindFilter + kind: StringFilter """Filter by the object’s `name` field.""" - name: StringFilter + name: JSONFilter """Negates the expression.""" not: ConceptFilter @@ -1782,7 +1787,7 @@ input ConceptFilter { sameAsUid: StringFilter """Filter by the object’s `summary` field.""" - summary: StringFilter + summary: JSONFilter """Filter by the object’s `uid` field.""" uid: StringFilter @@ -1796,48 +1801,6 @@ enum ConceptKind { TAG } -""" -A filter to be used against ConceptKind fields. All fields are combined with a logical ‘and.’ -""" -input ConceptKindFilter { - """ - Not equal to the specified value, treating null like an ordinary value. - """ - distinctFrom: ConceptKind - - """Equal to the specified value.""" - equalTo: ConceptKind - - """Greater than the specified value.""" - greaterThan: ConceptKind - - """Greater than or equal to the specified value.""" - greaterThanOrEqualTo: ConceptKind - - """Included in the specified list.""" - in: [ConceptKind!] - - """ - Is null (if `true` is specified) or is not null (if `false` is specified). - """ - isNull: Boolean - - """Less than the specified value.""" - lessThan: ConceptKind - - """Less than or equal to the specified value.""" - lessThanOrEqualTo: ConceptKind - - """Equal to the specified value, treating null like an ordinary value.""" - notDistinctFrom: ConceptKind - - """Not equal to the specified value.""" - notEqualTo: ConceptKind - - """Not included in the specified list.""" - notIn: [ConceptKind!] -} - """ A connection to a list of `MediaAsset` values, with data from `_ConceptToMediaAsset`. """ @@ -2045,7 +2008,7 @@ type ContentGrouping { """The method to use when ordering `ContentItem`.""" orderBy: [ContentItemsOrderBy!] = [PRIMARY_KEY_ASC] ): ContentItemsConnection! - description: String + description: JSON groupingType: String! """Reads a single `License` that is related to this `ContentGrouping`.""" @@ -2125,9 +2088,9 @@ type ContentGrouping { revisionId: String! startingDate: Datetime subtitle: String - summary: String + summary: JSON terminationDate: Datetime - title: String! + title: JSON! uid: String! variant: ContentGroupingVariant! } @@ -2141,7 +2104,7 @@ input ContentGroupingCondition { broadcastSchedule: String """Checks for equality with the object’s `description` field.""" - description: String + description: JSON """Checks for equality with the object’s `groupingType` field.""" groupingType: String @@ -2159,13 +2122,13 @@ input ContentGroupingCondition { subtitle: String """Checks for equality with the object’s `summary` field.""" - summary: String + summary: JSON """Checks for equality with the object’s `terminationDate` field.""" terminationDate: Datetime """Checks for equality with the object’s `title` field.""" - title: String + title: JSON """Checks for equality with the object’s `uid` field.""" uid: String @@ -2257,7 +2220,7 @@ input ContentGroupingFilter { contentItemsByPrimaryGroupingExist: Boolean """Filter by the object’s `description` field.""" - description: StringFilter + description: JSONFilter """Filter by the object’s `groupingType` field.""" groupingType: StringFilter @@ -2290,13 +2253,13 @@ input ContentGroupingFilter { subtitle: StringFilter """Filter by the object’s `summary` field.""" - summary: StringFilter + summary: JSONFilter """Filter by the object’s `terminationDate` field.""" terminationDate: DatetimeFilter """Filter by the object’s `title` field.""" - title: StringFilter + title: JSONFilter """Filter by the object’s `uid` field.""" uid: StringFilter @@ -2627,7 +2590,7 @@ type ContentItem { """The method to use when ordering `Concept`.""" orderBy: [ConceptsOrderBy!] = [PRIMARY_KEY_ASC] ): ContentItemConceptsByConceptToContentItemBAndAManyToManyConnection! - content: String! + content: JSON! contentFormat: String! """Reads and enables pagination through a set of `ContentGrouping`.""" @@ -2663,6 +2626,7 @@ type ContentItem { """The method to use when ordering `ContentGrouping`.""" orderBy: [ContentGroupingsOrderBy!] = [PRIMARY_KEY_ASC] ): ContentItemContentGroupingsByContentGroupingToContentItemBAndAManyToManyConnection! + contentUrl: JSON! """Reads and enables pagination through a set of `Contribution`.""" contributions( @@ -2735,6 +2699,7 @@ type ContentItem { """The method to use when ordering `MediaAsset`.""" orderBy: [MediaAssetsOrderBy!] = [PRIMARY_KEY_ASC] ): ContentItemMediaAssetsByContentItemToMediaAssetAAndBManyToManyConnection! + originalLanguages: JSON """ Reads a single `ContentGrouping` that is related to this `ContentItem`. @@ -2782,13 +2747,14 @@ type ContentItem { """The method to use when ordering `PublicationService`.""" orderBy: [PublicationServicesOrderBy!] = [PRIMARY_KEY_ASC] ): ContentItemPublicationServicesByBroadcastEventContentItemUidAndBroadcastServiceUidManyToManyConnection! + removed: Boolean! """Reads a single `Revision` that is related to this `ContentItem`.""" revision: Revision revisionId: String! - subtitle: String - summary: String - title: String! + subtitle: JSON + summary: JSON + title: JSON! uid: String! } @@ -2861,15 +2827,24 @@ A condition to be used against `ContentItem` object types. All fields are tested for equality and combined with a logical ‘and.’ """ input ContentItemCondition { + """Filters the list to ContentItems that are in the list of uids.""" + byUids: String + """Checks for equality with the object’s `content` field.""" - content: String + content: JSON """Checks for equality with the object’s `contentFormat` field.""" contentFormat: String + """Checks for equality with the object’s `contentUrl` field.""" + contentUrl: JSON + """Checks for equality with the object’s `licenseUid` field.""" licenseUid: String + """Checks for equality with the object’s `originalLanguages` field.""" + originalLanguages: JSON + """Checks for equality with the object’s `primaryGroupingUid` field.""" primaryGroupingUid: String @@ -2879,17 +2854,23 @@ input ContentItemCondition { """Checks for equality with the object’s `publicationServiceUid` field.""" publicationServiceUid: String + """Checks for equality with the object’s `removed` field.""" + removed: Boolean + """Checks for equality with the object’s `revisionId` field.""" revisionId: String + """Filters the list to ContentItems that have a specific keyword.""" + search: String + """Checks for equality with the object’s `subtitle` field.""" - subtitle: String + subtitle: JSON """Checks for equality with the object’s `summary` field.""" - summary: String + summary: JSON """Checks for equality with the object’s `title` field.""" - title: String + title: JSON """Checks for equality with the object’s `uid` field.""" uid: String @@ -3043,11 +3024,14 @@ input ContentItemFilter { broadcastEventsExist: Boolean """Filter by the object’s `content` field.""" - content: StringFilter + content: JSONFilter """Filter by the object’s `contentFormat` field.""" contentFormat: StringFilter + """Filter by the object’s `contentUrl` field.""" + contentUrl: JSONFilter + """Filter by the object’s `license` relation.""" license: LicenseFilter @@ -3063,6 +3047,9 @@ input ContentItemFilter { """Checks for any expressions in this list.""" or: [ContentItemFilter!] + """Filter by the object’s `originalLanguages` field.""" + originalLanguages: JSONFilter + """Filter by the object’s `primaryGrouping` relation.""" primaryGrouping: ContentGroupingFilter @@ -3084,6 +3071,9 @@ input ContentItemFilter { """Filter by the object’s `publicationServiceUid` field.""" publicationServiceUid: StringFilter + """Filter by the object’s `removed` field.""" + removed: BooleanFilter + """Filter by the object’s `revision` relation.""" revision: RevisionFilter @@ -3091,13 +3081,13 @@ input ContentItemFilter { revisionId: StringFilter """Filter by the object’s `subtitle` field.""" - subtitle: StringFilter + subtitle: JSONFilter """Filter by the object’s `summary` field.""" - summary: StringFilter + summary: JSONFilter """Filter by the object’s `title` field.""" - title: StringFilter + title: JSONFilter """Filter by the object’s `uid` field.""" uid: StringFilter @@ -3287,9 +3277,13 @@ enum ContentItemsOrderBy { CONTENT_DESC CONTENT_FORMAT_ASC CONTENT_FORMAT_DESC + CONTENT_URL_ASC + CONTENT_URL_DESC LICENSE_UID_ASC LICENSE_UID_DESC NATURAL + ORIGINAL_LANGUAGES_ASC + ORIGINAL_LANGUAGES_DESC PRIMARY_GROUPING_UID_ASC PRIMARY_GROUPING_UID_DESC PRIMARY_KEY_ASC @@ -3298,6 +3292,8 @@ enum ContentItemsOrderBy { PUBLICATION_SERVICE_UID_DESC PUB_DATE_ASC PUB_DATE_DESC + REMOVED_ASC + REMOVED_DESC REVISION_ID_ASC REVISION_ID_DESC SUBTITLE_ASC @@ -3739,7 +3735,7 @@ type Contributor { """Reads a single `File` that is related to this `Contributor`.""" profilePicture: File - profilePictureUid: String! + profilePictureUid: String """Reads and enables pagination through a set of `PublicationService`.""" publicationServicesByPublisher( @@ -3896,6 +3892,9 @@ input ContributorFilter { """Filter by the object’s `profilePicture` relation.""" profilePicture: FileFilter + """A related `profilePicture` exists.""" + profilePictureExists: Boolean + """Filter by the object’s `profilePictureUid` field.""" profilePictureUid: StringFilter @@ -4607,40 +4606,6 @@ type File { """Reads a single `Revision` that is related to this `File`.""" revision: Revision revisionId: String! - - """Reads and enables pagination through a set of `Subtitle`.""" - subtitles( - """Read all values in the set after (below) this cursor.""" - after: Cursor - - """Read all values in the set before (above) this cursor.""" - before: Cursor - - """ - A condition to be used in determining which values should be returned by the collection. - """ - condition: SubtitleCondition - - """ - A filter to be used in determining which values should be returned by the collection. - """ - filter: SubtitleFilter - - """Only read the first `n` values of the set.""" - first: Int - - """Only read the last `n` values of the set.""" - last: Int - - """ - Skip the first `n` values from our `after` cursor, an alternative to cursor - based pagination. May not be used with `last`. - """ - offset: Int - - """The method to use when ordering `Subtitle`.""" - orderBy: [SubtitlesOrderBy!] = [PRIMARY_KEY_ASC] - ): FileSubtitlesByFileToSubtitleAAndBManyToManyConnection! uid: String! } @@ -4870,68 +4835,6 @@ type FileMediaAssetsByFileToMediaAssetAAndBManyToManyEdge { node: MediaAsset! } -""" -A connection to a list of `Subtitle` values, with data from `_FileToSubtitle`. -""" -type FileSubtitlesByFileToSubtitleAAndBManyToManyConnection { - """ - A list of edges which contains the `Subtitle`, info from the `_FileToSubtitle`, and the cursor to aid in pagination. - """ - edges: [FileSubtitlesByFileToSubtitleAAndBManyToManyEdge!]! - - """A list of `Subtitle` objects.""" - nodes: [Subtitle!]! - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """The count of *all* `Subtitle` you could get from the connection.""" - totalCount: Int! -} - -"""A `Subtitle` edge in the connection, with data from `_FileToSubtitle`.""" -type FileSubtitlesByFileToSubtitleAAndBManyToManyEdge { - """Reads and enables pagination through a set of `_FileToSubtitle`.""" - _fileToSubtitlesByB( - """Read all values in the set after (below) this cursor.""" - after: Cursor - - """Read all values in the set before (above) this cursor.""" - before: Cursor - - """ - A condition to be used in determining which values should be returned by the collection. - """ - condition: _FileToSubtitleCondition - - """ - A filter to be used in determining which values should be returned by the collection. - """ - filter: _FileToSubtitleFilter - - """Only read the first `n` values of the set.""" - first: Int - - """Only read the last `n` values of the set.""" - last: Int - - """ - Skip the first `n` values from our `after` cursor, an alternative to cursor - based pagination. May not be used with `last`. - """ - offset: Int - - """The method to use when ordering `_FileToSubtitle`.""" - orderBy: [_FileToSubtitlesOrderBy!] = [NATURAL] - ): _FileToSubtitlesConnection! - - """A cursor for use in pagination.""" - cursor: Cursor - - """The `Subtitle` at the end of the edge.""" - node: Subtitle! -} - """ A filter to be used against many `Contributor` object types. All fields are combined with a logical ‘and.’ """ @@ -5069,6 +4972,234 @@ input FloatFilter { notIn: [Float!] } +"""All input for the `getChapterByLanguage` mutation.""" +input GetChapterByLanguageInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + languageCode: String +} + +"""The output of our `getChapterByLanguage` mutation.""" +type GetChapterByLanguagePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + results: [GetChapterByLanguageRecord] +} + +"""The return type of our `getChapterByLanguage` mutation.""" +type GetChapterByLanguageRecord { + duration: Float + revisionid: String + start: Float + title: String + type: String + uid: String +} + +"""All input for the `getConceptByLanguage` mutation.""" +input GetConceptByLanguageInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + languageCode: String +} + +"""The output of our `getConceptByLanguage` mutation.""" +type GetConceptByLanguagePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + results: [GetConceptByLanguageRecord] +} + +"""The return type of our `getConceptByLanguage` mutation.""" +type GetConceptByLanguageRecord { + description: String + kind: ConceptKind + name: String + originnamespace: String + parentuid: String + revisionid: String + sameasuid: String + summary: String + uid: String + wikidataidentifier: String +} + +"""All input for the `getContentGroupingsByLanguage` mutation.""" +input GetContentGroupingsByLanguageInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + languageCode: String +} + +"""The output of our `getContentGroupingsByLanguage` mutation.""" +type GetContentGroupingsByLanguagePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + results: [GetContentGroupingsByLanguageRecord] +} + +"""The return type of our `getContentGroupingsByLanguage` mutation.""" +type GetContentGroupingsByLanguageRecord { + broadcastschedule: String + description: String + groupingtype: String + licenseuid: String + revisionid: String + startingdate: Datetime + subtitle: String + summary: String + terminationdate: Datetime + title: String + uid: String + variant: ContentGroupingVariant +} + +"""All input for the `getContentItemsByLanguage` mutation.""" +input GetContentItemsByLanguageInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + languageCode: String +} + +"""The output of our `getContentItemsByLanguage` mutation.""" +type GetContentItemsByLanguagePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + results: [GetContentItemsByLanguageRecord] +} + +"""The return type of our `getContentItemsByLanguage` mutation.""" +type GetContentItemsByLanguageRecord { + content: String + contentformat: String + licenseuid: String + primarygroupinguid: String + pubdate: Datetime + publicationserviceuid: String + revisionid: String + subtitle: String + summary: String + title: String + uid: String +} + +"""All input for the `getMediaAssetByLanguage` mutation.""" +input GetMediaAssetByLanguageInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + languageCode: String +} + +"""The output of our `getMediaAssetByLanguage` mutation.""" +type GetMediaAssetByLanguagePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + results: [GetMediaAssetByLanguageRecord] +} + +"""The return type of our `getMediaAssetByLanguage` mutation.""" +type GetMediaAssetByLanguageRecord { + description: String + duration: Float + fileuid: String + licenseuid: String + mediatype: String + revisionid: String + teaserimageuid: String + title: String + uid: String +} + +"""All input for the `getPublicationServiceByLanguage` mutation.""" +input GetPublicationServiceByLanguageInput { + """ + An arbitrary string value with no semantic meaning. Will be included in the + payload verbatim. May be used to track mutations by the client. + """ + clientMutationId: String + languageCode: String +} + +"""The output of our `getPublicationServiceByLanguage` mutation.""" +type GetPublicationServiceByLanguagePayload { + """ + The exact same `clientMutationId` that was provided in the mutation input, + unchanged and unused. May be used by a client to track mutations. + """ + clientMutationId: String + + """ + Our root query field type. Allows us to run any query from our mutation payload. + """ + query: Query + results: [GetPublicationServiceByLanguageRecord] +} + +"""The return type of our `getPublicationServiceByLanguage` mutation.""" +type GetPublicationServiceByLanguageRecord { + address: String + medium: String + publisheruid: String + revisionid: String + title: String + uid: String +} + """ A filter to be used against Int fields. All fields are combined with a logical ‘and.’ """ @@ -5870,7 +6001,7 @@ type MediaAsset { """The method to use when ordering `Contribution`.""" orderBy: [ContributionsOrderBy!] = [PRIMARY_KEY_ASC] ): MediaAssetContributionsByContributionToMediaAssetBAndAManyToManyConnection! - description: String + description: JSON duration: Float """Reads and enables pagination through a set of `File`.""" @@ -5916,44 +6047,10 @@ type MediaAsset { revision: Revision revisionId: String! - """Reads and enables pagination through a set of `Subtitle`.""" - subtitles( - """Read all values in the set after (below) this cursor.""" - after: Cursor - - """Read all values in the set before (above) this cursor.""" - before: Cursor - - """ - A condition to be used in determining which values should be returned by the collection. - """ - condition: SubtitleCondition - - """ - A filter to be used in determining which values should be returned by the collection. - """ - filter: SubtitleFilter - - """Only read the first `n` values of the set.""" - first: Int - - """Only read the last `n` values of the set.""" - last: Int - - """ - Skip the first `n` values from our `after` cursor, an alternative to cursor - based pagination. May not be used with `last`. - """ - offset: Int - - """The method to use when ordering `Subtitle`.""" - orderBy: [SubtitlesOrderBy!] = [PRIMARY_KEY_ASC] - ): SubtitlesConnection! - """Reads a single `File` that is related to this `MediaAsset`.""" teaserImage: File teaserImageUid: String - title: String! + title: JSON! """Reads and enables pagination through a set of `Transcript`.""" transcripts( @@ -5988,40 +6085,6 @@ type MediaAsset { """The method to use when ordering `Transcript`.""" orderBy: [TranscriptsOrderBy!] = [PRIMARY_KEY_ASC] ): TranscriptsConnection! - - """Reads and enables pagination through a set of `Translation`.""" - translations( - """Read all values in the set after (below) this cursor.""" - after: Cursor - - """Read all values in the set before (above) this cursor.""" - before: Cursor - - """ - A condition to be used in determining which values should be returned by the collection. - """ - condition: TranslationCondition - - """ - A filter to be used in determining which values should be returned by the collection. - """ - filter: TranslationFilter - - """Only read the first `n` values of the set.""" - first: Int - - """Only read the last `n` values of the set.""" - last: Int - - """ - Skip the first `n` values from our `after` cursor, an alternative to cursor - based pagination. May not be used with `last`. - """ - offset: Int - - """The method to use when ordering `Translation`.""" - orderBy: [TranslationsOrderBy!] = [PRIMARY_KEY_ASC] - ): TranslationsConnection! uid: String! } @@ -6095,7 +6158,7 @@ for equality and combined with a logical ‘and.’ """ input MediaAssetCondition { """Checks for equality with the object’s `description` field.""" - description: String + description: JSON """Checks for equality with the object’s `duration` field.""" duration: Float @@ -6113,7 +6176,7 @@ input MediaAssetCondition { teaserImageUid: String """Checks for equality with the object’s `title` field.""" - title: String + title: JSON """Checks for equality with the object’s `uid` field.""" uid: String @@ -6327,7 +6390,7 @@ input MediaAssetFilter { chaptersExist: Boolean """Filter by the object’s `description` field.""" - description: StringFilter + description: JSONFilter """Filter by the object’s `duration` field.""" duration: FloatFilter @@ -6356,12 +6419,6 @@ input MediaAssetFilter { """Filter by the object’s `revisionId` field.""" revisionId: StringFilter - """Filter by the object’s `subtitles` relation.""" - subtitles: MediaAssetToManySubtitleFilter - - """Some related `subtitles` exist.""" - subtitlesExist: Boolean - """Filter by the object’s `teaserImage` relation.""" teaserImage: FileFilter @@ -6372,7 +6429,7 @@ input MediaAssetFilter { teaserImageUid: StringFilter """Filter by the object’s `title` field.""" - title: StringFilter + title: JSONFilter """Filter by the object’s `transcripts` relation.""" transcripts: MediaAssetToManyTranscriptFilter @@ -6380,12 +6437,6 @@ input MediaAssetFilter { """Some related `transcripts` exist.""" transcriptsExist: Boolean - """Filter by the object’s `translations` relation.""" - translations: MediaAssetToManyTranslationFilter - - """Some related `translations` exist.""" - translationsExist: Boolean - """Filter by the object’s `uid` field.""" uid: StringFilter } @@ -6410,26 +6461,6 @@ input MediaAssetToManyChapterFilter { some: ChapterFilter } -""" -A filter to be used against many `Subtitle` object types. All fields are combined with a logical ‘and.’ -""" -input MediaAssetToManySubtitleFilter { - """ - Every related `Subtitle` matches the filter criteria. All fields are combined with a logical ‘and.’ - """ - every: SubtitleFilter - - """ - No related `Subtitle` matches the filter criteria. All fields are combined with a logical ‘and.’ - """ - none: SubtitleFilter - - """ - Some related `Subtitle` matches the filter criteria. All fields are combined with a logical ‘and.’ - """ - some: SubtitleFilter -} - """ A filter to be used against many `Transcript` object types. All fields are combined with a logical ‘and.’ """ @@ -6450,26 +6481,6 @@ input MediaAssetToManyTranscriptFilter { some: TranscriptFilter } -""" -A filter to be used against many `Translation` object types. All fields are combined with a logical ‘and.’ -""" -input MediaAssetToManyTranslationFilter { - """ - Every related `Translation` matches the filter criteria. All fields are combined with a logical ‘and.’ - """ - every: TranslationFilter - - """ - No related `Translation` matches the filter criteria. All fields are combined with a logical ‘and.’ - """ - none: TranslationFilter - - """ - Some related `Translation` matches the filter criteria. All fields are combined with a logical ‘and.’ - """ - some: TranslationFilter -} - """A connection to a list of `MediaAsset` values.""" type MediaAssetsConnection { """ @@ -6630,6 +6641,48 @@ input MetadatumFilter { uid: StringFilter } +""" +The root mutation type which contains root level fields which mutate data. +""" +type Mutation { + getChapterByLanguage( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: GetChapterByLanguageInput! + ): GetChapterByLanguagePayload + getConceptByLanguage( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: GetConceptByLanguageInput! + ): GetConceptByLanguagePayload + getContentGroupingsByLanguage( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: GetContentGroupingsByLanguageInput! + ): GetContentGroupingsByLanguagePayload + getContentItemsByLanguage( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: GetContentItemsByLanguageInput! + ): GetContentItemsByLanguagePayload + getMediaAssetByLanguage( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: GetMediaAssetByLanguageInput! + ): GetMediaAssetByLanguagePayload + getPublicationServiceByLanguage( + """ + The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. + """ + input: GetPublicationServiceByLanguageInput! + ): GetPublicationServiceByLanguagePayload +} + """Information about pagination in a connection.""" type PageInfo { """When paginating forwards, the cursor to continue.""" @@ -6818,7 +6871,7 @@ type PublicationService { orderBy: [LicensesOrderBy!] = [PRIMARY_KEY_ASC] ): PublicationServiceLicensesByContentItemPublicationServiceUidAndLicenseUidManyToManyConnection! medium: String - name: String! + name: JSON! """ Reads a single `Contributor` that is related to this `PublicationService`. @@ -6846,7 +6899,7 @@ input PublicationServiceCondition { medium: String """Checks for equality with the object’s `name` field.""" - name: String + name: JSON """Checks for equality with the object’s `publisherUid` field.""" publisherUid: String @@ -7014,7 +7067,7 @@ input PublicationServiceFilter { medium: StringFilter """Filter by the object’s `name` field.""" - name: StringFilter + name: JSONFilter """Negates the expression.""" not: PublicationServiceFilter @@ -7932,41 +7985,6 @@ type Query { """The method to use when ordering `SourceRecord`.""" orderBy: [SourceRecordsOrderBy!] = [PRIMARY_KEY_ASC] ): SourceRecordsConnection - subtitle(uid: String!): Subtitle - - """Reads and enables pagination through a set of `Subtitle`.""" - subtitles( - """Read all values in the set after (below) this cursor.""" - after: Cursor - - """Read all values in the set before (above) this cursor.""" - before: Cursor - - """ - A condition to be used in determining which values should be returned by the collection. - """ - condition: SubtitleCondition - - """ - A filter to be used in determining which values should be returned by the collection. - """ - filter: SubtitleFilter - - """Only read the first `n` values of the set.""" - first: Int - - """Only read the last `n` values of the set.""" - last: Int - - """ - Skip the first `n` values from our `after` cursor, an alternative to cursor - based pagination. May not be used with `last`. - """ - offset: Int - - """The method to use when ordering `Subtitle`.""" - orderBy: [SubtitlesOrderBy!] = [PRIMARY_KEY_ASC] - ): SubtitlesConnection transcript(uid: String!): Transcript """Reads and enables pagination through a set of `Transcript`.""" @@ -8002,41 +8020,6 @@ type Query { """The method to use when ordering `Transcript`.""" orderBy: [TranscriptsOrderBy!] = [PRIMARY_KEY_ASC] ): TranscriptsConnection - translation(uid: String!): Translation - - """Reads and enables pagination through a set of `Translation`.""" - translations( - """Read all values in the set after (below) this cursor.""" - after: Cursor - - """Read all values in the set before (above) this cursor.""" - before: Cursor - - """ - A condition to be used in determining which values should be returned by the collection. - """ - condition: TranslationCondition - - """ - A filter to be used in determining which values should be returned by the collection. - """ - filter: TranslationFilter - - """Only read the first `n` values of the set.""" - first: Int - - """Only read the last `n` values of the set.""" - last: Int - - """ - Skip the first `n` values from our `after` cursor, an alternative to cursor - based pagination. May not be used with `last`. - """ - offset: Int - - """The method to use when ordering `Translation`.""" - orderBy: [TranslationsOrderBy!] = [PRIMARY_KEY_ASC] - ): TranslationsConnection ucan(cid: String!): Ucan """Reads and enables pagination through a set of `Ucan`.""" @@ -9209,6 +9192,7 @@ type Revision { ): RevisionFilesByMediaAssetRevisionIdAndTeaserImageUidManyToManyConnection! id: String! isDeleted: Boolean! + languages: String! """Reads and enables pagination through a set of `License`.""" licenses( @@ -9415,7 +9399,7 @@ type Revision { ): RevisionMediaAssetsByChapterRevisionIdAndMediaAssetUidManyToManyConnection! """Reads and enables pagination through a set of `MediaAsset`.""" - mediaAssetsBySubtitleRevisionIdAndMediaAssetUid( + mediaAssetsByTranscriptRevisionIdAndMediaAssetUid( """Read all values in the set after (below) this cursor.""" after: Cursor @@ -9446,7 +9430,7 @@ type Revision { """The method to use when ordering `MediaAsset`.""" orderBy: [MediaAssetsOrderBy!] = [PRIMARY_KEY_ASC] - ): RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidManyToManyConnection! + ): RevisionMediaAssetsByTranscriptRevisionIdAndMediaAssetUidManyToManyConnection! """Reads and enables pagination through a set of `Metadatum`.""" metadata( @@ -9628,8 +9612,8 @@ type Revision { orderBy: [RevisionsOrderBy!] = [PRIMARY_KEY_ASC] ): RevisionsConnection! - """Reads and enables pagination through a set of `Subtitle`.""" - subtitles( + """Reads and enables pagination through a set of `Transcript`.""" + transcripts( """Read all values in the set after (below) this cursor.""" after: Cursor @@ -9639,12 +9623,12 @@ type Revision { """ A condition to be used in determining which values should be returned by the collection. """ - condition: SubtitleCondition + condition: TranscriptCondition """ A filter to be used in determining which values should be returned by the collection. """ - filter: SubtitleFilter + filter: TranscriptFilter """Only read the first `n` values of the set.""" first: Int @@ -9658,9 +9642,9 @@ type Revision { """ offset: Int - """The method to use when ordering `Subtitle`.""" - orderBy: [SubtitlesOrderBy!] = [PRIMARY_KEY_ASC] - ): SubtitlesConnection! + """The method to use when ordering `Transcript`.""" + orderBy: [TranscriptsOrderBy!] = [PRIMARY_KEY_ASC] + ): TranscriptsConnection! uid: String! } @@ -9854,6 +9838,12 @@ input RevisionCondition { """Checks for equality with the object’s `agentDid` field.""" agentDid: String + """Filters the list to Revisions that are in the list of uris.""" + byEntityUris: String + + """Filters the list to Revisions that are not in the list of uris.""" + byEntityUrisNot: String + """Checks for equality with the object’s `contentCid` field.""" contentCid: String @@ -9878,6 +9868,9 @@ input RevisionCondition { """Checks for equality with the object’s `isDeleted` field.""" isDeleted: Boolean + """Checks for equality with the object’s `languages` field.""" + languages: String + """Checks for equality with the object’s `prevRevisionId` field.""" prevRevisionId: String @@ -10359,6 +10352,9 @@ input RevisionFilter { """Filter by the object’s `isDeleted` field.""" isDeleted: BooleanFilter + """Filter by the object’s `languages` field.""" + languages: StringFilter + """Filter by the object’s `licenses` relation.""" licenses: RevisionToManyLicenseFilter @@ -10416,11 +10412,11 @@ input RevisionFilter { """Some related `revisionsByPrevRevisionId` exist.""" revisionsByPrevRevisionIdExist: Boolean - """Filter by the object’s `subtitles` relation.""" - subtitles: RevisionToManySubtitleFilter + """Filter by the object’s `transcripts` relation.""" + transcripts: RevisionToManyTranscriptFilter - """Some related `subtitles` exist.""" - subtitlesExist: Boolean + """Some related `transcripts` exist.""" + transcriptsExist: Boolean """Filter by the object’s `uid` field.""" uid: StringFilter @@ -10675,13 +10671,13 @@ type RevisionMediaAssetsByChapterRevisionIdAndMediaAssetUidManyToManyEdge { } """ -A connection to a list of `MediaAsset` values, with data from `Subtitle`. +A connection to a list of `MediaAsset` values, with data from `Transcript`. """ -type RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidManyToManyConnection { +type RevisionMediaAssetsByTranscriptRevisionIdAndMediaAssetUidManyToManyConnection { """ - A list of edges which contains the `MediaAsset`, info from the `Subtitle`, and the cursor to aid in pagination. + A list of edges which contains the `MediaAsset`, info from the `Transcript`, and the cursor to aid in pagination. """ - edges: [RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidManyToManyEdge!]! + edges: [RevisionMediaAssetsByTranscriptRevisionIdAndMediaAssetUidManyToManyEdge!]! """A list of `MediaAsset` objects.""" nodes: [MediaAsset!]! @@ -10693,16 +10689,16 @@ type RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidManyToManyConnection totalCount: Int! } -"""A `MediaAsset` edge in the connection, with data from `Subtitle`.""" -type RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidManyToManyEdge { +"""A `MediaAsset` edge in the connection, with data from `Transcript`.""" +type RevisionMediaAssetsByTranscriptRevisionIdAndMediaAssetUidManyToManyEdge { """A cursor for use in pagination.""" cursor: Cursor """The `MediaAsset` at the end of the edge.""" node: MediaAsset! - """Reads and enables pagination through a set of `Subtitle`.""" - subtitles( + """Reads and enables pagination through a set of `Transcript`.""" + transcripts( """Read all values in the set after (below) this cursor.""" after: Cursor @@ -10712,12 +10708,12 @@ type RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidManyToManyEdge { """ A condition to be used in determining which values should be returned by the collection. """ - condition: SubtitleCondition + condition: TranscriptCondition """ A filter to be used in determining which values should be returned by the collection. """ - filter: SubtitleFilter + filter: TranscriptFilter """Only read the first `n` values of the set.""" first: Int @@ -10731,9 +10727,9 @@ type RevisionMediaAssetsBySubtitleRevisionIdAndMediaAssetUidManyToManyEdge { """ offset: Int - """The method to use when ordering `Subtitle`.""" - orderBy: [SubtitlesOrderBy!] = [PRIMARY_KEY_ASC] - ): SubtitlesConnection! + """The method to use when ordering `Transcript`.""" + orderBy: [TranscriptsOrderBy!] = [PRIMARY_KEY_ASC] + ): TranscriptsConnection! } """ @@ -11149,23 +11145,23 @@ input RevisionToManyRevisionFilter { } """ -A filter to be used against many `Subtitle` object types. All fields are combined with a logical ‘and.’ +A filter to be used against many `Transcript` object types. All fields are combined with a logical ‘and.’ """ -input RevisionToManySubtitleFilter { +input RevisionToManyTranscriptFilter { """ - Every related `Subtitle` matches the filter criteria. All fields are combined with a logical ‘and.’ + Every related `Transcript` matches the filter criteria. All fields are combined with a logical ‘and.’ """ - every: SubtitleFilter + every: TranscriptFilter """ - No related `Subtitle` matches the filter criteria. All fields are combined with a logical ‘and.’ + No related `Transcript` matches the filter criteria. All fields are combined with a logical ‘and.’ """ - none: SubtitleFilter + none: TranscriptFilter """ - Some related `Subtitle` matches the filter criteria. All fields are combined with a logical ‘and.’ + Some related `Transcript` matches the filter criteria. All fields are combined with a logical ‘and.’ """ - some: SubtitleFilter + some: TranscriptFilter } """A connection to a list of `Revision` values.""" @@ -11214,6 +11210,8 @@ enum RevisionsOrderBy { ID_DESC IS_DELETED_ASC IS_DELETED_DESC + LANGUAGES_ASC + LANGUAGES_DESC NATURAL PREV_REVISION_ID_ASC PREV_REVISION_ID_DESC @@ -11570,212 +11568,20 @@ input StringListFilter { overlaps: [String] } -type Subtitle { - """Reads and enables pagination through a set of `File`.""" - files( - """Read all values in the set after (below) this cursor.""" - after: Cursor - - """Read all values in the set before (above) this cursor.""" - before: Cursor - - """ - A condition to be used in determining which values should be returned by the collection. - """ - condition: FileCondition - - """ - A filter to be used in determining which values should be returned by the collection. - """ - filter: FileFilter - - """Only read the first `n` values of the set.""" - first: Int - - """Only read the last `n` values of the set.""" - last: Int - - """ - Skip the first `n` values from our `after` cursor, an alternative to cursor - based pagination. May not be used with `last`. - """ - offset: Int - - """The method to use when ordering `File`.""" - orderBy: [FilesOrderBy!] = [PRIMARY_KEY_ASC] - ): SubtitleFilesByFileToSubtitleBAndAManyToManyConnection! - languageCode: String! - - """Reads a single `MediaAsset` that is related to this `Subtitle`.""" - mediaAsset: MediaAsset - mediaAssetUid: String! - - """Reads a single `Revision` that is related to this `Subtitle`.""" - revision: Revision - revisionId: String! - uid: String! -} - -""" -A condition to be used against `Subtitle` object types. All fields are tested -for equality and combined with a logical ‘and.’ -""" -input SubtitleCondition { - """Checks for equality with the object’s `languageCode` field.""" - languageCode: String - - """Checks for equality with the object’s `mediaAssetUid` field.""" - mediaAssetUid: String - - """Checks for equality with the object’s `revisionId` field.""" - revisionId: String - - """Checks for equality with the object’s `uid` field.""" - uid: String -} - -""" -A connection to a list of `File` values, with data from `_FileToSubtitle`. -""" -type SubtitleFilesByFileToSubtitleBAndAManyToManyConnection { - """ - A list of edges which contains the `File`, info from the `_FileToSubtitle`, and the cursor to aid in pagination. - """ - edges: [SubtitleFilesByFileToSubtitleBAndAManyToManyEdge!]! - - """A list of `File` objects.""" - nodes: [File!]! - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """The count of *all* `File` you could get from the connection.""" - totalCount: Int! -} - -"""A `File` edge in the connection, with data from `_FileToSubtitle`.""" -type SubtitleFilesByFileToSubtitleBAndAManyToManyEdge { - """Reads and enables pagination through a set of `_FileToSubtitle`.""" - _fileToSubtitlesByA( - """Read all values in the set after (below) this cursor.""" - after: Cursor - - """Read all values in the set before (above) this cursor.""" - before: Cursor - - """ - A condition to be used in determining which values should be returned by the collection. - """ - condition: _FileToSubtitleCondition - - """ - A filter to be used in determining which values should be returned by the collection. - """ - filter: _FileToSubtitleFilter - - """Only read the first `n` values of the set.""" - first: Int - - """Only read the last `n` values of the set.""" - last: Int - - """ - Skip the first `n` values from our `after` cursor, an alternative to cursor - based pagination. May not be used with `last`. - """ - offset: Int - - """The method to use when ordering `_FileToSubtitle`.""" - orderBy: [_FileToSubtitlesOrderBy!] = [NATURAL] - ): _FileToSubtitlesConnection! - - """A cursor for use in pagination.""" - cursor: Cursor - - """The `File` at the end of the edge.""" - node: File! -} - -""" -A filter to be used against `Subtitle` object types. All fields are combined with a logical ‘and.’ -""" -input SubtitleFilter { - """Checks for all expressions in this list.""" - and: [SubtitleFilter!] - - """Filter by the object’s `languageCode` field.""" - languageCode: StringFilter - - """Filter by the object’s `mediaAsset` relation.""" - mediaAsset: MediaAssetFilter - - """Filter by the object’s `mediaAssetUid` field.""" - mediaAssetUid: StringFilter - - """Negates the expression.""" - not: SubtitleFilter - - """Checks for any expressions in this list.""" - or: [SubtitleFilter!] - - """Filter by the object’s `revision` relation.""" - revision: RevisionFilter - - """Filter by the object’s `revisionId` field.""" - revisionId: StringFilter - - """Filter by the object’s `uid` field.""" - uid: StringFilter -} - -"""A connection to a list of `Subtitle` values.""" -type SubtitlesConnection { - """ - A list of edges which contains the `Subtitle` and cursor to aid in pagination. - """ - edges: [SubtitlesEdge!]! - - """A list of `Subtitle` objects.""" - nodes: [Subtitle!]! - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """The count of *all* `Subtitle` you could get from the connection.""" - totalCount: Int! -} - -"""A `Subtitle` edge in the connection.""" -type SubtitlesEdge { - """A cursor for use in pagination.""" - cursor: Cursor - - """The `Subtitle` at the end of the edge.""" - node: Subtitle! -} - -"""Methods to use when ordering `Subtitle`.""" -enum SubtitlesOrderBy { - LANGUAGE_CODE_ASC - LANGUAGE_CODE_DESC - MEDIA_ASSET_UID_ASC - MEDIA_ASSET_UID_DESC - NATURAL - PRIMARY_KEY_ASC - PRIMARY_KEY_DESC - REVISION_ID_ASC - REVISION_ID_DESC - UID_ASC - UID_DESC -} - type Transcript { + author: String! engine: String! language: String! + license: String! """Reads a single `MediaAsset` that is related to this `Transcript`.""" mediaAsset: MediaAsset mediaAssetUid: String! + + """Reads a single `Revision` that is related to this `Transcript`.""" + revision: Revision + revisionId: String! + subtitleUrl: String! text: String! uid: String! } @@ -11785,15 +11591,27 @@ A condition to be used against `Transcript` object types. All fields are tested for equality and combined with a logical ‘and.’ """ input TranscriptCondition { + """Checks for equality with the object’s `author` field.""" + author: String + """Checks for equality with the object’s `engine` field.""" engine: String """Checks for equality with the object’s `language` field.""" language: String + """Checks for equality with the object’s `license` field.""" + license: String + """Checks for equality with the object’s `mediaAssetUid` field.""" mediaAssetUid: String + """Checks for equality with the object’s `revisionId` field.""" + revisionId: String + + """Checks for equality with the object’s `subtitleUrl` field.""" + subtitleUrl: String + """Checks for equality with the object’s `text` field.""" text: String @@ -11808,12 +11626,18 @@ input TranscriptFilter { """Checks for all expressions in this list.""" and: [TranscriptFilter!] + """Filter by the object’s `author` field.""" + author: StringFilter + """Filter by the object’s `engine` field.""" engine: StringFilter """Filter by the object’s `language` field.""" language: StringFilter + """Filter by the object’s `license` field.""" + license: StringFilter + """Filter by the object’s `mediaAsset` relation.""" mediaAsset: MediaAssetFilter @@ -11826,6 +11650,15 @@ input TranscriptFilter { """Checks for any expressions in this list.""" or: [TranscriptFilter!] + """Filter by the object’s `revision` relation.""" + revision: RevisionFilter + + """Filter by the object’s `revisionId` field.""" + revisionId: StringFilter + + """Filter by the object’s `subtitleUrl` field.""" + subtitleUrl: StringFilter + """Filter by the object’s `text` field.""" text: StringFilter @@ -11861,122 +11694,23 @@ type TranscriptsEdge { """Methods to use when ordering `Transcript`.""" enum TranscriptsOrderBy { + AUTHOR_ASC + AUTHOR_DESC ENGINE_ASC ENGINE_DESC LANGUAGE_ASC LANGUAGE_DESC + LICENSE_ASC + LICENSE_DESC MEDIA_ASSET_UID_ASC MEDIA_ASSET_UID_DESC NATURAL PRIMARY_KEY_ASC PRIMARY_KEY_DESC - TEXT_ASC - TEXT_DESC - UID_ASC - UID_DESC -} - -type Translation { - engine: String! - language: String! - - """Reads a single `MediaAsset` that is related to this `Translation`.""" - mediaAsset: MediaAsset - mediaAssetUid: String! - text: String! - uid: String! -} - -""" -A condition to be used against `Translation` object types. All fields are tested -for equality and combined with a logical ‘and.’ -""" -input TranslationCondition { - """Checks for equality with the object’s `engine` field.""" - engine: String - - """Checks for equality with the object’s `language` field.""" - language: String - - """Checks for equality with the object’s `mediaAssetUid` field.""" - mediaAssetUid: String - - """Checks for equality with the object’s `text` field.""" - text: String - - """Checks for equality with the object’s `uid` field.""" - uid: String -} - -""" -A filter to be used against `Translation` object types. All fields are combined with a logical ‘and.’ -""" -input TranslationFilter { - """Checks for all expressions in this list.""" - and: [TranslationFilter!] - - """Filter by the object’s `engine` field.""" - engine: StringFilter - - """Filter by the object’s `language` field.""" - language: StringFilter - - """Filter by the object’s `mediaAsset` relation.""" - mediaAsset: MediaAssetFilter - - """Filter by the object’s `mediaAssetUid` field.""" - mediaAssetUid: StringFilter - - """Negates the expression.""" - not: TranslationFilter - - """Checks for any expressions in this list.""" - or: [TranslationFilter!] - - """Filter by the object’s `text` field.""" - text: StringFilter - - """Filter by the object’s `uid` field.""" - uid: StringFilter -} - -"""A connection to a list of `Translation` values.""" -type TranslationsConnection { - """ - A list of edges which contains the `Translation` and cursor to aid in pagination. - """ - edges: [TranslationsEdge!]! - - """A list of `Translation` objects.""" - nodes: [Translation!]! - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """The count of *all* `Translation` you could get from the connection.""" - totalCount: Int! -} - -"""A `Translation` edge in the connection.""" -type TranslationsEdge { - """A cursor for use in pagination.""" - cursor: Cursor - - """The `Translation` at the end of the edge.""" - node: Translation! -} - -"""Methods to use when ordering `Translation`.""" -enum TranslationsOrderBy { - ENGINE_ASC - ENGINE_DESC - LANGUAGE_ASC - LANGUAGE_DESC - MEDIA_ASSET_UID_ASC - MEDIA_ASSET_UID_DESC - NATURAL - PRIMARY_KEY_ASC - PRIMARY_KEY_DESC + REVISION_ID_ASC + REVISION_ID_DESC + SUBTITLE_URL_ASC + SUBTITLE_URL_DESC TEXT_ASC TEXT_DESC UID_ASC @@ -12879,92 +12613,6 @@ enum _FileToMediaAssetsOrderBy { NATURAL } -type _FileToSubtitle { - a: String! - b: String! - - """Reads a single `File` that is related to this `_FileToSubtitle`.""" - fileByA: File - - """Reads a single `Subtitle` that is related to this `_FileToSubtitle`.""" - subtitleByB: Subtitle -} - -""" -A condition to be used against `_FileToSubtitle` object types. All fields are -tested for equality and combined with a logical ‘and.’ -""" -input _FileToSubtitleCondition { - """Checks for equality with the object’s `a` field.""" - a: String - - """Checks for equality with the object’s `b` field.""" - b: String -} - -""" -A filter to be used against `_FileToSubtitle` object types. All fields are combined with a logical ‘and.’ -""" -input _FileToSubtitleFilter { - """Filter by the object’s `a` field.""" - a: StringFilter - - """Checks for all expressions in this list.""" - and: [_FileToSubtitleFilter!] - - """Filter by the object’s `b` field.""" - b: StringFilter - - """Filter by the object’s `fileByA` relation.""" - fileByA: FileFilter - - """Negates the expression.""" - not: _FileToSubtitleFilter - - """Checks for any expressions in this list.""" - or: [_FileToSubtitleFilter!] - - """Filter by the object’s `subtitleByB` relation.""" - subtitleByB: SubtitleFilter -} - -"""A connection to a list of `_FileToSubtitle` values.""" -type _FileToSubtitlesConnection { - """ - A list of edges which contains the `_FileToSubtitle` and cursor to aid in pagination. - """ - edges: [_FileToSubtitlesEdge!]! - - """A list of `_FileToSubtitle` objects.""" - nodes: [_FileToSubtitle!]! - - """Information to aid in pagination.""" - pageInfo: PageInfo! - - """ - The count of *all* `_FileToSubtitle` you could get from the connection. - """ - totalCount: Int! -} - -"""A `_FileToSubtitle` edge in the connection.""" -type _FileToSubtitlesEdge { - """A cursor for use in pagination.""" - cursor: Cursor - - """The `_FileToSubtitle` at the end of the edge.""" - node: _FileToSubtitle! -} - -"""Methods to use when ordering `_FileToSubtitle`.""" -enum _FileToSubtitlesOrderBy { - A_ASC - A_DESC - B_ASC - B_DESC - NATURAL -} - type _RevisionToCommit { a: String! b: String! diff --git a/packages/repco-graphql/package.json b/packages/repco-graphql/package.json index bf5355e6..b9070927 100644 --- a/packages/repco-graphql/package.json +++ b/packages/repco-graphql/package.json @@ -16,18 +16,25 @@ "export-schema": "node dist/scripts/export-schema.js" }, "dependencies": { + "@elastic/elasticsearch": "^8.10.0", "@graphile-contrib/pg-many-to-many": "^1.0.1", "@graphile-contrib/pg-simplify-inflector": "^6.1.0", + "@graphql-tools/schema": "^10.0.0", + "@types/sync-fetch": "^0.4.3", "cors": "^2.8.5", "dotenv": "^16.0.1", + "elasticsearch": "^16.7.3", "express": "^4.18.1", "express-async-errors": "^3.1.1", "graphile-build": "^4.12.3", "graphile-utils": "^4.12.3", "graphql": "^15.8.0", + "graphql-compose": "^9.0.10", + "graphql-compose-elasticsearch": "^5.2.3", "pg": "^8.8.0", "postgraphile": "^4.12.11", - "postgraphile-plugin-connection-filter": "^2.3.0" + "postgraphile-plugin-connection-filter": "^2.3.0", + "sync-fetch": "^0.5.2" }, "devDependencies": { "@types/cors": "^2.8.12", diff --git a/packages/repco-graphql/src/lib.ts b/packages/repco-graphql/src/lib.ts index ae6cb15d..5d71cdd4 100644 --- a/packages/repco-graphql/src/lib.ts +++ b/packages/repco-graphql/src/lib.ts @@ -5,13 +5,16 @@ import ConnectionFilterPlugin from 'postgraphile-plugin-connection-filter' import { NodePlugin } from 'graphile-build' import { lexicographicSortSchema } from 'graphql' import { createPostGraphileSchema, postgraphile } from 'postgraphile' +import ConceptFilterPlugin from './plugins/concept-filter.js' +import ContentItemByUidsFilterPlugin from './plugins/content-item-by-uids-filter.js' +import ContentItemFilterPlugin from './plugins/content-item-filter.js' import ExportSchemaPlugin from './plugins/export-schema.js' // Change some inflection rules to better match our schema. import CustomInflector from './plugins/inflector.js' +import RevisionsByEntityUrisNot from './plugins/revisions-by-entity-uris-not.js' +import RevisionsByEntityUris from './plugins/revisions-by-entity-uris.js' // Add custom tags to omit all queries for the relation tables import CustomTags from './plugins/tags.js' -// Add a resolver wrapper to add default pagination args -import WrapResolversPlugin from './plugins/wrap-resolver.js' export { getSDL } from './plugins/export-schema.js' @@ -32,6 +35,7 @@ export async function createGraphQlSchema(databaseUrl: string) { PG_SCHEMA, getPostGraphileOptions(), ) + const sorted = lexicographicSortSchema(schema) return sorted } @@ -50,13 +54,22 @@ export function getPostGraphileOptions() { PgManyToManyPlugin, SimplifyInflectorPlugin, CustomInflector, - WrapResolversPlugin, + //WrapResolversPlugin, //excluded because the pagination does not work with elasticsearch plugins ExportSchemaPlugin, + ContentItemFilterPlugin, + //ContentItemContentFilterPlugin, + //ContentItemTitleFilterPlugin, + ConceptFilterPlugin, + ContentItemByUidsFilterPlugin, + RevisionsByEntityUris, + RevisionsByEntityUrisNot, + // ElasticTest, + // CustomFilterPlugin, ], dynamicJson: true, graphileBuildOptions: { // https://github.com/graphile-contrib/postgraphile-plugin-connection-filter#performance-and-security - connectionFilterComputedColumns: false, + connectionFilterComputedColumns: true, connectionFilterSetofFunctions: false, connectionFilterLists: false, connectionFilterRelations: true, diff --git a/packages/repco-graphql/src/plugins/concept-filter.ts b/packages/repco-graphql/src/plugins/concept-filter.ts new file mode 100644 index 00000000..ef58a71c --- /dev/null +++ b/packages/repco-graphql/src/plugins/concept-filter.ts @@ -0,0 +1,19 @@ +import { makeAddPgTableConditionPlugin } from 'graphile-utils' + +const ConceptFilterPlugin = makeAddPgTableConditionPlugin( + 'public', + 'Concept', + 'containsName', + (build) => ({ + description: + 'Filters the list to ContentItems that have a specific keyword in title.', + type: build.graphql.GraphQLString, + }), + (value, helpers, build) => { + if (value == null) return + const { sql, sqlTableAlias } = helpers + return sql.raw(`LOWER(name::text) LIKE LOWER('%${value}%')`) + }, +) + +export default ConceptFilterPlugin diff --git a/packages/repco-graphql/src/plugins/content-item-by-uids-filter.ts b/packages/repco-graphql/src/plugins/content-item-by-uids-filter.ts new file mode 100644 index 00000000..da3cbbe3 --- /dev/null +++ b/packages/repco-graphql/src/plugins/content-item-by-uids-filter.ts @@ -0,0 +1,20 @@ +import { makeAddPgTableConditionPlugin } from 'graphile-utils' + +const ContentItemByUidsFilterPlugin = makeAddPgTableConditionPlugin( + 'public', + 'ContentItem', + 'byUids', + (build) => ({ + description: + 'Filters the list to ContentItems that are in the list of uids.', + type: build.graphql.GraphQLString, + }), + (value: any, helpers, build) => { + if (value == null) return + const { sql, sqlTableAlias } = helpers + var inValues = value.split(',') + return sql.raw(`uid IN ('${inValues.join(`','`)}')`) + }, +) + +export default ContentItemByUidsFilterPlugin diff --git a/packages/repco-graphql/src/plugins/content-item-content-filter.ts b/packages/repco-graphql/src/plugins/content-item-content-filter.ts new file mode 100644 index 00000000..aae822d7 --- /dev/null +++ b/packages/repco-graphql/src/plugins/content-item-content-filter.ts @@ -0,0 +1,21 @@ +import { makeAddPgTableConditionPlugin } from 'graphile-utils' + +const ContentItemContentFilterPlugin = makeAddPgTableConditionPlugin( + 'public', + 'ContentItem', + 'searchContent', + (build) => ({ + description: + 'Filters the list to ContentItems that have a specific keyword in title.', + type: build.graphql.GraphQLString, + }), + (value, helpers, build) => { + if (value == null) return + const { sql, sqlTableAlias } = helpers + return sql.raw( + `LOWER(summary::text) LIKE LOWER('%${value}%') OR LOWER(content::text) LIKE LOWER('%${value}%')`, + ) + }, +) + +export default ContentItemContentFilterPlugin diff --git a/packages/repco-graphql/src/plugins/content-item-filter.ts b/packages/repco-graphql/src/plugins/content-item-filter.ts new file mode 100644 index 00000000..f12fb073 --- /dev/null +++ b/packages/repco-graphql/src/plugins/content-item-filter.ts @@ -0,0 +1,83 @@ +import fetch from 'sync-fetch' +import { makeAddPgTableConditionPlugin } from 'graphile-utils' +import { log } from 'repco-common' + +const ContentItemFilterPlugin = makeAddPgTableConditionPlugin( + 'public', + 'ContentItem', + 'search', + (build) => ({ + description: + 'Filters the list to ContentItems that have a specific keyword.', + type: build.graphql.GraphQLString, + }), + (value, helpers, build) => { + if (value == null) return + const { sql, sqlTableAlias } = helpers + + var data = { + size: 10000, + query: { + query_string: { + query: value, + }, + }, + fields: [], + _source: false, + } + + var url = 'http://es01:9200/_search' // for local dev work use 'http://localhost:9201/_search' since this will not be started in docker container + const response = fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data), + }) + + log.info(JSON.stringify(data)) + + if (!response.ok) { + log.warn(response.statusText) + var query: string = value as string + return sql.raw(`uid = '${query}'`) + } else { + var json = response.json() + var values = [] + + if (json.hits.hits.length > 0) { + for (let i = 0; i < json.hits.hits.length; i++) { + const element = json.hits.hits[i] + if (element['_score'] >= 5) + values.push(`('${element['_id']}',${element['_score']})`) + } + + var temp = `JOIN (VALUES ${values.join( + ',', + )}) as x (id, ordering) on uid = x.id` + + //log.info('join statement: ' + temp) + const customQueryBuilder = helpers.queryBuilder as any + customQueryBuilder['join'] = function (expr: any): void { + // this.checkLock('join') + this.data.join.push(expr) + } + customQueryBuilder.join(sql.raw(temp)) + + helpers.queryBuilder.orderBy(sql.fragment`x.ordering`, false) + var inStatement = `uid IN (${json.hits.hits + .filter((element: any) => element['_score'] >= 5) + .map((entry: any) => `'${entry['_id']}'`) + .join(',')})` + //log.info('in statement: ' + inStatement) + return sql.raw(inStatement) + } else { + var query: string = value as string + log.info('else') + return sql.raw(`uid = '${query}'`) + } + } + }, +) + +export default ContentItemFilterPlugin diff --git a/packages/repco-graphql/src/plugins/content-item-title-filter.ts b/packages/repco-graphql/src/plugins/content-item-title-filter.ts new file mode 100644 index 00000000..b3f8a32b --- /dev/null +++ b/packages/repco-graphql/src/plugins/content-item-title-filter.ts @@ -0,0 +1,19 @@ +import { makeAddPgTableConditionPlugin } from 'graphile-utils' + +const ContentItemTitleFilterPlugin = makeAddPgTableConditionPlugin( + 'public', + 'ContentItem', + 'searchTitle', + (build) => ({ + description: + 'Filters the list to ContentItems that have a specific keyword in title.', + type: build.graphql.GraphQLString, + }), + (value, helpers, build) => { + if (value == null) return + const { sql, sqlTableAlias } = helpers + return sql.raw(`LOWER(title::text) LIKE LOWER('%${value}%')`) + }, +) + +export default ContentItemTitleFilterPlugin diff --git a/packages/repco-graphql/src/plugins/custom-filter.ts b/packages/repco-graphql/src/plugins/custom-filter.ts new file mode 100644 index 00000000..5c3b62c6 --- /dev/null +++ b/packages/repco-graphql/src/plugins/custom-filter.ts @@ -0,0 +1,21 @@ +import { makeAddPgTableConditionPlugin } from 'graphile-utils' +import { GraphQLNonNull, GraphQLString } from 'graphql' + +const CustomFilterPlugin = makeAddPgTableConditionPlugin( + 'repco', + 'Revision', + 'language', + (build) => ({ + description: 'Filters the list to Revisions that have a specific language.', + type: new build.graphql.GraphQLList( + new GraphQLNonNull(GraphQLString) as any, + ), + }), + (value, helpers, build) => { + if (value == null) return + const { sql, sqlTableAlias } = helpers + return sql.fragment`${sqlTableAlias}->>'en' LIKE '%${sql.value(value)}%'` + }, +) + +export default CustomFilterPlugin diff --git a/packages/repco-graphql/src/plugins/elastic.ts b/packages/repco-graphql/src/plugins/elastic.ts new file mode 100644 index 00000000..ff8693fd --- /dev/null +++ b/packages/repco-graphql/src/plugins/elastic.ts @@ -0,0 +1,56 @@ +import fetch from 'sync-fetch' +import { gql, makeExtendSchemaPlugin } from 'graphile-utils' + +const ElasticTest = makeExtendSchemaPlugin((build) => { + const { pgSql: sql } = build + + return { + typeDefs: gql` + extend type Query { + searchContentItems(searchText: String!): [ContentItem!] + } + `, + resolvers: { + Query: { + searchContentItems: async (_query, args, context, resovleInfo) => { + var data = { + query: { + query_string: { + query: args.searchText, + }, + }, + fields: ['id'], + _source: false, + } + + var url = 'http://localhost:9200/_search' + const response = fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(data), + }) + + var json = response.json() + + const rows = await resovleInfo.graphile.selectGraphQLResultFromTable( + sql.fragment`"ContentItem"`, + (tableAlias, queryBuilder) => { + queryBuilder.where( + sql.raw( + `uid IN (${json.hits.hits + .map((entry: any) => `'${entry['_id']}'`) + .join(',')})`, + ), + ) + }, + ) + console.log('rows: ', rows) + return rows + }, + }, + }, + } +}) +export default ElasticTest diff --git a/packages/repco-graphql/src/plugins/export-schema.ts b/packages/repco-graphql/src/plugins/export-schema.ts index 26d6002f..33d94e61 100644 --- a/packages/repco-graphql/src/plugins/export-schema.ts +++ b/packages/repco-graphql/src/plugins/export-schema.ts @@ -5,8 +5,8 @@ let SCHEMA: GraphQLSchema | null = null let SDL: string | null = null const ExportSchemaPlugin = makeProcessSchemaPlugin((schema) => { - SCHEMA = schema - SDL = printSchema(schema) + SCHEMA = schema as any + SDL = printSchema(schema as any) return schema }) diff --git a/packages/repco-graphql/src/plugins/revisions-by-entity-uris-not.ts b/packages/repco-graphql/src/plugins/revisions-by-entity-uris-not.ts new file mode 100644 index 00000000..e4ca110c --- /dev/null +++ b/packages/repco-graphql/src/plugins/revisions-by-entity-uris-not.ts @@ -0,0 +1,20 @@ +import { makeAddPgTableConditionPlugin } from 'graphile-utils' + +const RevisionsByEntityUrisNot = makeAddPgTableConditionPlugin( + 'public', + 'Revision', + 'byEntityUrisNot', + (build) => ({ + description: + 'Filters the list to Revisions that are not in the list of uris.', + type: build.graphql.GraphQLString, + }), + (value: any, helpers, build) => { + if (value == null) return + const { sql, sqlTableAlias } = helpers + var inValues = value.split(',') + return sql.raw(`"entityUris" NOT IN ('{${inValues.join(`}','{`)}}')`) + }, +) + +export default RevisionsByEntityUrisNot diff --git a/packages/repco-graphql/src/plugins/revisions-by-entity-uris.ts b/packages/repco-graphql/src/plugins/revisions-by-entity-uris.ts new file mode 100644 index 00000000..c46efaf9 --- /dev/null +++ b/packages/repco-graphql/src/plugins/revisions-by-entity-uris.ts @@ -0,0 +1,19 @@ +import { makeAddPgTableConditionPlugin } from 'graphile-utils' + +const RevisionsByEntityUris = makeAddPgTableConditionPlugin( + 'public', + 'Revision', + 'byEntityUris', + (build) => ({ + description: 'Filters the list to Revisions that are in the list of uris.', + type: build.graphql.GraphQLString, + }), + (value: any, helpers, build) => { + if (value == null) return + const { sql, sqlTableAlias } = helpers + var inValues = value.split(',') + return sql.raw(`"entityUris" IN ('{${inValues.join(`}','{`)}}')`) + }, +) + +export default RevisionsByEntityUris diff --git a/packages/repco-graphql/src/plugins/wrap-resolver.ts b/packages/repco-graphql/src/plugins/wrap-resolver.ts index f4d46fe3..22e84d30 100644 --- a/packages/repco-graphql/src/plugins/wrap-resolver.ts +++ b/packages/repco-graphql/src/plugins/wrap-resolver.ts @@ -22,7 +22,7 @@ const WrapResolversPlugin = makeWrapResolversPlugin( const rootField = resolveInfo.schema.getQueryType()?.getFields()[ fieldName ] - if (rootField && hasPaginationArgs(rootField)) { + if (rootField && hasPaginationArgs(rootField as any)) { if (args.first >= 100) { throw new Error('Argument `first` may not be larger than 100') } diff --git a/packages/repco-prisma-generate/bin.js b/packages/repco-prisma-generate/bin.js index 5824a0a1..8f79b97d 100755 --- a/packages/repco-prisma-generate/bin.js +++ b/packages/repco-prisma-generate/bin.js @@ -1,3 +1,2 @@ #!/usr/bin/env node - import './dist/main.js' diff --git a/packages/repco-prisma/prisma/migrations/20230712072235_language/migration.sql b/packages/repco-prisma/prisma/migrations/20230712072235_language/migration.sql new file mode 100644 index 00000000..4a416c2d --- /dev/null +++ b/packages/repco-prisma/prisma/migrations/20230712072235_language/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Revision" ADD COLUMN "languages" TEXT NOT NULL DEFAULT ''; diff --git a/packages/repco-prisma/prisma/migrations/20230713110521_languagepoc/migration.sql b/packages/repco-prisma/prisma/migrations/20230713110521_languagepoc/migration.sql new file mode 100644 index 00000000..b846c8e3 --- /dev/null +++ b/packages/repco-prisma/prisma/migrations/20230713110521_languagepoc/migration.sql @@ -0,0 +1,9 @@ +/* + Warnings: + + - The `languages` column on the `Revision` table would be dropped and recreated. This will lead to data loss if there is data in the column. + +*/ +-- AlterTable +ALTER TABLE "Revision" DROP COLUMN "languages", +ADD COLUMN "languages" JSONB NOT NULL DEFAULT '[]'; diff --git a/packages/repco-prisma/prisma/migrations/20230718063427_languagepoc2/migration.sql b/packages/repco-prisma/prisma/migrations/20230718063427_languagepoc2/migration.sql new file mode 100644 index 00000000..5381d9f3 --- /dev/null +++ b/packages/repco-prisma/prisma/migrations/20230718063427_languagepoc2/migration.sql @@ -0,0 +1,12 @@ +/* + Warnings: + + - The `title` column on the `ContentItem` table would be dropped and recreated. This will lead to data loss if there is data in the column. + +*/ +-- AlterTable +ALTER TABLE "ContentItem" DROP COLUMN "title", +ADD COLUMN "title" JSONB NOT NULL DEFAULT '{}'; + +-- AlterTable +ALTER TABLE "Revision" ALTER COLUMN "languages" SET DEFAULT '{}'; diff --git a/packages/repco-prisma/prisma/migrations/20230720132041_multilingual/migration.sql b/packages/repco-prisma/prisma/migrations/20230720132041_multilingual/migration.sql new file mode 100644 index 00000000..a58d71a5 --- /dev/null +++ b/packages/repco-prisma/prisma/migrations/20230720132041_multilingual/migration.sql @@ -0,0 +1,63 @@ +/* + Warnings: + + - The `name` column on the `Concept` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `summary` column on the `Concept` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `description` column on the `Concept` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `description` column on the `ContentGrouping` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `summary` column on the `ContentGrouping` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `title` column on the `ContentGrouping` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `summary` column on the `ContentItem` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `content` column on the `ContentItem` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `title` column on the `MediaAsset` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `description` column on the `MediaAsset` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - The `name` column on the `PublicationService` table would be dropped and recreated. This will lead to data loss if there is data in the column. + - You are about to drop the `Translation` table. If the table is not empty, all the data it contains will be lost. + - Changed the type of `title` on the `Chapter` table. No cast exists, the column would be dropped and recreated, which cannot be done if there is data, since the column is required. + +*/ +-- DropForeignKey +ALTER TABLE "Translation" DROP CONSTRAINT "Translation_mediaAssetUid_fkey"; + +-- AlterTable +ALTER TABLE "Chapter" DROP COLUMN "title", +ADD COLUMN "title" JSONB NOT NULL; + +-- AlterTable +ALTER TABLE "Concept" DROP COLUMN "name", +ADD COLUMN "name" JSONB NOT NULL DEFAULT '{}', +DROP COLUMN "summary", +ADD COLUMN "summary" JSONB, +DROP COLUMN "description", +ADD COLUMN "description" JSONB; + +-- AlterTable +ALTER TABLE "ContentGrouping" DROP COLUMN "description", +ADD COLUMN "description" JSONB, +DROP COLUMN "summary", +ADD COLUMN "summary" JSONB, +DROP COLUMN "title", +ADD COLUMN "title" JSONB NOT NULL DEFAULT '{}'; + +-- AlterTable +ALTER TABLE "ContentItem" DROP COLUMN "summary", +ADD COLUMN "summary" JSONB, +DROP COLUMN "content", +ADD COLUMN "content" JSONB NOT NULL DEFAULT '{}'; + +-- AlterTable +ALTER TABLE "MediaAsset" DROP COLUMN "title", +ADD COLUMN "title" JSONB NOT NULL DEFAULT '{}', +DROP COLUMN "description", +ADD COLUMN "description" JSONB; + +-- AlterTable +ALTER TABLE "PublicationService" DROP COLUMN "name", +ADD COLUMN "name" JSONB NOT NULL DEFAULT '{}'; + +-- AlterTable +ALTER TABLE "Revision" ALTER COLUMN "languages" SET DEFAULT '', +ALTER COLUMN "languages" SET DATA TYPE TEXT; + +-- DropTable +DROP TABLE "Translation"; diff --git a/packages/repco-prisma/prisma/migrations/20230905113840_graph_ql_functions/migration.sql b/packages/repco-prisma/prisma/migrations/20230905113840_graph_ql_functions/migration.sql new file mode 100644 index 00000000..ec21c64a --- /dev/null +++ b/packages/repco-prisma/prisma/migrations/20230905113840_graph_ql_functions/migration.sql @@ -0,0 +1,149 @@ +CREATE OR REPLACE FUNCTION get_content_groupings_by_language(language_code text) +RETURNS TABLE(uid text, + revisionid text, + broadcastschedule text, + groupingtype text, + startingdate timestamp without time zone, + subtitle text, + terminationDate timestamp without time zone, + variant "ContentGroupingVariant", + licenseuid text, + description text, + title text, + summary text) +AS $$ +begin + return query EXECUTE 'select + uid, "ContentGrouping"."revisionId", "ContentGrouping"."broadcastSchedule", "ContentGrouping"."groupingType", "ContentGrouping"."startingDate", + subtitle, "ContentGrouping"."terminationDate", variant, "ContentGrouping"."licenseUid", + description#>>''{' || language_code ||',value}'' as description, + title#>>''{' || language_code ||',value}'' as title, + summary#>>''{' || language_code ||',value}'' as summary + from + "ContentGrouping" + where title->>'|| quote_literal(language_code) ||' is not null + or description->>'|| quote_literal(language_code) ||' is not null + or summary->>'|| quote_literal(language_code) ||' is not null' + using language_code; +end; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION get_content_items_by_language(language_code text) +RETURNS TABLE(uid text, + revisionid text, + subtitle text, + pubdate timestamp without time zone, + contentformat text, + primarygroupinguid text, + licenseuid text, + publicationserviceuid text, + title text, + content text, + summary text) +AS $$ +begin + return query EXECUTE 'select + uid, "ContentItem"."revisionId", subtitle, "ContentItem"."pubDate", "ContentItem"."contentFormat", + "ContentItem"."primaryGroupingUid", "ContentItem"."licenseUid","ContentItem"."publicationServiceUid", + title#>>''{' || language_code ||',value}'' as title, + content#>>''{' || language_code ||',value}'' as content, + summary#>>''{' || language_code ||',value}'' as summary + from + "ContentItem" + where title->>'|| quote_literal(language_code) ||' is not null + or content->>'|| quote_literal(language_code) ||' is not null + or summary->>'|| quote_literal(language_code) ||' is not null' + using language_code; +end; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION get_media_asset_by_language(language_code text) +RETURNS TABLE(uid text, + revisionid text, + duration float, + mediatype text, + fileuid text, + teaserimageuid text, + licenseuid text, + title text, + description text) +AS $$ +begin + return query EXECUTE 'select + uid, "MediaAsset"."revisionId", duration, "MediaAsset"."mediaType", "MediaAsset"."fileUid", + "MediaAsset"."teaserImageUid", "MediaAsset"."licenseUid", + title#>>''{' || language_code ||',value}'' as title, + description#>>''{' || language_code ||',value}'' as description + from + "MediaAsset" + where title->>'|| quote_literal(language_code) ||' is not null + or description->>'|| quote_literal(language_code) ||' is not null' + using language_code; +end; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION get_chapter_by_language(language_code text) +RETURNS TABLE(uid text, + revisionid text, + start float, + duration float, + type text, + title text) +AS $$ +begin + return query EXECUTE 'select + uid, "Chapter"."revisionId", start, duration, type, + title#>>''{' || language_code ||',value}'' as title + from + "Chapter" + where title->>'|| quote_literal(language_code) ||' is not null' + using language_code; +end; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION get_publication_service_by_language(language_code text) +RETURNS TABLE(uid text, + revisionid text, + medium text, + address text, + publisheruid text, + title text) +AS $$ +begin + return query EXECUTE 'select + uid, "PublicationService"."revisionId", medium, address, "PublicationService"."publisherUid", + name#>>''{' || language_code ||',value}'' as name + from + "PublicationService" + where name->>'|| quote_literal(language_code) ||' is not null' + using language_code; +end; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION get_concept_by_language(language_code text) +RETURNS TABLE(uid text, + revisionid text, + originnamespace text, + wikidataidentifier text, + sameasuid text, + parentuid text, + kind "ConceptKind", + name text, + summary text, + description text) +AS $$ +begin + return query EXECUTE 'select + uid, "Concept"."revisionId", "PublicationService"."originNamespace", "PublicationService"."wikidataIdentifier", + "PublicationService"."sameAsUid", "PublicationService"."parentUid", kind, + name#>>''{' || language_code ||',value}'' as name, + summary#>>''{' || language_code ||',value}'' as summary, + description#>>''{' || language_code ||',value}'' as description + from + "Concept" + where name->>'|| quote_literal(language_code) ||' is not null + or summary->>'|| quote_literal(language_code) ||' is not null + or description->>'|| quote_literal(language_code) ||' is not null' + using language_code; +end; +$$ LANGUAGE plpgsql; \ No newline at end of file diff --git a/packages/repco-prisma/prisma/migrations/20231201131437_add_revision_to_transcript/migration.sql b/packages/repco-prisma/prisma/migrations/20231201131437_add_revision_to_transcript/migration.sql new file mode 100644 index 00000000..d12f2bd0 --- /dev/null +++ b/packages/repco-prisma/prisma/migrations/20231201131437_add_revision_to_transcript/migration.sql @@ -0,0 +1,24 @@ +/* + Warnings: + + - A unique constraint covering the columns `[revisionId]` on the table `Transcript` will be added. If there are existing duplicate values, this will fail. + - Added the required column `author` to the `Transcript` table without a default value. This is not possible if the table is not empty. + - Added the required column `license` to the `Transcript` table without a default value. This is not possible if the table is not empty. + - Added the required column `revisionId` to the `Transcript` table without a default value. This is not possible if the table is not empty. + - Added the required column `subtitleUrl` to the `Transcript` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "PublicationService" ALTER COLUMN "name" DROP DEFAULT; + +-- AlterTable +ALTER TABLE "Transcript" ADD COLUMN "author" TEXT NOT NULL, +ADD COLUMN "license" TEXT NOT NULL, +ADD COLUMN "revisionId" TEXT NOT NULL, +ADD COLUMN "subtitleUrl" TEXT NOT NULL; + +-- CreateIndex +CREATE UNIQUE INDEX "Transcript_revisionId_key" ON "Transcript"("revisionId"); + +-- AddForeignKey +ALTER TABLE "Transcript" ADD CONSTRAINT "Transcript_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/packages/repco-prisma/prisma/migrations/20240216082027_added_content_url/migration.sql b/packages/repco-prisma/prisma/migrations/20240216082027_added_content_url/migration.sql new file mode 100644 index 00000000..adf22cd6 --- /dev/null +++ b/packages/repco-prisma/prisma/migrations/20240216082027_added_content_url/migration.sql @@ -0,0 +1,8 @@ +/* + Warnings: + + - Added the required column `contentUrl` to the `ContentItem` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "ContentItem" ADD COLUMN "contentUrl" TEXT NOT NULL; diff --git a/packages/repco-prisma/prisma/migrations/20240304125342_remove_subtitles/migration.sql b/packages/repco-prisma/prisma/migrations/20240304125342_remove_subtitles/migration.sql new file mode 100644 index 00000000..48c647b2 --- /dev/null +++ b/packages/repco-prisma/prisma/migrations/20240304125342_remove_subtitles/migration.sql @@ -0,0 +1,132 @@ +/* + Warnings: + + - You are about to drop the `Subtitles` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `_FileToSubtitles` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropForeignKey +ALTER TABLE "BroadcastEvent" DROP CONSTRAINT "BroadcastEvent_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "Chapter" DROP CONSTRAINT "Chapter_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "Commit" DROP CONSTRAINT "Commit_repoDid_fkey"; + +-- DropForeignKey +ALTER TABLE "Concept" DROP CONSTRAINT "Concept_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "ContentGrouping" DROP CONSTRAINT "ContentGrouping_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "ContentItem" DROP CONSTRAINT "ContentItem_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "Contribution" DROP CONSTRAINT "Contribution_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "Contributor" DROP CONSTRAINT "Contributor_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "DataSource" DROP CONSTRAINT "DataSource_repoDid_fkey"; + +-- DropForeignKey +ALTER TABLE "Entity" DROP CONSTRAINT "Entity_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "File" DROP CONSTRAINT "File_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "License" DROP CONSTRAINT "License_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "MediaAsset" DROP CONSTRAINT "MediaAsset_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "Metadata" DROP CONSTRAINT "Metadata_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "PublicationService" DROP CONSTRAINT "PublicationService_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "Revision" DROP CONSTRAINT "Revision_repoDid_fkey"; + +-- DropForeignKey +ALTER TABLE "SourceRecord" DROP CONSTRAINT "SourceRecord_dataSourceUid_fkey"; + +-- DropForeignKey +ALTER TABLE "Subtitles" DROP CONSTRAINT "Subtitles_mediaAssetUid_fkey"; + +-- DropForeignKey +ALTER TABLE "Subtitles" DROP CONSTRAINT "Subtitles_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "Transcript" DROP CONSTRAINT "Transcript_revisionId_fkey"; + +-- DropForeignKey +ALTER TABLE "_FileToSubtitles" DROP CONSTRAINT "_FileToSubtitles_A_fkey"; + +-- DropForeignKey +ALTER TABLE "_FileToSubtitles" DROP CONSTRAINT "_FileToSubtitles_B_fkey"; + +-- DropTable +DROP TABLE "Subtitles"; + +-- DropTable +DROP TABLE "_FileToSubtitles"; + +-- AddForeignKey +ALTER TABLE "Commit" ADD CONSTRAINT "Commit_repoDid_fkey" FOREIGN KEY ("repoDid") REFERENCES "Repo"("did") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "DataSource" ADD CONSTRAINT "DataSource_repoDid_fkey" FOREIGN KEY ("repoDid") REFERENCES "Repo"("did") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Entity" ADD CONSTRAINT "Entity_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Revision" ADD CONSTRAINT "Revision_repoDid_fkey" FOREIGN KEY ("repoDid") REFERENCES "Repo"("did") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "SourceRecord" ADD CONSTRAINT "SourceRecord_dataSourceUid_fkey" FOREIGN KEY ("dataSourceUid") REFERENCES "DataSource"("uid") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ContentGrouping" ADD CONSTRAINT "ContentGrouping_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ContentItem" ADD CONSTRAINT "ContentItem_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "License" ADD CONSTRAINT "License_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MediaAsset" ADD CONSTRAINT "MediaAsset_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Contribution" ADD CONSTRAINT "Contribution_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Contributor" ADD CONSTRAINT "Contributor_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Chapter" ADD CONSTRAINT "Chapter_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "BroadcastEvent" ADD CONSTRAINT "BroadcastEvent_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "PublicationService" ADD CONSTRAINT "PublicationService_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Transcript" ADD CONSTRAINT "Transcript_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "File" ADD CONSTRAINT "File_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Concept" ADD CONSTRAINT "Concept_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Metadata" ADD CONSTRAINT "Metadata_revisionId_fkey" FOREIGN KEY ("revisionId") REFERENCES "Revision"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/packages/repco-prisma/prisma/migrations/20240318092232_added_misc_fields/migration.sql b/packages/repco-prisma/prisma/migrations/20240318092232_added_misc_fields/migration.sql new file mode 100644 index 00000000..4adcf22e --- /dev/null +++ b/packages/repco-prisma/prisma/migrations/20240318092232_added_misc_fields/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "ContentItem" ADD COLUMN "originalLanguages" JSONB; diff --git a/packages/repco-prisma/prisma/migrations/20240430180321_misc_changes/migration.sql b/packages/repco-prisma/prisma/migrations/20240430180321_misc_changes/migration.sql new file mode 100644 index 00000000..4447842a --- /dev/null +++ b/packages/repco-prisma/prisma/migrations/20240430180321_misc_changes/migration.sql @@ -0,0 +1,13 @@ +/* + Warnings: + + - Changed the type of `kind` on the `Concept` table. No cast exists, the column would be dropped and recreated, which cannot be done if there is data, since the column is required. + - Added the required column `removed` to the `ContentItem` table without a default value. This is not possible if the table is not empty. + +*/ +-- AlterTable +ALTER TABLE "Concept" DROP COLUMN "kind", +ADD COLUMN "kind" TEXT NOT NULL; + +-- AlterTable +ALTER TABLE "ContentItem" ADD COLUMN "removed" BOOLEAN NOT NULL; diff --git a/packages/repco-prisma/prisma/migrations/20240618130249_content_url_json/migration.sql b/packages/repco-prisma/prisma/migrations/20240618130249_content_url_json/migration.sql new file mode 100644 index 00000000..17cb430f --- /dev/null +++ b/packages/repco-prisma/prisma/migrations/20240618130249_content_url_json/migration.sql @@ -0,0 +1,9 @@ +/* + Warnings: + + - Changed the type of `contentUrl` on the `ContentItem` table. No cast exists, the column would be dropped and recreated, which cannot be done if there is data, since the column is required. + +*/ +-- AlterTable +ALTER TABLE "ContentItem" DROP COLUMN "contentUrl", +ADD COLUMN "contentUrl" JSONB NOT NULL; diff --git a/packages/repco-prisma/prisma/migrations/20240621122457_profile_picture_null/migration.sql b/packages/repco-prisma/prisma/migrations/20240621122457_profile_picture_null/migration.sql new file mode 100644 index 00000000..672f8784 --- /dev/null +++ b/packages/repco-prisma/prisma/migrations/20240621122457_profile_picture_null/migration.sql @@ -0,0 +1,18 @@ +/* + Warnings: + + - The `subtitle` column on the `ContentItem` table would be dropped and recreated. This will lead to data loss if there is data in the column. + +*/ +-- DropForeignKey +ALTER TABLE "Contributor" DROP CONSTRAINT "Contributor_profilePictureUid_fkey"; + +-- AlterTable +ALTER TABLE "ContentItem" DROP COLUMN "subtitle", +ADD COLUMN "subtitle" JSONB; + +-- AlterTable +ALTER TABLE "Contributor" ALTER COLUMN "profilePictureUid" DROP NOT NULL; + +-- AddForeignKey +ALTER TABLE "Contributor" ADD CONSTRAINT "Contributor_profilePictureUid_fkey" FOREIGN KEY ("profilePictureUid") REFERENCES "File"("uid") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/packages/repco-prisma/prisma/schema.prisma b/packages/repco-prisma/prisma/schema.prisma index f1efa068..92523b78 100644 --- a/packages/repco-prisma/prisma/schema.prisma +++ b/packages/repco-prisma/prisma/schema.prisma @@ -56,7 +56,7 @@ model Commit { Revisions Revision[] @relation("RevisionToCommit") Agent Agent @relation(fields: [agentDid], references: [did]) IsHeadOf Repo? @relation("RepoToHead") - Repo Repo @relation(fields: [repoDid], references: [did]) + Repo Repo @relation(fields: [repoDid], references: [did], onDelete: Cascade) // CommitBlock Block @relation("CommitBlock", fields: [commitCid], references: [cid]) // RootBlock Block @relation("RootBlock", fields: [rootCid], references: [cid]) } @@ -99,7 +99,7 @@ model DataSource { active Boolean? SourceRecords SourceRecord[] - Repo Repo @relation(fields: [repoDid], references: [did]) + Repo Repo @relation(fields: [repoDid], references: [did], onDelete: Cascade) } enum KeypairScope { @@ -125,15 +125,15 @@ model FailedDatasourceFetches { } model IngestError { - id String @id @unique - repoDid String - datasourceUid String - kind String - cursor String? + id String @id @unique + repoDid String + datasourceUid String + kind String + cursor String? sourceRecordId String? - timestamp DateTime - errorMessage String - errorDetails Json? + timestamp DateTime + errorMessage String + errorDetails Json? } // model Cursor { @@ -154,7 +154,7 @@ model Entity { revisionId String @unique type String - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) Metadata Metadata[] } @@ -175,12 +175,14 @@ model Revision { entityUris String[] revisionUris String[] + languages String @default("") + // core derived fields contentCid String // cid of content block revisionCid String @unique // cid of revision block // core relations - Repo Repo @relation(fields: [repoDid], references: [did]) + Repo Repo @relation(fields: [repoDid], references: [did], onDelete: Cascade) Agent Agent @relation(fields: [agentDid], references: [did]) // ContentBlock Block @relation("ContentBlock", fields: [contentCid], references: [cid]) // RevisionBlock Block @relation("RevisionBlock", fields: [revisionCid], references: [cid]) @@ -208,7 +210,8 @@ model Revision { Chapter Chapter? Contribution Contribution? Metadata Metadata? - Subtitles Subtitles? + Transcript Transcript? + // Subtitles Subtitles? } model SourceRecord { @@ -227,7 +230,7 @@ model SourceRecord { meta Json? dataSourceUid String? - DataSource DataSource? @relation(fields: [dataSourceUid], references: [uid]) + DataSource DataSource? @relation(fields: [dataSourceUid], references: [uid], onDelete: Cascade) // DerivedRevisions Revision[] @relation("DerivedRevisions") } @@ -240,13 +243,13 @@ model ContentGrouping { revisionId String @unique broadcastSchedule String? // TODO: JSON (channel, rrule) - description String? + description Json? groupingType String // TODO: enum? startingDate DateTime? subtitle String? - summary String? + summary Json? terminationDate DateTime? - title String + title Json @default("{}") variant ContentGroupingVariant licenseUid String? @@ -254,25 +257,28 @@ model ContentGrouping { License License? @relation(fields: [licenseUid], references: [uid]) ContentItemsPrimary ContentItem[] @relation("primaryGrouping") ContentItemsAdditional ContentItem[] - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) } /// @repco(Entity) model ContentItem { - uid String @id @unique /// @zod.refine(imports.isValidUID) - revisionId String @unique - title String - subtitle String? - pubDate DateTime? // TODO: Review this - summary String? - content String - contentFormat String + uid String @id @unique /// @zod.refine(imports.isValidUID) + revisionId String @unique + title Json @default("{}") + subtitle Json? + pubDate DateTime? // TODO: Review this + summary Json? + content Json @default("{}") + contentFormat String + contentUrl Json + originalLanguages Json? + removed Boolean primaryGroupingUid String? publicationServiceUid String? licenseUid String? - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) AdditionalGroupings ContentGrouping[] BroadcastEvents BroadcastEvent[] Concepts Concept[] @@ -289,7 +295,7 @@ model License { revisionId String @unique name String - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) ContentItems ContentItem[] MediaAssets MediaAsset[] ContentGroupings ContentGrouping[] @@ -297,17 +303,17 @@ model License { /// @repco(Entity) model MediaAsset { - uid String @id @unique - revisionId String @unique - title String - description String? + uid String @id @unique + revisionId String @unique + title Json @default("{}") + description Json? duration Float? mediaType String // TODO: Enum? teaserImageUid String? licenseUid String? - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) Files File[] ContentItems ContentItem[] Transcripts Transcript[] @@ -316,8 +322,8 @@ model MediaAsset { License License? @relation(fields: [licenseUid], references: [uid]) Contributions Contribution[] Concepts Concept[] - Translation Translation[] - Subtitles Subtitles[] + // Translation Translation[] + // Subtitles Subtitles[] } /// @repco(Entity) @@ -329,20 +335,22 @@ model Contribution { Contributor Contributor[] ContentItems ContentItem[] MediaAssets MediaAsset[] - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) } /// @repco(Entity) model Contributor { - uid String @id @unique - revisionId String @unique + uid String @id @unique + revisionId String @unique name String personOrOrganization String contactInformation String + //contactEmail String + //url String + //description String + profilePictureUid String? - profilePictureUid String - - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) BroadcastService PublicationService[] Contributions Contribution[] ProfilePicture File? @relation(fields: [profilePictureUid], references: [uid]) @@ -355,13 +363,13 @@ model Chapter { start Float duration Float - title String + title Json type String // TODO: enum? mediaAssetUid String MediaAsset MediaAsset @relation(fields: [mediaAssetUid], references: [uid]) - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) } /// @repco(Entity) @@ -375,7 +383,7 @@ model BroadcastEvent { broadcastServiceUid String contentItemUid String - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) ContentItem ContentItem @relation(fields: [contentItemUid], references: [uid]) BroadcastService PublicationService @relation(fields: [broadcastServiceUid], references: [uid]) } @@ -385,41 +393,48 @@ model PublicationService { uid String @id @unique revisionId String @unique - name String + name Json publisher Contributor? @relation(fields: [publisherUid], references: [uid]) medium String? // FM, Web, ... address String publisherUid String? - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) BroadcastEvents BroadcastEvent[] ContentItem ContentItem[] } /// @repco(Entity) model Transcript { - uid String @id @unique - language String - text String - engine String + uid String @id @unique + revisionId String @unique + language String + text String + engine String + subtitleUrl String // url to webvtt file (string) + author String // field for author (string) + license String // license field (string) mediaAssetUid String + //TODO: Contributor relation MediaAsset MediaAsset @relation(fields: [mediaAssetUid], references: [uid]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) } +// might not be needed? /// @repco(Entity) -model Translation { - uid String @id @unique - language String - text String - engine String +// model Translation { +// uid String @id @unique +// language String +// text String +// engine String - mediaAssetUid String +// mediaAssetUid String - MediaAsset MediaAsset @relation(fields: [mediaAssetUid], references: [uid]) -} +// MediaAsset MediaAsset @relation(fields: [mediaAssetUid], references: [uid]) +// } /// @repco(Entity) model File { @@ -436,11 +451,11 @@ model File { resolution String? additionalMetadata String? - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) AsMediaAssets MediaAsset[] AsThumbnail MediaAsset[] @relation("thumbnail") contributors Contributor[] - AsSubtitles Subtitles[] + // AsSubtitles Subtitles[] } enum ConceptKind { @@ -454,15 +469,15 @@ model Concept { revisionId String @unique originNamespace String? - kind ConceptKind - name String - summary String? - description String? + kind String + name Json @default("{}") + summary Json? + description Json? wikidataIdentifier String? - sameAsUid String? @unique + sameAsUid String? @unique parentUid String? - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) SameAs Concept? @relation("isSameAs", fields: [sameAsUid], references: [uid]) SameAsReverse Concept? @relation("isSameAs") ParentConcept Concept? @relation("parentConcept", fields: [parentUid], references: [uid]) @@ -482,40 +497,42 @@ model Metadata { targetUid String - Revision Revision @relation(fields: [revisionId], references: [id]) + Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) TargetEntity Entity @relation(fields: [targetUid], references: [uid]) } +// deprecated /// @repco(Entity) -model Subtitles { - uid String @id @unique - revisionId String @unique - languageCode String - - Files File[] - MediaAsset MediaAsset @relation(fields: [mediaAssetUid], references: [uid]) - mediaAssetUid String - Revision Revision @relation(fields: [revisionId], references: [id]) -} +// model Subtitles { +// uid String @id @unique +// revisionId String @unique +// languageCode String + +// Files File[] +// MediaAsset MediaAsset @relation(fields: [mediaAssetUid], references: [uid]) +// mediaAssetUid String +// Revision Revision @relation(fields: [revisionId], references: [id], onDelete: Cascade) +// } model ApLocalActor { - name String @unique + name String @unique keypair Json } model ApFollows { localName String - remoteId String + remoteId String + @@unique([localName, remoteId]) } model ApActivities { - id String @unique - actorId String - type String - objectId String + id String @unique + actorId String + type String + objectId String receivedAt DateTime - details Json + details Json attributedTo String[] } diff --git a/packages/repco-server/src/routes/admin.ts b/packages/repco-server/src/routes/admin.ts index b84ad01e..9a76e88b 100644 --- a/packages/repco-server/src/routes/admin.ts +++ b/packages/repco-server/src/routes/admin.ts @@ -133,6 +133,20 @@ router.get('/repo/:repo', async (req, res) => { } }) +// Delete a repo +router.delete('/repo/:repo', async (req, res) => { + try { + const { prisma } = getLocals(res) + await repoRegistry.delete(prisma, req.params.repo) + res.send({ ok: true }) + } catch (err) { + throw new ServerError( + 500, + `Failed to get information for repo ${req.params.repo}` + err, + ) + } +}) + // create datasource router.post('/repo/:repo/ds', async (req, res) => { try { diff --git a/packages/repco-server/test/smoke.ts b/packages/repco-server/test/smoke.ts index 4ff84152..112a161d 100644 --- a/packages/repco-server/test/smoke.ts +++ b/packages/repco-server/test/smoke.ts @@ -13,6 +13,9 @@ async function createTestRepo(prisma: PrismaClient) { content: 'badoo', subtitle: 'asdf', summary: 'yoo', + contentUrl: 'url', + removed: false, + originalLanguages: {}, }, } await repo.saveEntity('me', input) diff --git a/pgsync/Dockerfile b/pgsync/Dockerfile new file mode 100644 index 00000000..5fe963b4 --- /dev/null +++ b/pgsync/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.11-slim + +WORKDIR /usr/src/app + +ADD ./src ./ + +RUN chmod +x ./entrypoint.sh + +RUN pip install pgsync==2.5.0 + +RUN apt update \ + && apt install -y moreutils \ + && apt install -y jq \ + && apt install -y wait-for-it + +ENTRYPOINT ["bash", "./entrypoint.sh"] \ No newline at end of file diff --git a/pgsync/README.md b/pgsync/README.md new file mode 100644 index 00000000..2aaf1c2d --- /dev/null +++ b/pgsync/README.md @@ -0,0 +1,32 @@ +# Sync data to elasticsearch + +This folder contains the files needed for [pgsync](https://github.com/toluaina/). pgsync is a no-code solution for replicating data into an elastic search index. + +## Prerequisites + +pgsync requires logical decoding. This can be set in the `postgresql.conf` configuration file or as startup parameters in `docker-compose.yml` + +``` +wal_level=logical +max_replication_slots=4 +``` + +## Configuration + +A working configuration file is located at [config/schema.json](config/schema.json). This schema file should be made available to the pgsync docker container in its `/data` folder. + +## Searching (using the ES server) + +To search for a phrase in the elastic search index you can use the `_search` endpoint using the following example request: + +``` +curl --location --request GET 'localhost:9201/_search' \ +--header 'Content-Type: application/json' \ +--data '{ + "query": { + "query_string": { + "query": "wissensturm-360" + } + } +}' +``` diff --git a/pgsync/config/schema.json b/pgsync/config/schema.json new file mode 100644 index 00000000..43c57a6e --- /dev/null +++ b/pgsync/config/schema.json @@ -0,0 +1,68 @@ +[ + { + "nodes": { + "table": "ContentItem", + "schema": "public", + "columns": ["title", "subtitle", "pubDate", "summary", "content"], + "children": [ + { + "table": "MediaAsset", + "schema": "public", + "label": "MediaAsset", + "columns": ["title", "description", "mediaType"], + "primary_key": ["uid"], + "relationship": { + "variant": "object", + "type": "one_to_many", + "through_tables": ["_ContentItemToMediaAsset"] + }, + "children": [ + { + "table": "Transcript", + "schema": "public", + "label": "Transcript", + "columns": ["language", "text"], + "primary_key": ["uid"], + "relationship": { + "variant": "object", + "type": "one_to_many", + "foreign_key": { + "child": ["mediaAssetUid"], + "parent": ["uid"] + } + } + } + ] + }, + { + "table": "ContentGrouping", + "schema": "public", + "label": "ContentGrouping", + "columns": ["subtitle", "summary", "title"], + "primary_key": "uid", + "relationship": { + "variant": "object", + "type": "one_to_many", + "foreign_key": { + "child": ["uid"], + "parent": ["primaryGroupingUid"] + } + } + }, + { + "table": "Concept", + "schema": "public", + "label": "Concept", + "columns": ["name"], + "primary_key": ["uid"], + "relationship": { + "variant": "object", + "type": "one_to_many", + "through_tables": ["_ConceptToContentItem"] + } + } + ] + }, + "database": "repco" + } +] diff --git a/pgsync/src/entrypoint.sh b/pgsync/src/entrypoint.sh new file mode 100644 index 00000000..dd43ad7e --- /dev/null +++ b/pgsync/src/entrypoint.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +wait-for-it $PG_HOST:5432 -t 60 +wait-for-it $REDIS_HOST:6379 -t 60 +wait-for-it $ELASTICSEARCH_HOST:9200 -t 60 + +jq '.[].database = env.PG_DATABASE' /data/schema.json | sponge /data/schema.json + +bootstrap --config /data/schema.json +pgsync --config /data/schema.json -d -v \ No newline at end of file diff --git a/sample.env b/sample.env index 40388bef..c4162730 100644 --- a/sample.env +++ b/sample.env @@ -29,3 +29,17 @@ REPCO_ADMIN_TOKEN= # Enable debug logging # LOG_LEVEL=debug + +# GitHub Client ID and Secret +# GITHUB_CLIENT_ID= +# GITHUB_CLIENT_SECRET= + +# Configuration values for elastic search & pgsync +# Password for the 'elastic' user (at least 6 characters) +ELASTIC_PASSWORD=repco +ELASTIC_VERSION=8.10.4 +ELASTIC_LICENSE=basic +ELASTIC_PORT=9201 +ELASTIC_MEM_LIMIT=1073741824 +ELASTIC_CLUSTER_NAME=repco-es +REDIS_PASSWORD=repco diff --git a/scripts/init_config.sh b/scripts/init_config.sh new file mode 100644 index 00000000..fd7194b5 --- /dev/null +++ b/scripts/init_config.sh @@ -0,0 +1,149 @@ +#!/bin/bash +echo "Configuring repco repos and datasources" + +echo "creating aracityradio repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create aracityradio +echo "adding Ara City Radio ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r aracityradio repco:datasource:rss '{"endpoint":"https://feeds.soundcloud.com/users/soundcloud:users:2162577/sounds.rss", "url":"https://aracityradio.com","name":"Radio ARA","image":"https://images.squarespace-cdn.com/content/v1/5a615d2aaeb62560d14ef42a/9342bcf2-34fa-47f2-a6fe-1a9751d10494/aracity+copy.png?format=1500w","thumbnail":"https://images.squarespace-cdn.com/content/v1/5a615d2aaeb62560d14ef42a/9342bcf2-34fa-47f2-a6fe-1a9751d10494/aracity+copy.png?format=150w"}' + +echo "creating civiltavasz repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create civiltavasz +echo "adding Radio Civil Tavasz ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r civiltavasz repco:datasource:rss '{"endpoint":"https://civiltavasz.hu/feed/", "url":"https://civiltavasz.hu","name":"Radio Civil Tavasz","image":"https://civiltavasz.hu/wp-content/uploads/2015/09/civil-logo.png","thumbnail":"https://civiltavasz.hu/wp-content/uploads/2015/09/civil-logo.png"}' + +echo "creating eucast repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create eucast +echo "adding eucast ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r eucast repco:datasource:rss '{"endpoint":"https://anchor.fm/s/f3d38ea4/podcast/rss", "url":"Eucast.rs","name":"Eucast.rs","image":"https://eucast.rs/wp-content/uploads/2024/04/eucast-logo-t2.png","thumbnail":"https://eucast.rs/wp-content/uploads/2024/04/eucast-logo-t2.png"}' + +echo "creating city-rights-radio repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create city-rights-radio +echo "adding City Rights Radio ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r city-rights-radio repco:datasource:rss '{"endpoint":"https://anchor.fm/s/64ede338/podcast/rss", "url":"https://anchor.fm/s/64ede338/podcast/rss","name":"City Rights Radio","image":"https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_nologo/16833118/16833118-1644853804086-100abd1b5a479.jpg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_nologo/16833118/16833118-1644853804086-100abd1b5a479.jpg"}' + +echo "creating lazy-women repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create lazy-women +echo "adding Lazy Women ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r lazy-women repco:datasource:rss '{"endpoint":"https://anchor.fm/s/d731801c/podcast/rss", "url":"https://lazywomen.com/","name":"Lazy Women","image":"https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_nologo/36003455/36003455-1671734955726-771ed95b1f97.jpg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_nologo/36003455/36003455-1671734955726-771ed95b1f97.jpg"}' + +echo "creating eurozine repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create eurozine +echo "adding Eurozine ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r eurozine repco:datasource:transposer '{"endpoint":"https://vmwczww5w2j.c.updraftclone.com/wp-json/transposer/v1/repco", "url":"https://www.eurozine.com/","name":"Eurozine","image":"https://cba.media/wp-content/uploads/7/7/0000666177/eurozine-logo.png","thumbnail":"https://cba.media/wp-content/uploads/7/7/0000666177/eurozine-logo.png"}' + +#echo "creating voxeurop repo..." +#docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create voxeurop +#echo "adding Voxeurop ds..." +#docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r voxeurop repco:datasource:transposer '{"endpoint":"https://dev.voxeurop.eu/wp-json/transposer/v1/repco", "url":"https://voxeurop.eu","name":"Voxeurop","image":"https://upload.wikimedia.org/wikipedia/en/1/1a/Logo_Voxeurop_%282020%29.jpg","thumbnail":"https://upload.wikimedia.org/wikipedia/en/1/1a/Logo_Voxeurop_%282020%29.jpg"}' + +echo "creating krytyka-polityczna repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create krytyka-polityczna +echo "adding Krytyka Polityczna ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r krytyka-polityczna repco:datasource:transposer '{"endpoint":"https://beta.krytykapolityczna.pl/wp-json/transposer/v1/repco", "url":"https://krytykapolityczna.pl","name":"Krytyka Polityczna","image":"https://cba.media/wp-content/uploads/8/1/0000667618/logo-krytyka-polityczna.jpg","thumbnail":"https://cba.media/wp-content/uploads/8/1/0000667618/logo-krytyka-polityczna.jpg"}' + +echo "creating displayeurope repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create displayeurope +echo "adding Displayeurope.eu ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r displayeurope repco:datasource:transposer '{"endpoint":"https://displayeurope.eu/wp-json/transposer/v1/repco", "url":"https://displayeurope.eu","name":"Displayeurope.eu","image":"https://cba.media/wp-content/uploads/5/4/0000660645/displayeurope-logo.png","thumbnail":"https://cba.media/wp-content/uploads/5/4/0000660645/displayeurope-logo-76x60.png"}' + +echo "creating eldiario repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create eldiario +echo "adding ElDiario ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r eldiario repco:datasource:rss '{"endpoint":"https://www.eldiario.es/rss/category/tag/1048911", "url":"https://www.eldiario.es/","name":"ElDiario","image":"https://www.eldiario.es/assets/img/svg/logos/eldiario-tagline-2c.h-129fb361f1eeeaf4af9b8135dc8199ea.svg","thumbnail":"https://www.eldiario.es/assets/img/svg/logos/eldiario-tagline-2c.h-129fb361f1eeeaf4af9b8135dc8199ea.svg"}' + +echo "creating ecf repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create ecf +echo "adding ECF European Pavillion podcast ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r ecf repco:datasource:rss '{"endpoint":"https://feeds.acast.com/public/shows/60b002e393a31900125b8e4e", "url":"https://feeds.acast.com/public/shows/60b002e393a31900125b8e4e","name":"ECF European Pavillion podcast","image":"https://assets.pippa.io/shows/60b002e393a31900125b8e4e/show-cover.jpeg","thumbnail":"https://assets.pippa.io/shows/60b002e393a31900125b8e4e/show-cover.jpeg"}' + +echo "creating amensagem repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create amensagem +echo "adding Mensagem de Lisboa ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r amensagem repco:datasource:rss '{"endpoint":"https://amensagem.pt/feed", "url":"https://amensagem.pt","name":"Mensagem de Lisboa","image":"https://i0.wp.com/amensagem.pt/wp-content/uploads/2021/01/cropped-cropped-a-mensagem-logo-scaled-1.jpg?w=2560&ssl=1","thumbnail":"https://i0.wp.com/amensagem.pt/wp-content/uploads/2021/01/cropped-cropped-a-mensagem-logo-scaled-1.jpg?w=2560&ssl=1"}' + +echo "creating migrant-women repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create migrant-women +echo "adding Migrant Women Press ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r migrant-women repco:datasource:rss '{"endpoint":"https://migrantwomenpress.com/feed/", "url":"https://migrantwomenpress.com/","name":"Migrant Women Press","image":"https://migrantwomenpress.com/wp-content/uploads/2024/04/cropped-cropped-Lockup-Color.png","thumbnail":"https://migrantwomenpress.com/wp-content/uploads/2024/04/cropped-cropped-Lockup-Color.png"}' + +echo "creating sudvest repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create sudvest +echo "adding Sudvest ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r sudvest repco:datasource:rss '{"endpoint":"https://sudvest.ro/feed/", "url":"https://sudvest.ro","name":"Sudvest","image":"https://sudvest.ro/wp-content/uploads/2020/02/SUDVEST.jpg","thumbnail":"https://sudvest.ro/wp-content/uploads/2020/02/SUDVEST.jpg"}' + +echo "creating vreme repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create vreme +echo "adding Vreme ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r vreme repco:datasource:rss '{"endpoint":"https://anchor.fm/s/f124f260/podcast/rss", "url":"https://www.vreme.com/","name":"Vreme","image":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/40357304/40357304-1705940540363-c0d9589726ecf.jpg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/40357304/40357304-1705940540363-c0d9589726ecf.jpg"}' + +echo "creating cins repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create cins +echo "adding cins ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r cins repco:datasource:rss '{"endpoint":"https://anchor.fm/s/e8747e38/podcast/rss", "url":"https://www.cins.rs/en/","name":"Center for Investigative Journalism Serbia","image":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/38899486/38899486-1693856314696-a8d5a7cbd3557.jpg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/38899486/38899486-1693856314696-a8d5a7cbd3557.jpg"}' + +echo "creating sound-of-thought repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create sound-of-thought +echo "adding Sound of Thought (Institute for Philosophy and social theory) ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r sound-of-thought repco:datasource:rss '{"endpoint":"https://anchor.fm/s/d9850604/podcast/rss", "url":"https://ifdt.bg.ac.rs/?lang=en","name":"Sound of Thought (Institute for Philosophy and social theory)","image":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/36393737/36393737-1686347856464-23acb9a41f5fd.jpg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/36393737/36393737-1686347856464-23acb9a41f5fd.jpg"}' + +echo "creating klima-101 repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create klima-101 +echo "adding Klima 101 ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r klima-101 repco:datasource:rss '{"endpoint":"https://anchor.fm/s/da0dc82c/podcast/rss", "url":"https://klima101.rs/","name":"Klima 101","image":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/36483363/0867d5a20d2805b0.jpeg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/36483363/0867d5a20d2805b0.jpeg"}' + +echo "creating mdi repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create mdi +echo "adding MDI Institute ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r mdi repco:datasource:rss '{"endpoint":"https://anchor.fm/s/15af2750/podcast/rss", "url":"https://www.media-diversity.org/","name":"Klima 101","image":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/3538004/3538004-1714411872178-764483c4e8899.jpg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/3538004/3538004-1714411872178-764483c4e8899.jpg"}' + +echo "creating norwegiannewcomers repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create norwegiannewcomers +echo "adding Norwegian Newcomers ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r norwegiannewcomers repco:datasource:rss '{"endpoint":"https://feed.podbean.com/norwegiannewcomers/feed.xml", "url":"https://www.norwegiannewcomers.com/","name":"Norwegian Newcomers","image":"https://pbcdn1.podbean.com/imglogo/image-logo/10126232/NoNewlogo.png","thumbnail":"https://pbcdn1.podbean.com/imglogo/image-logo/10126232/NoNewlogo.png"}' + +echo "creating europeanspodcast repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create europeanspodcast +echo "adding The Europeans podcast ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r europeanspodcast repco:datasource:rss '{"endpoint":"https://anchor.fm/s/17af354/podcast/rss", "url":"https://europeanspodcast.com/","name":"The Europeans podcast","image":"https://upload.wikimedia.org/wikipedia/en/c/cd/The_Europeans_podcast.jpg","thumbnail":"https://upload.wikimedia.org/wikipedia/en/c/cd/The_Europeans_podcast.jpg"}' + +#echo "creating masteringpublicspace repo..." +#docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create masteringpublicspace +#echo "adding masteringpublicspace ds..." +#docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r masteringpublicspace repco:datasource:rss '{"endpoint":"https://www.masteringpublicspace.org/rss", "url":"https://www.cityspacearchitecture.org/","name":"CITY SPACE ARCHITECTURE","image":"https://www.cityspacearchitecture.org/images/2018-09/logo_portal.jpg","thumbnail":"https://www.cityspacearchitecture.org/images/2018-09/logo_portal.jpg"}' + +echo "creating arainfo repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create arainfo +echo "adding AraInfo ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r arainfo repco:datasource:rss '{"endpoint":"https://arainfo.org/feed/", "url":"https://arainfo.org/","name":"AraInfo","image":"https://arainfo.org/wordpress/wp-content/uploads/2019/03/arainfo.svg","thumbnail":"https://arainfo.org/wordpress/wp-content/uploads/2019/03/arainfo.svg"}' + +echo "creating enfoque repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create enfoque +echo "adding Enfoque ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r enfoque repco:datasource:rss '{"endpoint":"https://enfoquezamora.com/feed/", "url":"https://enfoquezamora.com/","name":"Enfoque","image":"https://enfoquezamora.com/wp-content/uploads/2023/11/2400x1200_enfoque_logo-2.png","thumbnail":"https://enfoquezamora.com/wp-content/uploads/2023/11/2400x1200_enfoque_logo-2.png"}' + +echo "creating naratorium repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create naratorium +echo "adding Naratorium ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r naratorium repco:datasource:rss '{"endpoint":"https://naratorium.ba/feed", "url":"https://naratorium.ba/","name":"Naratorium","image":"https://naratorium.ba/wp-content/uploads/2022/01/naratorium-logo.png","thumbnail":"https://naratorium.ba/wp-content/uploads/2022/01/naratorium-logo.png"}' + +echo "creating new-eastern-europe repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create new-eastern-europe +echo "adding New Eastern Europe ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r new-eastern-europe repco:datasource:rss '{"endpoint":"https://www.spreaker.com/show/4065065/episodes/feed", "url":"https://neweasterneurope.eu/","name":"New Eastern Europe","image":"https://neweasterneurope.eu/wp-content/uploads/2023/04/logo-nee-web-3.png","thumbnail":"https://neweasterneurope.eu/wp-content/uploads/2023/04/logo-nee-web-3.png"}' + +# echo "creating beeldengeluid repo..." +# docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create beeldengeluid +# echo "adding Beeld & Geluid ds..." +# docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r beeldengeluid repco:datasource:activitypub '{"user":"openbeelden", "domain":"peertube.beeldengeluid.nl", "url":"https://beeldengeluid.nl","name":"Beeld & Geluid","image":"https://cba.media/wp-content/uploads/6/7/0000666176/logo-beeldengeluid.png","thumbnail":"https://cba.media/wp-content/uploads/6/7/0000666176/logo-beeldengeluid.png"}' + +echo "creating frn repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create frn +echo "adding Freie-radios.net ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r frn repco:datasource:rss '{"endpoint":"https://www.freie-radios.net/portal/podcast.php?rss", "url":"http://freie-radios.net/","name":"Freie-radios.net","image":"https://cba.media/wp-content/uploads/7/4/0000667547/frn-logo.png","thumbnail":"https://cba.media/wp-content/uploads/7/4/0000667547/frn-logo.png"}' + +echo "creating okto repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create okto +echo "adding Okto TV ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r okto repco:datasource:rss '{"endpoint":"https://www.okto.tv/de/display-europe.rss", "url":"https://www.okto.tv/","name":"Okto TV","image":"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Okto.svg/800px-Okto.svg.png","thumbnail":"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Okto.svg/293px-Okto.svg.png"}' + +docker restart repco-app \ No newline at end of file diff --git a/scripts/init_config_cba.sh b/scripts/init_config_cba.sh new file mode 100644 index 00000000..eebf8b58 --- /dev/null +++ b/scripts/init_config_cba.sh @@ -0,0 +1,129 @@ +#!/bin/bash +echo "Configuring repco repos and datasources" + +echo "creating orange repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create orange +echo "adding Orange 94,0 ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r orange repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262317, "url":"http://www.o94.at/","name":"Orange 94,0","image":"https://cba.media/wp-content/uploads/7/0/0000474207/orange.gif","thumbnail":"https://cba.media/wp-content/uploads/7/0/0000474207/orange-360x240.gif"}' + +echo "creating fro repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create fro +echo "adding Radio FRO ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r fro repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262315, "url":"https://www.fro.at/","name":"Radio FRO","image":"https://cba.media/wp-content/uploads/3/0/0000348503/fro-logo-w-os.jpg","thumbnail":"https://cba.media/wp-content/uploads/3/0/0000348503/fro-logo-w-os-360x240.jpg"}' + +echo "creating radiofabrik repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create radiofabrik +echo "adding Radiofabrik ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r radiofabrik repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262323, "url":"https://radiofabrik.at/","name":"Radiofabrik","image":"https://cba.media/wp-content/uploads/0/2/0000474220/radiofabrik.gif","thumbnail":"https://cba.media/wp-content/uploads/0/2/0000474220/radiofabrik-360x240.gif"}' + +echo "creating frf repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create frf +echo "adding Freies Radio Freistadt ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r frf repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262333, "url":"https://www.frf.at/","name":"Freies Radio Freistadt","image":"https://cba.media/wp-content/uploads/1/0/0000474201/frf.gif","thumbnail":"https://cba.media/wp-content/uploads/1/0/0000474201/frf-360x240.gif"}' + +echo "creating freirad repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create freirad +echo "adding Freirad ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r freirad repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262325, "url":"https://www.freirad.at/","name":"Freirad","image":"https://cba.media/wp-content/uploads/5/0/0000474205/freirad.gif","thumbnail":"https://cba.media/wp-content/uploads/5/0/0000474205/freirad-360x240.gif"}' + +echo "creating radiohelsinki repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create radiohelsinki +echo "adding Radio Helsinki ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r radiohelsinki repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262321, "url":"https://helsinki.at/","name":"Radio Helsinki","image":"https://cba.media/wp-content/uploads/4/7/0000649274/radio-helsinki-square-colour-cba.jpg","thumbnail":"https://cba.media/wp-content/uploads/4/7/0000649274/radio-helsinki-square-colour-cba-360x240.jpg"}' + +echo "creating agora repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create agora +echo "adding Radio AGORA ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r agora repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262319, "url":"https://www.agora.at/","name":"Radio AGORA","image":"https://cba.media/wp-content/uploads/4/9/0000630694/agora-fb-profilbild.jpg","thumbnail":"https://cba.media/wp-content/uploads/4/9/0000630694/agora-fb-profilbild-360x240.jpg"}' + +echo "creating b138 repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create b138 +echo "adding Radio B138 ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r b138 repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262340, "url":"https://www.radiob138.at/","name":"Radio B138","image":"https://cba.media/wp-content/uploads/0/0/0000474200/b138.gif","thumbnail":"https://cba.media/wp-content/uploads/0/0/0000474200/b138-360x240.gif"}' + +echo "creating frs repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create frs +echo "adding Freies Radio Salzkammergut ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r frs repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262335, "url":"https://freiesradio.at/","name":"Freies Radio Salzkammergut","image":"https://cba.media/wp-content/uploads/3/0/0000474203/frs.gif","thumbnail":"https://cba.media/wp-content/uploads/3/0/0000474203/frs-360x240.gif"}' + +echo "creating proton repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create proton +echo "adding Proton ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r proton repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262342, "url":"https://radioproton.at","name":"Proton","image":"https://cba.media/wp-content/uploads/8/0/0000474208/proton.gif","thumbnail":"https://cba.media/wp-content/uploads/8/0/0000474208/proton-360x240.gif"}' + +echo "creating cr 94,4 repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create cr944 +echo "adding cr 94,4 ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r cr944 repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262352, "url":"https://cr944.at","name":"Campus & Cityradio St. Pölten","image":"https://cba.media/wp-content/uploads/8/9/0000474198/campusradio.gif","thumbnail":"https://cba.media/wp-content/uploads/8/9/0000474198/campusradio.gif"}' + +echo "creating Radio Freequenns repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create freequenns +echo "adding Radio Freequenns ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r freequenns repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262331, "url":"https://www.freequenns.at/","name":"Radio Freequenns","image":"https://cba.media/wp-content/uploads/5/1/0000474215/freequenns.gif","thumbnail":"https://cba.media/wp-content/uploads/5/1/0000474215/freequenns-360x240.gif"}' + +echo "creating Literadio repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create literadio +echo "adding Literadio ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r literadio repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262364, "url":"https://www.literadio.at/","name":"Literadio","image":"https://cba.media/wp-content/uploads/6/0/0000474206/literadio-360x240.gif","thumbnail":"https://cba.media/wp-content/uploads/6/0/0000474206/literadio-360x240.gif"}' + +echo "creating Radio Ypsilon repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create radioypsilon +echo "adding Radio Ypsilon ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r radioypsilon repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262348, "url":"https://radioypsilon.at/","name":"Radio Ypsilon","image":"https://cba.media/wp-content/uploads/3/2/0000474223/radioypsilon.gif","thumbnail":"https://cba.media/wp-content/uploads/3/2/0000474223/radioypsilon-360x240.gif"}' + +echo "creating Verband Freier Rundfunk Österreich repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create vfroe +echo "adding Verband Freier Rundfunk Österreich ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r vfroe repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262344, "url":"https://www.freier-rundfunk.at/","name":"Verband Freier Rundfunk Österreich","image":"https://cba.media/wp-content/uploads/0/7/0000495370/vfroe-logo-schwarz.png","thumbnail":"https://cba.media/wp-content/uploads/0/7/0000495370/vfroe-logo-schwarz-360x240.png"}' + +echo "creating Civilradio repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create civilradio +echo "adding Civilradio ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r civilradio repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":507716, "url":"https://civilradio.hu/","name":"Civilradio","image":"https://cba.media/wp-content/uploads/8/9/0000538598/civil-logo.gif","thumbnail":"https://cba.media/wp-content/uploads/8/9/0000538598/civil-logo-360x240.gif"}' + +echo "creating fri repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create fri +echo "adding Freies Radio Innviertel ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r fri repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":580988, "url":"https://radio-fri.at/","name":"Freies Radio Innviertel","image":"https://cba.media/wp-content/uploads/4/6/0000608864/fri-freiesradioinnviertel-logo-cmyk.jpg","thumbnail":"https://cba.media/wp-content/uploads/4/6/0000608864/fri-freiesradioinnviertel-logo-cmyk-360x141.jpg"}' + +echo "creating Aufdraht repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create aufdraht +echo "adding Aufdraht ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r aufdraht repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262327, "url":"https://aufdraht.org/","name":"Aufdraht","image":"https://cba.media/wp-content/uploads/5/9/0000474195/aufdraht-1.gif","thumbnail":"https://cba.media/wp-content/uploads/5/9/0000474195/aufdraht-1-360x240.gif"}' + +echo "creating Radius 106,6 repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create radius +echo "adding Radius 106,6 ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r radius repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262329, "url":"https://aufdraht.org/","name":"Radius 106,6","image":"https://cba.media/wp-content/uploads/8/2/0000474228/radius.gif","thumbnail":"https://cba.media/wp-content/uploads/8/2/0000474228/radius-360x240.gif"}' + +echo "creating mora repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create mora +echo "adding Radio MORA ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r mora repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":299489, "url":"https://www.radio-mora.at/","name":"Radio MORA","image":"https://cba.media/wp-content/uploads/2/8/0000632782/logo-radio-mora-untertitel-deutsch-web-rz.png","thumbnail":"https://cba.media/wp-content/uploads/2/8/0000632782/logo-radio-mora-untertitel-deutsch-web-rz-360x240.png"}' + +echo "creating Radio Corax repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create corax +echo "adding Radio Corax ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r corax repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262362, "url":"https://radiocorax.de/","name":"Radio Corax","image":"https://cba.media/wp-content/uploads/3/1/0000474213/corax.gif","thumbnail":"https://cba.media/wp-content/uploads/3/1/0000474213/corax-360x240.gif"}' + +echo "creating Radio LORA repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create lora +echo "adding Radio LORA ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r lora repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262358, "url":"https://lora924.de/","name":"Radio LORA","image":"https://cba.media/wp-content/uploads/9/5/0000262359/25.gif","thumbnail":"https://cba.media/wp-content/uploads/9/5/0000262359/25.gif"}' + +echo "creating KUPF OÖ repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create kupf +echo "adding KUPF OÖ ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r kupf repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":501009, "url":"https://kupf.at/","name":"Kulturplattform Oberösterreich","image":"https://cba.media/wp-content/uploads/0/1/0000501010/kupf-kkk-by-kle.jpg","thumbnail":"https://cba.media/wp-content/uploads/0/1/0000501010/kupf-kkk-by-kle.jpg"}' + +echo "creating IG feministische Autorinnen Wien repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create igfem +echo "adding IG feministische Autorinnen Wien ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r igfem repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":588725, "url":"https://igfem.at/","name":"IG feministische Autorinnen Wien","image":"https://cba.media/wp-content/uploads/5/3/0000629135/logo-igfem-social-media-schwarz.png","thumbnail":"https://cba.media/wp-content/uploads/5/3/0000629135/logo-igfem-social-media-schwarz.png"}' + +echo "creating JKU - Institut für Legal Gender Studies repo..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco repo create legalgenderstudies +echo "adding JKU - Institut für Legal Gender Studies ds..." +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit exec app yarn repco ds add -r legalgenderstudies repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":631711, "url":"https://www.jku.at/institut-fuer-legal-gender-studies/","name":"Kulturplattform Oberösterreich","image":"https://cba.media/wp-content/uploads/7/1/0000631817/csm-cover-gender-recht-66-klein-neu-74e3662985.jpg","thumbnail":"https://cba.media/wp-content/uploads/7/1/0000631817/csm-cover-gender-recht-66-klein-neu-74e3662985-266x240.jpg"}' + +docker restart repco-app \ No newline at end of file diff --git a/scripts/prod-init_config.sh b/scripts/prod-init_config.sh new file mode 100644 index 00000000..4a39883b --- /dev/null +++ b/scripts/prod-init_config.sh @@ -0,0 +1,149 @@ +#!/bin/bash +echo "Configuring repco repos and datasources" + +echo "creating aracityradio repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create aracityradio +echo "adding Ara City Radio ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r aracityradio repco:datasource:rss '{"endpoint":"https://feeds.soundcloud.com/users/soundcloud:users:2162577/sounds.rss", "url":"https://aracityradio.com","name":"Radio ARA","image":"https://images.squarespace-cdn.com/content/v1/5a615d2aaeb62560d14ef42a/9342bcf2-34fa-47f2-a6fe-1a9751d10494/aracity+copy.png?format=1500w","thumbnail":"https://images.squarespace-cdn.com/content/v1/5a615d2aaeb62560d14ef42a/9342bcf2-34fa-47f2-a6fe-1a9751d10494/aracity+copy.png?format=150w"}' + +echo "creating civiltavasz repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create civiltavasz +echo "adding Radio Civil Tavasz ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r civiltavasz repco:datasource:rss '{"endpoint":"https://civiltavasz.hu/feed/", "url":"https://civiltavasz.hu","name":"Radio Civil Tavasz","image":"https://civiltavasz.hu/wp-content/uploads/2015/09/civil-logo.png","thumbnail":"https://civiltavasz.hu/wp-content/uploads/2015/09/civil-logo.png"}' + +echo "creating eucast repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create eucast +echo "adding eucast ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r eucast repco:datasource:rss '{"endpoint":"https://anchor.fm/s/f3d38ea4/podcast/rss", "url":"Eucast.rs","name":"Eucast.rs","image":"https://eucast.rs/wp-content/uploads/2024/04/eucast-logo-t2.png","thumbnail":"https://eucast.rs/wp-content/uploads/2024/04/eucast-logo-t2.png"}' + +echo "creating city-rights-radio repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create city-rights-radio +echo "adding City Rights Radio ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r city-rights-radio repco:datasource:rss '{"endpoint":"https://anchor.fm/s/64ede338/podcast/rss", "url":"https://anchor.fm/s/64ede338/podcast/rss","name":"City Rights Radio","image":"https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_nologo/16833118/16833118-1644853804086-100abd1b5a479.jpg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_nologo/16833118/16833118-1644853804086-100abd1b5a479.jpg"}' + +echo "creating lazy-women repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create lazy-women +echo "adding Lazy Women ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r lazy-women repco:datasource:rss '{"endpoint":"https://anchor.fm/s/d731801c/podcast/rss", "url":"https://lazywomen.com/","name":"Lazy Women","image":"https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_nologo/36003455/36003455-1671734955726-771ed95b1f97.jpg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_nologo/36003455/36003455-1671734955726-771ed95b1f97.jpg"}' + +echo "creating eurozine repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create eurozine +echo "adding Eurozine ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r eurozine repco:datasource:transposer '{"endpoint":"https://vmwczww5w2j.c.updraftclone.com/wp-json/transposer/v1/repco", "url":"https://www.eurozine.com/","name":"Eurozine","image":"https://cba.media/wp-content/uploads/7/7/0000666177/eurozine-logo.png","thumbnail":"https://cba.media/wp-content/uploads/7/7/0000666177/eurozine-logo.png"}' + +#echo "creating voxeurop repo..." +#docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create voxeurop +#echo "adding Voxeurop ds..." +#docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r voxeurop repco:datasource:transposer '{"endpoint":"https://dev.voxeurop.eu/wp-json/transposer/v1/repco", "url":"https://voxeurop.eu","name":"Voxeurop","image":"https://upload.wikimedia.org/wikipedia/en/1/1a/Logo_Voxeurop_%282020%29.jpg","thumbnail":"https://upload.wikimedia.org/wikipedia/en/1/1a/Logo_Voxeurop_%282020%29.jpg"}' + +echo "creating krytyka-polityczna repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create krytyka-polityczna +echo "adding Krytyka Polityczna ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r krytyka-polityczna repco:datasource:transposer '{"endpoint":"https://beta.krytykapolityczna.pl/wp-json/transposer/v1/repco", "url":"https://krytykapolityczna.pl","name":"Krytyka Polityczna","image":"https://cba.media/wp-content/uploads/8/1/0000667618/logo-krytyka-polityczna.jpg","thumbnail":"https://cba.media/wp-content/uploads/8/1/0000667618/logo-krytyka-polityczna.jpg"}' + +echo "creating displayeurope repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create displayeurope +echo "adding Displayeurope.eu ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r displayeurope repco:datasource:transposer '{"endpoint":"https://displayeurope.eu/wp-json/transposer/v1/repco", "url":"https://displayeurope.eu","name":"Displayeurope.eu","image":"https://cba.media/wp-content/uploads/5/4/0000660645/displayeurope-logo.png","thumbnail":"https://cba.media/wp-content/uploads/5/4/0000660645/displayeurope-logo-76x60.png"}' + +echo "creating eldiario repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create eldiario +echo "adding ElDiario ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r eldiario repco:datasource:rss '{"endpoint":"https://www.eldiario.es/rss/category/tag/1048911", "url":"https://www.eldiario.es/","name":"ElDiario","image":"https://www.eldiario.es/assets/img/svg/logos/eldiario-tagline-2c.h-129fb361f1eeeaf4af9b8135dc8199ea.svg","thumbnail":"https://www.eldiario.es/assets/img/svg/logos/eldiario-tagline-2c.h-129fb361f1eeeaf4af9b8135dc8199ea.svg"}' + +echo "creating ecf repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create ecf +echo "adding ECF European Pavillion podcast ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r ecf repco:datasource:rss '{"endpoint":"https://feeds.acast.com/public/shows/60b002e393a31900125b8e4e", "url":"https://feeds.acast.com/public/shows/60b002e393a31900125b8e4e","name":"ECF European Pavillion podcast","image":"https://assets.pippa.io/shows/60b002e393a31900125b8e4e/show-cover.jpeg","thumbnail":"https://assets.pippa.io/shows/60b002e393a31900125b8e4e/show-cover.jpeg"}' + +echo "creating amensagem repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create amensagem +echo "adding Mensagem de Lisboa ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r amensagem repco:datasource:rss '{"endpoint":"https://amensagem.pt/feed", "url":"https://amensagem.pt","name":"Mensagem de Lisboa","image":"https://i0.wp.com/amensagem.pt/wp-content/uploads/2021/01/cropped-cropped-a-mensagem-logo-scaled-1.jpg?w=2560&ssl=1","thumbnail":"https://i0.wp.com/amensagem.pt/wp-content/uploads/2021/01/cropped-cropped-a-mensagem-logo-scaled-1.jpg?w=2560&ssl=1"}' + +echo "creating migrant-women repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create migrant-women +echo "adding Migrant Women Press ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r migrant-women repco:datasource:rss '{"endpoint":"https://migrantwomenpress.com/feed/", "url":"https://migrantwomenpress.com/","name":"Migrant Women Press","image":"https://migrantwomenpress.com/wp-content/uploads/2024/04/cropped-cropped-Lockup-Color.png","thumbnail":"https://migrantwomenpress.com/wp-content/uploads/2024/04/cropped-cropped-Lockup-Color.png"}' + +echo "creating sudvest repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create sudvest +echo "adding Sudvest ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r sudvest repco:datasource:rss '{"endpoint":"https://sudvest.ro/feed/", "url":"https://sudvest.ro","name":"Sudvest","image":"https://sudvest.ro/wp-content/uploads/2020/02/SUDVEST.jpg","thumbnail":"https://sudvest.ro/wp-content/uploads/2020/02/SUDVEST.jpg"}' + +echo "creating vreme repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create vreme +echo "adding Vreme ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r vreme repco:datasource:rss '{"endpoint":"https://anchor.fm/s/f124f260/podcast/rss", "url":"https://www.vreme.com/","name":"Vreme","image":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/40357304/40357304-1705940540363-c0d9589726ecf.jpg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/40357304/40357304-1705940540363-c0d9589726ecf.jpg"}' + +echo "creating cins repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create cins +echo "adding cins ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r cins repco:datasource:rss '{"endpoint":"https://anchor.fm/s/e8747e38/podcast/rss", "url":"https://www.cins.rs/en/","name":"Center for Investigative Journalism Serbia","image":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/38899486/38899486-1693856314696-a8d5a7cbd3557.jpg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/38899486/38899486-1693856314696-a8d5a7cbd3557.jpg"}' + +echo "creating sound-of-thought repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create sound-of-thought +echo "adding Sound of Thought (Institute for Philosophy and social theory) ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r sound-of-thought repco:datasource:rss '{"endpoint":"https://anchor.fm/s/d9850604/podcast/rss", "url":"https://ifdt.bg.ac.rs/?lang=en","name":"Sound of Thought (Institute for Philosophy and social theory)","image":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/36393737/36393737-1686347856464-23acb9a41f5fd.jpg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/36393737/36393737-1686347856464-23acb9a41f5fd.jpg"}' + +echo "creating klima-101 repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create klima-101 +echo "adding Klima 101 ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r klima-101 repco:datasource:rss '{"endpoint":"https://anchor.fm/s/da0dc82c/podcast/rss", "url":"https://klima101.rs/","name":"Klima 101","image":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/36483363/0867d5a20d2805b0.jpeg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/36483363/0867d5a20d2805b0.jpeg"}' + +echo "creating mdi repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create mdi +echo "adding MDI Institute ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r mdi repco:datasource:rss '{"endpoint":"https://anchor.fm/s/15af2750/podcast/rss", "url":"https://www.media-diversity.org/","name":"Klima 101","image":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/3538004/3538004-1714411872178-764483c4e8899.jpg","thumbnail":"https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/3538004/3538004-1714411872178-764483c4e8899.jpg"}' + +echo "creating norwegiannewcomers repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create norwegiannewcomers +echo "adding Norwegian Newcomers ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r norwegiannewcomers repco:datasource:rss '{"endpoint":"https://feed.podbean.com/norwegiannewcomers/feed.xml", "url":"https://www.norwegiannewcomers.com/","name":"Norwegian Newcomers","image":"https://pbcdn1.podbean.com/imglogo/image-logo/10126232/NoNewlogo.png","thumbnail":"https://pbcdn1.podbean.com/imglogo/image-logo/10126232/NoNewlogo.png"}' + +echo "creating europeanspodcast repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create europeanspodcast +echo "adding The Europeans podcast ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r europeanspodcast repco:datasource:rss '{"endpoint":"https://anchor.fm/s/17af354/podcast/rss", "url":"https://europeanspodcast.com/","name":"The Europeans podcast","image":"https://upload.wikimedia.org/wikipedia/en/c/cd/The_Europeans_podcast.jpg","thumbnail":"https://upload.wikimedia.org/wikipedia/en/c/cd/The_Europeans_podcast.jpg"}' + +#echo "creating masteringpublicspace repo..." +#docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create masteringpublicspace +#echo "adding masteringpublicspace ds..." +#docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r masteringpublicspace repco:datasource:rss '{"endpoint":"https://www.masteringpublicspace.org/rss", "url":"https://www.cityspacearchitecture.org/","name":"CITY SPACE ARCHITECTURE","image":"https://www.cityspacearchitecture.org/images/2018-09/logo_portal.jpg","thumbnail":"https://www.cityspacearchitecture.org/images/2018-09/logo_portal.jpg"}' + +echo "creating arainfo repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create arainfo +echo "adding AraInfo ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r arainfo repco:datasource:rss '{"endpoint":"https://arainfo.org/feed/", "url":"https://arainfo.org/","name":"AraInfo","image":"https://arainfo.org/wordpress/wp-content/uploads/2019/03/arainfo.svg","thumbnail":"https://arainfo.org/wordpress/wp-content/uploads/2019/03/arainfo.svg"}' + +echo "creating enfoque repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create enfoque +echo "adding Enfoque ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r enfoque repco:datasource:rss '{"endpoint":"https://enfoquezamora.com/feed/", "url":"https://enfoquezamora.com/","name":"Enfoque","image":"https://enfoquezamora.com/wp-content/uploads/2023/11/2400x1200_enfoque_logo-2.png","thumbnail":"https://enfoquezamora.com/wp-content/uploads/2023/11/2400x1200_enfoque_logo-2.png"}' + +echo "creating naratorium repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create naratorium +echo "adding Naratorium ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r naratorium repco:datasource:rss '{"endpoint":"https://naratorium.ba/feed", "url":"https://naratorium.ba/","name":"Naratorium","image":"https://naratorium.ba/wp-content/uploads/2022/01/naratorium-logo.png","thumbnail":"https://naratorium.ba/wp-content/uploads/2022/01/naratorium-logo.png"}' + +echo "creating new-eastern-europe repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create new-eastern-europe +echo "adding New Eastern Europe ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r new-eastern-europe repco:datasource:rss '{"endpoint":"https://www.spreaker.com/show/4065065/episodes/feed", "url":"https://neweasterneurope.eu/","name":"New Eastern Europe","image":"https://neweasterneurope.eu/wp-content/uploads/2023/04/logo-nee-web-3.png","thumbnail":"https://neweasterneurope.eu/wp-content/uploads/2023/04/logo-nee-web-3.png"}' + +# echo "creating beeldengeluid repo..." +# docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create beeldengeluid +# echo "adding Beeld & Geluid ds..." +# docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r beeldengeluid repco:datasource:activitypub '{"user":"openbeelden", "domain":"peertube.beeldengeluid.nl", "url":"https://beeldengeluid.nl","name":"Beeld & Geluid","image":"https://cba.media/wp-content/uploads/6/7/0000666176/logo-beeldengeluid.png","thumbnail":"https://cba.media/wp-content/uploads/6/7/0000666176/logo-beeldengeluid.png"}' + +echo "creating frn repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create frn +echo "adding Freie-radios.net ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r frn repco:datasource:rss '{"endpoint":"https://www.freie-radios.net/portal/podcast.php?rss", "url":"http://freie-radios.net/","name":"Freie-radios.net","image":"https://cba.media/wp-content/uploads/7/4/0000667547/frn-logo.png","thumbnail":"https://cba.media/wp-content/uploads/7/4/0000667547/frn-logo.png"}' + +echo "creating okto repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create okto +echo "adding Okto TV ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r okto repco:datasource:rss '{"endpoint":"https://www.okto.tv/de/display-europe.rss", "url":"https://www.okto.tv/","name":"Okto TV","image":"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Okto.svg/800px-Okto.svg.png","thumbnail":"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Okto.svg/293px-Okto.svg.png"}' + +docker restart repco-app \ No newline at end of file diff --git a/scripts/prod-init_config_cba.sh b/scripts/prod-init_config_cba.sh new file mode 100644 index 00000000..134596b5 --- /dev/null +++ b/scripts/prod-init_config_cba.sh @@ -0,0 +1,129 @@ +#!/bin/bash +echo "Configuring repco repos and datasources" + +echo "creating orange repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create orange +echo "adding Orange 94,0 ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r orange repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262317, "url":"http://www.o94.at/","name":"Orange 94,0","image":"https://cba.media/wp-content/uploads/7/0/0000474207/orange.gif","thumbnail":"https://cba.media/wp-content/uploads/7/0/0000474207/orange-360x240.gif"}' + +echo "creating fro repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create fro +echo "adding Radio FRO ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r fro repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262315, "url":"https://www.fro.at/","name":"Radio FRO","image":"https://cba.media/wp-content/uploads/3/0/0000348503/fro-logo-w-os.jpg","thumbnail":"https://cba.media/wp-content/uploads/3/0/0000348503/fro-logo-w-os-360x240.jpg"}' + +echo "creating radiofabrik repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create radiofabrik +echo "adding Radiofabrik ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r radiofabrik repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262323, "url":"https://radiofabrik.at/","name":"Radiofabrik","image":"https://cba.media/wp-content/uploads/0/2/0000474220/radiofabrik.gif","thumbnail":"https://cba.media/wp-content/uploads/0/2/0000474220/radiofabrik-360x240.gif"}' + +echo "creating frf repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create frf +echo "adding Freies Radio Freistadt ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r frf repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262333, "url":"https://www.frf.at/","name":"Freies Radio Freistadt","image":"https://cba.media/wp-content/uploads/1/0/0000474201/frf.gif","thumbnail":"https://cba.media/wp-content/uploads/1/0/0000474201/frf-360x240.gif"}' + +echo "creating freirad repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create freirad +echo "adding Freirad ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r freirad repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262325, "url":"https://www.freirad.at/","name":"Freirad","image":"https://cba.media/wp-content/uploads/5/0/0000474205/freirad.gif","thumbnail":"https://cba.media/wp-content/uploads/5/0/0000474205/freirad-360x240.gif"}' + +echo "creating radiohelsinki repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create radiohelsinki +echo "adding Radio Helsinki ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r radiohelsinki repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262321, "url":"https://helsinki.at/","name":"Radio Helsinki","image":"https://cba.media/wp-content/uploads/4/7/0000649274/radio-helsinki-square-colour-cba.jpg","thumbnail":"https://cba.media/wp-content/uploads/4/7/0000649274/radio-helsinki-square-colour-cba-360x240.jpg"}' + +echo "creating agora repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create agora +echo "adding Radio AGORA ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r agora repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262319, "url":"https://www.agora.at/","name":"Radio AGORA","image":"https://cba.media/wp-content/uploads/4/9/0000630694/agora-fb-profilbild.jpg","thumbnail":"https://cba.media/wp-content/uploads/4/9/0000630694/agora-fb-profilbild-360x240.jpg"}' + +echo "creating b138 repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create b138 +echo "adding Radio B138 ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r b138 repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262340, "url":"https://www.radiob138.at/","name":"Radio B138","image":"https://cba.media/wp-content/uploads/0/0/0000474200/b138.gif","thumbnail":"https://cba.media/wp-content/uploads/0/0/0000474200/b138-360x240.gif"}' + +echo "creating frs repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create frs +echo "adding Freies Radio Salzkammergut ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r frs repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262335, "url":"https://freiesradio.at/","name":"Freies Radio Salzkammergut","image":"https://cba.media/wp-content/uploads/3/0/0000474203/frs.gif","thumbnail":"https://cba.media/wp-content/uploads/3/0/0000474203/frs-360x240.gif"}' + +echo "creating proton repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create proton +echo "adding Proton ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r proton repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262342, "url":"https://radioproton.at","name":"Proton","image":"https://cba.media/wp-content/uploads/8/0/0000474208/proton.gif","thumbnail":"https://cba.media/wp-content/uploads/8/0/0000474208/proton-360x240.gif"}' + +echo "creating cr 94,4 repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create cr944 +echo "adding cr 94,4 ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r cr944 repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262352, "url":"https://cr944.at","name":"Campus & Cityradio St. Pölten","image":"https://cba.media/wp-content/uploads/8/9/0000474198/campusradio.gif","thumbnail":"https://cba.media/wp-content/uploads/8/9/0000474198/campusradio.gif"}' + +echo "creating Radio Freequenns repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create freequenns +echo "adding Radio Freequenns ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r freequenns repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262331, "url":"https://www.freequenns.at/","name":"Radio Freequenns","image":"https://cba.media/wp-content/uploads/5/1/0000474215/freequenns.gif","thumbnail":"https://cba.media/wp-content/uploads/5/1/0000474215/freequenns-360x240.gif"}' + +echo "creating Literadio repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create literadio +echo "adding Literadio ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r literadio repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262364, "url":"https://www.literadio.at/","name":"Literadio","image":"https://cba.media/wp-content/uploads/6/0/0000474206/literadio-360x240.gif","thumbnail":"https://cba.media/wp-content/uploads/6/0/0000474206/literadio-360x240.gif"}' + +echo "creating Radio Ypsilon repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create radioypsilon +echo "adding Radio Ypsilon ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r radioypsilon repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262348, "url":"https://radioypsilon.at/","name":"Radio Ypsilon","image":"https://cba.media/wp-content/uploads/3/2/0000474223/radioypsilon.gif","thumbnail":"https://cba.media/wp-content/uploads/3/2/0000474223/radioypsilon-360x240.gif"}' + +echo "creating Verband Freier Rundfunk Österreich repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create vfroe +echo "adding Verband Freier Rundfunk Österreich ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r vfroe repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262344, "url":"https://www.freier-rundfunk.at/","name":"Verband Freier Rundfunk Österreich","image":"https://cba.media/wp-content/uploads/0/7/0000495370/vfroe-logo-schwarz.png","thumbnail":"https://cba.media/wp-content/uploads/0/7/0000495370/vfroe-logo-schwarz-360x240.png"}' + +echo "creating Civilradio repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create civilradio +echo "adding Civilradio ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r civilradio repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":507716, "url":"https://civilradio.hu/","name":"Civilradio","image":"https://cba.media/wp-content/uploads/8/9/0000538598/civil-logo.gif","thumbnail":"https://cba.media/wp-content/uploads/8/9/0000538598/civil-logo-360x240.gif"}' + +echo "creating fri repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create fri +echo "adding Freies Radio Innviertel ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r fri repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":580988, "url":"https://radio-fri.at/","name":"Freies Radio Innviertel","image":"https://cba.media/wp-content/uploads/4/6/0000608864/fri-freiesradioinnviertel-logo-cmyk.jpg","thumbnail":"https://cba.media/wp-content/uploads/4/6/0000608864/fri-freiesradioinnviertel-logo-cmyk-360x141.jpg"}' + +echo "creating Aufdraht repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create aufdraht +echo "adding Aufdraht ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r aufdraht repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262327, "url":"https://aufdraht.org/","name":"Aufdraht","image":"https://cba.media/wp-content/uploads/5/9/0000474195/aufdraht-1.gif","thumbnail":"https://cba.media/wp-content/uploads/5/9/0000474195/aufdraht-1-360x240.gif"}' + +echo "creating Radius 106,6 repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create radius +echo "adding Radius 106,6 ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r radius repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262329, "url":"https://aufdraht.org/","name":"Radius 106,6","image":"https://cba.media/wp-content/uploads/8/2/0000474228/radius.gif","thumbnail":"https://cba.media/wp-content/uploads/8/2/0000474228/radius-360x240.gif"}' + +echo "creating mora repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create mora +echo "adding Radio MORA ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r mora repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":299489, "url":"https://www.radio-mora.at/","name":"Radio MORA","image":"https://cba.media/wp-content/uploads/2/8/0000632782/logo-radio-mora-untertitel-deutsch-web-rz.png","thumbnail":"https://cba.media/wp-content/uploads/2/8/0000632782/logo-radio-mora-untertitel-deutsch-web-rz-360x240.png"}' + +echo "creating Radio Corax repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create corax +echo "adding Radio Corax ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r corax repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262362, "url":"https://radiocorax.de/","name":"Radio Corax","image":"https://cba.media/wp-content/uploads/3/1/0000474213/corax.gif","thumbnail":"https://cba.media/wp-content/uploads/3/1/0000474213/corax-360x240.gif"}' + +echo "creating Radio LORA repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create lora +echo "adding Radio LORA ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r lora repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":262358, "url":"https://lora924.de/","name":"Radio LORA","image":"https://cba.media/wp-content/uploads/9/5/0000262359/25.gif","thumbnail":"https://cba.media/wp-content/uploads/9/5/0000262359/25.gif"}' + +echo "creating KUPF OÖ repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create kupf +echo "adding KUPF OÖ ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r kupf repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":501009, "url":"https://kupf.at/","name":"Kulturplattform Oberösterreich","image":"https://cba.media/wp-content/uploads/0/1/0000501010/kupf-kkk-by-kle.jpg","thumbnail":"https://cba.media/wp-content/uploads/0/1/0000501010/kupf-kkk-by-kle.jpg"}' + +echo "creating IG feministische Autorinnen Wien repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create igfem +echo "adding IG feministische Autorinnen Wien ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r igfem repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":588725, "url":"https://igfem.at/","name":"IG feministische Autorinnen Wien","image":"https://cba.media/wp-content/uploads/5/3/0000629135/logo-igfem-social-media-schwarz.png","thumbnail":"https://cba.media/wp-content/uploads/5/3/0000629135/logo-igfem-social-media-schwarz.png"}' + +echo "creating JKU - Institut für Legal Gender Studies repo..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo create legalgenderstudies +echo "adding JKU - Institut für Legal Gender Studies ds..." +docker compose -f "docker/docker-compose.build.yml" exec app yarn repco ds add -r legalgenderstudies repco:datasource:cba '{"endpoint":"https://cba.media/wp-json/wp/v2", "stationId":631711, "url":"https://www.jku.at/institut-fuer-legal-gender-studies/","name":"Kulturplattform Oberösterreich","image":"https://cba.media/wp-content/uploads/7/1/0000631817/csm-cover-gender-recht-66-klein-neu-74e3662985.jpg","thumbnail":"https://cba.media/wp-content/uploads/7/1/0000631817/csm-cover-gender-recht-66-klein-neu-74e3662985-266x240.jpg"}' + +docker restart repco-app \ No newline at end of file diff --git a/scripts/prod-misc_scripts.sh b/scripts/prod-misc_scripts.sh new file mode 100644 index 00000000..fd85bdf6 --- /dev/null +++ b/scripts/prod-misc_scripts.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# delete repo +#docker compose -f "docker/docker-compose.build.yml" exec app yarn repco repo delete {repo-name} + +# restart container +# docker restart repco-app + diff --git a/scripts/prod-reset.sh b/scripts/prod-reset.sh new file mode 100644 index 00000000..d02d481e --- /dev/null +++ b/scripts/prod-reset.sh @@ -0,0 +1,15 @@ +#!/bin/bash +echo "resetting env..." +docker rm -v -f repco-app +docker rm -v -f repco-db +docker rm -v -f repco-es +docker rm -v -f repco-redis +docker rm -v -f repco-pgsync + +rm -r docker/data/redis +rm -r docker/data/postgres +rm -r docker/data/elastic + +git pull +docker compose -f "docker/docker-compose.build.yml" up -d --build +echo "done" \ No newline at end of file diff --git a/scripts/reset.sh b/scripts/reset.sh new file mode 100644 index 00000000..b5bba98a --- /dev/null +++ b/scripts/reset.sh @@ -0,0 +1,16 @@ +#!/bin/bash +echo "resetting env..." +docker rm -v -f repco-app +docker rm -v -f repco-db +docker rm -v -f repco-es +docker rm -v -f repco-redis +docker rm -v -f repco-pgsync + +rm -r docker/data/redis +rm -r docker/data/postgres +rm -r docker/data/elastic/es01 + +git pull +docker compose -f "docker/docker-compose.arbeit.build.yml" -p arbeit up -d --build +echo "done" + diff --git a/yarn.lock b/yarn.lock index 7c554dd0..df048ddc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -97,6 +97,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.23.9": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.0.tgz#56cbda6b185ae9d9bed369816a8f4423c5f2ff1b" + integrity sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.24.0" + "@babel/parser" "^7.24.0" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.0" + "@babel/types" "^7.24.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/eslint-parser@^7.21.8": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz#7bf0db1c53b54da0c8a12627373554a0828479ca" @@ -176,6 +197,17 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" +"@babel/helper-define-polyfill-provider@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" + integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" @@ -305,6 +337,15 @@ "@babel/traverse" "^7.23.6" "@babel/types" "^7.23.6" +"@babel/helpers@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.0.tgz#a3dd462b41769c95db8091e49cfe019389a9409b" + integrity sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA== + dependencies: + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.0" + "@babel/types" "^7.24.0" + "@babel/highlight@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" @@ -319,6 +360,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== +"@babel/parser@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" + integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" @@ -1094,6 +1140,15 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" +"@babel/template@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.21.5", "@babel/traverse@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.6.tgz#b53526a2367a0dd6edc423637f3d2d0f2521abc5" @@ -1110,6 +1165,22 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.0.tgz#4a408fbf364ff73135c714a2ab46a5eab2831b1e" + integrity sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.16.8", "@babel/types@^7.18.13", "@babel/types@^7.21.5", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.4.4": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" @@ -1119,6 +1190,15 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" + integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1129,35 +1209,35 @@ resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== -"@cbor-extract/cbor-extract-darwin-arm64@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.1.1.tgz#5721f6dd3feae0b96d23122853ce977e0671b7a6" - integrity sha512-blVBy5MXz6m36Vx0DfLd7PChOQKEs8lK2bD1WJn/vVgG4FXZiZmZb2GECHFvVPA5T7OnODd9xZiL3nMCv6QUhA== +"@cbor-extract/cbor-extract-darwin-arm64@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.0.tgz#8d65cb861a99622e1b4a268e2d522d2ec6137338" + integrity sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w== -"@cbor-extract/cbor-extract-darwin-x64@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.1.1.tgz#c25e7d0133950d87d101d7b3afafea8d50d83f5f" - integrity sha512-h6KFOzqk8jXTvkOftyRIWGrd7sKQzQv2jVdTL9nKSf3D2drCvQB/LHUxAOpPXo3pv2clDtKs3xnHalpEh3rDsw== +"@cbor-extract/cbor-extract-darwin-x64@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.0.tgz#9fbec199c888c5ec485a1839f4fad0485ab6c40a" + integrity sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w== -"@cbor-extract/cbor-extract-linux-arm64@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.1.1.tgz#48f78e7d8f0fcc84ed074b6bfa6d15dd83187c63" - integrity sha512-SxAaRcYf8S0QHaMc7gvRSiTSr7nUYMqbUdErBEu+HYA4Q6UNydx1VwFE68hGcp1qvxcy9yT5U7gA+a5XikfwSQ== +"@cbor-extract/cbor-extract-linux-arm64@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.0.tgz#bf77e0db4a1d2200a5aa072e02210d5043e953ae" + integrity sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ== -"@cbor-extract/cbor-extract-linux-arm@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.1.1.tgz#7507d346389cb682e44fab8fae9534edd52e2e41" - integrity sha512-ds0uikdcIGUjPyraV4oJqyVE5gl/qYBpa/Wnh6l6xLE2lj/hwnjT2XcZCChdXwW/YFZ1LUHs6waoYN8PmK0nKQ== +"@cbor-extract/cbor-extract-linux-arm@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.0.tgz#491335037eb8533ed8e21b139c59f6df04e39709" + integrity sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q== -"@cbor-extract/cbor-extract-linux-x64@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.1.1.tgz#b7c1d2be61c58ec18d58afbad52411ded63cd4cd" - integrity sha512-GVK+8fNIE9lJQHAlhOROYiI0Yd4bAZ4u++C2ZjlkS3YmO6hi+FUxe6Dqm+OKWTcMpL/l71N6CQAmaRcb4zyJuA== +"@cbor-extract/cbor-extract-linux-x64@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.0.tgz#672574485ccd24759bf8fb8eab9dbca517d35b97" + integrity sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw== -"@cbor-extract/cbor-extract-win32-x64@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.1.1.tgz#21b11a1a3f18c3e7d62fd5f87438b7ed2c64c1f7" - integrity sha512-2Niq1C41dCRIDeD8LddiH+mxGlO7HJ612Ll3D/E73ZWBmycued+8ghTr/Ho3CMOWPUEr08XtyBMVXAjqF+TcKw== +"@cbor-extract/cbor-extract-win32-x64@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.0.tgz#4b3f07af047f984c082de34b116e765cb9af975f" + integrity sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w== "@colors/colors@1.5.0": version "1.5.0" @@ -1179,6 +1259,26 @@ base64url-universal "^2.0.0" js-base64 "^3.7.2" +"@elastic/elasticsearch@^8.10.0": + version "8.10.0" + resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-8.10.0.tgz#48842b3358b8ea4d37d75cff29fdd37fdf0b2996" + integrity sha512-RIEyqz0D18bz/dK+wJltaak+7wKaxDELxuiwOJhuMrvbrBsYDFnEoTdP/TZ0YszHBgnRPGqBDBgH/FHNgHObiQ== + dependencies: + "@elastic/transport" "^8.3.4" + tslib "^2.4.0" + +"@elastic/transport@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@elastic/transport/-/transport-8.3.4.tgz#43c852e848dc8502bbd7f23f2d61bd5665cded99" + integrity sha512-+0o8o74sbzu3BO7oOZiP9ycjzzdOt4QwmMEjFc1zfO7M0Fh7QX1xrpKqZbSd8vBwihXNlSq/EnMPfgD2uFEmFg== + dependencies: + debug "^4.3.4" + hpagent "^1.0.0" + ms "^2.1.3" + secure-json-parse "^2.4.0" + tslib "^2.4.0" + undici "^5.22.1" + "@emmetio/extract-abbreviation@0.1.6": version "0.1.6" resolved "https://registry.yarnpkg.com/@emmetio/extract-abbreviation/-/extract-abbreviation-0.1.6.tgz#e4a9856c1057f0aff7d443b8536477c243abe28c" @@ -1189,6 +1289,11 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + "@esbuild/android-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" @@ -1199,10 +1304,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.6.tgz#b11bd4e4d031bb320c93c83c137797b2be5b403b" integrity sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg== -"@esbuild/android-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" - integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== "@esbuild/android-arm@0.17.19": version "0.17.19" @@ -1214,10 +1319,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.6.tgz#ac6b5674da2149997f6306b3314dae59bbe0ac26" integrity sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g== -"@esbuild/android-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" - integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== "@esbuild/android-x64@0.17.19": version "0.17.19" @@ -1229,10 +1334,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.6.tgz#18c48bf949046638fc209409ff684c6bb35a5462" integrity sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ== -"@esbuild/android-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" - integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== "@esbuild/darwin-arm64@0.17.19": version "0.17.19" @@ -1244,10 +1349,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.6.tgz#b3fe19af1e4afc849a07c06318124e9c041e0646" integrity sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA== -"@esbuild/darwin-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" - integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== "@esbuild/darwin-x64@0.17.19": version "0.17.19" @@ -1259,10 +1364,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.6.tgz#f4dacd1ab21e17b355635c2bba6a31eba26ba569" integrity sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg== -"@esbuild/darwin-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" - integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== "@esbuild/freebsd-arm64@0.17.19": version "0.17.19" @@ -1274,10 +1379,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.6.tgz#ea4531aeda70b17cbe0e77b0c5c36298053855b4" integrity sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg== -"@esbuild/freebsd-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" - integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== "@esbuild/freebsd-x64@0.17.19": version "0.17.19" @@ -1289,10 +1394,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.6.tgz#1896170b3c9f63c5e08efdc1f8abc8b1ed7af29f" integrity sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q== -"@esbuild/freebsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" - integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== "@esbuild/linux-arm64@0.17.19": version "0.17.19" @@ -1304,10 +1409,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.6.tgz#967dfb951c6b2de6f2af82e96e25d63747f75079" integrity sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w== -"@esbuild/linux-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" - integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== "@esbuild/linux-arm@0.17.19": version "0.17.19" @@ -1319,10 +1424,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.6.tgz#097a0ee2be39fed3f37ea0e587052961e3bcc110" integrity sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw== -"@esbuild/linux-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" - integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== "@esbuild/linux-ia32@0.17.19": version "0.17.19" @@ -1334,10 +1439,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.6.tgz#a38a789d0ed157495a6b5b4469ec7868b59e5278" integrity sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ== -"@esbuild/linux-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" - integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== "@esbuild/linux-loong64@0.14.54": version "0.14.54" @@ -1354,10 +1459,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.6.tgz#ae3983d0fb4057883c8246f57d2518c2af7cf2ad" integrity sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ== -"@esbuild/linux-loong64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" - integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== "@esbuild/linux-mips64el@0.17.19": version "0.17.19" @@ -1369,10 +1474,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.6.tgz#15fbbe04648d944ec660ee5797febdf09a9bd6af" integrity sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA== -"@esbuild/linux-mips64el@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" - integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== "@esbuild/linux-ppc64@0.17.19": version "0.17.19" @@ -1384,10 +1489,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.6.tgz#38210094e8e1a971f2d1fd8e48462cc65f15ef19" integrity sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg== -"@esbuild/linux-ppc64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" - integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== "@esbuild/linux-riscv64@0.17.19": version "0.17.19" @@ -1399,10 +1504,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.6.tgz#bc3c66d5578c3b9951a6ed68763f2a6856827e4a" integrity sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ== -"@esbuild/linux-riscv64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" - integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== "@esbuild/linux-s390x@0.17.19": version "0.17.19" @@ -1414,10 +1519,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.6.tgz#d7ba7af59285f63cfce6e5b7f82a946f3e6d67fc" integrity sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q== -"@esbuild/linux-s390x@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" - integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== "@esbuild/linux-x64@0.17.19": version "0.17.19" @@ -1429,10 +1534,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.6.tgz#ba51f8760a9b9370a2530f98964be5f09d90fed0" integrity sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw== -"@esbuild/linux-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" - integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== "@esbuild/netbsd-x64@0.17.19": version "0.17.19" @@ -1444,10 +1549,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.6.tgz#e84d6b6fdde0261602c1e56edbb9e2cb07c211b9" integrity sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A== -"@esbuild/netbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" - integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== "@esbuild/openbsd-x64@0.17.19": version "0.17.19" @@ -1459,10 +1564,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.6.tgz#cf4b9fb80ce6d280a673d54a731d9c661f88b083" integrity sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw== -"@esbuild/openbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" - integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== "@esbuild/sunos-x64@0.17.19": version "0.17.19" @@ -1474,10 +1579,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.6.tgz#a6838e246079b24d962b9dcb8d208a3785210a73" integrity sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw== -"@esbuild/sunos-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" - integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== "@esbuild/win32-arm64@0.17.19": version "0.17.19" @@ -1489,10 +1594,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.6.tgz#ace0186e904d109ea4123317a3ba35befe83ac21" integrity sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg== -"@esbuild/win32-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" - integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== "@esbuild/win32-ia32@0.17.19": version "0.17.19" @@ -1504,10 +1609,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.6.tgz#7fb3f6d4143e283a7f7dffc98a6baf31bb365c7e" integrity sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg== -"@esbuild/win32-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" - integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== "@esbuild/win32-x64@0.17.19": version "0.17.19" @@ -1519,10 +1624,10 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.6.tgz#563ff4277f1230a006472664fa9278a83dd124da" integrity sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA== -"@esbuild/win32-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" - integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" @@ -1551,10 +1656,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.55.0": - version "8.55.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.55.0.tgz#b721d52060f369aa259cf97392403cb9ce892ec6" - integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA== +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== "@fastify/busboy@^2.0.0": version "2.1.0" @@ -1566,6 +1671,13 @@ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-0.7.3.tgz#d274116678ffae87f6b60e90f88cc4083eefab86" integrity sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg== +"@floating-ui/core@^1.0.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1" + integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g== + dependencies: + "@floating-ui/utils" "^0.2.1" + "@floating-ui/core@^1.4.2": version "1.5.2" resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.2.tgz#53a0f7a98c550e63134d504f26804f6b83dbc071" @@ -1580,7 +1692,7 @@ dependencies: "@floating-ui/core" "^0.7.3" -"@floating-ui/dom@^1.0.0", "@floating-ui/dom@^1.5.1": +"@floating-ui/dom@^1.5.1": version "1.5.3" resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa" integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA== @@ -1588,6 +1700,14 @@ "@floating-ui/core" "^1.4.2" "@floating-ui/utils" "^0.1.3" +"@floating-ui/dom@^1.6.1": + version "1.6.3" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.3.tgz#954e46c1dd3ad48e49db9ada7218b0985cee75ef" + integrity sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw== + dependencies: + "@floating-ui/core" "^1.0.0" + "@floating-ui/utils" "^0.2.0" + "@floating-ui/react-dom@0.7.2": version "0.7.2" resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-0.7.2.tgz#0bf4ceccb777a140fc535c87eb5d6241c8e89864" @@ -1608,6 +1728,11 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== +"@floating-ui/utils@^0.2.0", "@floating-ui/utils@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" + integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== + "@gar/promisify@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" @@ -1926,6 +2051,14 @@ "@graphql-tools/utils" "^9.2.1" tslib "^2.4.0" +"@graphql-tools/merge@^9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-9.0.1.tgz#693f15da152339284469b1ce5c6827e3ae350a29" + integrity sha512-hIEExWO9fjA6vzsVjJ3s0cCQ+Q/BEeMVJZtMXd7nbaVefVy0YDyYlEkeoYYNV3NVVvu1G9lr6DM1Qd0DGo9Caw== + dependencies: + "@graphql-tools/utils" "^10.0.10" + tslib "^2.4.0" + "@graphql-tools/optimize@^1.3.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@graphql-tools/optimize/-/optimize-1.4.0.tgz#20d6a9efa185ef8fc4af4fd409963e0907c6e112" @@ -1966,6 +2099,16 @@ "@graphql-tools/utils" "^9.2.1" tslib "^2.4.0" +"@graphql-tools/schema@^10.0.0": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-10.0.2.tgz#21bc2ee25a65fb4890d2e5f9f22ef1f733aa81da" + integrity sha512-TbPsIZnWyDCLhgPGnDjt4hosiNU2mF/rNtSk5BVaXWnZqvKJ6gzJV4fcHcvhRIwtscDMW2/YTnK6dLVnk8pc4w== + dependencies: + "@graphql-tools/merge" "^9.0.1" + "@graphql-tools/utils" "^10.0.10" + tslib "^2.4.0" + value-or-promise "^1.0.12" + "@graphql-tools/schema@^9.0.0", "@graphql-tools/schema@^9.0.18", "@graphql-tools/schema@^9.0.19": version "9.0.19" resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.19.tgz#c4ad373b5e1b8a0cf365163435b7d236ebdd06e7" @@ -1995,6 +2138,16 @@ value-or-promise "^1.0.11" ws "^8.12.0" +"@graphql-tools/utils@^10.0.10": + version "10.0.11" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.0.11.tgz#1238fbe37e8d6c662c48ab2477c98269d6fd851a" + integrity sha512-vVjXgKn6zjXIlYBd7yJxCVMYGb5j18gE3hx3Qw3mNsSEsYQXbJbPdlwb7Fc9FogsJei5AaqiQerqH4kAosp1nQ== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + cross-inspect "1.0.0" + dset "^3.1.2" + tslib "^2.4.0" + "@graphql-tools/utils@^9.0.0", "@graphql-tools/utils@^9.1.1", "@graphql-tools/utils@^9.2.1": version "9.2.1" resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-9.2.1.tgz#1b3df0ef166cfa3eae706e3518b17d5922721c57" @@ -2019,13 +2172,13 @@ resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== -"@humanwhocodes/config-array@^0.11.13": - version "0.11.13" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" - integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== dependencies: - "@humanwhocodes/object-schema" "^2.0.1" - debug "^4.1.1" + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": @@ -2033,10 +2186,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" - integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== "@ipld/car@^5.1.0": version "5.2.4" @@ -2064,6 +2217,18 @@ cborg "^4.0.0" multiformats "^12.0.1" +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" @@ -2230,7 +2395,7 @@ dependencies: json-parse-even-better-errors "^2.3.1" -"@peculiar/asn1-schema@^2.3.6": +"@peculiar/asn1-schema@^2.3.6", "@peculiar/asn1-schema@^2.3.8": version "2.3.8" resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz#04b38832a814e25731232dd5be883460a156da3b" integrity sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA== @@ -3094,6 +3259,71 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@rollup/rollup-android-arm-eabi@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz#38c3abd1955a3c21d492af6b1a1dca4bb1d894d6" + integrity sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w== + +"@rollup/rollup-android-arm64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz#3822e929f415627609e53b11cec9a4be806de0e2" + integrity sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ== + +"@rollup/rollup-darwin-arm64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz#6c082de71f481f57df6cfa3701ab2a7afde96f69" + integrity sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ== + +"@rollup/rollup-darwin-x64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz#c34ca0d31f3c46a22c9afa0e944403eea0edcfd8" + integrity sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg== + +"@rollup/rollup-linux-arm-gnueabihf@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz#48e899c1e438629c072889b824a98787a7c2362d" + integrity sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA== + +"@rollup/rollup-linux-arm64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz#788c2698a119dc229062d40da6ada8a090a73a68" + integrity sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA== + +"@rollup/rollup-linux-arm64-musl@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz#3882a4e3a564af9e55804beeb67076857b035ab7" + integrity sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ== + +"@rollup/rollup-linux-riscv64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz#0c6ad792e1195c12bfae634425a3d2aa0fe93ab7" + integrity sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw== + +"@rollup/rollup-linux-x64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz#9d62485ea0f18d8674033b57aa14fb758f6ec6e3" + integrity sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA== + +"@rollup/rollup-linux-x64-musl@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz#50e8167e28b33c977c1f813def2b2074d1435e05" + integrity sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw== + +"@rollup/rollup-win32-arm64-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz#68d233272a2004429124494121a42c4aebdc5b8e" + integrity sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw== + +"@rollup/rollup-win32-ia32-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz#366ca62221d1689e3b55a03f4ae12ae9ba595d40" + integrity sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA== + +"@rollup/rollup-win32-x64-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz#9ffdf9ed133a7464f4ae187eb9e1294413fab235" + integrity sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg== + "@rushstack/eslint-patch@^1.2.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.6.0.tgz#1898e7a7b943680d757417a47fb10f5fcc230b39" @@ -3355,7 +3585,7 @@ dependencies: "@types/estree" "*" -"@types/estree@*", "@types/estree@^1.0.0": +"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -3517,6 +3747,14 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== +"@types/node-fetch@*": + version "2.6.11" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.11.tgz#9b39b78665dae0e82a08f02f4967d62c66f95d24" + integrity sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g== + dependencies: + "@types/node" "*" + form-data "^4.0.0" + "@types/node@*": version "20.10.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.4.tgz#b246fd84d55d5b1b71bf51f964bd514409347198" @@ -3542,9 +3780,9 @@ integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== "@types/pg@>=6 <9": - version "8.10.9" - resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.10.9.tgz#d20bb948c6268c5bd847e2bf968f1194c5a2355a" - integrity sha512-UksbANNE/f8w0wOMxVKKIrLCbEMV+oM1uKejmwXr39olg4xqcfBDbXxObJAt6XxHbDa4XTKOlUEcEltXDX+XLQ== + version "8.11.2" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.11.2.tgz#e5c306601d2e0cc54c0801cc61a41761c8a95c92" + integrity sha512-G2Mjygf2jFMU/9hCaTYxJrwdObdcnuQde1gndooZSOHsNSaCehAuwc7EIuSA34Do8Jx2yZ19KtvW8P0j4EuUXw== dependencies: "@types/node" "*" pg-protocol "*" @@ -3566,9 +3804,9 @@ integrity sha512-PtrlVaOaI44/3pl3cvnlK+GxOM3re2526TJvPvh7W+keHIXdV4TE0ylpPBAcvFQCbGitaTXwL9u+RF7qtVeazQ== "@types/qs@*": - version "6.9.10" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.10.tgz#0af26845b5067e1c9a622658a51f60a3934d51e8" - integrity sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw== + version "6.9.12" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.12.tgz#afa96b383a3a6fdc859453a1892d41b607fc7756" + integrity sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg== "@types/range-parser@*": version "1.2.7" @@ -3576,16 +3814,16 @@ integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== "@types/react-dom@^18.0.6": - version "18.2.17" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.17.tgz#375c55fab4ae671bd98448dcfa153268d01d6f64" - integrity sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg== + version "18.2.19" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.19.tgz#b84b7c30c635a6c26c6a6dfbb599b2da9788be58" + integrity sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18.0.15": - version "18.2.43" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.43.tgz#c58e5abe241e6f71f60ce30e2a9aceb9d3a2a374" - integrity sha512-nvOV01ZdBdd/KW6FahSbcNplt2jCJfyWdTos61RYHV+FVv5L/g9AOX1bmbVcWcLFL8+KHQfh1zVIQrud6ihyQA== + version "18.2.61" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.61.tgz#5607308495037436779939ec0348a5816c08799d" + integrity sha512-NURTN0qNnJa7O/k4XUkEW2yfygA+NxS0V5h1+kp9jPwhzZy95q3ADoGMP0+JypMhrZBTTgjKAUlTctde1zzeQA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -3611,9 +3849,9 @@ "@types/node" "*" "@types/sanitize-html@^2.6.2": - version "2.9.5" - resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.9.5.tgz#e8b2214c8afc7bb88d62f9c3bbbc5b4ecc80a25d" - integrity sha512-2Sr1vd8Dw+ypsg/oDDfZ57OMSG2Befs+l2CMyCC5bVSK3CpE7lTB2aNlbbWzazgVA+Qqfuholwom6x/mWd1qmw== + version "2.11.0" + resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.11.0.tgz#582d8c72215c0228e3af2be136e40e0b531addf2" + integrity sha512-7oxPGNQHXLHE48r/r/qjn7q0hlrs3kL7oZnGj0Wf/h9tj/6ibFyRkNbsDxaBBZ4XUZ0Dx5LGCyDJ04ytSofacQ== dependencies: htmlparser2 "^8.0.0" @@ -3623,9 +3861,9 @@ integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== "@types/semver@^7.3.12": - version "7.5.6" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" - integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== "@types/send@*": version "0.17.4" @@ -3665,6 +3903,13 @@ dependencies: "@types/node" "*" +"@types/sync-fetch@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@types/sync-fetch/-/sync-fetch-0.4.3.tgz#a7420c6f81b6a9d586dd353c6d471e28a5736f55" + integrity sha512-RfwkmWFd7yi6tRaDcR7KNrxyp6LpO2oXrT6tYkXBLNfp4xf4EKRX7IlLexbtd5X26g34+G6HDD2pMhOZ5srUmQ== + dependencies: + "@types/node-fetch" "*" + "@types/table@^6.3.2": version "6.3.2" resolved "https://registry.yarnpkg.com/@types/table/-/table-6.3.2.tgz#e18ad2594400d81c3da28c31b342eb5a0d87a8e7" @@ -3819,9 +4064,9 @@ integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== "@urql/core@>=3.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@urql/core/-/core-4.2.1.tgz#a42a0ec1bbeb612f62d1ff2836380f78ac9ac5d4" - integrity sha512-m6r0wcVg9zg50YjiJjEVWkjigae/NOhGen3QTZ6LRZw/KXo7P6JGESOv9SJNsGGj7s1zew4/jqKeiOXtwm6ZiQ== + version "4.2.3" + resolved "https://registry.yarnpkg.com/@urql/core/-/core-4.2.3.tgz#f956e8a33c4bd055c0c5151491843dd46d737f0f" + integrity sha512-DJ9q9+lcs5JL8DcU2J3NqsgeXYJva+1+Qt8HU94kzTPqVOIRRA7ouvy4ksUfPY+B5G2PQ+vLh+JJGyZCNXv0cg== dependencies: "@0no-co/graphql.web" "^1.0.1" wonka "^6.3.2" @@ -3841,17 +4086,17 @@ "@urql/core" ">=3.2.0" wonka "^6.0.0" -"@vanilla-extract/babel-plugin-debug-ids@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@vanilla-extract/babel-plugin-debug-ids/-/babel-plugin-debug-ids-1.0.3.tgz#ce07190343b51ed658b385bdce1e79952a4e8526" - integrity sha512-vm4jYu1xhSa6ofQ9AhIpR3DkAp4c+eoR1Rpm8/TQI4DmWbmGbOjYRcqV0aWsfaIlNhN4kFuxFMKBNN9oG6iRzA== +"@vanilla-extract/babel-plugin-debug-ids@^1.0.4": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@vanilla-extract/babel-plugin-debug-ids/-/babel-plugin-debug-ids-1.0.5.tgz#e24424f46dd7737764a4bb5ac6dcdf19240f88bc" + integrity sha512-Rc9A6ylsw7EBErmpgqCMvc/Z/eEZxI5k1xfLQHw7f5HHh3oc5YfzsAsYU/PdmSNjF1dp3sGEViBdDltvwnfVaA== dependencies: - "@babel/core" "^7.20.7" + "@babel/core" "^7.23.9" "@vanilla-extract/css@^1.14.0": - version "1.14.0" - resolved "https://registry.yarnpkg.com/@vanilla-extract/css/-/css-1.14.0.tgz#45fab9c04d893e3e363cf2cde7559d21233b7f63" - integrity sha512-rYfm7JciWZ8PFzBM/HDiE2GLnKI3xJ6/vdmVJ5BSgcCZ5CxRlM9Cjqclni9lGzF3eMOijnUhCd/KV8TOzyzbMA== + version "1.14.1" + resolved "https://registry.yarnpkg.com/@vanilla-extract/css/-/css-1.14.1.tgz#ae24b2d2ff6abd452f8e72440073b05a0372d62e" + integrity sha512-V4JUuHNjZgl64NGfkDJePqizkNgiSpphODtZEs4cCPuxLAzwOUJYATGpejwimJr1n529kq4DEKWexW22LMBokw== dependencies: "@emotion/hash" "^0.9.0" "@vanilla-extract/private" "^1.0.3" @@ -3866,23 +4111,23 @@ outdent "^0.8.0" "@vanilla-extract/integration@^6.2.0": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@vanilla-extract/integration/-/integration-6.2.4.tgz#bd8a5ec0916051c1ef5fb66d8484a5cad8d8c58d" - integrity sha512-+AfymNMVq9sEUe0OJpdCokmPZg4Zi6CqKaW/PnUOfDwEn53ighHOMOBl5hAgxYR8Kiz9NG43Bn00mkjWlFi+ng== + version "6.5.0" + resolved "https://registry.yarnpkg.com/@vanilla-extract/integration/-/integration-6.5.0.tgz#613407565b07dc60b123ca9080ea3f47cd2ce7bb" + integrity sha512-E2YcfO8vA+vs+ua+gpvy1HRqvgWbI+MTlUpxA8FvatOvybuNcWAY0CKwQ/Gpj7rswYKtC6C7+xw33emM6/ImdQ== dependencies: "@babel/core" "^7.20.7" "@babel/plugin-syntax-typescript" "^7.20.0" - "@vanilla-extract/babel-plugin-debug-ids" "^1.0.2" + "@vanilla-extract/babel-plugin-debug-ids" "^1.0.4" "@vanilla-extract/css" "^1.14.0" - esbuild "0.17.6" + esbuild "npm:esbuild@~0.17.6 || ~0.18.0 || ~0.19.0" eval "0.1.8" find-up "^5.0.0" javascript-stringify "^2.0.1" lodash "^4.17.21" - mlly "^1.1.0" + mlly "^1.4.2" outdent "^0.8.0" - vite "^4.1.4" - vite-node "^0.28.5" + vite "^5.0.11" + vite-node "^1.2.0" "@vanilla-extract/private@^1.0.3": version "1.0.3" @@ -4055,10 +4300,10 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -abstract-level@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" - integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== +abstract-level@^1.0.2, abstract-level@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.4.tgz#3ad8d684c51cc9cbc9cf9612a7100b716c414b57" + integrity sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg== dependencies: buffer "^6.0.3" catering "^2.1.0" @@ -4082,14 +4327,14 @@ acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.1.1: - version "8.3.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.1.tgz#2f10f5b69329d90ae18c58bf1fa8fccd8b959a43" - integrity sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw== + version "8.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -acorn@^8.0.0, acorn@^8.10.0, acorn@^8.4.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" - integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== +acorn@^8.0.0, acorn@^8.11.3, acorn@^8.4.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== agent-base@^7.0.2, agent-base@^7.1.0: version "7.1.0" @@ -4098,6 +4343,13 @@ agent-base@^7.0.2, agent-base@^7.1.0: dependencies: debug "^4.3.4" +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== + dependencies: + humanize-ms "^1.2.1" + aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -4150,6 +4402,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-sequence-parser@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz#e0aa1cdcbc8f8bb0b5bca625aac41f5f056973cf" @@ -4179,6 +4436,11 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -4260,13 +4522,13 @@ array-back@^6.2.2: resolved "https://registry.yarnpkg.com/array-back/-/array-back-6.2.2.tgz#f567d99e9af88a6d3d2f9dfcc21db6f9ba9fd157" integrity sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw== -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== +array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" + call-bind "^1.0.5" + is-array-buffer "^3.0.4" array-flatten@1.1.1: version "1.1.1" @@ -4294,16 +4556,27 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== -array.prototype.findlastindex@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" - integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== +array.prototype.filter@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz#423771edeb417ff5914111fff4277ea0624c0d0e" + integrity sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +array.prototype.findlastindex@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz#d1c50f0b3a9da191981ff8942a0aedd82794404f" + integrity sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.3.0" + es-shim-unscopables "^1.0.2" array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: version "1.3.2" @@ -4326,27 +4599,28 @@ array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: es-shim-unscopables "^1.0.0" array.prototype.tosorted@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" - integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== + version "1.1.3" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" + integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.1.0" + es-shim-unscopables "^1.0.2" -arraybuffer.prototype.slice@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" asap@~2.0.3: @@ -4416,6 +4690,11 @@ asynciterator.prototype@^1.0.0: dependencies: has-symbols "^1.0.3" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -4432,21 +4711,23 @@ auto-bind@~4.0.0: integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== autoprefixer@^10.4.12: - version "10.4.16" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8" - integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== + version "10.4.17" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.17.tgz#35cd5695cbbe82f536a50fa025d561b01fdec8be" + integrity sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg== dependencies: - browserslist "^4.21.10" - caniuse-lite "^1.0.30001538" - fraction.js "^4.3.6" + browserslist "^4.22.2" + caniuse-lite "^1.0.30001578" + fraction.js "^4.3.7" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.6, available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" axe-core@=4.7.0: version "4.7.0" @@ -4461,17 +4742,17 @@ axobject-query@^3.2.1: dequal "^2.0.3" b4a@^1.6.1: - version "1.6.4" - resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.4.tgz#ef1c1422cae5ce6535ec191baeed7567443f36c9" - integrity sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw== + version "1.6.6" + resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.6.tgz#a4cc349a3851987c3c4ac2d7785c18744f6da9ba" + integrity sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg== babel-plugin-polyfill-corejs2@^0.4.6: - version "0.4.7" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz#679d1b94bf3360f7682e11f2cb2708828a24fe8c" - integrity sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ== + version "0.4.8" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz#dbcc3c8ca758a290d47c3c6a490d59429b0d2269" + integrity sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.4" + "@babel/helper-define-polyfill-provider" "^0.5.0" semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.8.5: @@ -4483,11 +4764,11 @@ babel-plugin-polyfill-corejs3@^0.8.5: core-js-compat "^3.33.1" babel-plugin-polyfill-regenerator@^0.5.3: - version "0.5.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz#c6fc8eab610d3a11eb475391e52584bacfc020f4" - integrity sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg== + version "0.5.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" + integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.4" + "@babel/helper-define-polyfill-provider" "^0.5.0" babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: version "7.0.0-beta.0" @@ -4542,6 +4823,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +bare-events@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.2.1.tgz#7b6d421f26a7a755e20bf580b727c84b807964c1" + integrity sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A== + base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -4580,9 +4866,9 @@ basic-auth@~2.0.1: safe-buffer "5.1.2" basic-ftp@^5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.3.tgz#b14c0fe8111ce001ec913686434fe0c2fb461228" - integrity sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g== + version "5.0.5" + resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0" + integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg== big-integer@^1.6.51: version "1.6.52" @@ -4615,25 +4901,7 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -body-parser@^1.15.2, body-parser@^1.18.3: +body-parser@1.20.2, body-parser@^1.15.2, body-parser@^1.18.3: version "1.20.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== @@ -4753,13 +5021,13 @@ browserify-zlib@^0.1.4: dependencies: pako "~0.2.0" -browserslist@^4.21.10, browserslist@^4.22.2: - version "4.22.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== +browserslist@^4.22.2, browserslist@^4.22.3: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" node-releases "^2.0.14" update-browserslist-db "^1.0.13" @@ -4911,14 +5179,16 @@ cacheable-request@^7.0.2: normalize-url "^6.0.1" responselike "^2.0.0" -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" - integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" function-bind "^1.1.2" - get-intrinsic "^1.2.1" - set-function-length "^1.1.1" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" call-me-maybe@^1.0.1: version "1.0.2" @@ -4953,10 +5223,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001565: - version "1.0.30001568" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz#53fa9297273c9a977a560663f48cbea1767518b7" - integrity sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A== +caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001587: + version "1.0.30001591" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001591.tgz#16745e50263edc9f395895a7cd468b9f3767cf33" + integrity sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ== capital-case@^1.0.4: version "1.0.4" @@ -4980,31 +5250,31 @@ catering@^2.1.0, catering@^2.1.1: resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== -cbor-extract@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/cbor-extract/-/cbor-extract-2.1.1.tgz#f154b31529fdb6b7c70fb3ca448f44eda96a1b42" - integrity sha512-1UX977+L+zOJHsp0mWFG13GLwO6ucKgSmSW6JTl8B9GUvACvHeIVpFqhU92299Z6PfD09aTXDell5p+lp1rUFA== +cbor-extract@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cbor-extract/-/cbor-extract-2.2.0.tgz#cee78e630cbeae3918d1e2e58e0cebaf3a3be840" + integrity sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA== dependencies: - node-gyp-build-optional-packages "5.0.3" + node-gyp-build-optional-packages "5.1.1" optionalDependencies: - "@cbor-extract/cbor-extract-darwin-arm64" "2.1.1" - "@cbor-extract/cbor-extract-darwin-x64" "2.1.1" - "@cbor-extract/cbor-extract-linux-arm" "2.1.1" - "@cbor-extract/cbor-extract-linux-arm64" "2.1.1" - "@cbor-extract/cbor-extract-linux-x64" "2.1.1" - "@cbor-extract/cbor-extract-win32-x64" "2.1.1" + "@cbor-extract/cbor-extract-darwin-arm64" "2.2.0" + "@cbor-extract/cbor-extract-darwin-x64" "2.2.0" + "@cbor-extract/cbor-extract-linux-arm" "2.2.0" + "@cbor-extract/cbor-extract-linux-arm64" "2.2.0" + "@cbor-extract/cbor-extract-linux-x64" "2.2.0" + "@cbor-extract/cbor-extract-win32-x64" "2.2.0" cbor-x@^1.5.1: - version "1.5.6" - resolved "https://registry.yarnpkg.com/cbor-x/-/cbor-x-1.5.6.tgz#cbc5a8267bcd89a559d32339fe7ec442bc3b3862" - integrity sha512-+TXdnDNdr8JH5GQRoAhjdT/5s5N+b71s2Nz8DpDRyuWx0uzMj8JTR3AqqMTBO/1HtUBHZpmK1enD2ViXFx0Nug== + version "1.5.8" + resolved "https://registry.yarnpkg.com/cbor-x/-/cbor-x-1.5.8.tgz#3bd7bc61120692b5031d7f782a39b64f51f1d825" + integrity sha512-gc3bHBsvG6GClCY6c0/iip+ghlqizkVp+TtaL927lwvP4VP9xBdi1HmqPR5uj/Mj/0TOlngMkIYa25wKg+VNrQ== optionalDependencies: - cbor-extract "^2.1.1" + cbor-extract "^2.2.0" cborg@^4.0.0: - version "4.0.5" - resolved "https://registry.yarnpkg.com/cborg/-/cborg-4.0.5.tgz#20680c0e8d0521e5700b5d9a1d0a644207ca2878" - integrity sha512-q8TAjprr8pn9Fp53rOIGp/UFDdFY6os2Nq62YogPSIzczJD9M6g2b6igxMkpCiZZKJ0kn/KzDLDvG+EqBIEeCg== + version "4.1.0" + resolved "https://registry.yarnpkg.com/cborg/-/cborg-4.1.0.tgz#6c194d0d315975c37b358501351e8fec1f99e864" + integrity sha512-hbWI4lRY0SdkTBbAH1STpY60rqR1gqGz4XaGZ6BXxncqCaAAOtmg2UNLA/6AJ8WG+p14J5P9t7Ul8f0u2ZLOhg== ccount@^2.0.0: version "2.0.1" @@ -5026,7 +5296,7 @@ chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== @@ -5106,9 +5376,9 @@ chardet@^0.7.0: integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== chart.js@^4.2.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.4.1.tgz#ac5dc0e69a7758909158a96fe80ce43b3bb96a9f" - integrity sha512-C74QN1bxwV1v2PEujhmKjOZ7iUM4w6BWs23Md/6aOZZSlwMzeCIDGuZay++rBgChYru7/+QFeoQW0fQoP534Dg== + version "4.4.2" + resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.4.2.tgz#95962fa6430828ed325a480cc2d5f2b4e385ac31" + integrity sha512-6GD7iKwFpP5kbSD4MeRRRlTnQvxfQREy36uEtm1hzHzcOqwWx0YEHuspuoNlslu+nciLIB7fjjsHkUv/FzFcOg== dependencies: "@kurkle/color" "^0.3.0" @@ -5118,9 +5388,9 @@ check-more-types@2.24.0: integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== chokidar@^3.4.3, chokidar@^3.5.1, chokidar@^3.5.2, chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -5168,9 +5438,9 @@ class-variance-authority@^0.3.0: integrity sha512-TFO+pzY9Gedqv8crPhprd647wxhvfpKevPPjiMcteEWsnkHX9yZrD1xMY3ZhRZnLwHUHCCP0LYO6KZIVag/5wQ== classic-level@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.3.0.tgz#5e36680e01dc6b271775c093f2150844c5edd5c8" - integrity sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg== + version "1.4.1" + resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.4.1.tgz#169ecf9f9c6200ad42a98c8576af449c1badbaee" + integrity sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ== dependencies: abstract-level "^1.0.2" catering "^2.1.0" @@ -5179,9 +5449,9 @@ classic-level@^1.2.0: node-gyp-build "^4.3.0" classnames@^2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" - integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + version "2.5.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== clean-css@~5.3.2: version "5.3.3" @@ -5281,9 +5551,9 @@ clone@^2.1.2: integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== close-with-grace@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/close-with-grace/-/close-with-grace-1.2.0.tgz#9af82cc62b40125125e4c772e4dbe3cd8c3ff494" - integrity sha512-Xga0jyAb4fX98u5pZAgqlbqHP8cHuy5M3Wto0k0L/36aP2C25Cjp51XfPw3Hz7dNC2L2/hF/PK/KJhO275L+VA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/close-with-grace/-/close-with-grace-1.3.0.tgz#ff0f5889ad076f79c9d4308db75cc827027366b8" + integrity sha512-lvm0rmLIR5bNz4CRKW6YvCfn9Wg5Wb9A8PJ3Bb+hjyikgC1RO1W3J4z9rBXQYw97mAte7dNSQI8BmUsxdlXQyw== co@^4.6.0: version "4.6.0" @@ -5342,6 +5612,13 @@ colorette@^2.0.16, colorette@^2.0.7: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + comma-separated-tokens@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" @@ -5372,6 +5649,11 @@ commander@7: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.1.0.tgz#a6b263b2327f2e188c6402c42623327909f2dbec" + integrity sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w== + commander@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" @@ -5473,10 +5755,10 @@ cookie@^0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -cookies@~0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" - integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow== +cookies@~0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.9.1.tgz#3ffed6f60bb4fb5f146feeedba50acc418af67e3" + integrity sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== dependencies: depd "~2.0.0" keygrip "~1.1.0" @@ -5487,11 +5769,11 @@ copy-descriptor@^0.1.0: integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-compat@^3.31.0, core-js-compat@^3.33.1: - version "3.34.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.34.0.tgz#61a4931a13c52f8f08d924522bba65f8c94a5f17" - integrity sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA== + version "3.36.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.0.tgz#087679119bc2fdbdefad0d45d8e5d307d45ba190" + integrity sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw== dependencies: - browserslist "^4.22.2" + browserslist "^4.22.3" core-util-is@~1.0.0: version "1.0.3" @@ -5558,6 +5840,13 @@ cross-fetch@^3.1.5: dependencies: node-fetch "^2.6.12" +cross-inspect@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cross-inspect/-/cross-inspect-1.0.0.tgz#5fda1af759a148594d2d58394a9e21364f6849af" + integrity sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ== + dependencies: + tslib "^2.4.0" + cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -5615,9 +5904,9 @@ cytoscape-fcose@^2.1.0: cose-base "^2.2.0" cytoscape@^3.23.0: - version "3.27.0" - resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.27.0.tgz#5141cd694570807c91075b609181bce102e0bb88" - integrity sha512-pPZJilfX9BxESwujODz5pydeGi+FBrXq1rcaB1mfhFXXFJ9GjE6CNndAk+8jPzoXGD+16LtSS4xlYEIUiW4Abg== + version "3.28.1" + resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.28.1.tgz#f32c3e009bdf32d47845a16a4cd2be2bbc01baf7" + integrity sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg== dependencies: heap "^0.2.6" lodash "^4.17.21" @@ -5884,10 +6173,10 @@ data-uri-to-buffer@^3.0.1: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== -data-uri-to-buffer@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz#540bd4c8753a25ee129035aebdedf63b078703c7" - integrity sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg== +data-uri-to-buffer@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" + integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== dataloader@^2.2.2: version "2.2.2" @@ -6040,14 +6329,14 @@ defer-to-connect@^2.0.0: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== -define-data-property@^1.0.1, define-data-property@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== +define-data-property@^1.0.1, define-data-property@^1.1.2, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: - get-intrinsic "^1.2.1" + es-define-property "^1.0.0" + es-errors "^1.3.0" gopd "^1.0.1" - has-property-descriptors "^1.0.0" define-lazy-prop@^2.0.0: version "2.0.0" @@ -6095,17 +6384,22 @@ degenerator@^5.0.0: esprima "^4.0.1" delaunator@5: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.0.tgz#60f052b28bd91c9b4566850ebf7756efe821d81b" - integrity sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw== + version "5.0.1" + resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.1.tgz#39032b08053923e924d6094fe2cde1a99cc51278" + integrity sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw== dependencies: - robust-predicates "^3.0.0" + robust-predicates "^3.0.2" delay@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -6141,6 +6435,11 @@ detect-indent@^6.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== +detect-libc@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + detect-newline@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -6171,9 +6470,9 @@ diff@^4.0.1: integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== diff@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" - integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== dir-glob@^3.0.1: version "3.0.1" @@ -6270,9 +6569,18 @@ dotenv-expand@^8.0.1: integrity sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg== dotenv@^16.0.0, dotenv@^16.0.1, dotenv@^16.0.3: - version "16.3.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" - integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + +dox@^0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/dox/-/dox-0.9.1.tgz#9787f1a21bf4c0049b480369a5c0649cfff0fdbd" + integrity sha512-3bC8QeBn1xYWU628qfW7jlA0ssd7PL/x3ndYdT3tq52arRKFHW5zpVHGgkZPahBCZHU60O+TiJossR+RZZW15w== + dependencies: + commander "9.1.0" + jsdoctypeparser "^1.2.0" + markdown-it "12.3.2" dset@^3.1.2: version "3.1.3" @@ -6294,6 +6602,11 @@ duplexify@^3.5.0, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecdsa-sig-formatter@1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" @@ -6306,10 +6619,19 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.601: - version "1.4.609" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.609.tgz#5790a70aaa96de232501b56e14b64d17aff93988" - integrity sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw== +elasticsearch@^16.7.3: + version "16.7.3" + resolved "https://registry.yarnpkg.com/elasticsearch/-/elasticsearch-16.7.3.tgz#bf0e1cc129ab2e0f06911953a1b1f3c740715fab" + integrity sha512-e9kUNhwnIlu47fGAr4W6yZJbkpsgQJB0TqNK8rCANe1J4P65B1sGnbCFTgcKY3/dRgCWnuP1AJ4obvzW604xEQ== + dependencies: + agentkeepalive "^3.4.1" + chalk "^1.0.0" + lodash "^4.17.10" + +electron-to-chromium@^1.4.668: + version "1.4.689" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.689.tgz#94fe370b800d978b606a2b4c0c5db5c8c98db4f2" + integrity sha512-GatzRKnGPS1go29ep25reM94xxd1Wj8ritU0yRhCJ/tr1Bg8gKnm6R9O/yPOhGQBoLMZ9ezfrpghNaTw97C/PQ== elkjs@^0.8.2: version "0.8.2" @@ -6344,9 +6666,9 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: once "^1.4.0" enhanced-resolve@^5.12.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" - integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + version "5.15.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz#384391e025f099e67b4b00bfd7f0906a408214e1" + integrity sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -6361,6 +6683,11 @@ entities@^4.2.0, entities@^4.4.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -6375,50 +6702,69 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" -es-abstract@^1.22.1: - version "1.22.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" - integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== - dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.2" - available-typed-arrays "^1.0.5" - call-bind "^1.0.5" - es-set-tostringtag "^2.0.1" +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.22.4: + version "1.22.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.5.tgz#1417df4e97cc55f09bf7e58d1e614bc61cb8df46" + integrity sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.3" es-to-primitive "^1.2.1" function.prototype.name "^1.1.6" - get-intrinsic "^1.2.2" - get-symbol-description "^1.0.0" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" globalthis "^1.0.3" gopd "^1.0.1" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" has-symbols "^1.0.3" - hasown "^2.0.0" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" + hasown "^2.0.1" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" is-callable "^1.2.7" - is-negative-zero "^2.0.2" + is-negative-zero "^2.0.3" is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" + is-shared-array-buffer "^1.0.3" is-string "^1.0.7" - is-typed-array "^1.1.12" + is-typed-array "^1.1.13" is-weakref "^1.0.2" object-inspect "^1.13.1" object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - safe-array-concat "^1.0.1" - safe-regex-test "^1.0.0" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.0" + safe-regex-test "^1.0.3" string.prototype.trim "^1.2.8" string.prototype.trimend "^1.0.7" string.prototype.trimstart "^1.0.7" - typed-array-buffer "^1.0.0" - typed-array-byte-length "^1.0.0" - typed-array-byte-offset "^1.0.0" - typed-array-length "^1.0.4" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.5" unbox-primitive "^1.0.2" - which-typed-array "^1.1.13" + which-typed-array "^1.1.14" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.0.0, es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-get-iterator@^1.1.3: version "1.1.3" @@ -6436,40 +6782,41 @@ es-get-iterator@^1.1.3: stop-iteration-iterator "^1.0.0" es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: - version "1.0.15" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" - integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + version "1.0.17" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz#123d1315780df15b34eb181022da43e734388bb8" + integrity sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ== dependencies: asynciterator.prototype "^1.0.0" - call-bind "^1.0.2" + call-bind "^1.0.7" define-properties "^1.2.1" - es-abstract "^1.22.1" - es-set-tostringtag "^2.0.1" - function-bind "^1.1.1" - get-intrinsic "^1.2.1" + es-abstract "^1.22.4" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" globalthis "^1.0.3" - has-property-descriptors "^1.0.0" + has-property-descriptors "^1.0.2" has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.5" + internal-slot "^1.0.7" iterator.prototype "^1.1.2" - safe-array-concat "^1.0.1" + safe-array-concat "^1.1.0" es-module-lexer@^1.0.0, es-module-lexer@^1.0.5: version "1.4.1" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== -es-set-tostringtag@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" - integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== +es-set-tostringtag@^2.0.2, es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== dependencies: - get-intrinsic "^1.2.2" - has-tostringtag "^1.0.0" - hasown "^2.0.0" + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" -es-shim-unscopables@^1.0.0: +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== @@ -6566,12 +6913,12 @@ esbuild-openbsd-64@0.14.54: integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw== esbuild-plugins-node-modules-polyfill@^1.3.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/esbuild-plugins-node-modules-polyfill/-/esbuild-plugins-node-modules-polyfill-1.6.1.tgz#9fe01118ac2c54674aa370128caec195aefee4a3" - integrity sha512-6sAwI24PV8W0zxeO+i4BS5zoQypS3SzEGwIdxpzpy65riRuK8apMw8PN0aKVLCTnLr0FgNIxUMRd9BsreBrtog== + version "1.6.3" + resolved "https://registry.yarnpkg.com/esbuild-plugins-node-modules-polyfill/-/esbuild-plugins-node-modules-polyfill-1.6.3.tgz#8090fc4126b3d6a604ec01fd4646f407059301cf" + integrity sha512-nydQGT3RijD8mBd3Hek+2gSAxndgceZU9GIjYYiqU+7CE7veN8utTmupf0frcKpwIXCXWpRofL9CY9k0yU70CA== dependencies: "@jspm/core" "^2.0.1" - local-pkg "^0.4.3" + local-pkg "^0.5.0" resolve.exports "^2.0.2" esbuild-sunos-64@0.14.54: @@ -6677,38 +7024,39 @@ esbuild@^0.14.51: "@esbuild/win32-ia32" "0.17.19" "@esbuild/win32-x64" "0.17.19" -esbuild@^0.18.10: - version "0.18.20" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" - integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== +esbuild@^0.19.3, "esbuild@npm:esbuild@~0.17.6 || ~0.18.0 || ~0.19.0": + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== optionalDependencies: - "@esbuild/android-arm" "0.18.20" - "@esbuild/android-arm64" "0.18.20" - "@esbuild/android-x64" "0.18.20" - "@esbuild/darwin-arm64" "0.18.20" - "@esbuild/darwin-x64" "0.18.20" - "@esbuild/freebsd-arm64" "0.18.20" - "@esbuild/freebsd-x64" "0.18.20" - "@esbuild/linux-arm" "0.18.20" - "@esbuild/linux-arm64" "0.18.20" - "@esbuild/linux-ia32" "0.18.20" - "@esbuild/linux-loong64" "0.18.20" - "@esbuild/linux-mips64el" "0.18.20" - "@esbuild/linux-ppc64" "0.18.20" - "@esbuild/linux-riscv64" "0.18.20" - "@esbuild/linux-s390x" "0.18.20" - "@esbuild/linux-x64" "0.18.20" - "@esbuild/netbsd-x64" "0.18.20" - "@esbuild/openbsd-x64" "0.18.20" - "@esbuild/sunos-x64" "0.18.20" - "@esbuild/win32-arm64" "0.18.20" - "@esbuild/win32-ia32" "0.18.20" - "@esbuild/win32-x64" "0.18.20" + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" @@ -6790,9 +7138,9 @@ eslint-import-resolver-typescript@^3.5.4: is-glob "^4.0.3" eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + version "2.8.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== dependencies: debug "^3.2.7" @@ -6805,9 +7153,9 @@ eslint-plugin-es@^3.0.0: regexpp "^3.0.0" eslint-plugin-import@^2.27.5: - version "2.29.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" - integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== dependencies: array-includes "^3.1.7" array.prototype.findlastindex "^1.2.3" @@ -6825,7 +7173,7 @@ eslint-plugin-import@^2.27.5: object.groupby "^1.0.1" object.values "^1.1.7" semver "^6.3.1" - tsconfig-paths "^3.14.2" + tsconfig-paths "^3.15.0" eslint-plugin-jest-dom@^4.0.3: version "4.0.3" @@ -6957,15 +7305,15 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.15.0, eslint@^8.21.0: - version "8.55.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.55.0.tgz#078cb7b847d66f2c254ea1794fa395bf8e7e03f8" - integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA== + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.55.0" - "@humanwhocodes/config-array" "^0.11.13" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" "@ungap/structured-clone" "^1.2.0" @@ -7186,13 +7534,13 @@ express-async-errors@^3.1.1: integrity sha512-h6aK1da4tpqWSbyCa3FxB/V6Ehd4EEB15zyQq9qe75OZBp0krinNKuH4rAY+S/U/2I36vdLAUFSjQJ+TFmODng== express@^4.17.1, express@^4.18.1: - version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + version "4.18.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.3.tgz#6870746f3ff904dee1819b82e4b51509afffb0d4" + integrity sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.1" + body-parser "1.20.2" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.5.0" @@ -7371,9 +7719,9 @@ fast-url-parser@^1.1.3: punycode "^1.3.2" fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" @@ -7496,9 +7844,9 @@ flatstr@^1.0.12: integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== folktale@2.3.2: version "2.3.2" @@ -7525,6 +7873,23 @@ foreground-child@^2.0.0: cross-spawn "^7.0.0" signal-exit "^3.0.2" +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + format@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" @@ -7535,7 +7900,7 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.3.6: +fraction.js@^4.3.7: version "4.3.7" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== @@ -7578,14 +7943,14 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== +fs-extra@^11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== dependencies: graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" + jsonfile "^6.0.1" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -7599,12 +7964,12 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: +fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1, function-bind@^1.1.2: +function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -7641,11 +8006,12 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== +get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: + es-errors "^1.3.0" function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" @@ -7678,13 +8044,14 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" get-tsconfig@^4.5.0: version "4.7.2" @@ -7694,14 +8061,14 @@ get-tsconfig@^4.5.0: resolve-pkg-maps "^1.0.0" get-uri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.2.tgz#e019521646f4a8ff6d291fbaea2c46da204bb75b" - integrity sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw== + version "6.0.3" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.3.tgz#0d26697bc13cf91092e519aa63aa60ee5b6f385a" + integrity sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw== dependencies: basic-ftp "^5.0.2" - data-uri-to-buffer "^6.0.0" + data-uri-to-buffer "^6.0.2" debug "^4.3.4" - fs-extra "^8.1.0" + fs-extra "^11.2.0" get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" @@ -7740,17 +8107,16 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^10.3.10: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" glob@^7.0.5, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: version "7.2.3" @@ -7764,17 +8130,6 @@ glob@^7.0.5, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -7892,6 +8247,20 @@ graphile-utils@^4.12.3, graphile-utils@^4.13.0: graphql ">=0.9 <0.14 || ^14.0.2 || ^15.4.0" tslib "^2.0.1" +graphql-compose-elasticsearch@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/graphql-compose-elasticsearch/-/graphql-compose-elasticsearch-5.2.3.tgz#60dedc77f154034196a4178dab9b0bc12e973381" + integrity sha512-DDY+FI+xYHviaURegd5BkfTg27vLB1G2Uqf5DjxQVf4b5gPCdHFvmM6ojMSlo81+EpVNMe3LZ6oTBB/DTYWnwQ== + dependencies: + dox "^0.9.0" + +graphql-compose@^9.0.10: + version "9.0.10" + resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-9.0.10.tgz#1e870166deb1785761865fe742dea0601d2c77f2" + integrity sha512-UsVoxfi2+c8WbHl2pEB+teoRRZoY4mbWBoijeLDGpAZBSPChnqtSRjp+T9UcouLCwGr5ooNyOQLoI3OVzU1bPQ== + dependencies: + graphql-type-json "0.3.2" + graphql-config@^4.4.0: version "4.5.0" resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-4.5.0.tgz#257c2338950b8dce295a27f75c5f6c39f8f777b2" @@ -7932,15 +8301,20 @@ graphql-tag@^2.11.0: dependencies: tslib "^2.1.0" +graphql-type-json@0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.3.2.tgz#f53a851dbfe07bd1c8157d24150064baab41e115" + integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== + graphql-ws@5.12.1: version "5.12.1" resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.12.1.tgz#c62d5ac54dbd409cc6520b0b39de374b3d59d0dd" integrity sha512-umt4f5NnMK46ChM2coO36PTFhHouBrK9stWWBczERguwYrGnPNxJ9dimU6IyOBfOkC6Izhkg4H8+F51W/8CYDg== graphql-ws@^5.6.2: - version "5.14.2" - resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.14.2.tgz#7db6f6138717a544d9480f0213f65f2841ed1c52" - integrity sha512-LycmCwhZ+Op2GlHz4BZDsUYHKRiiUz+3r9wbhBATMETNlORQJAaFlAgTFoeRh6xQoQegwYwIylVD1Qns9/DA3w== + version "5.15.0" + resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.15.0.tgz#2db79e1b42468a8363bf5ca6168d076e2f8fdebc" + integrity sha512-xWGAtm3fig9TIhSaNsg0FaDZ8Pyn/3re3RFlP4rhQcmjRDIPpk1EhRuNB+YSJtLzttyuToaDiNhwT1OMoGnJnw== "graphql@>=0.9 <0.14 || ^14.0.2 || ^15.4.0", "graphql@^0.6.0 || ^0.7.0 || ^0.8.0-b || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.2 || ^15.0.0", graphql@^15.8.0: version "15.8.0" @@ -7991,29 +8365,29 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: - get-intrinsic "^1.2.2" + es-define-property "^1.0.0" -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== +has-tostringtag@^1.0.0, has-tostringtag@^1.0.1, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: - has-symbols "^1.0.2" + has-symbols "^1.0.3" has-value@^0.3.1: version "0.3.1" @@ -8046,10 +8420,10 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== +hasown@^2.0.0, hasown@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" + integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== dependencies: function-bind "^1.1.2" @@ -8169,19 +8543,21 @@ heap@^0.2.6: resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc" integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== -help-me@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/help-me/-/help-me-4.2.0.tgz#50712bfd799ff1854ae1d312c36eafcea85b0563" - integrity sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA== - dependencies: - glob "^8.0.0" - readable-stream "^3.6.0" +help-me@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" + integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg== hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hpagent@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-1.2.0.tgz#0ae417895430eb3770c03443456b8d90ca464903" + integrity sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA== + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -8268,10 +8644,10 @@ http-proxy-agent@^6.0.0: agent-base "^7.1.0" debug "^4.3.4" -http-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" - integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== +http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== dependencies: agent-base "^7.1.0" debug "^4.3.4" @@ -8302,10 +8678,10 @@ https-proxy-agent@^6.0.0: agent-base "^7.0.2" debug "4" -https-proxy-agent@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz#e2645b846b90e96c6e6f347fb5b2e41f1590b09b" - integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== +https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.3: + version "7.0.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" + integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== dependencies: agent-base "^7.0.2" debug "4" @@ -8315,6 +8691,13 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -8345,9 +8728,9 @@ ignore-by-default@^1.0.1: integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== ignore@^5.1.1, ignore@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== immutable@~3.7.6: version "3.7.6" @@ -8426,12 +8809,12 @@ inquirer@^8.0.0, inquirer@^8.2.1: through "^2.3.6" wrap-ansi "^6.0.1" -internal-slot@^1.0.4, internal-slot@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" - integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== +internal-slot@^1.0.4, internal-slot@^1.0.5, internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== dependencies: - get-intrinsic "^1.2.2" + es-errors "^1.3.0" hasown "^2.0.0" side-channel "^1.0.4" @@ -8447,15 +8830,18 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ip@^1.1.5, ip@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" -ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" - integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== +ip@^1.1.5: + version "1.1.9" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396" + integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ== ipaddr.js@1.9.1: version "1.9.1" @@ -8498,14 +8884,13 @@ is-arguments@^1.0.4, is-arguments@^1.1.1: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== +is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" + get-intrinsic "^1.2.1" is-arrayish@^0.2.1: version "0.2.1" @@ -8704,10 +9089,10 @@ is-module@^1.0.0: resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== is-number-object@^1.0.4: version "1.0.7" @@ -8787,12 +9172,12 @@ is-set@^2.0.1, is-set@^2.0.2: resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" is-stream@^2.0.0: version "2.0.1" @@ -8818,12 +9203,12 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== +is-typed-array@^1.1.13, is-typed-array@^1.1.3: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== dependencies: - which-typed-array "^1.1.11" + which-typed-array "^1.1.14" is-unc-path@^1.0.0: version "1.0.0" @@ -8887,9 +9272,9 @@ isarray@^2.0.5: integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isbinaryfile@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-5.0.0.tgz#034b7e54989dab8986598cbcea41f66663c65234" - integrity sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg== + version "5.0.2" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-5.0.2.tgz#fe6e4dfe2e34e947ffa240c113444876ba393ae0" + integrity sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg== isexe@^2.0.0: version "2.0.0" @@ -8897,9 +9282,9 @@ isexe@^2.0.0: integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== iso8601-duration@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/iso8601-duration/-/iso8601-duration-2.1.1.tgz#88d9e481525b50e57840bc93fb8a1727a7d849d2" - integrity sha512-VGGpW30/R57FpG1J7RqqKBAaK7lIiudlZkQ5tRoO9hNlKYQNnhs60DQpXlPFBmp6I+kJ61PHkI3f/T7cR4wfbw== + version "2.1.2" + resolved "https://registry.yarnpkg.com/iso8601-duration/-/iso8601-duration-2.1.2.tgz#b13f14068fe5890c91b91e1f74e474a49f355028" + integrity sha512-yXteYUiKv6x8seaDzyBwnZtPpmx766KfvQuaVNyPifYOjmPdOo3ajd4phDNa7Y5mTQGnXsNEcXFtVun1FjYXxQ== isobject@^2.0.0: version "2.1.0" @@ -8933,9 +9318,9 @@ istanbul-lib-report@^3.0.0: supports-color "^7.1.0" istanbul-reports@^3.1.4: - version "3.1.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + version "3.1.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -8956,6 +9341,15 @@ iterator.prototype@^1.1.2: reflect.getprototypeof "^1.0.4" set-function-name "^2.0.1" +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + javascript-stringify@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" @@ -8991,9 +9385,9 @@ joycon@^3.1.1: integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== js-base64@^3.7.2: - version "3.7.5" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.5.tgz#21e24cf6b886f76d6f5f165bfcd69cc55b9e3fca" - integrity sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA== + version "3.7.7" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79" + integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -9015,6 +9409,18 @@ js-yaml@^4.0.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + +jsdoctypeparser@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz#e7dedc153a11849ffc5141144ae86a7ef0c25392" + integrity sha512-osXm4Fr1o/Jc0YwUM7DHUliYtaunLQxh4ynZgtN02mTUN1VsNbMy75DFSkKRne8xE8jiGRV9NKVhYYYa8ZIHXQ== + dependencies: + lodash "^3.7.0" + jsesc@2.5.2, jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -9061,9 +9467,9 @@ json-stable-stringify-without-jsonify@^1.0.1: integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stable-stringify@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz#43d39c7c8da34bfaf785a61a56808b0def9f747d" - integrity sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" + integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg== dependencies: call-bind "^1.0.5" isarray "^2.0.5" @@ -9096,16 +9502,9 @@ jsonc-parser@^1.0.0: integrity sha512-hk/69oAeaIzchq/v3lS50PXuzn5O2ynldopMC+SWBql7J2WtdptfB9dy8Y7+Og5rPkTCpn83zTiO8FMcqlXJ/g== jsonc-parser@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" - integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" + version "3.2.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" + integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== jsonfile@^6.0.1: version "6.1.0" @@ -9245,15 +9644,15 @@ koa-static@^5.0.0: koa-send "^5.0.0" koa@^2.13.0: - version "2.14.2" - resolved "https://registry.yarnpkg.com/koa/-/koa-2.14.2.tgz#a57f925c03931c2b4d94b19d2ebf76d3244863fc" - integrity sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g== + version "2.15.0" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.15.0.tgz#d24ae1b0ff378bf12eb3df584ab4204e4c12ac2b" + integrity sha512-KEL/vU1knsoUvfP4MC4/GthpQrY/p6dzwaaGI6Rt4NQuFqkw3qrvsdYF5pz3wOfi7IGTvMPHC9aZIcUKYFNxsw== dependencies: accepts "^1.3.5" cache-content-type "^1.0.0" content-disposition "~0.5.2" content-type "^1.0.4" - cookies "~0.8.0" + cookies "~0.9.0" debug "^4.3.2" delegates "^1.0.0" depd "^2.0.0" @@ -9319,10 +9718,11 @@ level-transcoder@^1.0.1: module-error "^1.0.1" level@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394" - integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== + version "8.0.1" + resolved "https://registry.yarnpkg.com/level/-/level-8.0.1.tgz#737161db1bc317193aca4e7b6f436e7e1df64379" + integrity sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ== dependencies: + abstract-level "^1.0.4" browser-level "^1.0.1" classic-level "^1.2.0" @@ -9345,15 +9745,22 @@ lilconfig@^2.1.0: integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== lilconfig@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" - integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== + version "3.1.1" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" + integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +linkify-it@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== + dependencies: + uc.micro "^1.0.1" + listr2@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" @@ -9431,10 +9838,13 @@ loader-utils@^3.2.0: resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== -local-pkg@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963" - integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g== +local-pkg@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c" + integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== + dependencies: + mlly "^1.4.2" + pkg-types "^1.0.3" locate-path@^5.0.0: version "5.0.0" @@ -9520,11 +9930,16 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -"lodash@>=4 <5", lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.0: +"lodash@>=4 <5", lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +lodash@^3.7.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + integrity sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ== + log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -9601,6 +10016,11 @@ lru-cache@^7.14.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== +"lru-cache@^9.1.1 || ^10.0.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + lunr@^2.3.9: version "2.3.9" resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" @@ -9645,6 +10065,17 @@ markdown-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-1.1.1.tgz#fea03b539faeaee9b4ef02a3769b455b189f7fc3" integrity sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q== +markdown-it@12.3.2: + version "12.3.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" + integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== + dependencies: + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + markdown-table@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd" @@ -9867,7 +10298,7 @@ mdast@^3.0.0: resolved "https://registry.yarnpkg.com/mdast/-/mdast-3.0.0.tgz#626bce9603ed43fb6fb053245a6e4a17f4457aa8" integrity sha512-xySmf8g4fPKMeC07jXGz971EkLbWAJ83s4US2Tj9lEdnZ142UP5grN73H1Xd3HzrdbU5o9GYYP/y8F9ZSwLE9g== -mdurl@^1.0.0: +mdurl@^1.0.0, mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== @@ -10362,7 +10793,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -10417,7 +10848,7 @@ minimatch@^7.1.3: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0: +minimatch@^9.0.0, minimatch@^9.0.1: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== @@ -10462,6 +10893,11 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -10495,15 +10931,15 @@ mkdirp@^0.5.6: dependencies: minimist "^1.2.6" -mlly@^1.1.0, mlly@^1.2.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e" - integrity sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg== +mlly@^1.2.0, mlly@^1.4.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.6.1.tgz#0983067dc3366d6314fc5e12712884e6978d028f" + integrity sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA== dependencies: - acorn "^8.10.0" - pathe "^1.1.1" + acorn "^8.11.3" + pathe "^1.1.2" pkg-types "^1.0.3" - ufo "^1.3.0" + ufo "^1.3.2" mockalicious@0.0.16: version "0.0.16" @@ -10524,9 +10960,9 @@ module-error@^1.0.1, module-error@^1.0.2: integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== moment@^2.15.2: - version "2.29.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" - integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + version "2.30.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== morgan@^1.10.0: version "1.10.0" @@ -10559,7 +10995,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -10703,15 +11139,17 @@ node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.9: dependencies: whatwg-url "^5.0.0" -node-gyp-build-optional-packages@5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17" - integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA== +node-gyp-build-optional-packages@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c" + integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw== + dependencies: + detect-libc "^2.0.1" node-gyp-build@^4.3.0: - version "4.7.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.7.1.tgz#cd7d2eb48e594874053150a9418ac85af83ca8f7" - integrity sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg== + version "4.8.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd" + integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== node-int64@^0.4.0: version "0.4.0" @@ -10829,18 +11267,18 @@ object-hash@^3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.13.1, object-inspect@^1.9.0: +object-inspect@^1.13.1: version "1.13.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-is@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + call-bind "^1.0.7" + define-properties "^1.2.1" object-keys@^1.1.1: version "1.1.1" @@ -10854,7 +11292,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.4: +object.assign@^4.1.4, object.assign@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== @@ -10883,14 +11321,15 @@ object.fromentries@^2.0.6, object.fromentries@^2.0.7: es-abstract "^1.22.1" object.groupby@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" - integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + version "1.0.2" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.2.tgz#494800ff5bab78fd0eff2835ec859066e00192ec" + integrity sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + array.prototype.filter "^1.0.3" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.0.0" object.hasown@^1.1.2: version "1.1.3" @@ -11094,12 +11533,11 @@ pac-proxy-agent@^7.0.1: socks-proxy-agent "^8.0.2" pac-resolver@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.0.tgz#79376f1ca26baf245b96b34c339d79bff25e900c" - integrity sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg== + version "7.0.1" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" + integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== dependencies: degenerator "^5.0.0" - ip "^1.1.8" netmask "^2.0.2" packet-reader@1.0.0: @@ -11271,6 +11709,14 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -11288,10 +11734,10 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pathe@^1.1.0, pathe@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a" - integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q== +pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" + integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== pause-stream@0.0.11: version "0.0.11" @@ -11370,15 +11816,15 @@ pg-types@^2.1.0: postgres-interval "^1.1.0" pg-types@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.1.tgz#31857e89d00a6c66b06a14e907c3deec03889542" - integrity sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g== + version "4.0.2" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.2.tgz#399209a57c326f162461faa870145bb0f918b76d" + integrity sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng== dependencies: pg-int8 "1.0.1" pg-numeric "1.0.2" postgres-array "~3.0.1" postgres-bytea "~3.0.0" - postgres-date "~2.0.1" + postgres-date "~2.1.0" postgres-interval "^3.0.0" postgres-range "^1.1.1" @@ -11443,25 +11889,25 @@ pino-abstract-transport@^1.0.0, pino-abstract-transport@v1.1.0: split2 "^4.0.0" pino-http@^8.3.3: - version "8.5.1" - resolved "https://registry.yarnpkg.com/pino-http/-/pino-http-8.5.1.tgz#b4afb7d40687710f463588c0659d6a931285bf46" - integrity sha512-T/3d9YHKBYpv/QHjNy73P5BNYYkRrC2/D6CxKMecG4fKFLN+B2iC6LsKYzGRTRV+Ld3fjxFC1ca4TUGbPdzk+Q== + version "8.6.1" + resolved "https://registry.yarnpkg.com/pino-http/-/pino-http-8.6.1.tgz#46338caea759c9c86fc44f3226ed6976364ec269" + integrity sha512-J0hiJgUExtBXP2BjrK4VB305tHXS31sCmWJ9XJo2wPkLHa1NFPuW4V9wjG27PAc2fmBCigiNhQKpvrx+kntBPA== dependencies: get-caller-file "^2.0.5" - pino "^8.0.0" - pino-std-serializers "^6.0.0" - process-warning "^2.0.0" + pino "^8.17.1" + pino-std-serializers "^6.2.2" + process-warning "^3.0.0" pino-pretty@^10.0.0: - version "10.2.3" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-10.2.3.tgz#db539c796a1421fd4d130734fa994f5a26027783" - integrity sha512-4jfIUc8TC1GPUfDyMSlW1STeORqkoxec71yhxIpLDQapUu8WOuoz2TTCoidrIssyz78LZC69whBMPIKCMbi3cw== + version "10.3.1" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-10.3.1.tgz#e3285a5265211ac6c7cd5988f9e65bf3371a0ca9" + integrity sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g== dependencies: colorette "^2.0.7" dateformat "^4.6.3" fast-copy "^3.0.0" fast-safe-stringify "^2.1.1" - help-me "^4.0.1" + help-me "^5.0.0" joycon "^3.1.1" minimist "^1.2.6" on-exit-leak-free "^2.1.0" @@ -11472,22 +11918,22 @@ pino-pretty@^10.0.0: sonic-boom "^3.0.0" strip-json-comments "^3.1.1" -pino-std-serializers@^6.0.0: +pino-std-serializers@^6.0.0, pino-std-serializers@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz#d9a9b5f2b9a402486a5fc4db0a737570a860aab3" integrity sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA== -pino@^8.0.0, pino@^8.9.0: - version "8.16.2" - resolved "https://registry.yarnpkg.com/pino/-/pino-8.16.2.tgz#7a906f2d9a8c5b4c57412c9ca95d6820bd2090cd" - integrity sha512-2advCDGVEvkKu9TTVSa/kWW7Z3htI/sBKEZpqiHk6ive0i/7f5b1rsU8jn0aimxqfnSz5bj/nOYkwhBUn5xxvg== +pino@^8.17.1, pino@^8.9.0: + version "8.19.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-8.19.0.tgz#ccc15ef736f103ec02cfbead0912bc436dc92ce4" + integrity sha512-oswmokxkav9bADfJ2ifrvfHUwad6MLp73Uat0IkQWY3iAw5xTRoznXbXksZs8oaOUMpmhVWD+PZogNzllWpJaA== dependencies: atomic-sleep "^1.0.0" fast-redact "^3.1.1" on-exit-leak-free "^2.1.0" pino-abstract-transport v1.1.0 pino-std-serializers "^6.0.0" - process-warning "^2.0.0" + process-warning "^3.0.0" quick-format-unescaped "^4.0.3" real-require "^0.2.0" safe-stable-stringify "^2.3.1" @@ -11539,6 +11985,11 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + postcss-discard-duplicates@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" @@ -11574,18 +12025,18 @@ postcss-modules-extract-imports@^3.0.0: integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== postcss-modules-local-by-default@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" - integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== + version "4.0.4" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6" + integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q== dependencies: icss-utils "^5.0.0" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134" + integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA== dependencies: postcss-selector-parser "^6.0.4" @@ -11618,9 +12069,9 @@ postcss-nested@^6.0.1: postcss-selector-parser "^6.0.11" postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.13" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" - integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + version "6.0.15" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" + integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -11630,10 +12081,10 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.3.11, postcss@^8.4.18, postcss@^8.4.19, postcss@^8.4.23, postcss@^8.4.27: - version "8.4.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.32.tgz#1dac6ac51ab19adb21b8b34fd2d93a86440ef6c9" - integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw== +postcss@^8.3.11, postcss@^8.4.18, postcss@^8.4.19, postcss@^8.4.23, postcss@^8.4.35: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== dependencies: nanoid "^3.3.7" picocolors "^1.0.0" @@ -11715,10 +12166,10 @@ postgres-date@~1.0.4: resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== -postgres-date@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.0.1.tgz#638b62e5c33764c292d37b08f5257ecb09231457" - integrity sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw== +postgres-date@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.1.0.tgz#b85d3c1fb6fb3c6c8db1e9942a13a3bf625189d0" + integrity sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA== postgres-interval@^1.1.0: version "1.2.0" @@ -11733,9 +12184,9 @@ postgres-interval@^3.0.0: integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw== postgres-range@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.3.tgz#9ccd7b01ca2789eb3c2e0888b3184225fa859f76" - integrity sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g== + version "1.1.4" + resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.4.tgz#a59c5f9520909bcec5e63e8cf913a92e4c952863" + integrity sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w== prelude-ls@^1.2.1: version "1.2.1" @@ -11804,10 +12255,10 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process-warning@^2.0.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.3.2.tgz#70d8a3251aab0eafe3a595d8ae2c5d2277f096a5" - integrity sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA== +process-warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-3.0.0.tgz#96e5b88884187a1dce6f5c3166d611132058710b" + integrity sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ== process@^0.11.10: version "0.11.10" @@ -11836,9 +12287,9 @@ prop-types@^15.0.0, prop-types@^15.8.1: react-is "^16.13.1" property-information@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.4.0.tgz#6bc4c618b0c2d68b3bb8b552cbb97f8e300a0f82" - integrity sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ== + version "6.4.1" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.4.1.tgz#de8b79a7415fd2107dfbe65758bb2cc9dfcf60ac" + integrity sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w== proxy-addr@~2.0.7: version "2.0.7" @@ -11849,14 +12300,14 @@ proxy-addr@~2.0.7: ipaddr.js "1.9.1" proxy-agent@^6.3.0: - version "6.3.1" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.3.1.tgz#40e7b230552cf44fd23ffaf7c59024b692612687" - integrity sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ== + version "6.4.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.4.0.tgz#b4e2dd51dee2b377748aef8d45604c2d7608652d" + integrity sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ== dependencies: agent-base "^7.0.2" debug "^4.3.4" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.2" + http-proxy-agent "^7.0.1" + https-proxy-agent "^7.0.3" lru-cache "^7.14.1" pac-proxy-agent "^7.0.1" proxy-from-env "^1.1.0" @@ -11980,16 +12431,6 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - raw-body@2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" @@ -12055,9 +12496,9 @@ react-refresh@^0.14.0: integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== react-remove-scroll-bar@^2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" - integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== + version "2.3.5" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.5.tgz#cd2543b3ed7716c7c5b446342d21b0e0b303f47c" + integrity sha512-3cqjOqg6s0XbOjWvmasmqHch+RLxIEk2r/70rzGXuz3iIGQsQheEQyqYCBb5EECoD01Vo2SIbDqW4paLeLTASw== dependencies: react-style-singleton "^2.2.1" tslib "^2.0.0" @@ -12098,11 +12539,11 @@ react-style-singleton@^2.2.1: tslib "^2.0.0" react-tooltip@^5.8.3: - version "5.25.0" - resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-5.25.0.tgz#09d259c041bca1908449ac27b39717162655e0e3" - integrity sha512-/eGhmlwbHlJrVoUe75fb58rJfAy9aZnTvQAK9ZUPM0n9mmBGpEk13vDPiQVCeUuax+fBej+7JPsUXlhzaySc7w== + version "5.26.3" + resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-5.26.3.tgz#bcb9a53e15bdbf9ae007ddf8bf413a317a637054" + integrity sha512-MpYAws8CEHUd/RC4GaDCdoceph/T4KHM5vS5Dbk8FOmLMvvIht2ymP2htWdrke7K6lqPO8rz8+bnwWUIXeDlzg== dependencies: - "@floating-ui/dom" "^1.0.0" + "@floating-ui/dom" "^1.6.1" classnames "^2.3.0" react@^18.2.0: @@ -12141,7 +12582,7 @@ readable-stream@^2.0.0, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -12151,9 +12592,9 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: util-deprecate "^1.0.1" readable-stream@^4.0.0: - version "4.4.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.2.tgz#e6aced27ad3b9d726d8308515b9a1b98dc1b9d13" - integrity sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA== + version "4.5.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== dependencies: abort-controller "^3.0.0" buffer "^6.0.3" @@ -12184,14 +12625,15 @@ recast@^0.21.5: tslib "^2.0.1" reflect.getprototypeof@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" - integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + version "1.0.5" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz#e0bd28b597518f16edaf9c0e292c631eb13e0674" + integrity sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.0.0" + get-intrinsic "^1.2.3" globalthis "^1.0.3" which-builtin-type "^1.1.3" @@ -12208,9 +12650,9 @@ regenerate@^1.4.2: integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== regenerator-transform@^0.15.2: version "0.15.2" @@ -12227,14 +12669,15 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" regexpp@^3.0.0: version "3.2.0" @@ -12386,9 +12829,9 @@ remedial@^1.0.7: integrity sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg== remix-auth-oauth2@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/remix-auth-oauth2/-/remix-auth-oauth2-1.11.0.tgz#c754bf948f1a9898ea53eccf903bd39a4d4355d9" - integrity sha512-Yf1LF6NLYPFa7X2Rax/VEhXmYXFjZOi/q+7DmbMeoMHjAfkpqxbvzqqYSKIKDGR51z5TXR5na4to4380mir5bg== + version "1.11.1" + resolved "https://registry.yarnpkg.com/remix-auth-oauth2/-/remix-auth-oauth2-1.11.1.tgz#7f150d520fcfdf86320c31217fe5303098a7e7a5" + integrity sha512-eGNUB0+yiIuxansfyZM+SqpiAlsFEqOrNUr8LmxSRjx2RW/GOe/aT1fL8n+VtkcrLXPqUJWxE+GhEowF81+VDQ== dependencies: debug "^4.3.4" @@ -12534,9 +12977,9 @@ reusify@^1.0.4: integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + version "1.3.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" + integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== rimraf@^3.0.2: version "3.0.2" @@ -12554,7 +12997,7 @@ roarr@^7.0.4: safe-stable-stringify "^2.4.3" semver-compare "^1.0.0" -robust-predicates@^3.0.0: +robust-predicates@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== @@ -12587,13 +13030,35 @@ rollup@^2.67.0: optionalDependencies: fsevents "~2.3.2" -rollup@^3.15.0, rollup@^3.27.1: +rollup@^3.15.0: version "3.29.4" resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== optionalDependencies: fsevents "~2.3.2" +rollup@^4.2.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.12.0.tgz#0b6d1e5f3d46bbcf244deec41a7421dc54cc45b5" + integrity sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.12.0" + "@rollup/rollup-android-arm64" "4.12.0" + "@rollup/rollup-darwin-arm64" "4.12.0" + "@rollup/rollup-darwin-x64" "4.12.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.12.0" + "@rollup/rollup-linux-arm64-gnu" "4.12.0" + "@rollup/rollup-linux-arm64-musl" "4.12.0" + "@rollup/rollup-linux-riscv64-gnu" "4.12.0" + "@rollup/rollup-linux-x64-gnu" "4.12.0" + "@rollup/rollup-linux-x64-musl" "4.12.0" + "@rollup/rollup-win32-arm64-msvc" "4.12.0" + "@rollup/rollup-win32-ia32-msvc" "4.12.0" + "@rollup/rollup-win32-x64-msvc" "4.12.0" + fsevents "~2.3.2" + rss-parser@^3.12.0: version "3.13.0" resolved "https://registry.yarnpkg.com/rss-parser/-/rss-parser-3.13.0.tgz#f1f83b0a85166b8310ec531da6fbaa53ff0f50f0" @@ -12640,13 +13105,13 @@ sade@^1.7.3: dependencies: mri "^1.1.0" -safe-array-concat@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" - integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== +safe-array-concat@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" + integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" + call-bind "^1.0.5" + get-intrinsic "^1.2.2" has-symbols "^1.0.3" isarray "^2.0.5" @@ -12660,13 +13125,13 @@ safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" + call-bind "^1.0.6" + es-errors "^1.3.0" is-regex "^1.1.4" safe-regex@^1.1.0: @@ -12687,9 +13152,9 @@ safe-stable-stringify@^2.3.1, safe-stable-stringify@^2.4.3: integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sanitize-html@^2.7.1: - version "2.11.0" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.11.0.tgz#9a6434ee8fcaeddc740d8ae7cd5dd71d3981f8f6" - integrity sha512-BG68EDHRaGKqlsNjJ2xUB7gpInPA8gVx/mvjO743hZaeMCZ2DwzW7xvsqZ+KNU4QKwj86HJ3uu2liISf2qBBUA== + version "2.12.1" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.12.1.tgz#280a0f5c37305222921f6f9d605be1f6558914c7" + integrity sha512-Plh+JAn0UVDpBRP/xEjsk+xDCoOvMBwQUf/K+/cBAVuTbtX8bj2VB7S1sL1dssVpykqp0/KPSesHrqXtokVBpA== dependencies: deepmerge "^4.2.2" escape-string-regexp "^4.0.0" @@ -12744,9 +13209,9 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: lru-cache "^6.0.0" @@ -12817,24 +13282,27 @@ set-cookie-parser@^2.4.8: resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51" integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== -set-function-length@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" - integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== +set-function-length@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" + integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== dependencies: - define-data-property "^1.1.1" - get-intrinsic "^1.2.1" + define-data-property "^1.1.2" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.3" gopd "^1.0.1" - has-property-descriptors "^1.0.0" + has-property-descriptors "^1.0.1" set-function-name@^2.0.0, set-function-name@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" - integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== dependencies: - define-data-property "^1.0.1" + define-data-property "^1.1.4" + es-errors "^1.3.0" functions-have-names "^1.2.3" - has-property-descriptors "^1.0.0" + has-property-descriptors "^1.0.2" set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" @@ -12891,9 +13359,9 @@ shell-quote@^1.6.1, shell-quote@^1.7.3: integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== shiki@^0.14.1: - version "0.14.6" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.14.6.tgz#908a9cd5439f7e87279c6623e7c60a3b0a2df85c" - integrity sha512-R4koBBlQP33cC8cpzX0hAoOURBHJILp4Aaduh2eYi+Vj8ZBqtK/5SWNEHBS3qwUMu8dqOtI/ftno3ESfNeVW9g== + version "0.14.7" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.14.7.tgz#c3c9e1853e9737845f1d2ef81b31bcfb07056d4e" + integrity sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg== dependencies: ansi-sequence-parser "^1.1.0" jsonc-parser "^3.2.0" @@ -12901,13 +13369,14 @@ shiki@^0.14.1: vscode-textmate "^8.0.0" side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" siginfo@^2.0.0: version "2.0.0" @@ -12919,6 +13388,11 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.4: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + signedsource@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" @@ -13026,11 +13500,11 @@ socks-proxy-agent@^8.0.2: socks "^2.7.1" socks@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" - integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + version "2.8.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.1.tgz#22c7d9dd7882649043cba0eafb49ae144e3457af" + integrity sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ== dependencies: - ip "^2.0.0" + ip-address "^9.0.5" smart-buffer "^4.2.0" sonic-boom@^1.3.2: @@ -13049,9 +13523,9 @@ sonic-boom@^2.2.3: atomic-sleep "^1.0.0" sonic-boom@^3.0.0, sonic-boom@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.7.0.tgz#b4b7b8049a912986f4a92c51d4660b721b11f2f2" - integrity sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg== + version "3.8.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.8.0.tgz#e442c5c23165df897d77c3c14ef3ca40dec66a66" + integrity sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA== dependencies: atomic-sleep "^1.0.0" @@ -13106,7 +13580,7 @@ source-map@^0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: +source-map@^0.6.0, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -13130,9 +13604,9 @@ spdx-correct@^3.0.0: spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== spdx-expression-parse@^3.0.0: version "3.0.1" @@ -13143,9 +13617,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.16" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" - integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== + version "3.0.17" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" + integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== speedometer@^1.1.0: version "1.1.0" @@ -13178,6 +13652,11 @@ sponge-case@^1.0.1: dependencies: tslib "^2.0.3" +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -13238,9 +13717,9 @@ stream-read-all@^3.0.1: integrity sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A== stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + version "1.0.3" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" + integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== stream-slice@^0.1.2: version "0.1.2" @@ -13253,12 +13732,14 @@ streamsearch@^1.1.0: integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== streamx@^2.12.5: - version "2.15.6" - resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.15.6.tgz#28bf36997ebc7bf6c08f9eba958735231b833887" - integrity sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw== + version "2.16.1" + resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.16.1.tgz#2b311bd34832f08aa6bb4d6a80297c9caef89614" + integrity sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ== dependencies: fast-fifo "^1.1.0" queue-tick "^1.0.1" + optionalDependencies: + bare-events "^2.2.0" string-env-interpolation@1.0.1, string-env-interpolation@^1.0.1: version "1.0.1" @@ -13270,7 +13751,7 @@ string-hash@^1.1.1: resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -13279,6 +13760,15 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.matchall@^4.0.8: version "4.0.10" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" @@ -13352,7 +13842,7 @@ stringify-entities@^4.0.0: character-entities-html4 "^2.0.0" character-entities-legacy "^3.0.0" -strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -13366,6 +13856,13 @@ strip-ansi@^3.0.0: dependencies: ansi-regex "^2.0.0" +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-bom-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" @@ -13403,9 +13900,9 @@ style-to-object@^0.4.0, style-to-object@^0.4.1: inline-style-parser "0.1.1" stylis@^4.1.2: - version "4.3.0" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.0.tgz#abe305a669fc3d8777e10eefcfc73ad861c5588c" - integrity sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ== + version "4.3.1" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.1.tgz#ed8a9ebf9f76fe1e12d462f5cc3c4c980b23a7eb" + integrity sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ== subscriptions-transport-ws@^0.9.18: version "0.9.19" @@ -13419,13 +13916,13 @@ subscriptions-transport-ws@^0.9.18: ws "^5.2.0 || ^6.0.0 || ^7.0.0" sucrase@^3.32.0: - version "3.34.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" - integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== dependencies: "@jridgewell/gen-mapping" "^0.3.2" commander "^4.0.0" - glob "7.1.6" + glob "^10.3.10" lines-and-columns "^1.1.6" mz "^2.7.0" pirates "^4.0.1" @@ -13467,6 +13964,13 @@ symbol-observable@^1.0.4: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== +sync-fetch@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/sync-fetch/-/sync-fetch-0.5.2.tgz#65e7ae1133219938dc92eb19aa21d5eb79ebadec" + integrity sha512-6gBqqkHrYvkH65WI2bzrDwrIKmt3U10s4Exnz3dYuE5Ah62FIfNv/F63inrNhu2Nyh3GH5f42GKU3RrSJoaUyQ== + dependencies: + node-fetch "^2.6.1" + table-layout@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-3.0.2.tgz#69c2be44388a5139b48c59cf21e73b488021769a" @@ -13492,9 +13996,9 @@ table@*, table@^6.8.1: strip-ansi "^6.0.1" tailwindcss@^3.1.8: - version "3.3.6" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.6.tgz#4dd7986bf4902ad385d90d45fd4b2fa5fab26d5f" - integrity sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw== + version "3.4.1" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d" + integrity sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" @@ -13612,9 +14116,9 @@ tempy@*, tempy@^3.0.0: unique-string "^3.0.0" terser@^5.0.0, terser@^5.15.1: - version "5.26.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.26.0.tgz#ee9f05d929f4189a9c28a0feb889d96d50126fe1" - integrity sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ== + version "5.28.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.28.1.tgz#bf00f7537fd3a798c352c2d67d67d65c915d1b28" + integrity sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -13760,9 +14264,9 @@ trim-lines@^3.0.0: integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== trough@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" - integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== + version "2.2.0" + resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" + integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== ts-dedent@^2.2.0: version "2.2.0" @@ -13826,10 +14330,10 @@ ts-simple-type@~1.0.5: resolved "https://registry.yarnpkg.com/ts-simple-type/-/ts-simple-type-1.0.7.tgz#03930af557528dd40eaa121913c7035a0baaacf8" integrity sha512-zKmsCQs4dZaeSKjEA7pLFDv7FHHqAFLPd0Mr//OIJvu8M+4p4bgSFJwZSEBEg3ec9W7RzRz1vi8giiX0+mheBQ== -tsconfig-paths@^3.14.2: - version "3.14.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" - integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" json5 "^1.0.2" @@ -13907,44 +14411,49 @@ type-is@^1.6.16, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" -typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" -typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== +typed-array-length@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.5.tgz#57d44da160296d8663fd63180a1802ebf25905d5" + integrity sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" for-each "^0.3.3" - is-typed-array "^1.1.9" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" typedoc@^0.23.20: version "0.23.28" @@ -14006,10 +14515,15 @@ ua-parser-js@^1.0.33, ua-parser-js@^1.0.35: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.37.tgz#b5dc7b163a5c1f0c510b08446aed4da92c46373f" integrity sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ== -ufo@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.2.tgz#c7d719d0628a1c80c006d2240e0d169f6e3c0496" - integrity sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA== +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +ufo@^1.3.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.4.0.tgz#39845b31be81b4f319ab1d99fd20c56cac528d32" + integrity sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ== uint8arrays@3.0.0: version "3.0.0" @@ -14050,10 +14564,10 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici@^5.28.0: - version "5.28.2" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.2.tgz#fea200eac65fc7ecaff80a023d1a0543423b4c91" - integrity sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w== +undici@^5.22.1, undici@^5.28.0, undici@^5.28.2: + version "5.28.3" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.3.tgz#a731e0eff2c3fcfd41c1169a869062be222d1e5b" + integrity sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA== dependencies: "@fastify/busboy" "^2.0.0" @@ -14196,11 +14710,6 @@ unist-util-visit@^4.0.0, unist-util-visit@^4.1.0: unist-util-is "^5.0.0" unist-util-visit-parents "^5.1.1" -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - universalify@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" @@ -14286,9 +14795,9 @@ urql@^3.0.3: wonka "^6.0.0" use-callback-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" - integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== + version "1.3.1" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.1.tgz#9be64c3902cbd72b07fe55e56408ae3a26036fd0" + integrity sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ== dependencies: tslib "^2.0.0" @@ -14414,30 +14923,27 @@ vfile@^5.0.0: unist-util-stringify-position "^3.0.0" vfile-message "^3.0.0" -vite-node@^0.28.5: - version "0.28.5" - resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.28.5.tgz#56d0f78846ea40fddf2e28390899df52a4738006" - integrity sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA== +vite-node@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-1.3.1.tgz#a93f7372212f5d5df38e945046b945ac3f4855d2" + integrity sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng== dependencies: cac "^6.7.14" debug "^4.3.4" - mlly "^1.1.0" - pathe "^1.1.0" + pathe "^1.1.1" picocolors "^1.0.0" - source-map "^0.6.1" - source-map-support "^0.5.21" - vite "^3.0.0 || ^4.0.0" + vite "^5.0.0" -"vite@^3.0.0 || ^4.0.0", vite@^4.1.4: - version "4.5.1" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.1.tgz#3370986e1ed5dbabbf35a6c2e1fb1e18555b968a" - integrity sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA== +vite@^5.0.0, vite@^5.0.11: + version "5.1.4" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.4.tgz#14e9d3e7a6e488f36284ef13cebe149f060bcfb6" + integrity sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg== dependencies: - esbuild "^0.18.10" - postcss "^8.4.27" - rollup "^3.27.1" + esbuild "^0.19.3" + postcss "^8.4.35" + rollup "^4.2.0" optionalDependencies: - fsevents "~2.3.2" + fsevents "~2.3.3" vscode-css-languageservice@4.3.0: version "4.3.0" @@ -14562,25 +15068,25 @@ web-namespaces@^2.0.0: integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== web-streams-polyfill@^3.1.1, web-streams-polyfill@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" - integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== web-worker@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" - integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.3.0.tgz#e5f2df5c7fe356755a5fb8f8410d4312627e6776" + integrity sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA== webcrypto-core@^1.7.7: - version "1.7.7" - resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.7.tgz#06f24b3498463e570fed64d7cab149e5437b162c" - integrity sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g== + version "1.7.8" + resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.8.tgz#056918036e846c72cfebbb04052e283f57f1114a" + integrity sha512-eBR98r9nQXTqXt/yDRtInszPMjTaSAMJAFDg2AHsgrnczawT1asx9YNBX6k5p+MekbPF4+s/UJJrr88zsTqkSg== dependencies: - "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/asn1-schema" "^2.3.8" "@peculiar/json-schema" "^1.1.12" asn1js "^3.0.1" - pvtsutils "^1.3.2" - tslib "^2.4.0" + pvtsutils "^1.3.5" + tslib "^2.6.2" webidl-conversions@^3.0.0: version "3.0.1" @@ -14652,16 +15158,16 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.2, which-typed-array@^1.1.9: - version "1.1.13" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" - integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== +which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.2, which-typed-array@^1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06" + integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.4" + available-typed-arrays "^1.0.6" + call-bind "^1.0.5" for-each "^0.3.3" gopd "^1.0.1" - has-tostringtag "^1.0.0" + has-tostringtag "^1.0.1" which@^1.2.9: version "1.3.1" @@ -14695,6 +15201,15 @@ wordwrapjs@^5.1.0: resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-5.1.0.tgz#4c4d20446dcc670b14fa115ef4f8fd9947af2b3a" integrity sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg== +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -14704,14 +15219,14 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" wrappy@1: version "1.0.2" @@ -14729,9 +15244,9 @@ ws@8.13.0: integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.12.0: - version "8.15.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.15.0.tgz#db080a279260c5f532fc668d461b8346efdfcf86" - integrity sha512-H/Z3H55mrcrgjFwI+5jKavgXvwQLtfPCUEp6pi35VhoB0pfcHnSoyuTzkBEZpzq49g1193CUEwIvmsjcotenYw== + version "8.16.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== xdm@^2.0.0: version "2.1.0" @@ -14816,9 +15331,9 @@ yaml@^1.10.0, yaml@^1.10.2: integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yaml@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" - integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + version "2.4.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.0.tgz#2376db1083d157f4b3a452995803dbcf43b08140" + integrity sha512-j9iR8g+/t0lArF4V6NE/QCfT+CO7iLqrXAHZbJdo+LfjqP1vR8Fg5bSiaq6Q2lOD1AUEVrEVIgABvBFYojJVYQ== yargs-parser@^18.1.2: version "18.1.3"