|
- Bug in Core Features (Home, Members, Organizations, Activities, Reports)
+ Bug in Core Features (Home, Members, Organizations, Activities)
|
@@ -70,10 +70,10 @@ Any contributions you make are **greatly appreciated**. ❤️
We welcome any contribution to crowd.dev. Before you start with your first issue, please consider the following points:
-- For your first contribution we recommend taking a look at our [good first issues 🥂](https://github.com/CrowdDotDev/crowd.dev/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue+%F0%9F%A5%82%22).
-- Other issues that are well suited for contribution have the tag [help wanted 🙏](https://github.com/CrowdDotDev/crowd.dev/labels/help%20wanted%20%F0%9F%99%8F).
+- For your first contribution, we recommend taking a look at our ["good first issues" 🥂](https://github.com/CrowdDotDev/crowd.dev/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue+%F0%9F%A5%82%22).
+- Other issues that are well suited for contribution have the tag ["help wanted" 🙏](https://github.com/CrowdDotDev/crowd.dev/labels/help%20wanted%20%F0%9F%99%8F).
- If you want to contribute to our codebase, you have to first [sign our Contributor License Agreement](https://cla-assistant.io/CrowdDotDev/crowd.dev).
-- If you need help you can reach us either via [Discord](http://crowd.dev/discord) or [Book a 15 min Contributor Onboarding Call](https://cal.com/team/CrowdDotDev/contributor-onboarding?duration=15).
+- If you need help, you can reach us either via [Discord](http://crowd.dev/discord) or [Book a 15-min Contributor Onboarding Call](https://cal.com/team/CrowdDotDev/contributor-onboarding?duration=15).
#### Requirements
@@ -83,7 +83,7 @@ We welcome any contribution to crowd.dev. Before you start with your first issue
#### Setup the project
-The project is a monorepo, meaning that it is a collection of multiple packages managed in the same repository. In the following steps you'll learn how to get the project up and running for development purposes.
+The project is a monorepo, meaning that it is a collection of multiple packages managed in the same repository. In the following steps, you'll learn how to get the project up and running for development purposes.
1. Get the mono repo from GitHub
@@ -91,20 +91,20 @@ The project is a monorepo, meaning that it is a collection of multiple packages
git clone git@github.com:CrowdDotDev/crowd.dev.git
```
-2. Run the start script
+2. Run the start script:
```shell
cd scripts
./cli start
```
-For hot reloading, you can run
+For hot reloading, you can run:
```shell
cd scripts
./cli clean-start-dev
```
-App will be available at http://localhost:8081
+The app will be available at http://localhost:8081
For more information on development, you can check our docs.
@@ -120,7 +120,7 @@ To optimize resource usage during development, we would suggest starting only th
This will set up the foundational services required for the project.
-2. If you are primarily working on the frontend but also need the API without hot reloading
+2. If you are primarily working on the frontend but also need the API without hot reloading:
```shell
@@ -136,12 +136,61 @@ Feel free to adjust the commands based on the specific services you need for you
To ensure consistency throughout the source code, please keep these rules in mind as you are working:
-- All features or bug fixes must be tested by one or more specs (unit-tests).
-- We use [Eslint default rule guide](https://eslint.org/docs/rules/), with minor changes. An automated formatter is available using prettier.
+- All features or bug fixes must be tested by one or more specs (unit tests).
+- We use [Eslint default rule guide](https://eslint.org/docs/rules/), with minor changes. An automated formatter is available using Prettier.
- In-code documentation is required for every function or class that is not self-evident.
- All new API endpoints that are relevant to the public API must have in-code documentation to generate OpenAPI specifications.
- The pipeline must pass.
+##### Commit Message Guidelines
+
+This project uses [Conventional Commits](https://www.conventionalcommits.org/) enforced by commitlint.
+
+**Documentation:**
+- [Official Conventional Commits Specification](https://www.conventionalcommits.org/)
+- [LFX Internal Conventional Commits Guide](https://linuxfoundation.atlassian.net/wiki/spaces/PROD/pages/759726128/Conventional+Commits)
+
+**Enforcement:** Commitlint runs automatically via Husky on every commit. Invalid commit messages will be rejected.
+
+##### Pull Request Guidelines
+
+**PR Title Requirements:**
+- Must follow conventional commit format: `type(scope): description`
+- Should include JIRA ticket key in title: `feat: add new feature (CDP-123)`
+
+**PR Process:**
+1. Ensure your commits follow the conventional commit format
+2. Include JIRA ticket key in PR title
+3. Provide clear description of changes
+4. Ensure all tests pass
+5. Request review from a member of the team
+
+##### JIRA Integration
+
+**Using JIRA MCP Server:**
+Leverage the JIRA MCP server for efficient ticket management during development.
+
+**Documentation:**
+- [JIRA MCP Server Guide](https://github.com/linuxfoundation/lfx-engineering/blob/main/mcp/jira.md)
+
+**Ticket Linking:**
+- When possible reference JIRA tickets in commit messages and PR titles
+- Use format: `type: conventional commit message (TICKET-KEY)`
+- This enables automatic linking between code changes and tickets
+
+##### AI Development Guidelines
+
+**Leveraging AI Tools:**
+The Linux Foundation provides guidelines and best practices for using AI in development workflows.
+
+**Documentation:**
+- [LFX AI Development Guidelines](https://github.com/linuxfoundation/lfx-engineering/tree/main/ai)
+
+**Best Practices:**
+- Follow LFX guidelines when using AI tools for code generation
+- Ensure AI-generated code meets our quality standards
+- Review and test all AI-assisted contributions thoroughly
+
## Need help? 🛟
diff --git a/LICENSE b/LICENSE
index 561469f2a4..3c4dfe081c 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,14 +1,3 @@
-Copyright (c) 2022-present Crowd Technologies GmbH
-
-Parts of this software are licensed as follows:
-
-* All content that is stored in a "premium/" repository path (Premium Edition), is licensed under the license defined in "PREMIUM LICENSE".
-* All third-party components incorporated into the crowd.dev Software are licensed under the original license provided by the owner of the applicable component.
-* Content outside of the above-mentioned directories or restrictions above is licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
-
--------------------------------------------------------------------------
-
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000000..bae29e0cb0
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,17 @@
+LFX Community Data Platform is a project by the Linux Foundation.
+
+## Maintainers
+
+| Role | Name | GitHub ID | Affiliation |
+| -----------------| ------------------ | -------------------------------------------------| ---------------------|
+| Maintainer | Jonathan Reimer | [jonathimer](https://github.com/jonathimer) | The Linux Foundation |
+| Maintainer | Joana Maia | [joanagmaia](https://github.com/joanagmaia) | The Linux Foundation |
+| Maintainer | Uroš Marolt | [themarolt](https://github.com/themarolt) | The Linux Foundation |
+| Maintainer | Umberto Sgueglia | [ulemons](https://github.com/ulemons) | The Linux Foundation |
+| Maintainer | Yeganathan Kumar | [skwowet](https://github.com/skwowet) | The Linux Foundation |
+| Maintainer | Mouad Bani | [mbani01](https://github.com/mbani01) | The Linux Foundation |
+| Maintainer | Raúl Santos | [borfast](https://github.com/borfast) | The Linux Foundation |
+| Maintainer | Gasper Grom | [gaspergrom](https://github.com/gaspergrom) | The Linux Foundation |
+| Maintainer | Efren Lim | [emlimlf](https://github.com/emlimlf) | The Linux Foundation |
+| Maintainer | Anıl Bostancı | [epipav](https://github.com/epipav) | The Linux Foundation |
+| Maintainer | Nuno Eufrásio | [nunoeufrasio](https://github.com/nunoeufrasio) | The Linux Foundation |
\ No newline at end of file
diff --git a/PREMIUM LICENSE b/PREMIUM LICENSE
deleted file mode 100644
index 1662b25164..0000000000
--- a/PREMIUM LICENSE
+++ /dev/null
@@ -1,35 +0,0 @@
-The crowd.dev Premium Edition license (the "PE License")
-
-Copyright (c) 2022-present Crowd Technologies GmbH ("crowd.dev")
-
-The crowd.dev software and associated documentation files (the "Software") may only be
-used in production, if you (and any entity that you represent) (i) have a valid crowd.dev
-Premium Edition subscription for the correct number of users, (ii) adhere to the
-applicable crowd.dev Subscription Terms of Use, available at
-https://www.crowd.dev/terms-of-use (the "PE Terms") and (iii) adhere to any other
-agreement or terms applicable to the use of the Software. Only under the conditions as
-set out in this section, and the applicable terms and conditions, crowd.dev grants you
-the right to modify the Software and publish patches to the Software. You agree that
-crowd.dev and/or its licensors (as applicable) retain all right, title and interest in
-and to all such modifications and/or patches, and all such modifications and/or patches
-may only be used, copied, modified, displayed, distributed, or otherwise exploited with
-a valid crowd.dev Premium Edition subscription for the correct number of users.
-Notwithstanding the foregoing, you may copy and modify the Software for development and
-testing purposes without requiring a crowd.dev Premium Edition subscription. You agree
-that crowd.dev and/or its licensors (as applicable) retain all right, title and interest
-in and to all such modifications. You are not granted any other rights beyond what is
-expressly stated herein. Subject to the foregoing, it is forbidden to copy, merge,
-publish, distribute, sublicense, and/or sell the Software.
-
-The Software is provided "AS IS", without warranty of any kind, express or implied,
-including but not limited to the warranties of merchantability, fitness for a
-particular purpose and non-infringement. In no event shall the authors or copyright
-holders be liable for any claim, damages or other liability, whether in an action of
-contract, tort or otherwise, arising from, out of or in connection with the Software
-or the use or other dealings in the Software.
-
-The text of this PE License shall be included in all copies or substantial
-parts of the Software.
-
-All third-party components incorporated into the crowd.dev Software are licensed under
-the original license provided by the owner of the applicable component.
diff --git a/README.md b/README.md
index 2cf8d5ec8e..8f6cda899b 100644
--- a/README.md
+++ b/README.md
@@ -1,79 +1,22 @@
-
-
-
-
-
-
-
- Effortlessly centralize community, product, and customer data
-
-
-
- 🌐 Cloud version (beta)
- ·
- 📖 Docs
- ·
- ❤️ Discord
- ·
- 📣 Newsletter
- ·
- 🗺️ Roadmap
-
-
-
-
-
+# LFX Community Data Platform (fka crowd.dev)
+## Background story
+This project was launched as part of the startup crowd.dev. crowd.dev was acquired by the Linux Foundation in April 2024. Following the acquisition, crowd.dev was renamed to "Community Data Platform" and is now part of the [LFX platform](https://lfx.linuxfoundation.org/).
+## About this project
+LFX Community Data Platform collects and stores data from across the communities in a single database for data unification, identity resolution, analysis, and activation. By utilizing this tool, the Linux Foundation can effectively identify key contributors and organizations, facilitating more efficient community support.
-## Table of Contents
-- [About crowd.dev](#about-crowddev)
-- [Features](#✨-features)
-- [Getting started](#🚀-getting-started)
-- [Roadmap](#🗺️-roadmap)
-- [Stay up-to-date](#🔔-stay-up-to-date)
-- [Contribution](#✍️-contribution)
-- [License](#⚖️-license)
-- [Security](#🔒-security)
-- [Book a call](#📞-book-a-call)
+Key features:
+* It consolidates developers' touchpoints with a company or brand.
+* It captures data from community platforms, product channels, and commercial channels.
+* The data is cleaned, and profiles are matched across platforms and enriched with third-party data.
+* The platform provides a unified 360-degree view of developers' engagement, their companies, and their customer journey.
-## About crowd.dev
-crowd.dev is the developer data platform (DDP) that lets companies centralize all touch points developers have with their product and brand, be it in the community (e.g. Stack Overflow or Reddit), product (open-source or SaaS), or commercial channels (e.g. HubSpot). The platform pulls data from a variety of different sources, normalizes it, matches identities across platforms, and enriches it with 3rd party data. The result is a unified 360-view of who the developers are that engage with your product and community, which companies they work for, and where they stand in their personal customer journey.
-crowd.dev is open-source, built with developers in mind, available for both hosted and self-hosted deployments, open to extensions, and offers full control over your data.
-
-**To our **users**:**
-- You can get actively involved, contribute to our roadmap, and turn crowd.dev into the tool you always wanted.
-- We are open regarding what we are building, allowing you to take a look inside and making sure we handle your data in a privacy-preserving way.
-- You will never be locked in by us. Our interests as a company are aligned with you and we need to make sure that we always deliver enough value to you with our commercial offering in relation to our pricing.
-
-**To our developer community:**
-- You can self-host crowd.dev to centralize data for your community or company while keeping full control over your data.
-- Our product is built for extensibility. If you can think of any use cases that you want to build with the data we collect and store for you, please go ahead and build it! We will be here to help out if you need us.
-- You can actively contribute to crowd.dev (e.g. integrations), and we will be supporting you along the journey. Just take a look at our [Contributing guide](https://github.com/CrowdDotDev/crowd.dev/blob/main/CONTRIBUTING.md).
-
-## ✨ Features
-
-- **Plug & play integrations** to tie all relevant platforms - like GitHub, Discord, Slack, or LinkedIn - together. ([all integrations](https://www.crowd.dev/integrations))
-- **Identity resolution & automated segmentation** to effortlessly understand activities and profiles across platforms.
-- **Opinionated analytics & reports** on topics like product-market-fit and open-source community activity to further inform your GTM strategy.
-- **Workflows automation** with webhooks.
-- **2-way CRM sync & Slack alerts** to get notified about intent events in real-time. [cloud only]
-- **User enrichment** with 25+ attributes, including emails, social profiles, work experience, and technical skills. [cloud only]
-- **Organization enrichment** with 50+ attributes, including industry, headcount, and revenue. [cloud only]
-- **Sentiment analysis and conversation detection** to stay on top of what's going on in your open-source community. [cloud only]
-- **[Eagle Eye](https://www.crowd.dev/eagle-eye)**: Monitor dev-focused community platforms to find relevant content to engage with, helping you to gain developers’ mindshare and grow your community organically [cloud only]
-
-
-## 🚀 Getting started
-
-### Cloud version
-
-Our cloud version is a fast, easy, and free way to get started with crowd.dev.
-
-### Self-hosted version
+## Getting started
+⚠️ This documentation is outdated and needs to be reviewed.
To get started with self-hosting, take a look at our [self-hosting docs](https://docs.crowd.dev/docs/getting-started-with-self-hosting).
@@ -89,7 +32,7 @@ We currently support all our integrations for self-hosting. For each one of them
#### Requirements
-- [Node](https://nodejs.org/en) v16.16.0
+- [Node](https://nodejs.org/en) v20+
- [Docker](https://docs.docker.com/get-docker/) and [docker-compose](https://docs.docker.com/compose/install/)
#### Getting started
@@ -114,21 +57,18 @@ cd scripts
./cli clean-start-dev
```
-The app will be available at http://localhost:8081
-
-For more information on development, you can check our docs.
-
-## 🗺️ Roadmap
-
-You can find more features on our [public roadmap](https://crowd.dev/roadmap). Feel free to also [open an issue](https://crowd.dev/open-an-issue) for anything you're missing.
-
+For starting services required for insights infra (Tinybird, Sequin and Kafka Connect sink),
+you can use the `WITH_INSIGHTS` env variable while running cli commands
+```
+WITH_INSIGHTS=1 ./cli scaffold up
+```
-## 🔔 Stay up-to-date
+This app will be available at http://localhost:8081
-crowd.dev is still in beta and we ship new features every week. To stay in the loop, leave us a star and subscribe to our monthly newsletter. Thanks a lot! ❤️
+For more information on development, you can check our docs.
-## ✍️ Contribution
+## Contribution
There are many ways you can contribute to crowd.dev! Here are a few options:
@@ -140,18 +80,6 @@ If you would like to contribute to the development of the project, please refer
All contributions are highly appreciated. 🙏
-## ⚖️ License
-
-Distributed under the Apache 2.0 License. See `LICENSE` for more information.
-
-Our self-hosted version can be run and deployed by default following the permissive Apache 2.0 license. All premium components will be hidden and inactive with the default configuration. You can run, deploy, and contribute to the app without fearing to violate the premium license. Check out the [premium self-hosted features docs](https://docs.crowd.dev/docs/premium-self-hosted-apps) to know more about the premium self-hosted features.
-
-## 🔒 Security
-
-We take security very seriously. If you come across any security vulnerabilities, please disclose them by sending an email to security@crowd.dev. We appreciate your help in making our platform as secure as possible and are committed to working with you to resolve any issues quickly and efficiently.
-
-## 📞 Book a call
-
-Call with a crowd.dev team member to learn more about our product and make sure you get the most out of it.
+## License
-
+Distributed under the Apache 2.0 License.
diff --git a/backend/.dockerignore b/backend/.dockerignore
index 2dc202455d..e367da5e19 100644
--- a/backend/.dockerignore
+++ b/backend/.dockerignore
@@ -3,6 +3,5 @@
**/venv*
**/.webpack
**/.serverless
-**/.cubestore
**/.idea
**/.vscode
\ No newline at end of file
diff --git a/backend/.env.dist.composed b/backend/.env.dist.composed
index 8a36964926..0bf0dd50d7 100644
--- a/backend/.env.dist.composed
+++ b/backend/.env.dist.composed
@@ -1,9 +1,6 @@
-# SQS settings
-CROWD_SQS_HOST="sqs"
-CROWD_SQS_ENDPOINT=http://sqs:9324
-CROWD_SQS_NODEJS_WORKER_QUEUE="http://sqs:9324/000000000000/nodejs-worker.fifo"
-CROWD_SQS_NODEJS_WORKER_DELAYABLE_QUEUE=http://sqs:9324/000000000000/nodejs-worker
-CROWD_SQS_PYTHON_WORKER_QUEUE="http://sqs:9324/000000000000/python-worker.fifo"
+# Kafka settings
+CROWD_KAFKA_BROKERS=kafka:9092
+CROWD_KAFKA_TOPIC=data-sink-worker-normal
# Redis settings
CROWD_REDIS_HOST=redis
@@ -14,12 +11,27 @@ CROWD_S3_HOST="s3"
# Db settings
CROWD_DB_READ_HOST="db"
CROWD_DB_WRITE_HOST="db"
+INSIGHTS_DB_WRITE_HOST="db"
-# CubeJS settings
-CROWD_CUBEJS_URL="http://cubejs:4000/cubejs-api/v1"
+# Product DB settings
+PRODUCT_DB_HOST=product
+PRODUCT_DB_PORT=5432
# Nango settings
CROWD_NANGO_URL=http://nango:3003
# OpenSearch settings
-CROWD_OPENSEARCH_NODE=http://open-search:9200
\ No newline at end of file
+CROWD_OPENSEARCH_NODE=http://open-search:9200
+
+# Temporal
+CROWD_TEMPORAL_SERVER_URL=temporal:7233
+
+# Seach sync api
+CROWD_SEARCH_SYNC_API_URL=http://search-sync-api:8083
+# packages DB (osspckgs)
+CROWD_PACKAGES_DB_READ_HOST=packages
+CROWD_PACKAGES_DB_WRITE_HOST=packages
+CROWD_PACKAGES_DB_PORT=5432
+CROWD_PACKAGES_DB_USERNAME=postgres
+CROWD_PACKAGES_DB_PASSWORD=example
+CROWD_PACKAGES_DB_DATABASE=packages-db
diff --git a/backend/.env.dist.local b/backend/.env.dist.local
index aff5e593d0..18c65f92ef 100755
--- a/backend/.env.dist.local
+++ b/backend/.env.dist.local
@@ -1,7 +1,8 @@
# Global settings
KUBE_MODE=1
-CROWD_EDITION=community
+CROWD_EDITION=lfx-ee
TENANT_MODE=multi
+QUEUE_PRIORITY_LEVEL=normal
# API settings
CROWD_API_URL=https://localhost/api
@@ -10,17 +11,8 @@ CROWD_API_FRONTEND_URL_WITH_SUBDOMAINS=
CROWD_API_JWT_SECRET=your-secret
CROWD_API_JWT_EXPIRES_IN='100 years'
-# SQS settings
-CROWD_SQS_HOST=localhost
-CROWD_SQS_PORT=9324
-CROWD_SQS_ENDPOINT=http://localhost:9324
-CROWD_SQS_NODEJS_WORKER_QUEUE=http://localhost:9324/000000000000/nodejs-worker.fifo
-CROWD_SQS_NODEJS_WORKER_DELAYABLE_QUEUE=http://localhost:9324/000000000000/nodejs-worker
-CROWD_SQS_PYTHON_WORKER_QUEUE=http://localhost:9324/000000000000/python-worker.fifo
-CROWD_SQS_AWS_ACCOUNT_ID=000000000000
-CROWD_SQS_AWS_ACCESS_KEY_ID=x
-CROWD_SQS_AWS_SECRET_ACCESS_KEY=x
-CROWD_SQS_AWS_REGION=elasticmq
+# Kafka settings
+CROWD_KAFKA_BROKERS=localhost:9093
# Redis settings
CROWD_REDIS_USERNAME=default
@@ -30,7 +22,7 @@ CROWD_REDIS_PORT=6379
# S3 settings
CROWD_S3_HOST=localhost
-CROWD_S3_PORT=9000
+CROWD_S3_PORT=9100
CROWD_S3_INTEGRATION_ASSETS_BUCKET=crowd-integrations-assets
CROWD_S3_MICROSERVICES_ASSETS_BUCKET=crowd-microservices-assets
CROWD_S3_AWS_ACCOUNT_ID=000000000000
@@ -46,14 +38,24 @@ CROWD_DB_USERNAME=postgres
CROWD_DB_PASSWORD=example
CROWD_DB_DATABASE=crowd-web
+INSIGHTS_DB_WRITE_HOST=localhost
+INSIGHTS_DB_USERNAME=postgres
+INSIGHTS_DB_PASSWORD=example
+INSIGHTS_DB_DATABASE=insights
+INSIGHTS_DB_PORT=5432
+INSIGHTS_DB_POOL_MAX=10
+INSIGHTS_DB_SSLMODE=disable
+
+# Product DB settings
+PRODUCT_DB_HOST=localhost
+PRODUCT_DB_PORT=5433
+PRODUCT_DB_USERNAME=postgres
+PRODUCT_DB_PASSWORD=example
+PRODUCT_DB_DATABASE=product-db
+
# OpenSearch settings
CROWD_OPENSEARCH_NODE=http://localhost:9200
-# CubeJS settings
-CROWD_CUBEJS_URL=http://localhost:4000/cubejs-api/v1
-CROWD_CUBEJS_JWT_SECRET=137ea167812145c6d77452a58d7dd29b
-CROWD_CUBEJS_JWT_EXPIRY=2h
-
# AWS Comprehend settings
CROWD_COMPREHEND_AWS_ACCOUNT_ID=
CROWD_COMPREHEND_AWS_ACCESS_KEY_ID=
@@ -71,23 +73,10 @@ CROWD_NETLIFY_SITE_DOMAIN=localhost:3000
# Sendgrid settings
CROWD_SENDGRID_KEY=
-CROWD_SENDGRID_WEBHOOK_SIGNING_SECRET=
CROWD_SENDGRID_EMAIL_FROM=
CROWD_SENDGRID_NAME_FROM=
-CROWD_SENDGRID_TEMPLATE_EMAIL_ADDRESS_VERIFICATION=
-CROWD_SENDGRID_TEMPLATE_INVITATION=
-CROWD_SENDGRID_TEMPLATE_PASSWORD_RESET=
-CROWD_SENDGRID_TEMPLATE_WEEKLY_ANALYTICS=
-CROWD_SENDGRID_TEMPLATE_INTEGRATION_DONE=
-CROWD_SENDGRID_WEEKLY_ANALYTICS_UNSUBSCRIBE_GROUP_ID=
-
-# Stripe settings
-CROWD_STRIPE_PRICE_PREMIUM=
-CROWD_STRIPE_PRICE_ENTERPRISE=
-CROWD_STRIPE_SECRET_KEY=
-CROWD_STRIPE_WEBHOOK_SIGNING_SECRET=
-CROWD_STRIPE_EAGLE_EYE_PLAN_PRODUCT_ID=
-CROWD_STRIPE_GROWTH_PLAN_PRODUCT_ID=
+CROWD_SENDGRID_TEMPLATE_EAGLE_EYE_DIGEST=
+CROWD_SENDGRID_TEMPLATE_CSV_EXPORT=
# Twitter settings
CROWD_TWITTER_CLIENT_ID=
@@ -128,14 +117,16 @@ CROWD_STACKEXCHANGE_KEY=
# Nango settings
CROWD_NANGO_URL=http://localhost:3003
CROWD_NANGO_SECRET_KEY=424242
-CROWD_NANGO_INTEGRATIONS=reddit,linkedin,stackexchange,hubspot
+CROWD_NANGO_INTEGRATIONS=reddit,linkedin,stackexchange
# Cohere settings
CROWD_COHERE_API_KEY=
# Enrichment settings
-CROWD_ENRICHMENT_URL=
-CROWD_ENRICHMENT_API_KEY=
+CROWD_ENRICHMENT_PROGAI_URL=
+CROWD_ENRICHMENT_PROGAI_API_KEY=
+CROWD_ENRICHMENT_CLEARBIT_URL=
+CROWD_ENRICHMENT_CLEARBIT_API_KEY=
# PDL Organization Enrichment settings
CROWD_ORGANIZATION_ENRICHMENT_API_KEY=
@@ -144,20 +135,6 @@ CROWD_ORGANIZATION_ENRICHMENT_API_KEY=
CROWD_EAGLE_EYE_URL=
CROWD_EAGLE_EYE_API_KEY=
-# Slack alerting settings
-CROWD_SLACK_ALERTING_URL=
-
-# Unleash settings
-CROWD_UNLEASH_URL=
-CROWD_UNLEASH_ADMIN_API_KEY=
-CROWD_UNLEASH_FRONTEND_API_KEY=
-CROWD_UNLEASH_BACKEND_API_KEY=
-CROWD_UNLEASH_DB_HOST=
-CROWD_UNLEASH_DB_PORT=
-CROWD_UNLEASH_DB_USERNAME=
-CROWD_UNLEASH_DB_PASSWORD=
-CROWD_UNLEASH_DB_DATABASE=
-
# Weekly emails settings
CROWD_WEEKLY_EMAILS_ENABLED="true"
@@ -166,3 +143,77 @@ CROWD_ANALYTICS_IS_ENABLED=
CROWD_ANALYTICS_TENANT_ID=
CROWD_ANALYTICS_BASE_URL=
CROWD_ANALYTICS_API_TOKEN=
+
+# Temporal
+CROWD_TEMPORAL_SERVER_URL=localhost:7233
+CROWD_TEMPORAL_NAMESPACE=default
+CROWD_TEMPORAL_ENCRYPTION_KEY_ID=local
+CROWD_TEMPORAL_ENCRYPTION_KEY=FweBMRnGCLshER8FlSvNusQA6G3MRUKt
+
+# Temporal — packages namespace
+CROWD_PACKAGES_TEMPORAL_NAMESPACE=default
+
+# Seach sync api
+CROWD_SEARCH_SYNC_API_URL=http://localhost:8083
+
+CROWD_MV_OTHERS_REFRESH_PERIOD='* * * * *'
+
+# Loki
+CROWD_LOKI_DB_TURSO_URL=dummy
+CROWD_LOKI_DB_TURSO_TOKEN=dummy
+
+CROWD_GITHUB_IS_SNOWFLAKE_ENABLED=false
+
+# Tinybird
+CROWD_TINYBIRD_BASE_URL=http://localhost:7181/
+
+# Auth0
+CROWD_AUTH0_ISSUER_BASE_URLS=
+CROWD_AUTH0_AUDIENCE=
+
+# packages DB (osspckgs)
+CROWD_PACKAGES_DB_READ_HOST=localhost
+CROWD_PACKAGES_DB_WRITE_HOST=localhost
+CROWD_PACKAGES_DB_PORT=5434
+CROWD_PACKAGES_DB_USERNAME=postgres
+CROWD_PACKAGES_DB_PASSWORD=example
+CROWD_PACKAGES_DB_DATABASE=packages-db
+
+# github-repos-enricher
+ENRICHER_GITHUB_TOKENS=
+ENRICHER_BATCH_SIZE=100
+ENRICHER_REPO_UPDATE_INTERVAL_HOURS=24
+ENRICHER_IDLE_SLEEP_SEC=60
+
+OSSPCKGS_GCP_PROJECT=local-dev
+OSSPCKGS_GCS_BUCKET=local-dev
+OSSPCKGS_GCP_CREDENTIALS_B64=e30=
+
+# osv-sync (Temporal-scheduled; see services/apps/packages_worker/src/osv/schedule.ts)
+# OSV_ECOSYSTEMS uses OSV's canonical bucket case (npm lowercase, Maven titlecase) because
+# the bucket URL //all.zip is case-sensitive (Maven/all.zip exists,
+# maven/all.zip 404s). The allowlist check and DB storage normalize to lowercase
+# internally per ADR-0001 §OSV "Ecosystem normalization", so downstream stays lowercase.
+OSV_BULK_BASE_URL=https://osv-vulnerabilities.storage.googleapis.com
+OSV_ECOSYSTEMS=npm,Maven,cargo
+OSV_TMP_DIR=/tmp/osv
+OSV_BATCH_SIZE=500
+OSV_DERIVE_BATCH_SIZE=1000
+
+# maven enricher
+
+MAVEN_FETCHER_BATCH_SIZE=2000
+MAVEN_FETCHER_CONCURRENCY=10
+MAVEN_FETCHER_NON_CRITICAL_BATCH_SIZE=500
+MAVEN_FETCHER_NON_CRITICAL_CONCURRENCY=20
+MAVEN_FETCHER_REFRESH_DAYS=1
+MAVEN_FETCHER_GROUP_DELAY_MS=100
+MAVEN_FETCHER_BASE_URL_BACKFILL=https://maven-central.storage-download.googleapis.com/maven2
+MAVEN_FETCHER_BASE_URL_INCREMENTAL=https://repo1.maven.org/maven2
+
+# dockerhub-sync (see services/apps/packages_worker/src/dockerhub/)
+DOCKERHUB_API_BASE_URL=https://hub.docker.com/v2
+DOCKERHUB_BATCH_SIZE=100
+DOCKERHUB_REFRESH_INTERVAL_HOURS=24
+DOCKERHUB_DISCOVERY_INTERVAL_DAYS=14
+DOCKERHUB_IDLE_SLEEP_SEC=60
diff --git a/backend/.env.test b/backend/.env.test
deleted file mode 100755
index f477793a60..0000000000
--- a/backend/.env.test
+++ /dev/null
@@ -1,8 +0,0 @@
-# DB settings
-CROWD_DB_PORT=5433
-
-# Redis settings
-CROWD_REDIS_PORT=6380
-
-# Sqs settings
-CROWD_SQS_PORT=9325
\ No newline at end of file
diff --git a/backend/.eslintrc.js b/backend/.eslintrc.js
index 9a38b602a7..1b3253a7b7 100644
--- a/backend/.eslintrc.js
+++ b/backend/.eslintrc.js
@@ -3,7 +3,7 @@ module.exports = {
node: true,
es2021: true,
},
- extends: ['airbnb-base', 'prettier', 'plugin:openapi/recommended'],
+ extends: ['airbnb-base', 'prettier'],
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
ignorePatterns: ['dist/*', '**/*.test.ts'],
@@ -12,6 +12,10 @@ module.exports = {
'prefer-destructuring': ['error', { object: false, array: false }],
'no-param-reassign': 0,
'no-underscore-dangle': 0,
+ 'no-unused-vars': [
+ 'error',
+ { argsIgnorePattern: '^_', varsIgnorePattern: '^_', destructuredArrayIgnorePattern: '^_' },
+ ],
'@typescript-eslint/naming-convention': [
'error',
{
@@ -46,6 +50,14 @@ module.exports = {
'prefer-destructuring': ['error', { object: false, array: false }],
'no-param-reassign': 0,
'no-underscore-dangle': 0,
+ '@typescript-eslint/no-unused-vars': [
+ 'error',
+ {
+ argsIgnorePattern: '^_',
+ varsIgnorePattern: '^_',
+ destructuredArrayIgnorePattern: '^_',
+ },
+ ],
'@typescript-eslint/naming-convention': [
'error',
{
diff --git a/backend/.gitignore b/backend/.gitignore
index fd67665434..e53aa3843f 100644
--- a/backend/.gitignore
+++ b/backend/.gitignore
@@ -5,8 +5,10 @@ dist/
**/.env*
!.env.test
!.env.dist*
-**/.cubestore
**/local-events
**/local_events
-**/try.ts
\ No newline at end of file
+**/try.ts
+
+*.tmp
+
diff --git a/backend/.openapirc.js b/backend/.openapirc.js
deleted file mode 100644
index 3f9aead4ac..0000000000
--- a/backend/.openapirc.js
+++ /dev/null
@@ -1,24 +0,0 @@
-module.exports = {
- extension: ['.js', '.cjs', '.mjs', '.ts', '.tsx', '.jsx', '.yaml', '.yml'],
- include: ['**'],
- exclude: [
- 'coverage/**',
- 'packages/*/test{,s}/**',
- '**/docker/**',
- '**/serverless/**',
- '**/*.d.ts',
- 'test{,s}/**',
- 'test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',
- '**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',
- '**/__tests__/**',
- '**/{ava,babel,nyc}.config.{js,cjs,mjs}',
- '**/jest.config.{js,cjs,mjs,ts}',
- '**/{karma,rollup,webpack}.config.js',
- '**/.{eslint,mocha}rc.{js,cjs}',
- '**/.{travis,yarnrc}.yml',
- '**/{docker-compose}.yml',
- ],
- excludeNodeModules: true,
- verbose: true,
- throwLevel: 'off',
-}
diff --git a/backend/.prettierignore b/backend/.prettierignore
index 24d2ee90a3..9f7de4795e 100644
--- a/backend/.prettierignore
+++ b/backend/.prettierignore
@@ -2,4 +2,5 @@ dist
node_modules
admin
venv-*
-.serverless
\ No newline at end of file
+.serverless
+.claude
\ No newline at end of file
diff --git a/backend/.prettierrc b/backend/.prettierrc
deleted file mode 100644
index 529f793325..0000000000
--- a/backend/.prettierrc
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "singleQuote": true,
- "arrowParens": "always",
- "printWidth": 100,
- "trailingComma": "all",
- "semi": false
-}
diff --git a/backend/.prettierrc.cjs b/backend/.prettierrc.cjs
new file mode 100644
index 0000000000..ec0d179d4e
--- /dev/null
+++ b/backend/.prettierrc.cjs
@@ -0,0 +1,18 @@
+module.exports = {
+ singleQuote: true,
+ arrowParens: 'always',
+ printWidth: 100,
+ trailingComma: 'all',
+ semi: false,
+ importOrder: [
+ '^(?!(\\.|@crowd/|@/|\\.\\./))(.*)$', // 3rd-party imports
+ '^@crowd/(.*)$', // crowd packages
+ '^@/(.*)$', // local package absolute imports that start with @/
+ '^\\.\\./', // relative imports that start with ../
+ '^\\./', // same directory imports that start with ./
+ '^\\.$', // current directory
+ ],
+ importOrderSeparation: true,
+ importOrderSortSpecifiers: true,
+ plugins: ['@trivago/prettier-plugin-sort-imports'],
+}
diff --git a/backend/Makefile b/backend/Makefile
deleted file mode 100644
index 6ef791039e..0000000000
--- a/backend/Makefile
+++ /dev/null
@@ -1,57 +0,0 @@
-SSH=crowd-aws --call-in=public
-RSYNC=crowd-aws --send-to-public
-
-build:
- npm run build
-
-set-environment-staging:
- npm run build:setenv:staging
-
-set-environment-prod:
- npm run build:setenv:prod
-
-send-deploy:
- $(RSYNC) util/deploy.sh deploy/
-
-pull:
- git pull
-
-
-deploy-all: deploy deploy-serverless
-
-deploy-all-prod: deploy-prod deploy-serverless-prod
-
-deploy-serverless:
- cd src/serverless/integrations && npm run sls-deploy
- cd src/serverless/dbOperations && npm run sls-deploy
- cd src/serverless/microservices/nodejs && npm run sls-deploy
- cd src/serverless/microservices/python/serverless && npm run sls-deploy
-
-deploy-serverless-prod:
- cd src/serverless/integrations && npm run sls-deploy-prod
- cd src/serverless/dbOperations && npm run sls-deploy-prod
- cd src/serverless/microservices/nodejs && npm run sls-deploy-prod
- cd src/serverless/microservices/python/serverless && npm run sls-deploy-prod
-
-deploy: pull send-deploy build set-environment-staging
- echo "Deploying staging"
- $(RSYNC) dist/ deploy/pre-dist/
- $(SSH) "cd deploy ; ./deploy.sh"
-
-deploy-prod: pull send-deploy build set-environment-prod
- echo "Deploying production"
- $(RSYNC) dist/ deploy/pre-dist-prod/
- $(SSH) "cd deploy ; ./deploy.sh -prod"
-
-remote-install:
- $(RSYNC) server-config/ conf/
- $(SSH) "cd conf/nginx ; sudo ./setup.sh"
- $(SSH) "pm2 reload conf/pm2.config.js"
-
-pm2-status:
- $(SSH) "pm2 list"
-
-nginx-status:
- $(SSH) "systemctl status nginx"
-
-status: pm2-status nginx-status
diff --git a/backend/babel.config.json b/backend/babel.config.json
deleted file mode 100644
index b05fea5024..0000000000
--- a/backend/babel.config.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "presets": [
- [
- "@babel/preset-env",
- {
- "targets": {
- "node": "current"
- }
- }
- ],
- "@babel/preset-typescript"
- ]
-}
diff --git a/backend/base.yaml b/backend/base.yaml
deleted file mode 100644
index bcc964aa72..0000000000
--- a/backend/base.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
-openapi: 3.0.3
-info:
- title: crowd.dev API
- version: 1.0.5
- description: >
- crowd.dev API
- contact:
- email: joan@crowd.dev
- license:
- name: Apache 2.0
- url: http://www.apache.org/licenses/LICENSE-2.0.html
- x-github: https://github.com/crowdHQ
-
-servers:
- - url: https://app.crowd.dev/api
-
-tags:
- - name: Members
- description: Everything about members
- - name: Member Attributes
- description: Settings for member's attributes
- - name: Activities
- description: Everything about activities
- - name: Organizations
- description: Everything about organizations
- - name: Conversations
- description: Everything about conversations
- - name: Tags
- description: Everything about tags
- - name: Automations
- description: Everything about automations
- - name: Notes
- description: Everything about notes
diff --git a/backend/config/custom-environment-variables.json b/backend/config/custom-environment-variables.json
index 7ec18c3020..4d1d01b6f5 100644
--- a/backend/config/custom-environment-variables.json
+++ b/backend/config/custom-environment-variables.json
@@ -13,19 +13,9 @@
"host": "CROWD_REDIS_HOST",
"port": "CROWD_REDIS_PORT"
},
- "sqs": {
- "host": "CROWD_SQS_HOST",
- "port": "CROWD_SQS_PORT",
- "nodejsWorkerQueue": "CROWD_SQS_NODEJS_WORKER_QUEUE",
- "nodejsWorkerDelayableQueue": "CROWD_SQS_NODEJS_WORKER_DELAYABLE_QUEUE",
- "integrationRunWorkerQueue": "CROWD_SQS_INTEGRATION_RUN_WORKER_QUEUE",
- "pythonWorkerQueue": "CROWD_SQS_PYTHON_WORKER_QUEUE",
- "aws": {
- "accountId": "CROWD_SQS_AWS_ACCOUNT_ID",
- "accessKeyId": "CROWD_SQS_AWS_ACCESS_KEY_ID",
- "secretAccessKey": "CROWD_SQS_AWS_SECRET_ACCESS_KEY",
- "region": "CROWD_SQS_AWS_REGION"
- }
+ "queue": {
+ "brokers": "CROWD_KAFKA_BROKERS",
+ "extra": "CROWD_KAFKA_EXTRA"
},
"s3": {
"host": "CROWD_S3_HOST",
@@ -33,7 +23,7 @@
"integrationsAssetsBucket": "CROWD_S3_INTEGRATION_ASSETS_BUCKET",
"microservicesAssetsBucket": "CROWD_S3_MICROSERVICES_ASSETS_BUCKET",
"aws": {
- "accountId": "CROWD_S3_AWS_ACCOUNT_ID",
+ "endpoint": "CROWD_S3_ENDPOINT",
"accessKeyId": "CROWD_S3_AWS_ACCESS_KEY_ID",
"secretAccessKey": "CROWD_S3_AWS_SECRET_ACCESS_KEY",
"region": "CROWD_S3_AWS_REGION"
@@ -47,17 +37,24 @@
"password": "CROWD_DB_PASSWORD",
"apiUsername": "CROWD_DB_API_USERNAME",
"apiPassword": "CROWD_DB_API_PASSWORD",
- "nodejsWorkerUsername": "CROWD_DB_NODEJS_WORKER_USERNAME",
- "nodejsWorkerPassword": "CROWD_DB_NODEJS_WORKER_PASSWORD",
"jobGeneratorUsername": "CROWD_DB_JOB_GENERATOR_USERNAME",
"jobGeneratorPassword": "CROWD_DB_JOB_GENERATOR_PASSWORD",
"database": "CROWD_DB_DATABASE",
"logging": "CROWD_DB_LOGGING"
},
- "cubejs": {
- "url": "CROWD_CUBEJS_URL",
- "jwtSecret": "CROWD_CUBEJS_JWT_SECRET",
- "jwtExpiry": "CROWD_CUBEJS_JWT_EXPIRY"
+ "productDb": {
+ "host": "PRODUCT_DB_HOST",
+ "port": "PRODUCT_DB_PORT",
+ "user": "PRODUCT_DB_USERNAME",
+ "password": "PRODUCT_DB_PASSWORD",
+ "database": "PRODUCT_DB_DATABASE"
+ },
+ "packagesDb": {
+ "host": "CROWD_PACKAGES_DB_WRITE_HOST",
+ "port": "CROWD_PACKAGES_DB_PORT",
+ "user": "CROWD_PACKAGES_DB_USERNAME",
+ "password": "CROWD_PACKAGES_DB_PASSWORD",
+ "database": "CROWD_PACKAGES_DB_DATABASE"
},
"segment": {
"writeKey": "CROWD_SEGMENT_WRITE_KEY"
@@ -73,31 +70,12 @@
"clearbit": {
"apiKey": "CROWD_CLEARBIT_API_KEY"
},
- "netlify": {
- "apiKey": "CROWD_NETLIFY_API_KEY",
- "siteDomain": "CROWD_NETLIFY_SITE_DOMAIN"
- },
"sendgrid": {
"key": "CROWD_SENDGRID_KEY",
- "webhookSigningSecret": "CROWD_SENDGRID_WEBHOOK_SIGNING_SECRET",
"emailFrom": "CROWD_SENDGRID_EMAIL_FROM",
"nameFrom": "CROWD_SENDGRID_NAME_FROM",
- "templateEmailAddressVerification": "CROWD_SENDGRID_TEMPLATE_EMAIL_ADDRESS_VERIFICATION",
- "templateInvitation": "CROWD_SENDGRID_TEMPLATE_INVITATION",
- "templatePasswordReset": "CROWD_SENDGRID_TEMPLATE_PASSWORD_RESET",
- "templateWeeklyAnalytics": "CROWD_SENDGRID_TEMPLATE_WEEKLY_ANALYTICS",
- "templateIntegrationDone": "CROWD_SENDGRID_TEMPLATE_INTEGRATION_DONE",
"templateCsvExport": "CROWD_SENDGRID_TEMPLATE_CSV_EXPORT",
- "templateEagleEyeDigest": "CROWD_SENDGRID_TEMPLATE_EAGLE_EYE_DIGEST",
- "weeklyAnalyticsUnsubscribeGroupId": "CROWD_SENDGRID_WEEKLY_ANALYTICS_UNSUBSCRIBE_GROUP_ID"
- },
- "plans": {
- "stripePricePremium": "CROWD_STRIPE_PRICE_PREMIUM",
- "stripePriceEnterprise": "CROWD_STRIPE_PRICE_ENTERPRISE",
- "stripeSecretKey": "CROWD_STRIPE_SECRET_KEY",
- "stripWebhookSigningSecret": "CROWD_STRIPE_WEBHOOK_SIGNING_SECRET",
- "stripeEagleEyePlanProductId": "CROWD_STRIPE_EAGLE_EYE_PLAN_PRODUCT_ID",
- "stripeGrowthPlanProductId": "CROWD_STRIPE_GROWTH_PLAN_PRODUCT_ID"
+ "templateEagleEyeDigest": "CROWD_SENDGRID_TEMPLATE_EAGLE_EYE_DIGEST"
},
"twitter": {
"clientId": "CROWD_TWITTER_CLIENT_ID",
@@ -113,10 +91,6 @@
"appId": "CROWD_SLACK_APP_ID",
"appToken": "CROWD_SLACK_APP_TOKEN"
},
- "slackNotifier": {
- "clientId": "CROWD_SLACK_NOTIFIER_CLIENT_ID",
- "clientSecret": "CROWD_SLACK_NOTIFIER_CLIENT_SECRET"
- },
"google": {
"clientId": "CROWD_GOOGLE_CLIENT_ID",
"clientSecret": "CROWD_GOOGLE_CLIENT_SECRET",
@@ -133,23 +107,36 @@
"callbackUrl": "CROWD_GITHUB_CALLBACK_URL",
"privateKey": "CROWD_GITHUB_PRIVATE_KEY",
"webhookSecret": "CROWD_GITHUB_WEBHOOK_SECRET",
- "isCommitDataEnabled": "CROWD_GITHUB_IS_COMMIT_DATA_ENABLED"
+ "isCommitDataEnabled": "CROWD_GITHUB_IS_COMMIT_DATA_ENABLED",
+ "isSnowflakeEnabled": "CROWD_GITHUB_IS_SNOWFLAKE_ENABLED"
+ },
+ "githubIssueReporter": {
+ "appId": "CROWD_GITHUB_ISSUE_REPORTER_APP_ID",
+ "privateKey": "CROWD_GITHUB_ISSUE_REPORTER_PRIVATE_KEY",
+ "installationId": "CROWD_GITHUB_ISSUE_REPORTER_INSTALLATION_ID"
+ },
+ "jiraIssueReporter": {
+ "apiUrl": "CROWD_JIRA_ISSUE_REPORTER_API_URL",
+ "apiTokenEmail": "CROWD_JIRA_ISSUE_REPORTER_API_TOKEN_EMAIL",
+ "token": "CROWD_JIRA_ISSUE_REPORTER_API_TOKEN",
+ "projectKey": "CROWD_JIRA_ISSUE_REPORTER_PROJECT_KEY"
},
"stackexchange": {
"key": "CROWD_STACKEXCHANGE_KEY"
},
- "hubspot": {
- "appId": "CROWD_HUBSPOT_APP_ID",
- "clientId": "CROWD_HUBSPOT_CLIENT_ID",
- "clientSecret": "CROWD_HUBSPOT_CLIENT_SECRET"
+ "reddit": {
+ "clientId": "CROWD_REDDIT_CLIENT_ID",
+ "clientSecret": "CROWD_REDDIT_CLIENT_SECRET"
},
"nango": {
"url": "CROWD_NANGO_URL",
- "secretKey": "CROWD_NANGO_SECRET_KEY"
+ "secretKey": "CROWD_NANGO_SECRET_KEY",
+ "cloudSecretKey": "NANGO_CLOUD_SECRET_KEY",
+ "cloudIntegrations": "NANGO_CLOUD_INTEGRATIONS"
},
"enrichment": {
- "url": "CROWD_ENRICHMENT_URL",
- "apiKey": "CROWD_ENRICHMENT_API_KEY"
+ "url": "CROWD_ENRICHMENT_PROGAI_URL",
+ "apiKey": "CROWD_ENRICHMENT_PROGAI_API_KEY"
},
"organizationEnrichment": {
"apiKey": "CROWD_ORGANIZATION_ENRICHMENT_API_KEY"
@@ -158,42 +145,63 @@
"url": "CROWD_EAGLE_EYE_URL",
"apiKey": "CROWD_EAGLE_EYE_API_KEY"
},
- "slackAlerting": {
- "url": "CROWD_SLACK_ALERTING_URL"
- },
- "sampleData": {
- "tenantId": "CROWD_SAMPLE_DATA_TENANT_ID"
- },
- "unleash": {
- "url": "CROWD_UNLEASH_URL",
- "adminApiKey": "CROWD_UNLEASH_ADMIN_API_KEY",
- "frontendApiKey": "CROWD_UNLEASH_FRONTEND_API_KEY",
- "backendApiKey": "CROWD_UNLEASH_BACKEND_API_KEY",
- "db": {
- "host": "CROWD_UNLEASH_DB_HOST",
- "port": "CROWD_UNLEASH_DB_PORT",
- "username": "CROWD_UNLEASH_DB_USERNAME",
- "password": "CROWD_UNLEASH_DB_PASSWORD",
- "database": "CROWD_UNLEASH_DB_DATABASE"
- }
+ "githubToken": {
+ "clientId": "GITHUB_TOKEN_CLIENT_ID",
+ "installationId": "GITHUB_TOKEN_INSTALLATION_ID",
+ "privateKey": "GITHUB_TOKEN_PRIVATE_KEY"
},
"weeklyEmails": {
"enabled": "CROWD_WEEKLY_EMAILS_ENABLED"
},
"opensearch": {
"node": "CROWD_OPENSEARCH_NODE",
- "region": "CROWD_OPENSEARCH_AWS_REGION",
- "accessKeyId": "CROWD_OPENSEARCH_AWS_ACCESS_KEY_ID",
- "secretAccessKey": "CROWD_OPENSEARCH_AWS_SECRET_ACCESS_KEY"
+ "username": "CROWD_OPENSEARCH_USERNAME",
+ "password": "CROWD_OPENSEARCH_PASSWORD"
},
"auth0": {
"clientId": "CROWD_AUTH0_CLIENT_ID",
- "jwks": "CROWD_AUTH0_JWKS"
+ "jwks": "CROWD_AUTH0_JWKS",
+ "issuerBaseURLs": "CROWD_AUTH0_ISSUER_BASE_URLS",
+ "audience": "CROWD_AUTH0_AUDIENCE"
+ },
+ "sso": {
+ "crowdTenantId": "CROWD_SSO_CROWD_TENANT_ID",
+ "lfTenantId": "CROWD_SSO_LF_TENANT_ID"
},
"crowdAnalytics": {
"isEnabled": "CROWD_ANALYTICS_IS_ENABLED",
"tenantId": "CROWD_ANALYTICS_TENANT_ID",
"baseUrl": "CROWD_ANALYTICS_BASE_URL",
"apiToken": "CROWD_ANALYTICS_API_TOKEN"
+ },
+ "temporal": {
+ "serverUrl": "CROWD_TEMPORAL_SERVER_URL",
+ "namespace": "CROWD_TEMPORAL_NAMESPACE",
+ "certificate": "CROWD_TEMPORAL_CERTIFICATE",
+ "privateKey": "CROWD_TEMPORAL_PRIVATE_KEY"
+ },
+ "searchSyncApi": {
+ "baseUrl": "CROWD_SEARCH_SYNC_API_URL"
+ },
+ "encryption": {
+ "secretKey": "CROWD_ENCRYPTION_SECRET_KEY",
+ "initVector": "CROWD_ENCRYPTION_INIT_VECTOR"
+ },
+ "openStatusApi": {
+ "baseUrl": "CROWD_OPENSTATUS_URL"
+ },
+ "gitlab": {
+ "clientId": "CROWD_GITLAB_CLIENT_ID",
+ "clientSecret": "CROWD_GITLAB_CLIENT_SECRET",
+ "callbackUrl": "CROWD_GITLAB_CALLBACK_URL",
+ "webhookToken": "CROWD_GITLAB_WEBHOOK_TOKEN"
+ },
+ "snowflake": {
+ "privateKey": "CROWD_SNOWFLAKE_PRIVATE_KEY",
+ "account": "CROWD_SNOWFLAKE_ACCOUNT",
+ "username": "CROWD_SNOWFLAKE_USERNAME",
+ "database": "CROWD_SNOWFLAKE_DATABASE",
+ "warehouse": "CROWD_SNOWFLAKE_WAREHOUSE",
+ "role": "CROWD_SNOWFLAKE_ROLE"
}
}
diff --git a/backend/config/default.json b/backend/config/default.json
index c930bef9f9..e60af044e2 100644
--- a/backend/config/default.json
+++ b/backend/config/default.json
@@ -6,24 +6,19 @@
"integrationProcessing": {
"maxRetries": 5
},
- "sqs": {},
"s3": {},
"db": {
"dialect": "postgres",
"logging": false,
"transactions": false
},
- "cubejs": {},
"searchEngine": {},
"segment": {},
"comprehend": {
"aws": {}
},
"clearbit": {},
- "netlify": {},
"sendgrid": {},
- "plans": {},
- "devto": {},
"twitter": {
"maxRetrospectInSeconds": 7380,
"limitResetFrequencyDays": 30
@@ -31,30 +26,29 @@
"slack": {
"maxRetrospectInSeconds": 3600
},
- "slackNotifier": {},
"google": {},
"discord": {
"maxRetrospectInSeconds": 3600
},
"github": {},
"stackexchange": {},
+ "reddit": {},
"enrichment": {},
"organizationEnrichment": {},
"eagleEye": {},
- "unleash": {
- "db": {}
- },
- "slackAlerting": {
- "url": ""
- },
- "sampleData": {
- "tenantId": ""
- },
- "weeklyEmails": {
- "enabled": "true"
- },
+ "githubToken": {},
"auth0": {},
+ "sso": {},
"crowdAnalytics": {
"isEnabled": "false"
- }
+ },
+ "temporal": {},
+ "searchSyncApi": {},
+ "encryption": {},
+ "openStatusApi": {},
+ "gitlab": {},
+ "jiraIssueReporter": {},
+ "snowflake": {},
+ "nango": {},
+ "linuxFoundation": {}
}
diff --git a/backend/config/production.json b/backend/config/production.json
index d289ecc853..13d9868d02 100644
--- a/backend/config/production.json
+++ b/backend/config/production.json
@@ -8,5 +8,8 @@
},
"slack": {
"maxRetrospectInSeconds": 86400
+ },
+ "linuxFoundation": {
+ "collectionId": "1606ad11-c96d-4177-8147-8f990b76b35d"
}
}
diff --git a/backend/config/staging.json b/backend/config/staging.json
index 0967ef424b..74e7a01f7a 100644
--- a/backend/config/staging.json
+++ b/backend/config/staging.json
@@ -1 +1,5 @@
-{}
+{
+ "linuxFoundation": {
+ "collectionId": "5ffc867e-067a-4018-82ca-dbbade2c95f3"
+ }
+}
diff --git a/backend/config/test.json b/backend/config/test.json
deleted file mode 100644
index 8a2bf7cd25..0000000000
--- a/backend/config/test.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "redis": {},
- "nango": {}
-}
diff --git a/backend/docker-compose.test.yaml b/backend/docker-compose.test.yaml
deleted file mode 100644
index c4e2587531..0000000000
--- a/backend/docker-compose.test.yaml
+++ /dev/null
@@ -1,47 +0,0 @@
-version: '3.1'
-
-services:
- db-test:
- image: postgres:13.6-alpine
- environment:
- POSTGRES_PASSWORD: example
- POSTGRES_DB: crowd-web
- ports:
- - 5433:5432
- networks:
- - crowd-bridge-test
-
- sqs:
- build:
- context: ../scripts/scaffold/sqs
- ports:
- - 9325:9324
- - 9326:9325
- networks:
- - crowd-bridge-test
-
- open-search-test:
- image: opensearchproject/opensearch:2.7.0
- environment:
- - discovery.type=single-node
- - bootstrap.memory_lock=true
- ulimits:
- memlock:
- soft: -1
- hard: -1
- ports:
- - 9201:9200
- - 9601:9600
- networks:
- - crowd-bridge-test
-
- redis-test:
- image: redis
- ports:
- - 6380:6379
- networks:
- - crowd-bridge-test
-
-networks:
- crowd-bridge-test:
- external: true
diff --git a/backend/id-openapi.yaml b/backend/id-openapi.yaml
new file mode 100644
index 0000000000..7ad781c8e4
--- /dev/null
+++ b/backend/id-openapi.yaml
@@ -0,0 +1,403 @@
+openapi: 3.0.0
+info:
+ title: CM API Docs
+ version: 1.0.0
+ description: API endpoints for LFX Community Data Platform application
+
+servers:
+ - url: https://cm.lfx.dev/api/v1
+ description: LFX CM Production
+
+tags:
+ - name: Member Organizations API
+ description: API endpoints for managing work history organizations, including creating, reading, updating, and deleting organization relationships for profiles.
+ - name: Member Affiliations API
+ description: API endpoints for managing project affiliations, including listing and bulk updating affiliation relationships within a profile.
+
+security:
+ - BearerAuth: []
+
+paths:
+ /member/{memberId}/organization:
+ get:
+ security:
+ - BearerAuth: []
+ tags:
+ - Member Organizations API
+ summary: List Work History Organizations
+ description: Retrieve a list of organizations for a specific profile
+ parameters:
+ - name: memberId
+ in: path
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Organization'
+ '400':
+ description: Bad request
+ '404':
+ description: Member not found
+
+ post:
+ security:
+ - BearerAuth: []
+ tags:
+ - Member Organizations API
+ summary: Create Work History Organization
+ description: Create a new organization for a specific profile
+ parameters:
+ - name: memberId
+ in: path
+ required: true
+ schema:
+ type: string
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - organizationId
+ - source
+ properties:
+ organizationId:
+ type: string
+ example: '550e8400-e29b-41d4-a716-446655440000'
+ description: Organization ID
+ source:
+ type: string
+ enum: ['ui', 'email-domain', 'enrichment', 'github']
+ example: 'ui'
+ description: Data source. For manual updates, always use 'ui'
+ title:
+ type: string
+ example: 'Software Engineer'
+ description: Member role within the organization
+ dateStart:
+ type: string
+ format: date-time
+ example: '2023-01-01T00:00:00.000Z'
+ description: Organization role start date
+ dateEnd:
+ type: string
+ format: date-time
+ example: '2024-01-01T00:00:00.000Z'
+ description: Organization role end date
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Organization'
+ '400':
+ description: Bad request
+ '404':
+ description: Member not found
+
+ /member/{memberId}/organization/{workHistoryId}:
+ patch:
+ security:
+ - BearerAuth: []
+ tags:
+ - Member Organizations API
+ summary: Update Work History Organization
+ description: Update an existing organization for a specific profile
+ parameters:
+ - name: memberId
+ in: path
+ required: true
+ schema:
+ type: string
+ - name: workHistoryId
+ in: path
+ required: true
+ schema:
+ type: string
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - id
+ - workHistoryId
+ - source
+ properties:
+ id:
+ type: string
+ example: '550e8400-e29b-41d4-a716-446655440000'
+ description: Work experience ID
+ organizationId:
+ type: string
+ example: '550e8400-e29b-41d4-a716-446655440000'
+ description: Organization ID
+ source:
+ type: string
+ enum: ['ui', 'email-domain', 'enrichment', 'github']
+ example: 'ui'
+ description: Data source. For manual updates, always use 'ui'
+ title:
+ type: string
+ example: 'Software Engineer'
+ description: Member role within the organization
+ dateStart:
+ type: string
+ format: date-time
+ example: '2023-01-01T00:00:00.000Z'
+ description: Organization role start date
+ dateEnd:
+ type: string
+ format: date-time
+ example: '2024-01-01T00:00:00.000Z'
+ description: Organization role end date
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Organization'
+ '400':
+ description: Bad request
+ '404':
+ description: Organization or member not found
+
+ delete:
+ security:
+ - BearerAuth: []
+ tags:
+ - Member Organizations API
+ summary: Delete Work History Organization
+ description: Delete an organization for a specific profile
+ parameters:
+ - name: memberId
+ in: path
+ required: true
+ schema:
+ type: string
+ - name: workHistoryId
+ in: path
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Organization'
+ '404':
+ description: Organization or member not found
+
+ /member/{memberId}/affiliation:
+ get:
+ security:
+ - BearerAuth: []
+ tags:
+ - Member Affiliations API
+ summary: List Project Affiliations
+ description: Retrieve a list of project affiliations for a specific profile
+ parameters:
+ - name: memberId
+ in: path
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: Successful operation
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Affiliation'
+ '400':
+ description: Bad request
+ '404':
+ description: Member not found
+
+ patch:
+ security:
+ - BearerAuth: []
+ tags:
+ - Member Affiliations API
+ summary: Update Multiple Project Affiliations
+ description: Bulk update project affiliations for a specific profile
+ parameters:
+ - name: memberId
+ in: path
+ required: true
+ schema:
+ type: string
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - affiliations
+ properties:
+ affiliations:
+ type: array
+ items:
+ type: object
+ required:
+ - organizationId
+ - segmentId
+ properties:
+ organizationId:
+ type: string
+ description: Organization ID associated with this affiliation
+ segmentId:
+ type: string
+ description: ID of the segment
+ dateEnd:
+ type: string
+ format: date-time
+ description: End date of the affiliation
+ dateStart:
+ type: string
+ format: date-time
+ description: Start date of the affiliation
+ responses:
+ '200':
+ description: Affiliations updated successfully
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Affiliation'
+ '400':
+ description: Bad request
+ '404':
+ description: Member not found
+
+components:
+ securitySchemes:
+ BearerAuth:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+ description: JWT token obtained from LFX authentication service
+
+ schemas:
+ Organization:
+ type: object
+ properties:
+ id:
+ type: string
+ example: '550e8400-e29b-41d4-a716-446655440000'
+ description: Unique identifier for the organization
+ displayName:
+ type: string
+ example: 'The Linux Foundation'
+ description: Display name of the organization
+ logo:
+ type: string
+ example: 'https://avatars.githubusercontent.com/u/1040002?v=4'
+ description: URL of the organization's logo
+ memberOrganizations:
+ type: array
+ items:
+ $ref: '#/components/schemas/MemberOrganization'
+
+ MemberOrganization:
+ type: object
+ properties:
+ id:
+ type: string
+ example: '550e8400-e29b-41d4-a716-446655440000'
+ description: Unique identifier for the organization
+ organizationId:
+ type: string
+ example: '550e8400-e29b-41d4-a716-446655440000'
+ description: Organization ID associated with this affiliation
+ dateEnd:
+ type: string
+ example: '2024-01-01T00:00:00.000Z'
+ format: date-time
+ description: End date of the affiliation
+ dateStart:
+ type: string
+ example: '2023-01-01T00:00:00.000Z'
+ format: date-time
+ description: Start date of the affiliation
+ memberId:
+ type: string
+ example: '550e8400-e29b-41d4-a716-446655440000'
+ description: Member ID associated with this affiliation
+ source:
+ type: string
+ example: 'ui'
+ description: Data source. For manual updates, always use 'ui'
+ title:
+ type: string
+ example: 'Software Engineer'
+ description: Member role within the organization
+
+ Affiliation:
+ type: object
+ properties:
+ id:
+ type: string
+ example: '550e8400-e29b-41d4-a716-446655440000'
+ description: Unique identifier for the affiliation
+ organizationId:
+ type: string
+ example: '550e8400-e29b-41d4-a716-446655440000'
+ description: Organization ID associated with this affiliation
+ organizationLogo:
+ type: string
+ example: 'https://avatars.githubusercontent.com/u/1040002?v=4'
+ description: URL of the organization's logo
+ organizationName:
+ type: string
+ example: 'The Linux Foundation'
+ description: Name of the organization
+ segmentId:
+ type: string
+ example: '550e8400-e29b-41d4-a716-446655440000'
+ description: ID of the segment
+ segmentName:
+ type: string
+ example: 'Kubernetes'
+ description: Name of the segment
+ segmentParentName:
+ type: string
+ example: 'Cloud Native Computing Foundation'
+ description: Name of the parent segment
+ segmentSlug:
+ type: string
+ example: 'kubernetes'
+ description: Slug identifier for the segment
+ dateStart:
+ type: string
+ example: '2023-01-01T00:00:00.000Z'
+ format: date-time
+ description: Start date of the affiliation
+ dateEnd:
+ type: string
+ example: '2024-01-01T00:00:00.000Z'
+ format: date-time
+ description: End date of the affiliation
diff --git a/backend/jest.config.js b/backend/jest.config.js
deleted file mode 100644
index 6fee5b31b9..0000000000
--- a/backend/jest.config.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/* eslint-disable @typescript-eslint/no-var-requires */
-
-const tsconfig = require('./tsconfig.json')
-
-const fromPairs = (pairs) => pairs.reduce((res, [key, value]) => ({ ...res, [key]: value }), {})
-
-/**
- * tsconfig の paths の設定から moduleNameMapper を生成する
- * {"@app/*": ["src/*"]} -> {"@app/(.*)": "/src/$1"}
- */
-function moduleNameMapperFromTSPaths(tsconf) {
- return fromPairs(
- Object.entries(tsconf.compilerOptions.paths).map(([k, [v]]) => [
- k.replace(/\*/, '(.*)'),
- `/${tsconf.compilerOptions.baseUrl}/${v.replace(/\*/, '$1')}`,
- ]),
- )
-}
-
-/** @type {import('ts-jest/dist/types').JestConfigWithTsJest} */
-module.exports = {
- preset: 'ts-jest',
- transform: {
- '^.+\\.(ts|tsx)$': [
- 'ts-jest',
- {
- babelConfig: true,
- isolatedModules: true,
- },
- ],
- },
- moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
- testEnvironment: 'node',
- testPathIgnorePatterns: ['/dist'],
- testTimeout: 90000,
- testRegex: ['__tests__/.*tests?.ts$'],
- bail: false,
- roots: [''],
- moduleNameMapper: moduleNameMapperFromTSPaths(tsconfig),
- transformIgnorePatterns: ['node_modules/(?!(axios|@crowd/))/'],
-}
diff --git a/backend/openapi.json b/backend/openapi.json
deleted file mode 100644
index a7a02745ed..0000000000
--- a/backend/openapi.json
+++ /dev/null
@@ -1,5852 +0,0 @@
-{
- "openapi": "3.0.3",
- "info": {
- "title": "crowd.dev API",
- "version": "1.0.5",
- "description": "crowd.dev API\n",
- "contact": { "email": "joan@crowd.dev" },
- "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" },
- "x-github": "https://github.com/crowdHQ"
- },
- "servers": [{ "url": "https://app.crowd.dev/api" }],
- "paths": {
- "/tenant/{tenantId}/activity/with-member": {
- "post": {
- "summary": "Create or update an activity with a member",
- "tags": ["Activities"],
- "security": [{ "Bearer": [] }],
- "description": "Create or update an activity with a member\nActivity existence is checked by sourceId and tenantId\nMember existence is checked by platform and username",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/ActivityUpsertWithMemberInput" }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Activity" },
- "examples": { "Activity": { "$ref": "#/components/examples/ActivityUpsert" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/activity": {
- "post": {
- "summary": "Create or update an activity",
- "tags": ["Activities"],
- "security": [{ "Bearer": [] }],
- "description": "Create or update an activity. Existence is checked by sourceId and tenantId",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/ActivityUpsertInput" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Activity" },
- "examples": { "Activity": { "$ref": "#/components/examples/ActivityUpsert" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/activity/{id}": {
- "delete": {
- "summary": "Delete an activity",
- "tags": ["Activities"],
- "security": [{ "Bearer": [] }],
- "description": "Delete a activity given an ID",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the activity",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": { "description": "Ok" },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "Find an activity",
- "tags": ["Activities"],
- "security": [{ "Bearer": [] }],
- "description": "Find a single activity by ID",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the activity",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/ActivityResponse" },
- "examples": { "Activity": { "$ref": "#/components/examples/ActivityFind" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "put": {
- "summary": "Update an activity",
- "tags": ["Activities"],
- "security": [{ "Bearer": [] }],
- "description": "Update an activity given an ID.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the activity",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/ActivityUpsertInput" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Activity" },
- "examples": { "Activity": { "$ref": "#/components/examples/ActivityFind" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/activity/query": {
- "post": {
- "summary": "Query activities",
- "tags": ["Activities"],
- "security": [{ "Bearer": [] }],
- "description": "Query activities. It accepts filters, sorting options and pagination.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/ActivityQuery" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/ActivityList" },
- "examples": { "Activity": { "$ref": "#/components/examples/ActivityList" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/automation": {
- "post": {
- "summary": "Create an automation",
- "tags": ["Automations"],
- "security": [{ "Bearer": [] }],
- "description": "Create a new automation for the tenant.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/AutomationCreateInput" }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Automation" },
- "examples": { "Automation": { "$ref": "#/components/examples/Automation" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "List automations",
- "tags": ["Automations"],
- "security": [{ "Bearer": [] }],
- "description": "Get all existing automation data for tenant.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[type]",
- "in": "query",
- "description": "Filter by type of automation",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[trigger]",
- "in": "query",
- "description": "Filter by trigger type of automation",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[state]",
- "in": "query",
- "description": "Filter by state of automation",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "offset",
- "in": "query",
- "description": "Skip the first n results. Default 0.",
- "required": false,
- "schema": { "type": "number" }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "Limit the number of results. Default 50.",
- "required": false,
- "schema": { "type": "number" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/AutomationPage" },
- "examples": { "AutomationPage": { "$ref": "#/components/examples/AutomationPage" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/automation/{automationId}": {
- "delete": {
- "summary": "Destroy an automation",
- "tags": ["Automations"],
- "security": [{ "Bearer": [] }],
- "description": "Destroys an existing automation in the tenant.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "automationId",
- "in": "path",
- "description": "Automation ID that you want to update",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "204": { "description": "Ok - No content" },
- "401": { "description": "Unauthorized" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "Find an automation",
- "tags": ["Automations"],
- "security": [{ "Bearer": [] }],
- "description": "Get an existing automation data in the tenant.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "automationId",
- "in": "path",
- "description": "Automation ID that you want to find",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Automation" },
- "examples": { "Automation": { "$ref": "#/components/examples/Automation" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "429": { "description": "Too many requests" }
- }
- },
- "put": {
- "summary": "Update an automation",
- "tags": ["Automations"],
- "security": [{ "Bearer": [] }],
- "description": "Updates an existing automation in the tenant.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "automationId",
- "in": "path",
- "description": "Automation ID that you want to update",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/AutomationUpdateInput" }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Automation" },
- "examples": { "Automation": { "$ref": "#/components/examples/Automation" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/automation/{automationId}/executions": {
- "get": {
- "summary": "Get automation history",
- "tags": ["Automations"],
- "security": [{ "Bearer": [] }],
- "description": "Get all automation execution history for tenant and automation",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "automationId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "offset",
- "in": "query",
- "description": "How many elements from the beginning would you like to skip",
- "required": false,
- "schema": { "type": "integer", "default": 0 }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "How many elements would you like to fetch",
- "required": false,
- "schema": { "type": "integer", "default": 10 }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/AutomationExecutionPage" },
- "examples": {
- "AutomationExecutionPage": {
- "$ref": "#/components/examples/AutomationExecutionPage"
- }
- }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/conversation": {
- "post": {
- "summary": "Create a conversation",
- "tags": ["Conversations"],
- "security": [{ "Bearer": [] }],
- "description": "Create a conversation.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/ConversationNoId" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Conversation" },
- "examples": { "Conversation": { "$ref": "#/components/examples/Conversation" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "List conversations",
- "tags": ["Conversations"],
- "security": [{ "Bearer": [] }],
- "description": "Get a list of conversations with filtering, sorting and offsetting.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[title]",
- "in": "query",
- "description": "Filter by the title of the conversation.",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[slug]",
- "in": "query",
- "description": "Filter by the slug of the conversation.",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[published]",
- "in": "query",
- "description": "Filter by whether it is published or not.",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[platform]",
- "in": "query",
- "description": "Filter by the platform of the conversation.",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[channel]",
- "in": "query",
- "description": "Filter by the channel of the conversation.",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[activitiesCountRange]",
- "in": "query",
- "description": "activitiesCount lower bound. If you want a range, send this parameter twice with [min] and [max]. If you send it once it will be interpreted as a lower bound.",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[createdAtRange]",
- "in": "query",
- "description": "Send this parameter twice with [min] and [max].",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "orderBy",
- "in": "query",
- "description": "Sort the results. Default timestamp_DESC.",
- "required": false,
- "schema": { "$ref": "#/components/schemas/ConversationSort" }
- },
- {
- "name": "offset",
- "in": "query",
- "description": "Skip the first n results. Default 0.",
- "required": false,
- "schema": { "type": "number" }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "Limit the number of results. Default 50.",
- "required": false,
- "schema": { "type": "number" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/ConversationList" },
- "examples": {
- "Conversations": { "$ref": "#/components/examples/ConversationList" }
- }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/conversation/{id}": {
- "delete": {
- "summary": "Delete a conversation",
- "tags": ["Conversations"],
- "security": [{ "Bearer": [] }],
- "description": "Delete a conversation.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the conversation",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": { "description": "Ok" },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "Find a conversation",
- "tags": ["Conversations"],
- "security": [{ "Bearer": [] }],
- "description": "Find a conversation by ID.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID.",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the conversation.",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Conversation" },
- "examples": { "Conversation": { "$ref": "#/components/examples/Conversation" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "put": {
- "summary": "Update an conversation",
- "tags": ["Conversations"],
- "security": [{ "Bearer": [] }],
- "description": "Update a conversation given an ID.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the conversation",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/ConversationNoId" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Conversation" },
- "examples": { "Conversation": { "$ref": "#/components/examples/Conversation" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/member/active": {
- "get": {
- "summary": "List active members",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "List active members. It accepts filters, sorting options and pagination.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[platforms]",
- "in": "query",
- "description": "Filter by activity platforms (comma separated list without spaces)",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[isTeamMember]",
- "in": "query",
- "description": "If true we will return just team members, if false we will return just non-team members, if undefined we will return both.",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[isBot]",
- "in": "query",
- "description": "If true we will return just members who are bots, if false we will return just non-bot members, if undefined we will return both.",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[isOrganization]",
- "in": "query",
- "description": "If true we will return just members who are organizations (such as linkedin organizations that post), if false we will return just non-organization members, if undefined we will return both.",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[activityTimestampFrom]",
- "in": "query",
- "description": "Filter by activity timestamp from (required)",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[activityTimestampTo]",
- "in": "query",
- "description": "Filter by activity timestamp to (required)",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[activityIsContribution]",
- "in": "query",
- "description": "Filter by activities that are contributions",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "orderBy",
- "in": "query",
- "description": "How to sort results. Available values: activityCount_DESC, activityCount_ASC, activeDaysCount_DESC, activeDaysCount_ASC (default activityCount_DESC)",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "offset",
- "in": "query",
- "description": "Skip the first n results. Default 0.",
- "required": false,
- "schema": { "type": "number" }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "Limit the number of results. Default 20.",
- "required": false,
- "schema": { "type": "number" }
- }
- ],
- "responses": {
- "200": { "description": "Ok" },
- "401": { "description": "Unauthorized" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/member": {
- "post": {
- "summary": "Create or update a member",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "Create or update a member. Existence is checked by platform and username.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/MemberUpsertInput" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Member" },
- "examples": { "Member": { "$ref": "#/components/examples/MemberUpsert" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/member/{id}": {
- "delete": {
- "summary": "Delete a member",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "Delete a member given an ID",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the member",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": { "description": "Ok" },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "Find a member",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "Find a single member by ID.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the member",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/MemberResponse" },
- "examples": { "Member": { "$ref": "#/components/examples/MemberFind" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "put": {
- "summary": "Update a member",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "Update a member",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the member",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/MemberUpdateInput" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Member" },
- "examples": { "Member": { "$ref": "#/components/examples/MemberUpsert" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/member/export": {
- "post": {
- "summary": "Export members as CSV",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "Export members. It accepts filters, sorting options and pagination.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/MemberQuery" } }
- }
- },
- "responses": {
- "200": { "description": "Ok" },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/member/query": {
- "post": {
- "summary": "Query members",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "Query members. It accepts filters, sorting options and pagination.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/MemberQuery" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/MemberList" },
- "examples": { "Member": { "$ref": "#/components/examples/MemberList" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/note": {
- "post": {
- "summary": "Create a note",
- "tags": ["Notes"],
- "security": [{ "Bearer": [] }],
- "description": "Create a note",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/NoteNoId" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Note" },
- "examples": { "Note": { "$ref": "#/components/examples/Note" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/note/{id}": {
- "delete": {
- "summary": "Delete a note",
- "tags": ["Notes"],
- "security": [{ "Bearer": [] }],
- "description": "Delete a note.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the note",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": { "description": "Ok" },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "Find a note",
- "tags": ["Notes"],
- "security": [{ "Bearer": [] }],
- "description": "Find a note by ID.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID.",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the note.",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/NoteResponse" },
- "examples": { "Note": { "$ref": "#/components/examples/Note" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "put": {
- "summary": "Update a note",
- "tags": ["Notes"],
- "security": [{ "Bearer": [] }],
- "description": "Update a note",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the note",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/NoteInput" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Note" },
- "examples": { "Note": { "$ref": "#/components/examples/Note" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/note/query": {
- "post": {
- "summary": "Query notes",
- "tags": ["Notes"],
- "security": [{ "Bearer": [] }],
- "description": "Query notes. It accepts filters, sorting options and pagination.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/NoteQuery" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/NoteList" },
- "examples": { "Note": { "$ref": "#/components/examples/NoteList" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/organization": {
- "post": {
- "summary": "Create a organization",
- "tags": ["Organizations"],
- "security": [{ "Bearer": [] }],
- "description": "Create a organization",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationInput" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Organization" },
- "examples": {
- "Organization": { "$ref": "#/components/examples/OrganizationCreate" }
- }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/organization/{id}": {
- "delete": {
- "summary": "Delete a organization",
- "tags": ["Organizations"],
- "security": [{ "Bearer": [] }],
- "description": "Delete a organization.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the organization",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": { "description": "Ok" },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "Find an organization",
- "tags": ["Organizations"],
- "security": [{ "Bearer": [] }],
- "description": "Find an organization by ID.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the organization",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/OrganizationResponse" },
- "examples": { "Organization": { "$ref": "#/components/examples/Organization" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "put": {
- "summary": "Update an organization",
- "tags": ["Organizations"],
- "security": [{ "Bearer": [] }],
- "description": "Update a organization",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the organization",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationInput" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Organization" },
- "examples": {
- "Organization": { "$ref": "#/components/examples/OrganizationCreate" }
- }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/organization/query": {
- "post": {
- "summary": "Query organizations",
- "tags": ["Organizations"],
- "security": [{ "Bearer": [] }],
- "description": "Query organizations. It accepts filters, sorting options and pagination.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/OrganizationQuery" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/OrganizationList" },
- "examples": { "Organization": { "$ref": "#/components/examples/OrganizationList" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/settings/activity/types": {
- "post": {
- "summary": "Create an activity type",
- "tags": ["Activities"],
- "security": [{ "Bearer": [] }],
- "description": "Create a custom activity type",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/ActivityTypesCreateInput" }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/ActivityTypes" },
- "examples": { "ActivityTypes": { "$ref": "#/components/examples/ActivityTypes" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "List all activity types",
- "tags": ["Activities"],
- "security": [{ "Bearer": [] }],
- "description": "List all activity types",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/ActivityTypes" },
- "examples": { "ActivityTypes": { "$ref": "#/components/examples/ActivityTypes" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/settings/activity/types/{key}": {
- "put": {
- "summary": "Update an activity type",
- "tags": ["Activities"],
- "security": [{ "Bearer": [] }],
- "description": "Update a custom activity type",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "key",
- "in": "path",
- "description": "The key of the activity type",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/ActivityTypesUpdateInput" }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/ActivityTypes" },
- "examples": { "ActivityTypes": { "$ref": "#/components/examples/ActivityTypes" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/settings/members/attributes": {
- "post": {
- "summary": "Attribute settings: create",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "Create a members' attribute setting",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/MemberAttributeSettingsCreateInput" }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/MemberAttributeSettings" },
- "examples": {
- "MemberAttributeSettings": {
- "$ref": "#/components/examples/MemberAttributeSettings"
- }
- }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "delete": {
- "summary": "Attribute settings: delete",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "Delete a members' attribute setting",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "query",
- "description": "Id to destroy",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": { "description": "Ok" },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "Attributes settings: list",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "Get a list of members' attribute settings",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[label]",
- "in": "query",
- "description": "Filter by label of member attribute settings",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[name]",
- "in": "query",
- "description": "Filter by name of member attribute settings",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[type]",
- "in": "query",
- "description": "Filter by type of member attribute settings",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[canDelete]",
- "in": "query",
- "description": "Filter by canDelete: \"true\" or \"false\"",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[show]",
- "in": "query",
- "description": "Filter by show: \"true\" or \"false\"",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[createdAtRange]",
- "in": "query",
- "description": "CreatedAt lower bound. If you want a range, send this parameter twice with [min] and [max]. If you send it once it will be interpreted as a lower bound.",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "orderBy",
- "in": "query",
- "description": "Sort the results. Default createdAt_DESC.",
- "required": false,
- "schema": { "$ref": "#/components/schemas/MemberAttributeSettingsSort" }
- },
- {
- "name": "offset",
- "in": "query",
- "description": "Skip the first n results. Default 0.",
- "required": false,
- "schema": { "type": "number" }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "Limit the number of results. Default 50.",
- "required": false,
- "schema": { "type": "number" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/MemberAttributeSettingsList" },
- "examples": {
- "MemberAttributeSettings": {
- "$ref": "#/components/examples/MemberAttributeSettingsList"
- }
- }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/settings/members/attributes/{id}": {
- "get": {
- "summary": "Attributes settings: find",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "Find a single members' attribute setting by ID",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the member attribute's settings",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/MemberAttributeSettings" },
- "examples": {
- "MemberAttributeSettings": {
- "$ref": "#/components/examples/MemberAttributeSettings"
- }
- }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "put": {
- "summary": "Attribute settings: update",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "Update a members' attribute setting",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the member attribute settings",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/MemberAttributeSettingsUpdateInput" }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/MemberAttributeSettings" },
- "examples": {
- "MemberAttributeSettings": {
- "$ref": "#/components/examples/MemberAttributeSettings"
- }
- }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/tag": {
- "post": {
- "summary": "Create a tag",
- "tags": ["Tags"],
- "security": [{ "Bearer": [] }],
- "description": "Create a tag",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/TagNoId" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Tag" },
- "examples": { "Tag": { "$ref": "#/components/examples/Tag" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "List tags",
- "tags": ["Tags"],
- "security": [{ "Bearer": [] }],
- "description": "Get a list of tags with filtering, sorting and offsetting.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[name]",
- "in": "query",
- "description": "Filter by the name of the tag.",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "filter[createdAtRange]",
- "in": "query",
- "description": "Created at lower bound. If you want a range, send this parameter twice with [min] and [max]. If you send it once it will be interpreted as a lower bound.",
- "required": false,
- "schema": { "type": "string" }
- },
- {
- "name": "orderBy",
- "in": "query",
- "description": "Sort the results. Default timestamp_DESC.",
- "required": false,
- "schema": { "$ref": "#/components/schemas/TagSort" }
- },
- {
- "name": "offset",
- "in": "query",
- "description": "Skip the first n results. Default 0.",
- "required": false,
- "schema": { "type": "number" }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "Limit the number of results. Default 50.",
- "required": false,
- "schema": { "type": "number" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/TagList" },
- "examples": { "Tags": { "$ref": "#/components/examples/TagList" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/tag/{id}": {
- "delete": {
- "summary": "Delete a tag",
- "tags": ["Tags"],
- "security": [{ "Bearer": [] }],
- "description": "Delete a tag.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the tag",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": { "description": "Ok" },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "Find a tag",
- "tags": ["Tags"],
- "security": [{ "Bearer": [] }],
- "description": "Find a tag by ID",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the tag",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Tag" },
- "examples": { "Tag": { "$ref": "#/components/examples/Tag" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "put": {
- "summary": "Update an tag",
- "tags": ["Tags"],
- "security": [{ "Bearer": [] }],
- "description": "Update a tag",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the tag",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/TagNoId" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Tag" },
- "examples": { "Tag": { "$ref": "#/components/examples/Tag" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/task/batch": {
- "post": {
- "summary": "Make batch operations on tasks",
- "tags": ["Tasks"],
- "security": [{ "Bearer": [] }],
- "description": "Make batch operations on tasks",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/TaskBatchInput" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/TaskFindAndUpdateAll" },
- "examples": { "Task": { "$ref": "#/components/examples/TaskFindAndUpdateAll" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/task": {
- "post": {
- "summary": "Create a task",
- "tags": ["Tasks"],
- "security": [{ "Bearer": [] }],
- "description": "Create a task",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/TaskInput" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Task" },
- "examples": { "Task": { "$ref": "#/components/examples/Task" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/task/{id}": {
- "delete": {
- "summary": "Delete a task",
- "tags": ["Tasks"],
- "security": [{ "Bearer": [] }],
- "description": "Delete a task.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the task",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": { "description": "Ok" },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "get": {
- "summary": "Find a task",
- "tags": ["Tasks"],
- "security": [{ "Bearer": [] }],
- "description": "Find a task by ID",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the task",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/TaskResponse" },
- "examples": { "Task": { "$ref": "#/components/examples/Task" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- },
- "put": {
- "summary": "Update an task",
- "tags": ["Tasks"],
- "security": [{ "Bearer": [] }],
- "description": "Update a task",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the task",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/TaskInput" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/Task" },
- "examples": { "Task": { "$ref": "#/components/examples/Task" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/task/query": {
- "post": {
- "summary": "Query tasks",
- "tags": ["Tasks"],
- "security": [{ "Bearer": [] }],
- "description": "Query tasks. It accepts filters, sorting options and pagination.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "content": {
- "application/json": { "schema": { "$ref": "#/components/schemas/TaskQuery" } }
- }
- },
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/TaskList" },
- "examples": { "Task": { "$ref": "#/components/examples/TaskList" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- },
- "/tenant/{tenantId}/enrichment/member/{id}": {
- "put": {
- "summary": "Enrich a member",
- "tags": ["Members"],
- "security": [{ "Bearer": [] }],
- "description": "Enrich a member.",
- "parameters": [
- {
- "name": "tenantId",
- "in": "path",
- "description": "Your workspace/tenant ID",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "id",
- "in": "path",
- "description": "The ID of the member",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": {
- "description": "Ok",
- "content": {
- "application/json": {
- "schema": { "$ref": "#/components/schemas/MemberResponse" },
- "examples": { "Member": { "$ref": "#/components/examples/MemberFind" } }
- }
- }
- },
- "401": { "description": "Unauthorized" },
- "404": { "description": "Not found" },
- "429": { "description": "Too many requests" }
- }
- }
- }
- },
- "components": {
- "securitySchemes": { "Bearer": { "type": "http", "scheme": "bearer" } },
- "schemas": {
- "MemberType": { "type": "string", "enum": ["member"] },
- "MemberScore": { "type": "integer", "minimum": -1, "maximum": 10 },
- "MemberSort": {
- "type": "string",
- "enum": [
- "activitiesCount_ASC",
- "activitiesCount_DESC",
- "score_ASC",
- "score_ASC",
- "joinedAt_ASC",
- "joinedAt_DESC",
- "createdAt_ASC",
- "createdAt_DESC",
- "organisation_ASC",
- "organisation_DESC",
- "location_ASC",
- "location_DESC"
- ]
- },
- "ActivitySort": {
- "type": "string",
- "enum": [
- "timestamp_DESC",
- "timestamp_ASC",
- "createdAt_DESC",
- "createdAt_ASC",
- "score_DESC",
- "score_ASC",
- "type_DESC",
- "type_ASC",
- "platform_DESC",
- "platform_ASC",
- "createdBy_DESC",
- "createdBy_ASC"
- ]
- },
- "ConversationSort": {
- "type": "string",
- "enum": [
- "createdAt_DESC",
- "createdAt_ASC",
- "activityCount_DESC",
- "activityCount_ASC",
- "platform_DESC",
- "platform_ASC",
- "channel_DESC",
- "channel_ASC",
- "createdBy_DESC",
- "createdBy_ASC"
- ]
- },
- "TagSort": {
- "type": "string",
- "enum": ["name_ASC", "name_DESC", "createdAt_DESC", "createdAt_ASC"]
- },
- "MemberAttributeSettingsSort": {
- "type": "string",
- "enum": [
- "label_ASC",
- "label_DESC",
- "type_ASC",
- "type_DESC",
- "createdAt_DESC",
- "createdAt_ASC"
- ]
- },
- "ActivityRelationsInput": {
- "description": "Relations of an activity.",
- "type": "object",
- "properties": {
- "tasks": {
- "description": "Tasks associated with the activity",
- "type": "array",
- "items": { "$ref": "#/components/schemas/TaskNoId" }
- }
- }
- },
- "ActivityUpsertInput": {
- "required": ["memberId"],
- "description": "An activity performed by a member of your community. The member is sent as an ID.",
- "allOf": [
- { "$ref": "#/components/schemas/ActivityNoId" },
- { "$ref": "#/components/schemas/ActivityRelationsInput" }
- ],
- "properties": {
- "memberId": { "description": "The ID of the member that performed the activity" }
- }
- },
- "ActivityUpsertWithMemberInput": {
- "type": "object",
- "description": "An activity performed by a member of your community. The member is sent as a whole object.",
- "allOf": [
- { "$ref": "#/components/schemas/ActivityNoId" },
- { "$ref": "#/components/schemas/ActivityRelationsInput" }
- ],
- "properties": { "member": { "$ref": "#/components/schemas/MemberNoId" } }
- },
- "ActivityNoId": {
- "description": "An activity performed by a member of your community.",
- "type": "object",
- "required": ["type", "platform", "timestamp", "sourceId"],
- "properties": {
- "type": { "description": "Type of activity", "type": "string" },
- "timestamp": {
- "description": "Date and time when the activity took place",
- "type": "string",
- "format": "date-time"
- },
- "platform": {
- "description": "Platform on which the activity took place",
- "type": "string"
- },
- "title": { "description": "Title of the activity", "type": "string" },
- "body": { "description": "Body of the activity", "type": "string" },
- "channel": { "description": "Channel of the activity", "type": "string" },
- "sentiment": {
- "description": "Sentiment of the activity",
- "type": "object",
- "properties": {
- "sentiment": {
- "description": "Default sentiment score. Computed by mapping (positive - negative) from 0 to 100",
- "type": "number",
- "minimum": 0,
- "maximum": 100
- },
- "label": {
- "description": "Sentiment label",
- "type": "string",
- "enum": ["positive", "negative", "neutral", "mixed"]
- },
- "positive": {
- "description": "Positive sentiment score",
- "type": "number",
- "minimum": 0,
- "maximum": 1
- },
- "negative": {
- "description": "Negative sentiment score",
- "type": "number",
- "minimum": 0,
- "maximum": 1
- },
- "neutral": {
- "description": "Neutral sentiment score",
- "type": "number",
- "minimum": 0,
- "maximum": 1
- },
- "mixed": {
- "description": "Mixed sentiment score. Mixed contains both positive and negative sentiments",
- "type": "number",
- "minimum": 0,
- "maximum": 1
- }
- }
- },
- "sourceId": {
- "description": "The id of the activity in the platform (e.g. the id of the message in Discord)",
- "type": "string"
- },
- "sourceParentId": {
- "description": "The id of the parent activity in the platform (e.g. the id of the parent message in Discord)",
- "type": "string"
- },
- "parentId": {
- "description": "Id of the parent activity, if the activity has a parent",
- "type": "string",
- "format": "uuid"
- },
- "score": { "description": "Score associated with the activity", "type": "number" },
- "isContribution": {
- "description": "Whether the activity was a contribution",
- "type": "boolean"
- },
- "attributes": {
- "description": "Extra attributes of the activity",
- "type": "object",
- "additionalProperties": true
- },
- "createdAt": {
- "description": "Date the activity was created",
- "type": "string",
- "format": "date-time"
- },
- "updatedAt": {
- "description": "Date the activity was last updated",
- "type": "string",
- "format": "date-time"
- }
- },
- "xml": { "name": "ActivityNoId" }
- },
- "FilterType": {
- "type": "object",
- "additionalProperties": {
- "oneOf": [{ "type": "string" }, { "$ref": "#/components/schemas/FilterType" }]
- }
- },
- "ActivityQuery": {
- "description": "All the parameters you can use to query activitys.",
- "properties": {
- "filter": {
- "description": "Filter. Please refer to filter docs.",
- "type": "string",
- "format": "blob"
- },
- "orderBy": {
- "type": "string",
- "enum": [
- "activitiesCount_DESC",
- "score_ASC",
- "score_ASC",
- "joinedAt_ASC",
- "joinedAt_DESC",
- "createdAt_ASC",
- "createdAt_DESC",
- "organisation_ASC",
- "organisation_DESC",
- "location_ASC",
- "location_DESC"
- ]
- },
- "limit": {
- "description": "Limit the number of records returned. Default is 10.",
- "type": "integer",
- "minimum": 1,
- "maximum": 200,
- "default": 10
- },
- "offset": {
- "description": "Offset the number of records returned. Default is 0.",
- "type": "integer",
- "minimum": 0,
- "default": 0
- }
- }
- },
- "Activity": {
- "type": "object",
- "allOf": [{ "$ref": "#/components/schemas/ActivityNoId" }],
- "properties": { "id": { "description": "The unique identifier for an activity." } }
- },
- "ActivityRelationsResponse": {
- "description": "Relations of an activity.",
- "type": "object",
- "properties": {
- "member": {
- "description": "Member that performed the activity",
- "$ref": "#/components/schemas/Member"
- },
- "tasks": {
- "description": "Tasks associated with the activity.",
- "type": "array",
- "items": { "$ref": "#/components/schemas/Task" }
- }
- }
- },
- "ActivityResponse": {
- "description": "An activity performed by a member.",
- "type": "object",
- "allOf": [
- { "$ref": "#/components/schemas/Activity" },
- { "$ref": "#/components/schemas/ActivityRelationsResponse" }
- ]
- },
- "ActivityList": {
- "description": "List and count of activities.",
- "type": "object",
- "properties": {
- "rows": {
- "description": "List of activities",
- "type": "array",
- "items": { "$ref": "#/components/schemas/ActivityResponse" }
- },
- "count": { "description": "Count", "type": "integer" },
- "limit": { "description": "Limit of records returned", "type": "integer" },
- "offset": { "description": "Offset, for pagination", "type": "integer" }
- },
- "xml": { "name": "ActivitiesList" }
- },
- "AutomationCreateInput": {
- "type": "object",
- "description": "Data to create a new automation.",
- "required": ["type", "trigger", "settings"],
- "properties": {
- "type": { "$ref": "#/components/schemas/AutomationType" },
- "trigger": { "$ref": "#/components/schemas/AutomationTrigger" },
- "settings": { "$ref": "#/components/schemas/AutomationSettings" }
- }
- },
- "AutomationUpdateInput": {
- "type": "object",
- "description": "Data to update an existing automation.",
- "required": ["trigger", "settings", "state"],
- "properties": {
- "trigger": { "$ref": "#/components/schemas/AutomationTrigger" },
- "settings": { "$ref": "#/components/schemas/AutomationSettings" },
- "state": { "$ref": "#/components/schemas/AutomationState" }
- }
- },
- "AutomationType": { "description": "Automation type", "type": "string", "enum": ["webhook"] },
- "AutomationState": {
- "description": "Automation state",
- "type": "string",
- "enum": ["active", "disabled"]
- },
- "AutomationTrigger": {
- "description": "What will trigger an automation",
- "type": "string",
- "enum": ["new_activity", "new_member"]
- },
- "AutomationExecutionState": {
- "description": "What was the state of the automation execution",
- "type": "string",
- "enum": ["success", "error"]
- },
- "WebhookAutomationSettings": {
- "description": "Settings used by automation with type webhook",
- "type": "object",
- "required": ["url"],
- "properties": {
- "url": { "description": "URL to POST webhook data to", "type": "string", "format": "uri" }
- }
- },
- "NewActivityAutomationSettings": {
- "description": "Settings used by automation that is triggered by new activities",
- "type": "object",
- "required": ["types", "platforms", "keywords", "teamMemberActivities"],
- "properties": {
- "types": {
- "description": "If activity type matches any of these we should trigger this automation",
- "type": "array",
- "items": { "type": "string" }
- },
- "platforms": {
- "description": "If activity came from any of these platforms we should trigger this automation",
- "type": "array",
- "items": { "type": "string" }
- },
- "keywords": {
- "description": "If activity content contains any of these keywords we should trigger this automation",
- "type": "array",
- "items": { "type": "string" }
- },
- "teamMemberActivities": {
- "description": "If activity came from any of our team members - should we trigger automation or not?",
- "type": "boolean"
- }
- }
- },
- "AutomationSettings": {
- "description": "Settings based on automation type and trigger - you need to provide union object of both automation type based settings and trigger based settings",
- "type": "object",
- "anyOf": [
- { "$ref": "#/components/schemas/WebhookAutomationSettings" },
- { "$ref": "#/components/schemas/NewActivityAutomationSettings" }
- ]
- },
- "Automation": {
- "type": "object",
- "required": ["id", "type", "tenantId", "trigger", "settings", "state", "createdAt"],
- "properties": {
- "id": { "description": "Automation unique ID", "type": "string", "format": "uuid" },
- "type": { "$ref": "#/components/schemas/AutomationType" },
- "tenantId": {
- "description": "Automation tenant unique ID",
- "type": "string",
- "format": "uuid"
- },
- "trigger": { "$ref": "#/components/schemas/AutomationTrigger" },
- "settings": { "$ref": "#/components/schemas/AutomationSettings" },
- "state": { "$ref": "#/components/schemas/AutomationState" },
- "createdAt": {
- "description": "When was automation created",
- "type": "string",
- "format": "date-time"
- },
- "lastExecutionAt": {
- "description": "When was automation last executed",
- "type": "string",
- "format": "date-time"
- },
- "lastExecutionState": {
- "description": "State of the last automation execution",
- "$ref": "#/components/schemas/AutomationExecutionState"
- },
- "lastExecutionError": {
- "description": "Error information if last automation execution failed",
- "type": "object"
- }
- }
- },
- "AutomationPage": {
- "type": "object",
- "required": ["rows", "count", "offset", "limit"],
- "properties": {
- "rows": {
- "description": "Array of automations that were fetched",
- "type": "array",
- "items": { "$ref": "#/components/schemas/Automation" }
- },
- "count": { "description": "How many total automations there are", "type": "integer" },
- "offset": {
- "description": "What offset was used when preparing this response",
- "type": "integer"
- },
- "limit": {
- "description": "What limit was used when preparing this response",
- "type": "integer"
- }
- }
- },
- "AutomationExecution": {
- "type": "object",
- "required": ["id", "automationId", "state", "executedAt", "eventId", "payload"],
- "properties": {
- "id": {
- "description": "Automation execution unique ID",
- "type": "string",
- "format": "uuid"
- },
- "automationId": {
- "description": "Automation unique ID",
- "type": "string",
- "format": "uuid"
- },
- "state": {
- "description": "Automation execution state",
- "$ref": "#/components/schemas/AutomationExecutionState"
- },
- "error": {
- "description": "If execution was not successful this object will contain error information",
- "type": "object"
- },
- "executedAt": {
- "description": "Automation execution timestamp",
- "type": "string",
- "format": "date-time"
- },
- "eventId": {
- "description": "Unique ID of the event that triggered this automation execution.",
- "type": "string"
- },
- "payload": {
- "description": "Payload that was sent when this execution was processed",
- "type": "object"
- }
- }
- },
- "AutomationExecutionPage": {
- "type": "object",
- "required": ["rows", "count", "offset", "limit"],
- "properties": {
- "rows": {
- "description": "Automation Execution List",
- "type": "array",
- "items": { "$ref": "#/components/schemas/AutomationExecution" }
- },
- "count": { "description": "How many items are there in total", "type": "integer" },
- "offset": {
- "description": "What offset was used when preparing this response",
- "type": "integer"
- },
- "limit": {
- "description": "What limit was used when preparing this response",
- "type": "integer"
- }
- }
- },
- "ConversationNoId": {
- "type": "object",
- "required": ["platform", "slug", "tenantId"],
- "description": "A conversation is a group of activities. Some attributes, like slug, are mostly used in public pages.",
- "properties": {
- "title": { "description": "Title of the conversation", "type": "string" },
- "slug": { "description": "Unique slug of the conversation", "type": "string" },
- "published": {
- "description": "Whether the conversation is publicaly visible from open pages.",
- "type": "boolean",
- "default": false
- },
- "conversationStarter": {
- "description": "The conversation starter activity",
- "type": "object",
- "additionalProperties": { "$ref": "#/components/schemas/Activity" }
- },
- "memberCount": {
- "description": "Number of participating members in the conversation.",
- "type": "integer"
- },
- "lastActive": {
- "description": "Last activity time in the conversation",
- "type": "string",
- "format": "date-time"
- },
- "createdAt": {
- "description": "Date the conversation was created",
- "type": "string",
- "format": "date-time"
- },
- "updatedAt": {
- "description": "Date the conversation was last updated",
- "type": "string",
- "format": "date-time"
- },
- "tenantId": {
- "description": "Your workspace/tenant id",
- "type": "string",
- "format": "uuid"
- }
- },
- "xml": { "name": "Conversation" }
- },
- "Conversation": {
- "allOf": [{ "$ref": "#/components/schemas/ConversationNoId" }],
- "properties": {
- "id": { "description": "Unique identifier of the conversation", "type": "string" },
- "activities": {
- "description": "List of IDs of the activities in the conversation",
- "type": "array",
- "items": { "type": "string" }
- }
- }
- },
- "ConversationList": {
- "type": "object",
- "properties": {
- "rows": { "type": "array", "items": { "$ref": "#/components/schemas/Conversation" } },
- "count": { "description": "Count", "type": "integer" },
- "limit": { "description": "Limit of records returned", "type": "integer" },
- "offset": { "description": "Offset, for pagination", "type": "integer" }
- }
- },
- "MemberPlatformHelper": {
- "type": "object",
- "required": ["platform"],
- "properties": {
- "platform": {
- "type": "string",
- "description": "Platform for which to check member existence."
- }
- }
- },
- "MemberOrganizations": {
- "type": "object",
- "properties": {
- "organizations": {
- "description": "Organizations associated with the member. Each element in the array is the name of the organization, or an organization object. If the organization does not exist, it will be created.",
- "type": "array",
- "items": { "$ref": "#/components/schemas/OrganizationNoId" }
- }
- }
- },
- "MemberOrganizationsUpdate": {
- "type": "object",
- "properties": {
- "organizations": {
- "description": "Organizations associated with the member. Each element in the array is the name of the organization, or an organization object. If the organization does not exist, it will be created.",
- "type": "array",
- "items": { "type": "string" }
- }
- }
- },
- "MemberInputRelations": {
- "type": "object",
- "properties": {
- "tags": {
- "description": "Tags associated with the member. Each element in the array is the ID of the tag.",
- "type": "array",
- "items": { "type": "string" }
- },
- "tasks": {
- "description": "Tasks associated with the member. Each element in the array is the ID of the task.",
- "type": "array",
- "items": { "type": "string" }
- },
- "notes": {
- "description": "Notes associated with the member. Each element in the array is the ID of the note.",
- "type": "array",
- "items": { "type": "string" }
- },
- "activities": {
- "description": "Activities associated with the member. Each element in the array is the ID of the activity.",
- "type": "array",
- "items": { "type": "string" }
- }
- }
- },
- "MemberUpsertInput": {
- "allOf": [
- { "$ref": "#/components/schemas/MemberPlatformHelper" },
- { "$ref": "#/components/schemas/MemberNoId" },
- { "$ref": "#/components/schemas/MemberOrganizations" },
- { "$ref": "#/components/schemas/MemberInputRelations" }
- ]
- },
- "MemberUpdateInput": {
- "allOf": [
- { "$ref": "#/components/schemas/MemberPlatformHelper" },
- { "$ref": "#/components/schemas/MemberNoId" },
- { "$ref": "#/components/schemas/MemberInputRelations" },
- { "$ref": "#/components/schemas/MemberOrganizationsUpdate" }
- ]
- },
- "MemberNoId": {
- "description": "A member of your community.",
- "type": "object",
- "required": ["username"],
- "properties": {
- "username": {
- "description": "Usernames of the member in each platform. Exactly one for each platform in which the member is active. Example: ```{ github: 'iamgilfoyle', discord: 'gilfoyle '}```",
- "type": "object",
- "additionalProperties": true
- },
- "displayName": { "description": "UI friendly name of the member", "type": "string" },
- "emails": {
- "description": "Email addresses of the member",
- "type": "array",
- "items": { "type": "string" }
- },
- "joinedAt": {
- "description": "Date of joining the community",
- "type": "string",
- "format": "date-time"
- },
- "score": {
- "description": "Engagement score of the member. From 0 to 10. Set -1 for not yet calculated.",
- "type": "number"
- },
- "reach": {
- "description": "Reach of the member in each platform. At most one for each platform in which the member is active. Example: ```{ github: 10, twitter: 250, total: 260 }```",
- "type": "object",
- "properties": {
- "total": { "description": "Sum of all the platform reaches.", "type": "number" }
- },
- "additionalProperties": true
- },
- "attributes": {
- "description": "Attributes associated to the member. Each attribute must be an object with it's value for each platform, and a default. For example: ```{\"location\": {\"github\": \"San Francisco\", \"twitter\": \"California\", \"default\": \"San Francisco\"}}```",
- "type": "object",
- "additionalProperties": { "$ref": "#/components/schemas/MemberAttribute" }
- },
- "createdAt": {
- "description": "Date the member was created",
- "type": "string",
- "format": "date-time"
- },
- "updatedAt": {
- "description": "Date the member was last updated",
- "type": "string",
- "format": "date-time"
- }
- },
- "xml": { "name": "Member" }
- },
- "MemberAttribute": {
- "description": "A key for each platform. - ```default``` is the value that will be displayed by default in the app - ```custom``` is the value that will be displayed if the user has set a custom value for the attribute",
- "type": "object",
- "properties": {
- "default": {
- "description": "Default value for the attribute. This is set automatically according to crowd.dev rules.",
- "type": "string"
- },
- "custom": {
- "description": "Custom value for the attribute. This is optionally set by the user. It will always be picked as the default when sent.",
- "type": "string"
- }
- },
- "additionalProperties": true
- },
- "MemberQuery": {
- "description": "All the parameters you can use to query members.",
- "properties": {
- "filter": {
- "description": "Filter. Please refer to filter docs.",
- "type": "string",
- "format": "blob"
- },
- "orderBy": {
- "type": "string",
- "enum": [
- "activityCount_ASC",
- "activityCount_DESC",
- "score_ASC",
- "score_DESC",
- "joinedAt_ASC",
- "joinedAt_DESC",
- "createdAt_ASC",
- "createdAt_DESC",
- "organisation_ASC",
- "organisation_DESC",
- "location_ASC",
- "location_DESC"
- ]
- },
- "limit": {
- "description": "Limit the number of records returned. Default is 10.",
- "type": "integer",
- "minimum": 1,
- "maximum": 200,
- "default": 10
- },
- "offset": {
- "description": "Offset the number of records returned. Default is 0.",
- "type": "integer",
- "minimum": 0,
- "default": 0
- }
- }
- },
- "Member": {
- "type": "object",
- "allOf": [{ "$ref": "#/components/schemas/MemberNoId" }],
- "properties": {
- "id": { "description": "The unique identifier for a member of your community." },
- "activityCount": {
- "description": "Number of activities performed by the member.",
- "type": "integer"
- },
- "lastActivity": {
- "description": "Timestamp, type and platform of the last activity performed by the member.",
- "type": "object",
- "properties": {
- "type": { "description": "Type of the last activity", "type": "string" },
- "timestamp": {
- "description": "Date and time of the last activity",
- "type": "string",
- "format": "date-time"
- },
- "platform": { "description": "Platform of the last activity", "type": "string" }
- }
- },
- "averageSentiment": {
- "description": "Average sentiment of the member. From 0 to 100.",
- "type": "number"
- },
- "identities": {
- "description": "List of platforms the member has identities in.",
- "type": "array",
- "items": { "type": "string" }
- },
- "activeOn": {
- "description": "List of platforms the member is active on.",
- "type": "array",
- "items": { "type": "string" }
- }
- }
- },
- "MemberRelationsResponse": {
- "description": "Relations of a member.",
- "type": "object",
- "properties": {
- "tags": {
- "description": "Tags associated with the member.",
- "type": "array",
- "items": { "$ref": "#/components/schemas/Tag" }
- },
- "notes": {
- "description": "Notes associated with the member.",
- "type": "array",
- "items": { "$ref": "#/components/schemas/Note" }
- },
- "tasks": {
- "description": "Tasks associated with the member.",
- "type": "array",
- "items": { "$ref": "#/components/schemas/Task" }
- },
- "organizations": {
- "description": "Organizations associated with the member.",
- "type": "array",
- "items": { "$ref": "#/components/schemas/Organization" }
- }
- }
- },
- "MemberResponse": {
- "description": "A member of your community.",
- "type": "object",
- "allOf": [
- { "$ref": "#/components/schemas/Member" },
- { "$ref": "#/components/schemas/MemberRelationsResponse" }
- ]
- },
- "MemberList": {
- "description": "List and count of members.",
- "type": "object",
- "properties": {
- "rows": {
- "description": "List of members",
- "type": "array",
- "items": { "$ref": "#/components/schemas/MemberResponse" }
- },
- "count": { "description": "Count", "type": "integer" },
- "limit": { "description": "Limit of records returned", "type": "integer" },
- "offset": { "description": "Offset, for pagination", "type": "integer" }
- },
- "xml": { "name": "MembersList" }
- },
- "NoteInputRelations": {
- "type": "object",
- "properties": {
- "members": {
- "description": "Members associated with the note. Each element in the array is the ID of the member.",
- "type": "array",
- "items": { "type": "string" }
- }
- }
- },
- "NoteInput": {
- "allOf": [
- { "$ref": "#/components/schemas/NoteNoId" },
- { "$ref": "#/components/schemas/NoteInputRelations" }
- ]
- },
- "NoteNoId": {
- "description": "A created note.",
- "type": "object",
- "properties": {
- "body": { "description": "The body of the note.", "type": "string", "format": "blob" },
- "createdAt": {
- "description": "Date the note was created.",
- "type": "string",
- "format": "date-time"
- },
- "updatedAt": {
- "description": "Date the note was last updated.",
- "type": "string",
- "format": "date-time"
- }
- },
- "xml": { "name": "Note" }
- },
- "NoteQuery": {
- "description": "All the parameters you can use to query notes.",
- "properties": {
- "filter": {
- "description": "Filter. Please refer to filter docs.",
- "type": "string",
- "format": "blob"
- },
- "orderBy": { "type": "string", "enum": ["createdAt_ASC", "createdAt_DESC"] },
- "limit": {
- "description": "Limit the number of records returned. Default is 10.",
- "type": "integer",
- "minimum": 1,
- "maximum": 200,
- "default": 10
- },
- "offset": {
- "description": "Offset the number of records returned. Default is 0.",
- "type": "integer",
- "minimum": 0,
- "default": 0
- }
- }
- },
- "Note": {
- "type": "object",
- "allOf": [{ "$ref": "#/components/schemas/NoteNoId" }],
- "properties": {
- "id": { "description": "The ID of the note." },
- "body": { "description": "The body of the note.", "type": "string", "format": "blob" }
- }
- },
- "NoteRelationsResponse": {
- "description": "Relations of a note.",
- "type": "object",
- "properties": {
- "members": {
- "description": "Members associated with the note.",
- "type": "array",
- "items": { "$ref": "#/components/schemas/Member" }
- }
- }
- },
- "NoteResponse": {
- "description": "A note of your community.",
- "type": "object",
- "allOf": [
- { "$ref": "#/components/schemas/Note" },
- { "$ref": "#/components/schemas/NoteRelationsResponse" }
- ]
- },
- "NoteList": {
- "description": "List and count of notes.",
- "type": "object",
- "properties": {
- "rows": {
- "description": "List of notes",
- "type": "array",
- "items": { "$ref": "#/components/schemas/NoteResponse" }
- },
- "count": { "description": "Count", "type": "integer" },
- "limit": { "description": "Limit of records returned", "type": "integer" },
- "offset": { "description": "Offset, for pagination", "type": "integer" }
- },
- "xml": { "name": "NotesList" }
- },
- "OrganizationInputRelations": {
- "type": "object",
- "properties": {
- "members": {
- "description": "Members associated with the organization. Each element in the array is the ID of the member.",
- "type": "array",
- "items": { "type": "string", "format": "uuid" }
- }
- }
- },
- "OrganizationInput": {
- "allOf": [
- { "$ref": "#/components/schemas/OrganizationNoId" },
- { "$ref": "#/components/schemas/OrganizationInputRelations" }
- ]
- },
- "OrganizationNoId": {
- "description": "A created organization.",
- "type": "object",
- "required": ["name"],
- "properties": {
- "name": { "description": "The name of the organization.", "type": "string" },
- "url": { "description": "The URL of the organization.", "type": "string" },
- "description": {
- "description": "A short description of the organization.",
- "type": "string",
- "format": "blob"
- },
- "logo": { "description": "A URL for logo of the organization.", "type": "string" },
- "emails": {
- "description": "The emails for contacting the organization.",
- "type": "array",
- "items": { "type": "string" }
- },
- "phoneNumbers": {
- "description": "The phone numbers for contacting for the organization.",
- "type": "array",
- "items": { "type": "string" }
- },
- "parentUrl": {
- "description": "The URL of the parent organization if it has one (for example if it has been acquired).",
- "type": "string"
- },
- "tags": {
- "description": "Tags associated with the organization.",
- "type": "array",
- "items": { "type": "string" }
- },
- "twitter": {
- "description": "Twitter information for the organization.",
- "type": "object",
- "properties": {
- "handle": {
- "description": "The Twitter handle for the organization.",
- "type": "string"
- },
- "id": { "description": "The Twitter ID for the organization.", "type": "string" },
- "bio": { "description": "The Twitter bio for the organization.", "type": "string" },
- "followers": {
- "description": "The number of followers on Twitter.",
- "type": "integer"
- },
- "location": {
- "description": "The Twitter location for the organization.",
- "type": "string"
- },
- "site": {
- "description": "The website linked to the organization's Twitter profile.",
- "type": "string"
- },
- "avatar": {
- "description": "The URL for the organization's Twitter avatar.",
- "type": "string"
- }
- }
- },
- "employees": {
- "description": "The number of employees of the organization.",
- "type": "integer"
- },
- "revenueRange": {
- "description": "The estimated revenue range of the organization.",
- "type": "object",
- "properties": {
- "min": {
- "description": "The minimum estimated revenue of the organization.",
- "type": "integer"
- },
- "max": {
- "description": "The maximum estimated revenue of the organization.",
- "type": "integer"
- }
- }
- },
- "linkedin": {
- "description": "LinkedIn information for the organization.",
- "type": "object",
- "properties": {
- "handle": {
- "description": "The LinkedIn handle for the organization.",
- "type": "string"
- }
- }
- },
- "crunchbase": {
- "description": "Crunchbase information for the organization.",
- "type": "object",
- "properties": {
- "handle": {
- "description": "The Crunchbase handle for the organization.",
- "type": "string"
- }
- }
- },
- "activeOn": {
- "description": "List of platforms the organization members are active on.",
- "type": "array",
- "items": { "type": "string" }
- },
- "identities": {
- "description": "List of platforms the organization members have identities in.",
- "type": "array",
- "items": { "type": "string" }
- },
- "memberCount": {
- "description": "Number of members organization has.",
- "type": "integer"
- },
- "createdAt": {
- "description": "Date the organization was created.",
- "type": "string",
- "format": "date-time"
- },
- "updatedAt": {
- "description": "Date the organization was last updated.",
- "type": "string",
- "format": "date-time"
- }
- },
- "xml": { "name": "Organization" }
- },
- "OrganizationQuery": {
- "description": "All the parameters you can use to query organizations.",
- "properties": {
- "filter": {
- "description": "Filter. Please refer to filter docs.",
- "type": "string",
- "format": "blob"
- },
- "orderBy": {
- "type": "string",
- "enum": [
- "createdAt_ASC",
- "createdAt_DESC",
- "memberCount_ASC",
- "memberCount_DESC",
- "activityCount_ASC",
- "activityCount_DESC",
- "joinedAt_ASC",
- "joinedAt_DESC",
- "lastActive_ASC",
- "lastActive_DESC"
- ]
- },
- "limit": {
- "description": "Limit the number of records returned. Default is 10.",
- "type": "integer",
- "minimum": 1,
- "maximum": 200,
- "default": 10
- },
- "offset": {
- "description": "Offset the number of records returned. Default is 0.",
- "type": "integer",
- "minimum": 0,
- "default": 0
- }
- }
- },
- "Organization": {
- "type": "object",
- "allOf": [{ "$ref": "#/components/schemas/OrganizationNoId" }],
- "properties": {
- "id": { "description": "The ID of the organization." },
- "body": {
- "description": "The body of the organization.",
- "type": "string",
- "format": "blob"
- }
- }
- },
- "OrganizationRelationsResponse": {
- "description": "Relations of a organization.",
- "type": "object",
- "properties": {
- "members": {
- "description": "Members associated with the organization.",
- "type": "array",
- "items": { "$ref": "#/components/schemas/Member" }
- },
- "activeOn": {
- "description": "The platforms where the organization is active.",
- "type": "array",
- "items": { "type": "string" }
- },
- "identities": {
- "description": "The list of identities of the members in the organization.",
- "type": "array",
- "items": { "type": "string" }
- },
- "lastActive": {
- "description": "The last time the organization was active.",
- "type": "string",
- "format": "date-time"
- },
- "joinedAt": {
- "description": "The date the first member from the organization joined the community.",
- "type": "string",
- "format": "date-time"
- }
- }
- },
- "OrganizationResponse": {
- "description": "A organization of your community.",
- "type": "object",
- "allOf": [
- { "$ref": "#/components/schemas/Organization" },
- { "$ref": "#/components/schemas/OrganizationRelationsResponse" }
- ]
- },
- "OrganizationList": {
- "description": "List and count of organizations.",
- "type": "object",
- "properties": {
- "rows": {
- "description": "List of organizations",
- "type": "array",
- "items": { "$ref": "#/components/schemas/OrganizationResponse" }
- },
- "count": { "description": "Count", "type": "integer" },
- "limit": { "description": "Limit of records returned", "type": "integer" },
- "offset": { "description": "Offset, for pagination", "type": "integer" }
- },
- "xml": { "name": "OrganizationsList" }
- },
- "TagNoId": {
- "description": "A tag associated with a member.",
- "type": "object",
- "required": ["name", "tenantId"],
- "properties": {
- "name": { "description": "The name of the tag", "type": "string" },
- "createdAt": {
- "description": "Date the tag was created",
- "type": "string",
- "format": "date-time"
- },
- "updatedAt": {
- "description": "Date the tag was last updated",
- "type": "string",
- "format": "date-time"
- },
- "tenantId": {
- "description": "Your workspace/tenant id",
- "type": "string",
- "format": "uuid"
- }
- },
- "xml": { "name": "Tag" }
- },
- "Tag": {
- "type": "object",
- "allOf": [{ "$ref": "#/components/schemas/TagNoId" }],
- "properties": { "id": { "description": "The unique identifier for a tag." } }
- },
- "TagList": {
- "description": "List and count of tags.",
- "type": "object",
- "properties": {
- "rows": {
- "description": "List of tags",
- "type": "array",
- "items": { "$ref": "#/components/schemas/Tag" }
- },
- "count": { "description": "Count", "type": "integer" },
- "limit": { "description": "Limit of records returned", "type": "integer" },
- "offset": { "description": "Offset, for pagination", "type": "integer" }
- },
- "xml": { "name": "TagsList" }
- },
- "TaskInputRelations": {
- "type": "object",
- "properties": {
- "members": {
- "description": "Members associated with the task. Each element in the array is the ID of the member.",
- "type": "array",
- "items": { "type": "string", "format": "uuid" }
- },
- "activities": {
- "description": "Activities associated with the task. Each element in the array is the ID of the activity.",
- "type": "array",
- "items": { "type": "string", "format": "uuid" }
- },
- "assignees": {
- "description": "Users assigned with the task. Each element in the array is the ID of the user.",
- "type": "string",
- "format": "uuid",
- "default": null
- }
- }
- },
- "TaskInput": {
- "allOf": [
- { "$ref": "#/components/schemas/TaskNoId" },
- { "$ref": "#/components/schemas/TaskInputRelations" }
- ]
- },
- "TaskBatchInput": {
- "type": "object",
- "properties": {
- "operation": {
- "description": "Batch operation name.",
- "type": "string",
- "enum": ["findAndUpdateAll"]
- },
- "payload": {
- "type": "object",
- "description": "Payload to send to the batch operation",
- "properties": {
- "filter": {
- "description": "Filter to select the task entities. Please refer to filter docs.",
- "type": "string",
- "format": "blob"
- },
- "update": {
- "description": "key value object with desired updated fields.",
- "type": "object"
- }
- }
- }
- }
- },
- "TaskNoId": {
- "description": "A created task.",
- "type": "object",
- "properties": {
- "name": { "description": "The name of the task.", "type": "string" },
- "body": { "description": "The body of the task.", "type": "string", "format": "blob" },
- "status": {
- "description": "The status of the task.",
- "type": "string",
- "enum": ["in-progress", "done"],
- "default": null
- },
- "createdAt": {
- "description": "Date the task was created.",
- "type": "string",
- "format": "date-time"
- },
- "updatedAt": {
- "description": "Date the task was last updated.",
- "type": "string",
- "format": "date-time"
- }
- },
- "xml": { "name": "Task" }
- },
- "TaskQuery": {
- "description": "All the parameters you can use to query tasks.",
- "properties": {
- "filter": {
- "description": "Filter. Please refer to filter docs.",
- "type": "string",
- "format": "blob"
- },
- "orderBy": { "type": "string", "enum": ["createdAt_ASC", "createdAt_DESC"] },
- "limit": {
- "description": "Limit the number of records returned. Default is 10.",
- "type": "integer",
- "minimum": 1,
- "maximum": 200,
- "default": 10
- },
- "offset": {
- "description": "Offset the number of records returned. Default is 0.",
- "type": "integer",
- "minimum": 0,
- "default": 0
- }
- }
- },
- "Task": {
- "type": "object",
- "allOf": [{ "$ref": "#/components/schemas/TaskNoId" }],
- "properties": {
- "id": { "description": "The ID of the task." },
- "body": { "description": "The body of the task.", "type": "string", "format": "blob" }
- }
- },
- "TaskRelationsResponse": {
- "description": "Relations of a task.",
- "type": "object",
- "properties": {
- "members": {
- "description": "Members associated with the task.",
- "type": "array",
- "items": { "$ref": "#/components/schemas/Member" }
- },
- "activities": {
- "description": "Activities associated with the task.",
- "type": "array",
- "items": { "$ref": "#/components/schemas/Activity" }
- },
- "assignedTo": {
- "description": "The workspace member assigned to the task.",
- "$ref": "#/components/schemas/Member"
- }
- }
- },
- "TaskResponse": {
- "description": "A task of your community.",
- "type": "object",
- "allOf": [
- { "$ref": "#/components/schemas/Task" },
- { "$ref": "#/components/schemas/TaskRelationsResponse" }
- ]
- },
- "TaskList": {
- "description": "List and count of tasks.",
- "type": "object",
- "properties": {
- "rows": {
- "description": "List of tasks",
- "type": "array",
- "items": { "$ref": "#/components/schemas/TaskResponse" }
- },
- "count": { "description": "Count", "type": "integer" },
- "limit": { "description": "Limit of records returned", "type": "integer" },
- "offset": { "description": "Offset, for pagination", "type": "integer" }
- },
- "xml": { "name": "TasksList" }
- },
- "TaskFindAndUpdateAll": {
- "description": "Returns number of tasks updated",
- "type": "object",
- "properties": {
- "rowsUpdated": { "description": "Number of tasks updated", "type": "integer" }
- }
- },
- "ActivityTypesCreateInput": {
- "description": "An activity type.",
- "properties": {
- "type": {
- "description": "Human-friendly type of the activity. Default and short displays will set to this and key will be generated using this value."
- }
- }
- },
- "ActivityTypesUpdateInput": {
- "description": "An activity type.",
- "properties": {
- "type": {
- "description": "Human-friendly type of the activity. Default and short displays will set to this and key will be generated using this value."
- }
- }
- },
- "ActivityTypeDisplayOptions": {
- "type": "object",
- "required": ["default", "short", "channel"],
- "description": "Activity type display options.",
- "properties": {
- "default": {
- "description": "Default display of an activity type. Used in the activity module in the app.",
- "type": "string"
- },
- "short": {
- "description": "Short display version of an activity type. Used in the member list -> last activity.",
- "type": "string"
- },
- "channel": {
- "description": "Channel display of an activity type. Used in Dashboard -> trending conversations.",
- "type": "string"
- }
- },
- "xml": { "name": "ActivityTypeDisplayOptions" }
- },
- "ActivityTypes": {
- "type": "object",
- "properties": {
- "custom": {
- "type": "object",
- "description": "Custom activity types defined by the user.",
- "additionalProperties": { "$ref": "#/components/schemas/ActivityTypeDisplayOptions" }
- },
- "default": {
- "type": "object",
- "description": "Default activity types used by the integrations.",
- "additionalProperties": { "$ref": "#/components/schemas/ActivityTypeDisplayOptions" }
- }
- }
- },
- "MemberAttributeSettingsCreateInput": {
- "description": "A member attribute.",
- "allOf": [{ "$ref": "#/components/schemas/MemberAttributeSettingsNoId" }]
- },
- "MemberAttributeSettingsUpdateInput": {
- "description": "A member attribute.",
- "properties": {
- "label": {
- "description": "Human-friendly name of the attribute. Label is unique in workspaces.",
- "type": "string"
- },
- "show": {
- "description": "Whether to show the member attribute in the web app or not.",
- "type": "boolean",
- "default": true
- }
- }
- },
- "MemberAttributeSettingsNoId": {
- "type": "object",
- "required": ["label", "type"],
- "description": "A member attribute that can be created dynamically.",
- "properties": {
- "label": {
- "description": "Human-friendly name of the attribute. Label is unique in workspaces.",
- "type": "string"
- },
- "name": {
- "description": "Camel-case code friendly name of the attribute. If ommited, name will be generated from the label. Name is unique in workspaces.",
- "type": "string"
- },
- "type": {
- "description": "Type of the attribute's value",
- "type": "string",
- "enum": ["boolean", "number", "email", "string", "url", "date"]
- },
- "canDelete": {
- "description": "If set to false, member attribute can not be deleted in future requests.",
- "type": "boolean",
- "default": false
- },
- "show": {
- "description": "Whether to show the member attribute in the web app or not.",
- "type": "boolean",
- "default": true
- },
- "createdAt": {
- "description": "Date the member attribute was created.",
- "type": "string",
- "format": "date-time"
- },
- "updatedAt": {
- "description": "Date the member attribute was last updated.",
- "type": "string",
- "format": "date-time"
- }
- },
- "xml": { "name": "MemberAttributeSettings" }
- },
- "MemberAttributeSettings": {
- "type": "object",
- "allOf": [{ "$ref": "#/components/schemas/MemberAttributeSettingsNoId" }],
- "properties": { "id": { "description": "The attribute settings ID." } }
- },
- "MemberAttributeSettingsList": {
- "description": "List and count member attribute settings.",
- "type": "object",
- "properties": {
- "rows": {
- "description": "List of member attribute settings",
- "type": "array",
- "items": { "$ref": "#/components/schemas/MemberAttributeSettings" }
- },
- "count": { "description": "Count", "type": "integer" },
- "limit": { "description": "Limit of records returned", "type": "integer" },
- "offset": { "description": "Offset, for pagination", "type": "integer" }
- },
- "xml": { "name": "MemberAttributeSettingsList" }
- }
- },
- "examples": {
- "ActivityUpsert": {
- "value": {
- "id": "782b426d-adc8-4fb4-a4ee-ab0bb07ffca0",
- "type": "message",
- "timestamp": "2020-05-27T15:13:30.000Z",
- "platform": "discord",
- "isContribution": true,
- "score": 1,
- "sourceId": "1234",
- "sourceParentId": null,
- "attributes": { "reactions": 43 },
- "channel": "dev",
- "body": "It's not magic. It's talend and sweat.",
- "title": null,
- "url": "discord.gg/1234",
- "sentiment": {
- "label": "negative",
- "mixed": 1.1410574428737164,
- "neutral": 11.00325882434845,
- "negative": 85.99738478660583,
- "positive": 1.8582981079816818,
- "sentiment": 2
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:18:11.294Z",
- "updatedAt": "2022-10-03T15:21:49.402Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": null,
- "parentId": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "member": {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": -1,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-03T15:17:27.073Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- "parent": null,
- "tasks": []
- }
- },
- "ActivityFind": {
- "value": {
- "id": "462ddc6b-5672-43b2-9018-4e3fd7332228",
- "type": "pull_request-closed",
- "timestamp": "2021-07-27T20:20:30.000Z",
- "platform": "github",
- "isContribution": true,
- "score": 10,
- "sourceId": "gh_1",
- "sourceParentId": null,
- "attributes": {},
- "channel": "piedpiper",
- "body": "Last one to finish the code sprint! But I will have fewer bugs than Gilfoyle.",
- "title": "Code sprint over!",
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "positive",
- "mixed": 0.7594161201268435,
- "neutral": 39.13898766040802,
- "negative": 12.336093187332153,
- "positive": 47.76550233364105,
- "sentiment": 79
- },
- "createdAt": "2022-10-03T15:36:43.775Z",
- "updatedAt": "2022-10-03T15:39:38.199Z",
- "deletedAt": null,
- "memberId": "2effc566-1932-44f3-a821-2d692933a953",
- "conversationId": "291af008-7717-457e-9242-f5c507c8987b",
- "parentId": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "member": {
- "id": "2effc566-1932-44f3-a821-2d692933a953",
- "username": { "github": "dinesh", "twitter": "dinesh.chugtai" },
- "attributes": {
- "bio": {
- "github": "Lead developer at Pied Piper",
- "default": "Pakistani Denzel. Tesla and gold chain owner.",
- "twitter": "Pakistani Denzel. Tesla and gold chain owner."
- },
- "url": {
- "github": "https://github.com/dinesh",
- "default": "https://t.co/d",
- "twitter": "https://t.co/d"
- },
- "location": {
- "custom": "Silicon Valley",
- "github": "Palo alto",
- "default": "Silicon Valley"
- }
- },
- "displayName": "Dinesh",
- "email": "dinesh@piedpiper.io",
- "score": 9,
- "joinedAt": "2022-10-03T15:30:55.672Z",
- "importHash": null,
- "reach": { "total": 100, "github": 60, "twitter": 40 },
- "createdAt": "2022-10-03T15:30:55.679Z",
- "updatedAt": "2022-10-03T15:30:55.679Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- "parent": null,
- "tasks": []
- }
- },
- "ActivityFind2": {
- "value": {
- "id": "73aa13b7-1ef9-4987-a273-e560edff94ca",
- "type": "pull_request-comment",
- "timestamp": "2021-07-27T20:22:30.000Z",
- "platform": "github",
- "isContribution": true,
- "score": 3,
- "sourceId": "gh_2",
- "sourceParentId": "gh_1",
- "attributes": {},
- "channel": "piedpiper",
- "body": "I will never underestimate my talents again.",
- "title": null,
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "positive",
- "mixed": 14.308956265449524,
- "neutral": 14.437079429626465,
- "negative": 9.826807677745819,
- "positive": 61.42715811729431,
- "sentiment": 86
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:38:05.847Z",
- "updatedAt": "2022-10-03T15:46:34.610Z",
- "deletedAt": null,
- "memberId": "2effc566-1932-44f3-a821-2d692933a953",
- "conversationId": "291af008-7717-457e-9242-f5c507c8987b",
- "parentId": "462ddc6b-5672-43b2-9018-4e3fd7332228",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "member": {
- "id": "2effc566-1932-44f3-a821-2d692933a953",
- "username": { "github": "dinesh", "twitter": "dinesh.chugtai" },
- "attributes": {
- "bio": {
- "github": "Lead developer at Pied Piper",
- "default": "Pakistani Denzel. Tesla and gold chain owner.",
- "twitter": "Pakistani Denzel. Tesla and gold chain owner."
- },
- "url": {
- "github": "https://github.com/dinesh",
- "default": "https://t.co/d",
- "twitter": "https://t.co/d"
- },
- "location": {
- "custom": "Silicon Valley",
- "github": "Palo alto",
- "default": "Silicon Valley"
- }
- },
- "displayName": "Dinesh",
- "email": "dinesh@piedpiper.io",
- "score": -1,
- "joinedAt": "2022-10-03T15:30:55.672Z",
- "importHash": null,
- "reach": { "total": 100, "github": 60, "twitter": 40 },
- "createdAt": "2022-10-03T15:30:55.679Z",
- "updatedAt": "2022-10-03T15:30:55.679Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- "parent": {
- "id": "462ddc6b-5672-43b2-9018-4e3fd7332228",
- "type": "pull_request-closed",
- "timestamp": "2021-07-27T20:22:30.000Z",
- "platform": "github",
- "isContribution": true,
- "score": 10,
- "sourceId": "gh_1",
- "sourceParentId": null,
- "attributes": {},
- "channel": "piedpiper",
- "body": "Last one to finish the code sprint! But I will have less bugs than Gilfoyle.",
- "title": "Code sprint over!",
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "positive",
- "mixed": 0.7594161201268435,
- "neutral": 39.13898766040802,
- "negative": 12.336093187332153,
- "positive": 47.76550233364105,
- "sentiment": 79
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:36:43.775Z",
- "updatedAt": "2022-10-03T15:39:38.199Z",
- "deletedAt": null,
- "memberId": "2effc566-1932-44f3-a821-2d692933a953",
- "conversationId": "291af008-7717-457e-9242-f5c507c8987b",
- "parentId": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- "tasks": []
- }
- },
- "ActivityFind3": {
- "value": {
- "id": "2dcbe40e-36e0-4929-ab21-a30467fd9a65",
- "type": "pull_request-comment",
- "timestamp": "2021-07-27T20:23:30.000Z",
- "platform": "github",
- "isContribution": true,
- "score": 3,
- "sourceId": "gh_3",
- "sourceParentId": "gh_1",
- "attributes": {},
- "channel": "piedpiper",
- "body": "Don't worry. I will continue to do it for you.",
- "title": null,
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "positive",
- "mixed": 2.9098065569996834,
- "neutral": 25.578168034553528,
- "negative": 2.241993509232998,
- "positive": 69.27002668380737,
- "sentiment": 97
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:47:20.151Z",
- "updatedAt": "2022-10-03T15:47:20.220Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": "291af008-7717-457e-9242-f5c507c8987b",
- "parentId": "462ddc6b-5672-43b2-9018-4e3fd7332228",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "member": {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": -1,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-03T15:17:27.073Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- "parent": {
- "id": "462ddc6b-5672-43b2-9018-4e3fd7332228",
- "type": "pull_request-closed",
- "timestamp": "2021-07-27T20:22:30.000Z",
- "platform": "github",
- "isContribution": true,
- "score": 10,
- "sourceId": "gh_1",
- "sourceParentId": null,
- "attributes": {},
- "channel": "piedpiper",
- "body": "Last one to finish the code sprint! But I will have less bugs than Gilfoyle.",
- "title": "Code sprint over!",
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "positive",
- "mixed": 0.7594161201268435,
- "neutral": 39.13898766040802,
- "negative": 12.336093187332153,
- "positive": 47.76550233364105,
- "sentiment": 79
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:36:43.775Z",
- "updatedAt": "2022-10-03T15:39:38.199Z",
- "deletedAt": null,
- "memberId": "2effc566-1932-44f3-a821-2d692933a953",
- "conversationId": "291af008-7717-457e-9242-f5c507c8987b",
- "parentId": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- "tasks": []
- }
- },
- "ActivityList": {
- "value": {
- "rows": [
- { "$ref": "#/components/examples/ActivityFind" },
- { "$ref": "#/components/examples/ActivityFind2" },
- { "$ref": "#/components/examples/ActivityFind3" }
- ],
- "count": 3,
- "limit": 10,
- "offset": 0
- }
- },
- "Automation": {
- "value": {
- "id": "b3297f3b-6924-4e92-80e7-ef2e0d87a120",
- "type": "webhook",
- "tenantId": "a3297f3b-6924-4e92-80e7-ef2e0d87a120",
- "trigger": "new_activity",
- "settings": { "url": "https://webhook.url/new_activities" },
- "createdAt": "2022-03-29T09:22:31.989Z"
- }
- },
- "AutomationPage": {
- "value": {
- "count": 1,
- "offset": 0,
- "limit": 10,
- "rows": [
- {
- "id": "b3297f3b-6924-4e92-80e7-ef2e0d87a120",
- "type": "webhook",
- "tenantId": "a3297f3b-6924-4e92-80e7-ef2e0d87a120",
- "trigger": "new_activity",
- "settings": { "url": "https://webhook.url/new_activities" },
- "createdAt": "2022-03-29T09:22:31.989Z"
- }
- ]
- }
- },
- "AutomationExecutionPage": {
- "value": {
- "count": 1,
- "offset": 0,
- "limit": 10,
- "rows": [
- {
- "id": "b3297f3b-6924-4e92-80e7-ef2e0d87a120",
- "automationId": "a3297f3b-6924-4e92-80e7-ef2e0d87a120",
- "state": "success",
- "executedAt": "2022-03-29T09:22:31.989Z",
- "eventId": "a3297f3b-6924-4e92-80e7-ef2e0d87a121",
- "payload": [
- {
- "id": "a3297f3b-6924-4e92-80e7-ef2e0d87a121",
- "type": "comment",
- "timestamp": "2022-03-29T09:22:31.989Z",
- "platform": "twitter"
- }
- ]
- }
- ]
- }
- },
- "Conversation": {
- "value": {
- "id": "24bdea79-3125-4950-bb38-07fa4a555012",
- "title": "Best of dinesh and Gilfoyle",
- "slug": "best-of-dinesh-and-gilfoyle",
- "published": true,
- "createdAt": "2022-10-05T12:21:53.271Z",
- "updatedAt": "2022-10-05T12:21:53.271Z",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "activities": [
- {
- "id": "89a136ed-336d-4586-8842-790775465212",
- "type": "message",
- "timestamp": "2020-06-27T14:13:30.000Z",
- "platform": "discord",
- "isContribution": true,
- "score": 1,
- "sourceId": "d42",
- "sourceParentId": null,
- "attributes": {},
- "channel": "piedpiper",
- "body": "Sooner or later Gilfoyle's servers are going to fail and then it's all done",
- "title": null,
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "negative",
- "mixed": 3.6482997238636017,
- "neutral": 19.5749893784523,
- "negative": 75.36468505859375,
- "positive": 1.4120269566774368,
- "sentiment": 2
- },
- "importHash": null,
- "createdAt": "2022-10-05T12:09:44.414Z",
- "updatedAt": "2022-10-05T12:21:53.279Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": "24bdea79-3125-4950-bb38-07fa4a555012",
- "parentId": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "member": {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": 8,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-05T11:40:32.560Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- },
- {
- "id": "c39dc046-da1d-4a25-8624-6b78aad00f30",
- "type": "message",
- "timestamp": "2020-06-27T15:13:30.000Z",
- "platform": "discord",
- "isContribution": true,
- "score": 1,
- "sourceId": "2345",
- "sourceParentId": "1234",
- "attributes": { "reactions": 68 },
- "channel": "dev",
- "body": "My servers could handle 10x the traffic, if they weren't busy apologizing for your sh*t codebase.",
- "title": null,
- "url": "discord.gg/2345",
- "sentiment": {
- "label": "negative",
- "mixed": 5.963129922747612,
- "neutral": 20.673033595085144,
- "negative": 69.99874711036682,
- "positive": 3.365083411335945,
- "sentiment": 5
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:19:30.415Z",
- "updatedAt": "2022-10-05T12:21:53.279Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": "24bdea79-3125-4950-bb38-07fa4a555012",
- "parentId": "782b426d-adc8-4fb4-a4ee-ab0bb07ffca0",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "member": {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": 8,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-05T11:40:32.560Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- }
- ],
- "conversationStarter": {
- "id": "89a136ed-336d-4586-8842-790775465212",
- "type": "message",
- "timestamp": "2020-06-27T14:13:30.000Z",
- "platform": "discord",
- "isContribution": true,
- "score": 1,
- "sourceId": "d42",
- "sourceParentId": null,
- "attributes": {},
- "channel": "piedpiper",
- "body": "Sooner or later Gilfoyle's servers are going to fail and then it's all done",
- "title": null,
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "negative",
- "mixed": 3.6482997238636017,
- "neutral": 19.5749893784523,
- "negative": 75.36468505859375,
- "positive": 1.4120269566774368,
- "sentiment": 2
- },
- "importHash": null,
- "createdAt": "2022-10-05T12:09:44.414Z",
- "updatedAt": "2022-10-05T12:21:53.279Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": "24bdea79-3125-4950-bb38-07fa4a555012",
- "parentId": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "member": {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": 8,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-05T11:40:32.560Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- },
- "activityCount": 2,
- "memberCount": 2,
- "platform": "discord",
- "channel": "piedpiper",
- "lastActive": "2020-06-27T15:13:30.000Z"
- }
- },
- "ConversationList": {
- "value": {
- "rows": [
- {
- "id": "291af008-7717-457e-9242-f5c507c8987b",
- "title": "Code sprint over!",
- "slug": "code-sprint-over",
- "published": false,
- "createdAt": "2022-10-03T15:38:05.900Z",
- "updatedAt": "2022-10-03T15:38:05.900Z",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "platform": "github",
- "activityCount": 3,
- "lastActive": "2021-07-27T20:23:30.000Z",
- "conversationStarter": {
- "id": "89a136ed-336d-4586-8842-790775465212",
- "type": "message",
- "timestamp": "2020-06-27T14:13:30.000Z",
- "platform": "discord",
- "isContribution": true,
- "score": 1,
- "sourceId": "d42",
- "sourceParentId": null,
- "attributes": {},
- "channel": "piedpiper",
- "body": "Sooner or later Gilfoyle's servers are going to fail and then it's all done",
- "title": null,
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "negative",
- "mixed": 3.6482997238636017,
- "neutral": 19.5749893784523,
- "negative": 75.36468505859375,
- "positive": 1.4120269566774368,
- "sentiment": 2
- },
- "importHash": null,
- "createdAt": "2022-10-05T12:09:44.414Z",
- "updatedAt": "2022-10-05T12:21:53.279Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": "24bdea79-3125-4950-bb38-07fa4a555012",
- "parentId": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "member": {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": 8,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-05T11:40:32.560Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- },
- "lastReplies": [
- {
- "id": "c39dc046-da1d-4a25-8624-6b78aad00f30",
- "type": "message",
- "timestamp": "2020-06-27T15:13:30.000Z",
- "platform": "discord",
- "isContribution": true,
- "score": 1,
- "sourceId": "2345",
- "sourceParentId": "1234",
- "attributes": { "reactions": 68 },
- "channel": "dev",
- "body": "My servers could handle 10x the traffic, if they weren't busy apologizing for your sh*t codebase.",
- "title": null,
- "url": "discord.gg/2345",
- "sentiment": {
- "label": "negative",
- "mixed": 5.963129922747612,
- "neutral": 20.673033595085144,
- "negative": 69.99874711036682,
- "positive": 3.365083411335945,
- "sentiment": 5
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:19:30.415Z",
- "updatedAt": "2022-10-05T12:21:53.279Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": "24bdea79-3125-4950-bb38-07fa4a555012",
- "parentId": "782b426d-adc8-4fb4-a4ee-ab0bb07ffca0",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "member": {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": 8,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-05T11:40:32.560Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- }
- ],
- "memberCount": 2,
- "channel": null
- },
- {
- "id": "24bdea79-3125-4950-bb38-07fa4a555012",
- "title": "Best of dinesh and Gilfoyle",
- "slug": "best-of-dinesh-and-gilfoyle",
- "published": true,
- "createdAt": "2022-10-05T12:21:53.271Z",
- "updatedAt": "2022-10-05T12:21:53.271Z",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "platform": "discord",
- "activityCount": 1,
- "lastActive": "2020-06-29T15:13:30.000Z",
- "conversationStarter": {
- "id": "89a136ed-336d-4586-8842-790775465212",
- "type": "message",
- "timestamp": "2020-05-27T14:13:30.000Z",
- "platform": "discord",
- "isContribution": true,
- "score": 1,
- "sourceId": "d42",
- "sourceParentId": null,
- "attributes": {},
- "channel": "piedpiper",
- "body": "Best of Dinesh and gilfoyle",
- "title": null,
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "negative",
- "mixed": 1.6482997238636017,
- "neutral": 12.5749893784523,
- "negative": 62.36468505859375,
- "positive": 1.4120269566774368,
- "sentiment": 2
- },
- "importHash": null,
- "createdAt": "2022-10-05T12:09:44.414Z",
- "updatedAt": "2022-10-05T12:21:53.279Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": "24bdea79-3125-4950-bb38-07fa4a555012",
- "parentId": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "member": {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": 8,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-05T11:40:32.560Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- },
- "lastReplies": [
- {
- "id": "c39dc046-da1d-4a25-8624-6b78aad00f30",
- "type": "message",
- "timestamp": "2020-06-29T15:13:30.000Z",
- "platform": "discord",
- "isContribution": true,
- "score": 1,
- "sourceId": "2345",
- "sourceParentId": "1234",
- "attributes": { "reactions": 68 },
- "channel": "dev",
- "body": "A very last reply to the conversation.",
- "title": null,
- "url": "discord.gg/2345",
- "sentiment": {
- "label": "negative",
- "mixed": 5.963129922747612,
- "neutral": 20.673033595085144,
- "negative": 69.99874711036682,
- "positive": 3.365083411335945,
- "sentiment": 5
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:19:30.415Z",
- "updatedAt": "2022-10-05T12:21:53.279Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": "24bdea79-3125-4950-bb38-07fa4a555012",
- "parentId": "782b426d-adc8-4fb4-a4ee-ab0bb07ffca0",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "member": {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": 8,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-05T11:40:32.560Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- }
- ],
- "memberCount": 2,
- "channel": "dev"
- }
- ],
- "count": 2,
- "limit": 10,
- "offset": 0
- }
- },
- "MemberUpsert": {
- "value": {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": -1,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-03T15:17:27.073Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- },
- "MemberFind": {
- "value": {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": 8,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-05T11:40:32.560Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "activities": [
- {
- "id": "2dcbe40e-36e0-4929-ab21-a30467fd9a65",
- "type": "pull_request-comment",
- "timestamp": "2021-07-27T20:23:30.000Z",
- "platform": "github",
- "isContribution": true,
- "score": 3,
- "sourceId": "gh_3",
- "sourceParentId": "gh_1",
- "attributes": {},
- "channel": "piedpiper",
- "body": "Don't worry. I will continue to do it for you.",
- "title": null,
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "positive",
- "mixed": 2.9098065569996834,
- "neutral": 25.578168034553528,
- "negative": 2.241993509232998,
- "positive": 69.27002668380737,
- "sentiment": 97
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:47:20.151Z",
- "updatedAt": "2022-10-03T15:47:20.220Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": "291af008-7717-457e-9242-f5c507c8987b",
- "parentId": "462ddc6b-5672-43b2-9018-4e3fd7332228",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- {
- "id": "c39dc046-da1d-4a25-8624-6b78aad00f30",
- "type": "message",
- "timestamp": "2020-06-27T15:13:30.000Z",
- "platform": "discord",
- "isContribution": true,
- "score": 1,
- "sourceId": "2345",
- "sourceParentId": "1234",
- "attributes": { "reactions": 68 },
- "channel": "dev",
- "body": "My servers could handle 10x the traffic, if they weren't busy apologizing for your sh*t codebase.",
- "title": null,
- "url": "discord.gg/2345",
- "sentiment": {
- "label": "negative",
- "mixed": 5.963129922747612,
- "neutral": 20.673033595085144,
- "negative": 69.99874711036682,
- "positive": 3.365083411335945,
- "sentiment": 5
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:19:30.415Z",
- "updatedAt": "2022-10-03T15:26:02.599Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": null,
- "parentId": "782b426d-adc8-4fb4-a4ee-ab0bb07ffca0",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- {
- "id": "782b426d-adc8-4fb4-a4ee-ab0bb07ffca0",
- "type": "message",
- "timestamp": "2020-05-27T15:13:30.000Z",
- "platform": "discord",
- "isContribution": true,
- "score": 1,
- "sourceId": "1234",
- "sourceParentId": null,
- "attributes": { "reactions": 43 },
- "channel": "dev",
- "body": "It's not magic. It's talend and sweat.",
- "title": null,
- "url": "discord.gg/1234",
- "sentiment": {
- "label": "negative",
- "mixed": 1.1410574428737164,
- "neutral": 11.00325882434845,
- "negative": 85.99738478660583,
- "positive": 1.8582981079816818,
- "sentiment": 2
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:18:11.294Z",
- "updatedAt": "2022-10-03T15:21:49.402Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": null,
- "parentId": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ],
- "lastActivity": {
- "id": "2dcbe40e-36e0-4929-ab21-a30467fd9a65",
- "type": "pull_request-comment",
- "timestamp": "2021-07-27T20:23:30.000Z",
- "platform": "github",
- "isContribution": true,
- "score": 3,
- "sourceId": "gh_3",
- "sourceParentId": "gh_1",
- "attributes": {},
- "channel": "piedpiper",
- "body": "Don't worry. I will continue to do it for you.",
- "title": null,
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "positive",
- "mixed": 2.9098065569996834,
- "neutral": 25.578168034553528,
- "negative": 2.241993509232998,
- "positive": 69.27002668380737,
- "sentiment": 97
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:47:20.151Z",
- "updatedAt": "2022-10-03T15:47:20.220Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": "291af008-7717-457e-9242-f5c507c8987b",
- "parentId": "462ddc6b-5672-43b2-9018-4e3fd7332228",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- "lastActive": "2021-07-27T20:23:30.000Z",
- "activityCount": 3,
- "averageSentiment": 34.67,
- "tags": [
- {
- "id": "38807625-6302-47b5-9f35-58566ddec83b",
- "name": "developer",
- "importHash": null,
- "createdAt": "2022-10-05T11:41:20.162Z",
- "updatedAt": "2022-10-05T11:41:20.162Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- {
- "id": "dca36c33-38cd-4e68-8ba8-515167e00971",
- "name": "attended-hooli-con",
- "importHash": null,
- "createdAt": "2022-10-05T11:42:17.414Z",
- "updatedAt": "2022-10-05T11:42:17.414Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ],
- "organizations": [
- {
- "id": "31bff99a-2eac-49f5-b015-cba95aa6e530",
- "name": "Pied Piper",
- "url": "https://piedpiper.io",
- "description": "The new internet",
- "parentUrl": null,
- "emails": ["richard@piedpiper.io", "hello@piedpiper.io"],
- "phoneNumbers": null,
- "logo": null,
- "tags": ["new-internet", "making-the-world-a-better-place", "not-like-hooli"],
- "twitter": {
- "bio": "The internet we deserve",
- "handle": "PiedPiper",
- "location": "The valley",
- "followers": 5000,
- "following": 20
- },
- "linkedin": { "handle": "company/PiedPiper" },
- "crunchbase": { "handle": "company/PiedPiper" },
- "employees": 50,
- "revenueRange": { "max": 50, "min": 10 },
- "importHash": null,
- "createdAt": "2022-10-03T16:15:21.812Z",
- "updatedAt": "2022-10-03T16:15:21.812Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ],
- "tasks": [],
- "notes": [],
- "noMerge": [],
- "toMerge": []
- }
- },
- "MemberList": {
- "value": {
- "rows": [
- {
- "id": "2effc566-1932-44f3-a821-2d692933a953",
- "username": { "github": "dinesh", "twitter": "dinesh.chugtai" },
- "attributes": {
- "bio": {
- "github": "Lead developer at Pied Piper",
- "default": "Pakistani Denzel. Tesla and gold chain owner.",
- "twitter": "Pakistani Denzel. Tesla and gold chain owner."
- },
- "url": {
- "github": "https://github.com/dinesh",
- "default": "https://t.co/d",
- "twitter": "https://t.co/d"
- },
- "location": {
- "custom": "Silicon Valley",
- "github": "Palo alto",
- "default": "Silicon Valley"
- }
- },
- "displayName": "Dinesh",
- "email": "dinesh@piedpiper.io",
- "score": 9,
- "joinedAt": "2022-10-03T15:30:55.672Z",
- "importHash": null,
- "reach": { "total": 100, "github": 60, "twitter": 40 },
- "createdAt": "2022-10-03T15:30:55.679Z",
- "updatedAt": "2022-10-05T11:39:58.095Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "identities": ["github", "twitter"],
- "activeOn": ["github"],
- "activityCount": "2",
- "lastActive": "2021-07-27T20:22:30.000Z",
- "averageSentiment": "82.50",
- "noMerge": [],
- "toMerge": [],
- "lastActivity": {
- "id": "73aa13b7-1ef9-4987-a273-e560edff94ca",
- "type": "pull_request-comment",
- "timestamp": "2021-07-27T20:22:30.000Z",
- "platform": "github",
- "isContribution": true,
- "score": 3,
- "sourceId": "gh_2",
- "sourceParentId": "gh_1",
- "attributes": {},
- "channel": "piedpiper",
- "body": "I will never underestimate my talents again.",
- "title": null,
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "positive",
- "mixed": 14.308956265449524,
- "neutral": 14.437079429626465,
- "negative": 9.826807677745819,
- "positive": 61.42715811729431,
- "sentiment": 86
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:38:05.847Z",
- "updatedAt": "2022-10-03T15:46:34.610Z",
- "deletedAt": null,
- "memberId": "2effc566-1932-44f3-a821-2d692933a953",
- "conversationId": "291af008-7717-457e-9242-f5c507c8987b",
- "parentId": "462ddc6b-5672-43b2-9018-4e3fd7332228",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- "organizations": [
- {
- "id": "31bff99a-2eac-49f5-b015-cba95aa6e530",
- "name": "Pied Piper",
- "url": "https://piedpiper.io",
- "description": "The new internet",
- "parentUrl": null,
- "emails": ["richard@piedpiper.io", "hello@piedpiper.io"],
- "phoneNumbers": null,
- "logo": null,
- "tags": ["new-internet", "making-the-world-a-better-place", "not-like-hooli"],
- "twitter": {
- "bio": "The internet we deserve",
- "handle": "PiedPiper",
- "location": "The valley",
- "followers": 5000,
- "following": 20
- },
- "linkedin": { "handle": "company/PiedPiper" },
- "crunchbase": { "handle": "company/PiedPiper" },
- "employees": 50,
- "revenueRange": { "max": 50, "min": 10 },
- "importHash": null,
- "createdAt": "2022-10-03T16:15:21.812Z",
- "updatedAt": "2022-10-03T16:15:21.812Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ],
- "tags": [
- {
- "id": "38807625-6302-47b5-9f35-58566ddec83b",
- "name": "developer",
- "importHash": null,
- "createdAt": "2022-10-05T11:41:20.162Z",
- "updatedAt": "2022-10-05T11:41:20.162Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ]
- },
- {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": 8,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-05T11:40:32.560Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "activityCount": "3",
- "lastActive": "2021-07-27T20:23:30.000Z",
- "averageSentiment": "34.67",
- "noMerge": [],
- "toMerge": [],
- "lastActivity": {
- "id": "2dcbe40e-36e0-4929-ab21-a30467fd9a65",
- "type": "pull_request-comment",
- "timestamp": "2021-07-27T20:23:30.000Z",
- "platform": "github",
- "isContribution": true,
- "score": 3,
- "sourceId": "gh_3",
- "sourceParentId": "gh_1",
- "attributes": {},
- "channel": "piedpiper",
- "body": "Don't worry. I will continue to do it for you.",
- "title": null,
- "url": "github.com/piedpiper/piedpier",
- "sentiment": {
- "label": "positive",
- "mixed": 2.9098065569996834,
- "neutral": 25.578168034553528,
- "negative": 2.241993509232998,
- "positive": 69.27002668380737,
- "sentiment": 97
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:47:20.151Z",
- "updatedAt": "2022-10-03T15:47:20.220Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": "291af008-7717-457e-9242-f5c507c8987b",
- "parentId": "462ddc6b-5672-43b2-9018-4e3fd7332228",
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- "organizations": [
- {
- "id": "31bff99a-2eac-49f5-b015-cba95aa6e530",
- "name": "Pied Piper",
- "url": "https://piedpiper.io",
- "description": "The new internet",
- "parentUrl": null,
- "emails": ["richard@piedpiper.io", "hello@piedpiper.io"],
- "phoneNumbers": null,
- "logo": null,
- "tags": ["new-internet", "making-the-world-a-better-place", "not-like-hooli"],
- "twitter": {
- "bio": "The internet we deserve",
- "handle": "PiedPiper",
- "location": "The valley",
- "followers": 5000,
- "following": 20
- },
- "linkedin": { "handle": "company/PiedPiper" },
- "crunchbase": { "handle": "company/PiedPiper" },
- "employees": 50,
- "revenueRange": { "max": 50, "min": 10 },
- "importHash": null,
- "createdAt": "2022-10-03T16:15:21.812Z",
- "updatedAt": "2022-10-03T16:15:21.812Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ],
- "tags": [
- {
- "id": "38807625-6302-47b5-9f35-58566ddec83b",
- "name": "developer",
- "importHash": null,
- "createdAt": "2022-10-05T11:41:20.162Z",
- "updatedAt": "2022-10-05T11:41:20.162Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- {
- "id": "dca36c33-38cd-4e68-8ba8-515167e00971",
- "name": "attended-hooli-con",
- "importHash": null,
- "createdAt": "2022-10-05T11:42:17.414Z",
- "updatedAt": "2022-10-05T11:42:17.414Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ]
- }
- ],
- "count": 2,
- "offset": 0,
- "limit": 10
- }
- },
- "Note2": {
- "value": {
- "id": "39c850f6-fb96-4d16-8e8c-cd7072e33925",
- "body": "Refused to have a user feedback call",
- "importHash": null,
- "createdAt": "2022-10-03T16:00:57.867Z",
- "updatedAt": "2022-10-03T16:00:57.867Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "members": [
- {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": -1,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-03T15:17:27.073Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ]
- }
- },
- "Note": {
- "value": {
- "id": "196c07da-14e0-419e-bd9a-5f15c721a694",
- "body": "Likes frunks",
- "importHash": null,
- "createdAt": "2022-10-05T11:58:30.977Z",
- "updatedAt": "2022-10-05T11:58:30.977Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "members": [
- {
- "id": "2effc566-1932-44f3-a821-2d692933a953",
- "username": { "github": "dinesh", "twitter": "dinesh.chugtai" },
- "attributes": {
- "bio": {
- "github": "Lead developer at Pied Piper",
- "default": "Pakistani Denzel. Tesla and gold chain owner.",
- "twitter": "Pakistani Denzel. Tesla and gold chain owner."
- },
- "url": {
- "github": "https://github.com/dinesh",
- "default": "https://t.co/d",
- "twitter": "https://t.co/d"
- },
- "location": {
- "custom": "Silicon Valley",
- "github": "Palo alto",
- "default": "Silicon Valley"
- }
- },
- "displayName": "Dinesh",
- "email": "dinesh@piedpiper.io",
- "score": 9,
- "joinedAt": "2022-10-03T15:30:55.672Z",
- "importHash": null,
- "reach": { "total": 100, "github": 60, "twitter": 40 },
- "createdAt": "2022-10-03T15:30:55.679Z",
- "updatedAt": "2022-10-05T11:39:58.095Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ]
- }
- },
- "NoteList": {
- "value": {
- "rows": [
- { "$ref": "#/components/examples/Note" },
- { "$ref": "#/components/examples/Note2" }
- ],
- "count": 2,
- "limit": 10,
- "offset": 0
- }
- },
- "OrganizationCreate": {
- "value": {
- "id": "31bff99a-2eac-49f5-b015-cba95aa6e530",
- "name": "Pied Piper",
- "url": "https://piedpiper.io",
- "description": "The new internet",
- "parentUrl": null,
- "emails": ["richard@piedpiper.io", "hello@piedpiper.io"],
- "phoneNumbers": null,
- "logo": null,
- "tags": ["new-internet", "making-the-world-a-better-place", "not-like-hooli"],
- "twitter": {
- "bio": "The internet we deserve",
- "handle": "PiedPiper",
- "location": "The valley",
- "followers": 5000,
- "following": 20
- },
- "linkedin": { "handle": "company/PiedPiper" },
- "crunchbase": { "handle": "company/PiedPiper" },
- "employees": 50,
- "revenueRange": { "max": 50, "min": 10 },
- "importHash": null,
- "createdAt": "2022-10-03T16:15:21.812Z",
- "updatedAt": "2022-10-03T16:15:21.812Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "memberCount": 2,
- "activityCount": 4
- }
- },
- "Organization": {
- "value": {
- "id": "31bff99a-2eac-49f5-b015-cba95aa6e530",
- "name": "Pied Piper",
- "url": "https://piedpiper.io",
- "description": "The new internet",
- "parentUrl": null,
- "emails": ["richard@piedpiper.io", "hello@piedpiper.io"],
- "phoneNumbers": null,
- "logo": null,
- "tags": ["new-internet", "making-the-world-a-better-place", "not-like-hooli"],
- "identities": ["github", "twitter"],
- "activeOn": ["github"],
- "lastActive": "2022-10-03T16:15:21.812Z",
- "joinedAt": "2022-05-03T11:16:32.812Z",
- "twitter": {
- "bio": "The internet we deserve",
- "handle": "PiedPiper",
- "location": "The valley",
- "followers": 5000,
- "following": 20
- },
- "linkedin": { "handle": "company/PiedPiper" },
- "crunchbase": { "handle": "company/PiedPiper" },
- "employees": 50,
- "revenueRange": { "max": 50, "min": 10 },
- "importHash": null,
- "createdAt": "2022-10-03T16:15:21.812Z",
- "updatedAt": "2022-10-03T16:15:21.812Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "memberCount": 2,
- "activityCount": 4
- }
- },
- "Organization2": {
- "value": {
- "id": "65257687-0bfa-498e-8b2f-53559f41522b",
- "name": "Hooli",
- "url": "https://hooli.xyz",
- "description": "Hooli is an international corporation founded by Gavin Belson and Peter Gregory",
- "parentUrl": null,
- "emails": ["gavin@hooli.xyz"],
- "phoneNumbers": null,
- "logo": null,
- "tags": ["hooli", "tethics", "not-google"],
- "identities": ["devto", "github", "twitter"],
- "activeOn": ["devto"],
- "lastActive": "2022-10-04",
- "joinedAt": "2020-01-30",
- "twitter": {
- "bio": "Hooli is an international corporation founded by Gavin Belson and Peter Gregory",
- "handle": "hooli",
- "location": "Menlo Park",
- "followers": 500000,
- "following": 0
- },
- "linkedin": { "handle": "company/Hooli" },
- "crunchbase": { "handle": "company/Hooli" },
- "employees": 4000,
- "revenueRange": { "max": 500, "min": 100 },
- "importHash": null,
- "createdAt": "2022-10-05T12:03:11.228Z",
- "updatedAt": "2022-10-05T12:03:11.228Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "memberCount": 0,
- "activityCount": 0
- }
- },
- "OrganizationList": {
- "value": {
- "rows": [
- { "$ref": "#/components/examples/Organization" },
- { "$ref": "#/components/examples/Organization2" }
- ],
- "count": 2,
- "limit": 10,
- "offset": 0
- }
- },
- "Tag": {
- "value": {
- "id": "dca36c33-38cd-4e68-8ba8-515167e00971",
- "name": "attended-hooli-con",
- "importHash": null,
- "createdAt": "2022-10-05T11:42:17.414Z",
- "updatedAt": "2022-10-05T11:42:17.414Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "members": [
- {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": 8,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-05T11:40:32.560Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ]
- }
- },
- "Tag2": {
- "value": {
- "id": "38807625-6302-47b5-9f35-58566ddec83b",
- "name": "developer",
- "createdAt": "2022-10-05T11:41:20.162Z",
- "updatedAt": "2022-10-05T11:41:20.162Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "members": [
- {
- "id": "2effc566-1932-44f3-a821-2d692933a953",
- "username": { "github": "dinesh", "twitter": "dinesh.chugtai" },
- "attributes": {
- "bio": {
- "github": "Lead developer at Pied Piper",
- "default": "Pakistani Denzel. Tesla and gold chain owner.",
- "twitter": "Pakistani Denzel. Tesla and gold chain owner."
- },
- "url": {
- "github": "https://github.com/dinesh",
- "default": "https://t.co/d",
- "twitter": "https://t.co/d"
- },
- "location": {
- "custom": "Silicon Valley",
- "github": "Palo alto",
- "default": "Silicon Valley"
- }
- },
- "displayName": "Dinesh",
- "email": "dinesh@piedpiper.io",
- "score": 9,
- "joinedAt": "2022-10-03T15:30:55.672Z",
- "reach": { "total": 100, "github": 60, "twitter": 40 },
- "createdAt": "2022-10-03T15:30:55.679Z",
- "updatedAt": "2022-10-05T11:39:58.095Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- },
- {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": 8,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-05T11:40:32.560Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ]
- }
- },
- "TagList": {
- "value": {
- "rows": [
- { "$ref": "#/components/examples/Tag" },
- { "$ref": "#/components/examples/Tag2" }
- ],
- "count": 2,
- "limit": 10,
- "offset": 0
- }
- },
- "Task": {
- "value": {
- "id": "8a127785-f11d-4102-804d-5b79ccddd4cc",
- "name": "Ask for tips on building a new Anton",
- "body": null,
- "status": null,
- "dueDate": "2022-05-27T15:13:30.000Z",
- "importHash": null,
- "createdAt": "2022-10-03T16:00:18.701Z",
- "updatedAt": "2022-10-03T16:00:18.701Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "assignedToId": null,
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "members": [
- {
- "id": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "username": { "github": "gilfoyle", "twitter": "gilfoyle" },
- "attributes": {
- "bio": {
- "github": "Systems engineer at Pied Piper",
- "default": "It's not magic. It's talent and sweat",
- "twitter": "It's not magic. It's talent and sweat"
- },
- "url": {
- "github": "https://github.com/gilfoyle",
- "default": "https://t.co/g",
- "twitter": "https://t.co/g"
- },
- "location": {
- "custom": "Erlich's house",
- "github": "Palo alto",
- "default": "Erlich's house"
- }
- },
- "displayName": "Gilfoyle",
- "email": "gilfoyle@piedpiper.io",
- "score": -1,
- "joinedAt": "2022-10-03T15:17:03.540Z",
- "importHash": null,
- "reach": { "total": 10000, "github": 5000, "twitter": 5000 },
- "createdAt": "2022-10-03T15:17:03.547Z",
- "updatedAt": "2022-10-03T15:17:27.073Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ],
- "activities": []
- }
- },
- "Task2": {
- "value": {
- "id": "ef22fb05-a41b-472e-9917-a4d10d19fcc6",
- "name": "Ask if we can use as quote",
- "body": null,
- "status": null,
- "dueDate": "2022-08-27T00:00:00.000Z",
- "importHash": null,
- "createdAt": "2022-10-05T11:55:55.606Z",
- "updatedAt": "2022-10-05T11:55:55.606Z",
- "deletedAt": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "assignedToId": null,
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "members": [],
- "activities": [
- {
- "id": "782b426d-adc8-4fb4-a4ee-ab0bb07ffca0",
- "type": "message",
- "timestamp": "2020-05-27T15:13:30.000Z",
- "platform": "discord",
- "isContribution": true,
- "score": 1,
- "sourceId": "1234",
- "sourceParentId": null,
- "attributes": { "reactions": 43 },
- "channel": "dev",
- "body": "It's not magic. It's talend and sweat.",
- "title": null,
- "url": "discord.gg/1234",
- "sentiment": {
- "label": "negative",
- "mixed": 1.1410574428737164,
- "neutral": 11.00325882434845,
- "negative": 85.99738478660583,
- "positive": 1.8582981079816818,
- "sentiment": 2
- },
- "importHash": null,
- "createdAt": "2022-10-03T15:18:11.294Z",
- "updatedAt": "2022-10-03T15:21:49.402Z",
- "deletedAt": null,
- "memberId": "ab7a9fe9-4576-46b1-a710-8b8eaeff87a5",
- "conversationId": null,
- "parentId": null,
- "tenantId": "8642a2bd-965e-4acd-be8c-dfedc83ef0af",
- "createdById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75",
- "updatedById": "debc3c7f-4c5d-4bec-9130-17bb0aea8b75"
- }
- ]
- }
- },
- "TaskList": {
- "value": {
- "rows": [
- { "$ref": "#/components/examples/Task" },
- { "$ref": "#/components/examples/Task2" }
- ],
- "count": 2,
- "limit": 10,
- "offset": 0
- }
- },
- "TaskFindAndUpdateAll": { "value": { "rowsUpdated": 5 } },
- "ActivityTypes": {
- "value": {
- "default": {
- "github": {
- "discussion-started": {
- "default": "started a discussion in {channel}",
- "short": "started a discussion",
- "channel": "{channel}"
- },
- "discussion-comment": {
- "default": "commented on a discussion in {channel}",
- "short": "commented on a discussion",
- "channel": "{channel}"
- },
- "fork": { "default": "forked {channel}", "short": "forked", "channel": "{channel}" },
- "issues-closed": {
- "default": "closed an issue in {channel}",
- "short": "closed an issue",
- "channel": "{channel}"
- },
- "issues-opened": {
- "default": "opened a new issue in {channel}",
- "short": "opened an issue",
- "channel": "{channel}"
- },
- "issue-comment": {
- "default": "commented on an issue in {channel}",
- "short": "commented on an issue",
- "channel": "{channel}"
- },
- "pull_request-closed": {
- "default": "closed a pull request in {channel}",
- "short": "closed a pull request",
- "channel": "{channel}"
- },
- "pull_request-opened": {
- "default": "opened a new pull request in {channel}",
- "short": "opened a pull request",
- "channel": "{channel}"
- },
- "pull_request-comment": {
- "default": "commented on a pull request in {channel}",
- "short": "commented on a pull request",
- "channel": "{channel}"
- },
- "star": {
- "default": "starred {channel}",
- "short": "starred",
- "channel": "{channel}"
- },
- "unstar": {
- "default": "unstarred {channel}",
- "short": "unstarred",
- "channel": "{channel}"
- }
- },
- "devto": {
- "comment": {
- "default": "commented on {attributes.articleTitle}",
- "short": "commented",
- "channel": "{attributes.articleTitle}"
- }
- },
- "discord": {
- "joined_guild": {
- "default": "joined server",
- "short": "joined server",
- "channel": ""
- },
- "message": {
- "default": "sent a message in #{channel}",
- "short": "sent a message",
- "channel": "#{channel}"
- },
- "thread_started": {
- "default": "started a new thread",
- "short": "started a new thread",
- "channel": ""
- },
- "thread_message": {
- "default": "replied to a message in thread #{channel} -> {attributes.parentChannel}",
- "short": "replied to a message",
- "channel": "thread #{channel} -> #{attributes.parentChannel}"
- }
- },
- "hackernews": {
- "comment": {
- "default": "commented on {attributes.parentTitle}",
- "short": "commented",
- "channel": "{channel}"
- },
- "post": {
- "default": "posted mentioning {channel}",
- "short": "posted",
- "channel": "{channel}"
- }
- },
- "linkedin": {
- "comment": {
- "default": "commented on a post {attributes.postBody}",
- "short": "commented",
- "channel": "{attributes.postBody}"
- },
- "message": { "default": "sent a message", "short": "sent a message", "channel": "" },
- "reaction": {
- "default": "reacted with on a post {attributes.postBody}",
- "short": "reacted",
- "channel": "{attributes.postBody}"
- }
- },
- "reddit": {
- "comment": {
- "default": "commented in subreddit r/{channel}",
- "short": "commented on a post",
- "channel": "r/{channel}"
- },
- "post": {
- "default": "posted in subreddit r/{channel}",
- "short": "posted in subreddit",
- "channel": "r/{channel}"
- }
- },
- "slack": {
- "channel_joined": {
- "default": "joined channel {channel}",
- "short": "joined channel",
- "channel": "{channel}"
- },
- "message": {
- "default": "sent a message in {channel}",
- "short": "sent a message",
- "channel": "{channel}"
- }
- },
- "twitter": {
- "hashtag": { "default": "posted a tweet", "short": "posted a tweet", "channel": "" },
- "follow": { "default": "followed you", "short": "followed you", "channel": "" },
- "mention": {
- "default": "mentioned you in a tweet",
- "short": "mentioned you",
- "channel": ""
- }
- },
- "stackoverflow": {
- "question": {
- "default": "Asked a question {self}",
- "short": "asked a question",
- "channel": ""
- },
- "answer": {
- "default": "Answered a question {self}",
- "short": "answered a question",
- "channel": ""
- }
- }
- },
- "custom": {
- "other": {
- "attended-a-meeting": {
- "short": "Attended a meeting",
- "channel": "",
- "default": "Attended a meeting"
- },
- "asked-question-in-webinar": {
- "default": "Asked question in webinar",
- "short": "Asked question in webinar",
- "channel": ""
- }
- }
- }
- }
- },
- "MemberAttributeSettings": {
- "value": {
- "id": "9eaedce9-1f3a-4a75-adc8-e475cbc47553'",
- "type": "string",
- "canDelete": false,
- "show": true,
- "label": "Url",
- "name": "url",
- "createdAt": "2022-09-07",
- "updatedAt": "2022-09-07",
- "tenantId": "fcd5b9cc-144b-4687-8fd9-34818f35e70d"
- }
- },
- "MemberAttributeSettings2": {
- "value": {
- "id": "13bb9e12-c371-44ad-8806-0678c2f53dd1",
- "type": "boolean",
- "canDelete": false,
- "show": true,
- "label": "is Hireable",
- "name": "isHireable",
- "createdAt": "2022-09-07",
- "updatedAt": "2022-09-07",
- "tenantId": "fcd5b9cc-144b-4687-8fd9-34818f35e70d"
- }
- },
- "MemberAttributeSettingsList": {
- "value": {
- "rows": [
- { "$ref": "#/components/examples/MemberAttributeSettings" },
- { "$ref": "#/components/examples/MemberAttributeSettings2" }
- ],
- "count": 2
- }
- }
- }
- },
- "tags": [
- { "name": "Members", "description": "Everything about members" },
- { "name": "Member Attributes", "description": "Settings for member's attributes" },
- { "name": "Activities", "description": "Everything about activities" },
- { "name": "Organizations", "description": "Everything about organizations" },
- { "name": "Conversations", "description": "Everything about conversations" },
- { "name": "Tags", "description": "Everything about tags" },
- { "name": "Automations", "description": "Everything about automations" },
- { "name": "Notes", "description": "Everything about notes" }
- ]
-}
diff --git a/backend/package-lock.json b/backend/package-lock.json
deleted file mode 100644
index 5e87b678f9..0000000000
--- a/backend/package-lock.json
+++ /dev/null
@@ -1,67120 +0,0 @@
-{
- "name": "app-backend",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "app-backend",
- "dependencies": {
- "@aws-sdk/client-comprehend": "^3.159.0",
- "@aws-sdk/hash-node": "^3.226.0",
- "@aws-sdk/protocol-http": "^3.226.0",
- "@aws-sdk/s3-request-presigner": "^3.229.0",
- "@aws-sdk/url-parser": "^3.226.0",
- "@aws-sdk/util-format-url": "^3.226.0",
- "@crowd/alerting": "file:../services/libs/alerting",
- "@crowd/common": "file:../services/libs/common",
- "@crowd/integrations": "file:../services/libs/integrations",
- "@crowd/logging": "file:../services/libs/logging",
- "@crowd/opensearch": "file:../services/libs/opensearch",
- "@crowd/redis": "file:../services/libs/redis",
- "@crowd/sqs": "file:../services/libs/sqs",
- "@crowd/tracing": "file:../services/libs/tracing",
- "@crowd/types": "file:../services/libs/types",
- "@cubejs-client/core": "^0.30.4",
- "@google-cloud/storage": "5.3.0",
- "@octokit/auth-app": "^3.6.1",
- "@octokit/graphql": "^4.8.0",
- "@octokit/request": "^5.6.3",
- "@opensearch-project/opensearch": "^1.2.0",
- "@pm2/io": "^5.0.0",
- "@sendgrid/eventwebhook": "^7.7.0",
- "@sendgrid/mail": "7.2.6",
- "@slack/web-api": "^6.7.2",
- "@superfaceai/one-sdk": "^1.3.0",
- "@superfaceai/passport-twitter-oauth2": "^1.0.0",
- "analytics-node": "^6.2.0",
- "aws-sdk": "2.814.0",
- "axios": "^0.27.2",
- "bcrypt": "5.0.0",
- "body-parser": "^1.20.1",
- "bufferutil": "^4.0.7",
- "bunyan": "^1.8.15",
- "bunyan-format": "^0.2.1",
- "bunyan-middleware": "^1.0.2",
- "clearbit": "^1.3.5",
- "cli-highlight": "2.1.6",
- "command-line-args": "^5.2.1",
- "command-line-usage": "^6.1.3",
- "config": "^3.3.8",
- "cors": "2.8.5",
- "cron": "^2.1.0",
- "cron-time-generator": "^1.3.0",
- "crowd-sentiment": "^1.1.7",
- "crypto-js": "^4.1.1",
- "discord.js": "^14.7.1",
- "dotenv": "8.2.0",
- "dotenv-expand": "^8.0.3",
- "emoji-dictionary": "^1.0.11",
- "erlpack": "^0.1.4",
- "express": "4.17.1",
- "express-rate-limit": "6.5.1",
- "fast-levenshtein": "^3.0.0",
- "formidable-serverless": "1.1.1",
- "he": "^1.2.0",
- "helmet": "4.1.1",
- "html-to-mrkdwn-ts": "^1.1.0",
- "html-to-text": "^8.2.1",
- "json2csv": "^5.0.7",
- "jsonwebtoken": "8.5.1",
- "jwks-rsa": "^3.0.1",
- "lodash": "4.17.21",
- "moment": "2.29.4",
- "moment-timezone": "^0.5.34",
- "mv": "2.1.1",
- "node-fetch": "^2.6.7",
- "omit-deep-by-values": "^1.0.2",
- "openapi-comment-parser": "^1.0.0",
- "passport": "0.6.0",
- "passport-facebook": "3.0.0",
- "passport-github2": "^0.1.12",
- "passport-google-oauth": "2.0.0",
- "passport-google-oauth20": "^2.0.0",
- "passport-slack": "0.0.7",
- "peopledatalabs": "^5.0.3",
- "pg": "^8.7.3",
- "pm2": "^5.2.0",
- "sanitize-html": "^2.7.1",
- "sequelize": "6.21.2",
- "sequelize-cli-typescript": "^3.2.0-c",
- "slack-block-builder": "^2.7.2",
- "socket.io": "^4.5.4",
- "stripe": "^10.0.0",
- "superagent": "^8.0.0",
- "swagger-ui-dist": "4.1.3",
- "tsconfig-paths": "^4.2.0",
- "unleash-client": "^3.18.1",
- "utf-8-validate": "^5.0.10",
- "uuid": "^9.0.0",
- "validator": "^13.7.0",
- "verify-github-webhook": "^1.0.1",
- "zlib-sync": "^0.1.8"
- },
- "devDependencies": {
- "@babel/core": "^7.21.8",
- "@babel/preset-env": "^7.21.5",
- "@babel/preset-typescript": "^7.21.5",
- "@types/bunyan": "^1.8.8",
- "@types/bunyan-format": "^0.2.5",
- "@types/config": "^3.3.0",
- "@types/cron": "^2.0.0",
- "@types/html-to-text": "^8.1.1",
- "@types/jest": "^29.5.1",
- "@types/node": "^17.0.21",
- "@types/sanitize-html": "^2.6.2",
- "@types/superagent": "^4.1.15",
- "@types/uuid": "^9.0.2",
- "@typescript-eslint/eslint-plugin": "^5.17.0",
- "@typescript-eslint/parser": "^5.17.0",
- "copyfiles": "2.4.1",
- "cross-env": "7.0.2",
- "eslint": "^8.12.0",
- "eslint-config-airbnb-base": "^15.0.0",
- "eslint-config-airbnb-typescript": "^16.1.4",
- "eslint-config-prettier": "^8.5.0",
- "eslint-plugin-import": "^2.25.4",
- "eslint-plugin-openapi": "^0.0.4",
- "jest": "^29.5.0",
- "node-mocks-http": "1.9.0",
- "nodemon": "2.0.4",
- "prettier": "^2.5.1",
- "rdme": "^7.2.0",
- "supertest": "^6.2.2",
- "ts-jest": "^29.1.0",
- "ts-node": "10.6.0",
- "typescript": "^4.7.4"
- }
- },
- "../services/libs/alerting": {
- "name": "@crowd/alerting",
- "version": "1.0.0",
- "dependencies": {
- "@types/node": "^20.3.1",
- "@typescript-eslint/eslint-plugin": "^5.59.11",
- "@typescript-eslint/parser": "^5.59.11",
- "axios": "^1.4.0",
- "eslint": "^8.42.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.1.3"
- }
- },
- "../services/libs/alerting/node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "../services/libs/alerting/node_modules/@eslint-community/regexpp": {
- "version": "4.5.1",
- "license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "../services/libs/alerting/node_modules/@eslint/eslintrc": {
- "version": "2.0.3",
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/alerting/node_modules/@eslint/js": {
- "version": "8.42.0",
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "../services/libs/alerting/node_modules/@humanwhocodes/config-array": {
- "version": "0.11.10",
- "license": "Apache-2.0",
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "../services/libs/alerting/node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "../services/libs/alerting/node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "license": "BSD-3-Clause"
- },
- "../services/libs/alerting/node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/alerting/node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/alerting/node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/alerting/node_modules/@types/json-schema": {
- "version": "7.0.12",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/@types/node": {
- "version": "20.3.1",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/@types/semver": {
- "version": "7.5.0",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.59.11",
- "license": "MIT",
- "dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/type-utils": "5.59.11",
- "@typescript-eslint/utils": "5.59.11",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/alerting/node_modules/@typescript-eslint/parser": {
- "version": "5.59.11",
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/typescript-estree": "5.59.11",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/alerting/node_modules/@typescript-eslint/scope-manager": {
- "version": "5.59.11",
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/visitor-keys": "5.59.11"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/alerting/node_modules/@typescript-eslint/type-utils": {
- "version": "5.59.11",
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "5.59.11",
- "@typescript-eslint/utils": "5.59.11",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/alerting/node_modules/@typescript-eslint/types": {
- "version": "5.59.11",
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/alerting/node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.59.11",
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/visitor-keys": "5.59.11",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/alerting/node_modules/@typescript-eslint/utils": {
- "version": "5.59.11",
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/typescript-estree": "5.59.11",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/alerting/node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
- "version": "5.1.1",
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "../services/libs/alerting/node_modules/@typescript-eslint/utils/node_modules/estraverse": {
- "version": "4.3.0",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/alerting/node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.59.11",
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.11",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/alerting/node_modules/acorn": {
- "version": "8.8.2",
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "../services/libs/alerting/node_modules/acorn-jsx": {
- "version": "5.3.2",
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/alerting/node_modules/ajv": {
- "version": "6.12.6",
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "../services/libs/alerting/node_modules/ansi-regex": {
- "version": "5.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "../services/libs/alerting/node_modules/argparse": {
- "version": "2.0.1",
- "license": "Python-2.0"
- },
- "../services/libs/alerting/node_modules/array-union": {
- "version": "2.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/asynckit": {
- "version": "0.4.0",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/axios": {
- "version": "1.4.0",
- "license": "MIT",
- "dependencies": {
- "follow-redirects": "^1.15.0",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- },
- "../services/libs/alerting/node_modules/balanced-match": {
- "version": "1.0.2",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/brace-expansion": {
- "version": "1.1.11",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "../services/libs/alerting/node_modules/braces": {
- "version": "3.0.2",
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/callsites": {
- "version": "3.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/alerting/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "../services/libs/alerting/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "../services/libs/alerting/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/combined-stream": {
- "version": "1.0.8",
- "license": "MIT",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "../services/libs/alerting/node_modules/concat-map": {
- "version": "0.0.1",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/cross-spawn": {
- "version": "7.0.3",
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/alerting/node_modules/debug": {
- "version": "4.3.4",
- "license": "MIT",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "../services/libs/alerting/node_modules/deep-is": {
- "version": "0.1.4",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/delayed-stream": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "../services/libs/alerting/node_modules/dir-glob": {
- "version": "3.0.1",
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/doctrine": {
- "version": "3.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/alerting/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/alerting/node_modules/eslint": {
- "version": "8.42.0",
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.42.0",
- "@humanwhocodes/config-array": "^0.11.10",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/alerting/node_modules/eslint-config-prettier": {
- "version": "8.8.0",
- "license": "MIT",
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "../services/libs/alerting/node_modules/eslint-plugin-prettier": {
- "version": "4.2.1",
- "license": "MIT",
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
- },
- "peerDependenciesMeta": {
- "eslint-config-prettier": {
- "optional": true
- }
- }
- },
- "../services/libs/alerting/node_modules/eslint-scope": {
- "version": "7.2.0",
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/alerting/node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/alerting/node_modules/espree": {
- "version": "9.5.2",
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/alerting/node_modules/esquery": {
- "version": "1.5.0",
- "license": "BSD-3-Clause",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "../services/libs/alerting/node_modules/esrecurse": {
- "version": "4.3.0",
- "license": "BSD-2-Clause",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/alerting/node_modules/estraverse": {
- "version": "5.3.0",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/alerting/node_modules/esutils": {
- "version": "2.0.3",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/alerting/node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/fast-diff": {
- "version": "1.3.0",
- "license": "Apache-2.0"
- },
- "../services/libs/alerting/node_modules/fast-glob": {
- "version": "3.2.12",
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "../services/libs/alerting/node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "../services/libs/alerting/node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/fastq": {
- "version": "1.15.0",
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "../services/libs/alerting/node_modules/file-entry-cache": {
- "version": "6.0.1",
- "license": "MIT",
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/alerting/node_modules/fill-range": {
- "version": "7.0.1",
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/find-up": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/alerting/node_modules/flat-cache": {
- "version": "3.0.4",
- "license": "MIT",
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/alerting/node_modules/flatted": {
- "version": "3.2.7",
- "license": "ISC"
- },
- "../services/libs/alerting/node_modules/follow-redirects": {
- "version": "1.15.2",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "../services/libs/alerting/node_modules/form-data": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "../services/libs/alerting/node_modules/fs.realpath": {
- "version": "1.0.0",
- "license": "ISC"
- },
- "../services/libs/alerting/node_modules/glob": {
- "version": "7.2.3",
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/alerting/node_modules/glob-parent": {
- "version": "6.0.2",
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "../services/libs/alerting/node_modules/globals": {
- "version": "13.20.0",
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/alerting/node_modules/globby": {
- "version": "11.1.0",
- "license": "MIT",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/alerting/node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/graphemer": {
- "version": "1.4.0",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/ignore": {
- "version": "5.2.4",
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "../services/libs/alerting/node_modules/import-fresh": {
- "version": "3.3.0",
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/alerting/node_modules/imurmurhash": {
- "version": "0.1.4",
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "../services/libs/alerting/node_modules/inflight": {
- "version": "1.0.6",
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "../services/libs/alerting/node_modules/inherits": {
- "version": "2.0.4",
- "license": "ISC"
- },
- "../services/libs/alerting/node_modules/is-extglob": {
- "version": "2.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/alerting/node_modules/is-glob": {
- "version": "4.0.3",
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/alerting/node_modules/is-number": {
- "version": "7.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "../services/libs/alerting/node_modules/is-path-inside": {
- "version": "3.0.3",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/isexe": {
- "version": "2.0.0",
- "license": "ISC"
- },
- "../services/libs/alerting/node_modules/js-yaml": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "../services/libs/alerting/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/levn": {
- "version": "0.4.1",
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/alerting/node_modules/locate-path": {
- "version": "6.0.0",
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/alerting/node_modules/lodash.merge": {
- "version": "4.6.2",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/lru-cache": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/alerting/node_modules/merge2": {
- "version": "1.4.1",
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/alerting/node_modules/micromatch": {
- "version": "4.0.5",
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "../services/libs/alerting/node_modules/mime-db": {
- "version": "1.52.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "../services/libs/alerting/node_modules/mime-types": {
- "version": "2.1.35",
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "../services/libs/alerting/node_modules/minimatch": {
- "version": "3.1.2",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "../services/libs/alerting/node_modules/ms": {
- "version": "2.1.2",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/natural-compare": {
- "version": "1.4.0",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/once": {
- "version": "1.4.0",
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "../services/libs/alerting/node_modules/optionator": {
- "version": "0.9.1",
- "license": "MIT",
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/alerting/node_modules/p-limit": {
- "version": "3.1.0",
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/alerting/node_modules/p-locate": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/alerting/node_modules/parent-module": {
- "version": "1.0.1",
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/alerting/node_modules/path-exists": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/path-is-absolute": {
- "version": "1.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/alerting/node_modules/path-key": {
- "version": "3.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/path-type": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/picomatch": {
- "version": "2.3.1",
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "../services/libs/alerting/node_modules/prelude-ls": {
- "version": "1.2.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/alerting/node_modules/prettier": {
- "version": "2.8.8",
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "../services/libs/alerting/node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/alerting/node_modules/proxy-from-env": {
- "version": "1.1.0",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/punycode": {
- "version": "2.3.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/alerting/node_modules/queue-microtask": {
- "version": "1.2.3",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/resolve-from": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "../services/libs/alerting/node_modules/reusify": {
- "version": "1.0.4",
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "../services/libs/alerting/node_modules/rimraf": {
- "version": "3.0.2",
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/alerting/node_modules/run-parallel": {
- "version": "1.2.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "../services/libs/alerting/node_modules/semver": {
- "version": "7.5.1",
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/alerting/node_modules/shebang-command": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/shebang-regex": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/slash": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/strip-ansi": {
- "version": "6.0.1",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/strip-json-comments": {
- "version": "3.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/alerting/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/alerting/node_modules/text-table": {
- "version": "0.2.0",
- "license": "MIT"
- },
- "../services/libs/alerting/node_modules/to-regex-range": {
- "version": "5.0.1",
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "../services/libs/alerting/node_modules/tslib": {
- "version": "1.14.1",
- "license": "0BSD"
- },
- "../services/libs/alerting/node_modules/tsutils": {
- "version": "3.21.0",
- "license": "MIT",
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "../services/libs/alerting/node_modules/type-check": {
- "version": "0.4.0",
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/alerting/node_modules/type-fest": {
- "version": "0.20.2",
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/alerting/node_modules/typescript": {
- "version": "5.1.3",
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "../services/libs/alerting/node_modules/uri-js": {
- "version": "4.4.1",
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "../services/libs/alerting/node_modules/which": {
- "version": "2.0.2",
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/alerting/node_modules/word-wrap": {
- "version": "1.2.3",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/alerting/node_modules/wrappy": {
- "version": "1.0.2",
- "license": "ISC"
- },
- "../services/libs/alerting/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "../services/libs/alerting/node_modules/yocto-queue": {
- "version": "0.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/common": {
- "name": "@crowd/common",
- "version": "1.0.0",
- "dependencies": {
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "psl": "^1.9.0",
- "uuid": "^9.0.0"
- },
- "devDependencies": {
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- }
- },
- "../services/libs/common/node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "../services/libs/common/node_modules/@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "../services/libs/common/node_modules/@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/common/node_modules/@eslint/js": {
- "version": "8.40.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "../services/libs/common/node_modules/@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "../services/libs/common/node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "../services/libs/common/node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "../services/libs/common/node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/common/node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/common/node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/common/node_modules/@types/json-schema": {
- "version": "7.0.11",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/@types/node": {
- "version": "18.16.7",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/@types/semver": {
- "version": "7.5.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/common/node_modules/@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/common/node_modules/@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/common/node_modules/@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/common/node_modules/@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/common/node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/common/node_modules/@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/common/node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "../services/libs/common/node_modules/@typescript-eslint/utils/node_modules/estraverse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/common/node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/common/node_modules/acorn": {
- "version": "8.8.2",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "../services/libs/common/node_modules/acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/common/node_modules/ajv": {
- "version": "6.12.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "../services/libs/common/node_modules/ansi-regex": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "../services/libs/common/node_modules/argparse": {
- "version": "2.0.1",
- "dev": true,
- "license": "Python-2.0"
- },
- "../services/libs/common/node_modules/array-union": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/balanced-match": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "../services/libs/common/node_modules/braces": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/callsites": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/common/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "../services/libs/common/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "../services/libs/common/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/concat-map": {
- "version": "0.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/common/node_modules/debug": {
- "version": "4.3.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "../services/libs/common/node_modules/deep-is": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/doctrine": {
- "version": "3.0.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/common/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/common/node_modules/eslint": {
- "version": "8.40.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/common/node_modules/eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "../services/libs/common/node_modules/eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
- },
- "peerDependenciesMeta": {
- "eslint-config-prettier": {
- "optional": true
- }
- }
- },
- "../services/libs/common/node_modules/eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/common/node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/common/node_modules/espree": {
- "version": "9.5.2",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/common/node_modules/esquery": {
- "version": "1.5.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "../services/libs/common/node_modules/esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/common/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/common/node_modules/esutils": {
- "version": "2.0.3",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/common/node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/fast-diff": {
- "version": "1.2.0",
- "dev": true,
- "license": "Apache-2.0"
- },
- "../services/libs/common/node_modules/fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "../services/libs/common/node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "../services/libs/common/node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/fastq": {
- "version": "1.15.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "../services/libs/common/node_modules/file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/common/node_modules/fill-range": {
- "version": "7.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/find-up": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/common/node_modules/flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/common/node_modules/flatted": {
- "version": "3.2.7",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/common/node_modules/fs.realpath": {
- "version": "1.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/common/node_modules/glob": {
- "version": "7.2.3",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/common/node_modules/glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "../services/libs/common/node_modules/globals": {
- "version": "13.20.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/common/node_modules/globby": {
- "version": "11.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/common/node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/ignore": {
- "version": "5.2.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "../services/libs/common/node_modules/import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/common/node_modules/imurmurhash": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "../services/libs/common/node_modules/inflight": {
- "version": "1.0.6",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "../services/libs/common/node_modules/inherits": {
- "version": "2.0.4",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/common/node_modules/is-extglob": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/common/node_modules/is-glob": {
- "version": "4.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/common/node_modules/is-number": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "../services/libs/common/node_modules/is-path-inside": {
- "version": "3.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/isexe": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/common/node_modules/js-sdsl": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/js-sdsl"
- }
- },
- "../services/libs/common/node_modules/js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "../services/libs/common/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/levn": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/common/node_modules/locate-path": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/common/node_modules/lodash.merge": {
- "version": "4.6.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/common/node_modules/merge2": {
- "version": "1.4.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/common/node_modules/micromatch": {
- "version": "4.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "../services/libs/common/node_modules/minimatch": {
- "version": "3.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "../services/libs/common/node_modules/ms": {
- "version": "2.1.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/natural-compare": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/once": {
- "version": "1.4.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "../services/libs/common/node_modules/optionator": {
- "version": "0.9.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/common/node_modules/p-limit": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/common/node_modules/p-locate": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/common/node_modules/parent-module": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/common/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/path-is-absolute": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/common/node_modules/path-key": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/path-type": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/picomatch": {
- "version": "2.3.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "../services/libs/common/node_modules/prelude-ls": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/common/node_modules/prettier": {
- "version": "2.8.8",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "../services/libs/common/node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/common/node_modules/punycode": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/common/node_modules/queue-microtask": {
- "version": "1.2.3",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "../services/libs/common/node_modules/resolve-from": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "../services/libs/common/node_modules/reusify": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "../services/libs/common/node_modules/rimraf": {
- "version": "3.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/common/node_modules/run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "../services/libs/common/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/common/node_modules/shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/shebang-regex": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/slash": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/strip-json-comments": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/common/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/common/node_modules/text-table": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/common/node_modules/to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "../services/libs/common/node_modules/tslib": {
- "version": "1.14.1",
- "dev": true,
- "license": "0BSD"
- },
- "../services/libs/common/node_modules/tsutils": {
- "version": "3.21.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "../services/libs/common/node_modules/type-check": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/common/node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/common/node_modules/typescript": {
- "version": "5.0.4",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "../services/libs/common/node_modules/uri-js": {
- "version": "4.4.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "../services/libs/common/node_modules/uuid": {
- "version": "9.0.0",
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "../services/libs/common/node_modules/which": {
- "version": "2.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/common/node_modules/word-wrap": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/common/node_modules/wrappy": {
- "version": "1.0.2",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/common/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/common/node_modules/yocto-queue": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/integrations": {
- "name": "@crowd/integrations",
- "version": "1.0.0",
- "dependencies": {
- "@crowd/common": "file:../common",
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "@octokit/auth-app": "^4.0.13",
- "@octokit/graphql": "^5.0.6",
- "axios": "^1.4.0",
- "he": "^1.2.0",
- "sanitize-html": "^2.10.0",
- "verify-github-webhook": "^1.0.1"
- },
- "devDependencies": {
- "@types/he": "^1.2.0",
- "@types/node": "^18.16.3",
- "@types/sanitize-html": "^2.9.0",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- }
- },
- "../services/libs/integrations/node_modules/@crowd/common": {
- "resolved": "../services/libs/common",
- "link": true
- },
- "../services/libs/integrations/node_modules/@crowd/logging": {
- "resolved": "../services/libs/logging",
- "link": true
- },
- "../services/libs/integrations/node_modules/@crowd/types": {
- "resolved": "../services/libs/types",
- "link": true
- },
- "../services/libs/integrations/node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "../services/libs/integrations/node_modules/@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "../services/libs/integrations/node_modules/@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/integrations/node_modules/@eslint/js": {
- "version": "8.40.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "../services/libs/integrations/node_modules/@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "../services/libs/integrations/node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "../services/libs/integrations/node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "../services/libs/integrations/node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/integrations/node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/integrations/node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/integrations/node_modules/@types/he": {
- "version": "1.2.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/@types/json-schema": {
- "version": "7.0.11",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/@types/node": {
- "version": "18.16.9",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/@types/sanitize-html": {
- "version": "2.9.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "htmlparser2": "^8.0.0"
- }
- },
- "../services/libs/integrations/node_modules/@types/semver": {
- "version": "7.5.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/type-utils": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/integrations/node_modules/@typescript-eslint/parser": {
- "version": "5.59.5",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/integrations/node_modules/@typescript-eslint/scope-manager": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/integrations/node_modules/@typescript-eslint/type-utils": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/integrations/node_modules/@typescript-eslint/types": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/integrations/node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.59.5",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/integrations/node_modules/@typescript-eslint/utils": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/integrations/node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.5",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/integrations/node_modules/acorn": {
- "version": "8.8.2",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "../services/libs/integrations/node_modules/acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/integrations/node_modules/ajv": {
- "version": "6.12.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "../services/libs/integrations/node_modules/ansi-regex": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "../services/libs/integrations/node_modules/argparse": {
- "version": "2.0.1",
- "dev": true,
- "license": "Python-2.0"
- },
- "../services/libs/integrations/node_modules/array-union": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/asynckit": {
- "version": "0.4.0",
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/axios": {
- "version": "1.4.0",
- "license": "MIT",
- "dependencies": {
- "follow-redirects": "^1.15.0",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- },
- "../services/libs/integrations/node_modules/balanced-match": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "../services/libs/integrations/node_modules/braces": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/callsites": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/integrations/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "../services/libs/integrations/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "../services/libs/integrations/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/combined-stream": {
- "version": "1.0.8",
- "license": "MIT",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "../services/libs/integrations/node_modules/concat-map": {
- "version": "0.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/integrations/node_modules/debug": {
- "version": "4.3.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "../services/libs/integrations/node_modules/deep-is": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/deepmerge": {
- "version": "4.3.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/integrations/node_modules/delayed-stream": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "../services/libs/integrations/node_modules/dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/doctrine": {
- "version": "3.0.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/integrations/node_modules/dom-serializer": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "../services/libs/integrations/node_modules/domelementtype": {
- "version": "2.3.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "BSD-2-Clause"
- },
- "../services/libs/integrations/node_modules/domhandler": {
- "version": "5.0.3",
- "license": "BSD-2-Clause",
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "../services/libs/integrations/node_modules/domutils": {
- "version": "3.1.0",
- "license": "BSD-2-Clause",
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "../services/libs/integrations/node_modules/entities": {
- "version": "4.5.0",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "../services/libs/integrations/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/integrations/node_modules/eslint": {
- "version": "8.40.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/integrations/node_modules/eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "../services/libs/integrations/node_modules/eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
- },
- "peerDependenciesMeta": {
- "eslint-config-prettier": {
- "optional": true
- }
- }
- },
- "../services/libs/integrations/node_modules/eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "../services/libs/integrations/node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/integrations/node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/integrations/node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/integrations/node_modules/espree": {
- "version": "9.5.2",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/integrations/node_modules/esquery": {
- "version": "1.5.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "../services/libs/integrations/node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/integrations/node_modules/esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/integrations/node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/integrations/node_modules/estraverse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/integrations/node_modules/esutils": {
- "version": "2.0.3",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/integrations/node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/fast-diff": {
- "version": "1.2.0",
- "dev": true,
- "license": "Apache-2.0"
- },
- "../services/libs/integrations/node_modules/fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "../services/libs/integrations/node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "../services/libs/integrations/node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/fastq": {
- "version": "1.15.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "../services/libs/integrations/node_modules/file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/integrations/node_modules/fill-range": {
- "version": "7.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/find-up": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/integrations/node_modules/flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/integrations/node_modules/flatted": {
- "version": "3.2.7",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/integrations/node_modules/follow-redirects": {
- "version": "1.15.2",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "../services/libs/integrations/node_modules/form-data": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "../services/libs/integrations/node_modules/fs.realpath": {
- "version": "1.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/integrations/node_modules/glob": {
- "version": "7.2.3",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/integrations/node_modules/glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "../services/libs/integrations/node_modules/globals": {
- "version": "13.20.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/integrations/node_modules/globby": {
- "version": "11.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/integrations/node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/he": {
- "version": "1.2.0",
- "license": "MIT",
- "bin": {
- "he": "bin/he"
- }
- },
- "../services/libs/integrations/node_modules/htmlparser2": {
- "version": "8.0.2",
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "entities": "^4.4.0"
- }
- },
- "../services/libs/integrations/node_modules/ignore": {
- "version": "5.2.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "../services/libs/integrations/node_modules/import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/integrations/node_modules/imurmurhash": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "../services/libs/integrations/node_modules/inflight": {
- "version": "1.0.6",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "../services/libs/integrations/node_modules/inherits": {
- "version": "2.0.4",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/integrations/node_modules/is-extglob": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/integrations/node_modules/is-glob": {
- "version": "4.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/integrations/node_modules/is-number": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "../services/libs/integrations/node_modules/is-path-inside": {
- "version": "3.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/is-plain-object": {
- "version": "5.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/integrations/node_modules/isexe": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/integrations/node_modules/js-sdsl": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/js-sdsl"
- }
- },
- "../services/libs/integrations/node_modules/js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "../services/libs/integrations/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/levn": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/integrations/node_modules/locate-path": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/integrations/node_modules/lodash.merge": {
- "version": "4.6.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/integrations/node_modules/merge2": {
- "version": "1.4.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/integrations/node_modules/micromatch": {
- "version": "4.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "../services/libs/integrations/node_modules/mime-db": {
- "version": "1.52.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "../services/libs/integrations/node_modules/mime-types": {
- "version": "2.1.35",
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "../services/libs/integrations/node_modules/minimatch": {
- "version": "3.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "../services/libs/integrations/node_modules/ms": {
- "version": "2.1.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/nanoid": {
- "version": "3.3.6",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "../services/libs/integrations/node_modules/natural-compare": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/once": {
- "version": "1.4.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "../services/libs/integrations/node_modules/optionator": {
- "version": "0.9.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/integrations/node_modules/p-limit": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/integrations/node_modules/p-locate": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/integrations/node_modules/parent-module": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/integrations/node_modules/parse-srcset": {
- "version": "1.0.2",
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/path-is-absolute": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/integrations/node_modules/path-key": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/path-type": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/picocolors": {
- "version": "1.0.0",
- "license": "ISC"
- },
- "../services/libs/integrations/node_modules/picomatch": {
- "version": "2.3.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "../services/libs/integrations/node_modules/postcss": {
- "version": "8.4.23",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.6",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "../services/libs/integrations/node_modules/prelude-ls": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/integrations/node_modules/prettier": {
- "version": "2.8.8",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "../services/libs/integrations/node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/integrations/node_modules/proxy-from-env": {
- "version": "1.1.0",
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/punycode": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/integrations/node_modules/queue-microtask": {
- "version": "1.2.3",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/resolve-from": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "../services/libs/integrations/node_modules/reusify": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "../services/libs/integrations/node_modules/rimraf": {
- "version": "3.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/integrations/node_modules/run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "../services/libs/integrations/node_modules/sanitize-html": {
- "version": "2.10.0",
- "license": "MIT",
- "dependencies": {
- "deepmerge": "^4.2.2",
- "escape-string-regexp": "^4.0.0",
- "htmlparser2": "^8.0.0",
- "is-plain-object": "^5.0.0",
- "parse-srcset": "^1.0.2",
- "postcss": "^8.3.11"
- }
- },
- "../services/libs/integrations/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/integrations/node_modules/shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/shebang-regex": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/slash": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/source-map-js": {
- "version": "1.0.2",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/integrations/node_modules/strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/strip-json-comments": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/integrations/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/integrations/node_modules/text-table": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/integrations/node_modules/to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "../services/libs/integrations/node_modules/tslib": {
- "version": "1.14.1",
- "dev": true,
- "license": "0BSD"
- },
- "../services/libs/integrations/node_modules/tsutils": {
- "version": "3.21.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "../services/libs/integrations/node_modules/type-check": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/integrations/node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/integrations/node_modules/typescript": {
- "version": "5.0.4",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "../services/libs/integrations/node_modules/uri-js": {
- "version": "4.4.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "../services/libs/integrations/node_modules/which": {
- "version": "2.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/integrations/node_modules/word-wrap": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/integrations/node_modules/wrappy": {
- "version": "1.0.2",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/integrations/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/integrations/node_modules/yocto-queue": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/logging": {
- "name": "@crowd/logging",
- "version": "1.0.0",
- "dependencies": {
- "@crowd/common": "file:../common",
- "@crowd/tracing": "file:../tracing",
- "bunyan": "^1.8.15",
- "bunyan-format": "^0.2.1"
- },
- "devDependencies": {
- "@types/bunyan": "^1.8.8",
- "@types/bunyan-format": "^0.2.5",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- }
- },
- "../services/libs/logging/node_modules/@crowd/common": {
- "resolved": "../services/libs/common",
- "link": true
- },
- "../services/libs/logging/node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "../services/libs/logging/node_modules/@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "../services/libs/logging/node_modules/@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/logging/node_modules/@eslint/js": {
- "version": "8.40.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "../services/libs/logging/node_modules/@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "../services/libs/logging/node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "../services/libs/logging/node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "../services/libs/logging/node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/logging/node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/logging/node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/logging/node_modules/@types/bunyan": {
- "version": "1.8.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "../services/libs/logging/node_modules/@types/bunyan-format": {
- "version": "0.2.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "../services/libs/logging/node_modules/@types/json-schema": {
- "version": "7.0.11",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/@types/node": {
- "version": "18.16.8",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/@types/semver": {
- "version": "7.5.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/logging/node_modules/@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/logging/node_modules/@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/logging/node_modules/@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/logging/node_modules/@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/logging/node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/logging/node_modules/@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/logging/node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "../services/libs/logging/node_modules/@typescript-eslint/utils/node_modules/estraverse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/logging/node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/logging/node_modules/acorn": {
- "version": "8.8.2",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "../services/libs/logging/node_modules/acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/logging/node_modules/ajv": {
- "version": "6.12.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "../services/libs/logging/node_modules/ansi-regex": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "../services/libs/logging/node_modules/ansicolors": {
- "version": "0.2.1",
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/ansistyles": {
- "version": "0.1.3",
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/argparse": {
- "version": "2.0.1",
- "dev": true,
- "license": "Python-2.0"
- },
- "../services/libs/logging/node_modules/array-union": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/balanced-match": {
- "version": "1.0.2",
- "devOptional": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/brace-expansion": {
- "version": "1.1.11",
- "devOptional": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "../services/libs/logging/node_modules/braces": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/bunyan": {
- "version": "1.8.15",
- "engines": [
- "node >=0.10.0"
- ],
- "license": "MIT",
- "bin": {
- "bunyan": "bin/bunyan"
- },
- "optionalDependencies": {
- "dtrace-provider": "~0.8",
- "moment": "^2.19.3",
- "mv": "~2",
- "safe-json-stringify": "~1"
- }
- },
- "../services/libs/logging/node_modules/bunyan-format": {
- "version": "0.2.1",
- "license": "MIT",
- "dependencies": {
- "ansicolors": "~0.2.1",
- "ansistyles": "~0.1.1",
- "xtend": "~2.1.1"
- }
- },
- "../services/libs/logging/node_modules/callsites": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/logging/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "../services/libs/logging/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "../services/libs/logging/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/concat-map": {
- "version": "0.0.1",
- "devOptional": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/logging/node_modules/debug": {
- "version": "4.3.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "../services/libs/logging/node_modules/deep-is": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/doctrine": {
- "version": "3.0.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/logging/node_modules/dtrace-provider": {
- "version": "0.8.8",
- "hasInstallScript": true,
- "license": "BSD-2-Clause",
- "optional": true,
- "dependencies": {
- "nan": "^2.14.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "../services/libs/logging/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/logging/node_modules/eslint": {
- "version": "8.40.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/logging/node_modules/eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "../services/libs/logging/node_modules/eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
- },
- "peerDependenciesMeta": {
- "eslint-config-prettier": {
- "optional": true
- }
- }
- },
- "../services/libs/logging/node_modules/eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/logging/node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/logging/node_modules/espree": {
- "version": "9.5.2",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/logging/node_modules/esquery": {
- "version": "1.5.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "../services/libs/logging/node_modules/esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/logging/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/logging/node_modules/esutils": {
- "version": "2.0.3",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/logging/node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/fast-diff": {
- "version": "1.2.0",
- "dev": true,
- "license": "Apache-2.0"
- },
- "../services/libs/logging/node_modules/fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "../services/libs/logging/node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "../services/libs/logging/node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/fastq": {
- "version": "1.15.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "../services/libs/logging/node_modules/file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/logging/node_modules/fill-range": {
- "version": "7.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/find-up": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/logging/node_modules/flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/logging/node_modules/flatted": {
- "version": "3.2.7",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/logging/node_modules/fs.realpath": {
- "version": "1.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/logging/node_modules/glob": {
- "version": "7.2.3",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/logging/node_modules/glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "../services/libs/logging/node_modules/globals": {
- "version": "13.20.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/logging/node_modules/globby": {
- "version": "11.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/logging/node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/ignore": {
- "version": "5.2.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "../services/libs/logging/node_modules/import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/logging/node_modules/imurmurhash": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "../services/libs/logging/node_modules/inflight": {
- "version": "1.0.6",
- "devOptional": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "../services/libs/logging/node_modules/inherits": {
- "version": "2.0.4",
- "devOptional": true,
- "license": "ISC"
- },
- "../services/libs/logging/node_modules/is-extglob": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/logging/node_modules/is-glob": {
- "version": "4.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/logging/node_modules/is-number": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "../services/libs/logging/node_modules/is-path-inside": {
- "version": "3.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/isexe": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/logging/node_modules/js-sdsl": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/js-sdsl"
- }
- },
- "../services/libs/logging/node_modules/js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "../services/libs/logging/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/levn": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/logging/node_modules/locate-path": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/logging/node_modules/lodash.merge": {
- "version": "4.6.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/logging/node_modules/merge2": {
- "version": "1.4.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/logging/node_modules/micromatch": {
- "version": "4.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "../services/libs/logging/node_modules/minimatch": {
- "version": "3.1.2",
- "devOptional": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "../services/libs/logging/node_modules/minimist": {
- "version": "1.2.8",
- "license": "MIT",
- "optional": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "../services/libs/logging/node_modules/mkdirp": {
- "version": "0.5.6",
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "../services/libs/logging/node_modules/moment": {
- "version": "2.29.4",
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": "*"
- }
- },
- "../services/libs/logging/node_modules/ms": {
- "version": "2.1.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/mv": {
- "version": "2.1.1",
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "mkdirp": "~0.5.1",
- "ncp": "~2.0.0",
- "rimraf": "~2.4.0"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "../services/libs/logging/node_modules/mv/node_modules/glob": {
- "version": "6.0.4",
- "license": "ISC",
- "optional": true,
- "dependencies": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- }
- },
- "../services/libs/logging/node_modules/mv/node_modules/rimraf": {
- "version": "2.4.5",
- "license": "ISC",
- "optional": true,
- "dependencies": {
- "glob": "^6.0.1"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "../services/libs/logging/node_modules/nan": {
- "version": "2.17.0",
- "license": "MIT",
- "optional": true
- },
- "../services/libs/logging/node_modules/natural-compare": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/ncp": {
- "version": "2.0.0",
- "license": "MIT",
- "optional": true,
- "bin": {
- "ncp": "bin/ncp"
- }
- },
- "../services/libs/logging/node_modules/object-keys": {
- "version": "0.4.0",
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/once": {
- "version": "1.4.0",
- "devOptional": true,
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "../services/libs/logging/node_modules/optionator": {
- "version": "0.9.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/logging/node_modules/p-limit": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/logging/node_modules/p-locate": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/logging/node_modules/parent-module": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/logging/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/path-is-absolute": {
- "version": "1.0.1",
- "devOptional": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/logging/node_modules/path-key": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/path-type": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/picomatch": {
- "version": "2.3.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "../services/libs/logging/node_modules/prelude-ls": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/logging/node_modules/prettier": {
- "version": "2.8.8",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "../services/libs/logging/node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/logging/node_modules/punycode": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/logging/node_modules/queue-microtask": {
- "version": "1.2.3",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/resolve-from": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "../services/libs/logging/node_modules/reusify": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "../services/libs/logging/node_modules/rimraf": {
- "version": "3.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/logging/node_modules/run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "../services/libs/logging/node_modules/safe-json-stringify": {
- "version": "1.2.0",
- "license": "MIT",
- "optional": true
- },
- "../services/libs/logging/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/logging/node_modules/shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/shebang-regex": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/slash": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/strip-json-comments": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/logging/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/logging/node_modules/text-table": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/logging/node_modules/to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "../services/libs/logging/node_modules/tslib": {
- "version": "1.14.1",
- "dev": true,
- "license": "0BSD"
- },
- "../services/libs/logging/node_modules/tsutils": {
- "version": "3.21.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "../services/libs/logging/node_modules/type-check": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/logging/node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/logging/node_modules/typescript": {
- "version": "5.0.4",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "../services/libs/logging/node_modules/uri-js": {
- "version": "4.4.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "../services/libs/logging/node_modules/which": {
- "version": "2.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/logging/node_modules/word-wrap": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/logging/node_modules/wrappy": {
- "version": "1.0.2",
- "devOptional": true,
- "license": "ISC"
- },
- "../services/libs/logging/node_modules/xtend": {
- "version": "2.1.2",
- "dependencies": {
- "object-keys": "~0.4.0"
- },
- "engines": {
- "node": ">=0.4"
- }
- },
- "../services/libs/logging/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/logging/node_modules/yocto-queue": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/opensearch": {
- "name": "@crowd/opensearch",
- "version": "1.0.0",
- "dependencies": {
- "@crowd/types": "file:../types",
- "@opensearch-project/opensearch": "^1.2.0"
- },
- "devDependencies": {
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- }
- },
- "../services/libs/opensearch/node_modules/@crowd/types": {
- "resolved": "../services/libs/types",
- "link": true
- },
- "../services/libs/opensearch/node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "../services/libs/opensearch/node_modules/@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "../services/libs/opensearch/node_modules/@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/opensearch/node_modules/@eslint/js": {
- "version": "8.42.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "../services/libs/opensearch/node_modules/@humanwhocodes/config-array": {
- "version": "0.11.10",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "../services/libs/opensearch/node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "../services/libs/opensearch/node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "../services/libs/opensearch/node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/opensearch/node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/opensearch/node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/opensearch/node_modules/@opensearch-project/opensearch": {
- "version": "1.2.0",
- "license": "Apache-2.0",
- "dependencies": {
- "aws4": "^1.11.0",
- "debug": "^4.3.1",
- "hpagent": "^0.1.1",
- "ms": "^2.1.3",
- "secure-json-parse": "^2.4.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/opensearch/node_modules/@opensearch-project/opensearch/node_modules/ms": {
- "version": "2.1.3",
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/@types/json-schema": {
- "version": "7.0.12",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/@types/node": {
- "version": "18.16.18",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/@types/semver": {
- "version": "7.5.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.59.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/type-utils": "5.59.11",
- "@typescript-eslint/utils": "5.59.11",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/opensearch/node_modules/@typescript-eslint/parser": {
- "version": "5.59.11",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/typescript-estree": "5.59.11",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/opensearch/node_modules/@typescript-eslint/scope-manager": {
- "version": "5.59.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/visitor-keys": "5.59.11"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/opensearch/node_modules/@typescript-eslint/type-utils": {
- "version": "5.59.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "5.59.11",
- "@typescript-eslint/utils": "5.59.11",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/opensearch/node_modules/@typescript-eslint/types": {
- "version": "5.59.11",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/opensearch/node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.59.11",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/visitor-keys": "5.59.11",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/opensearch/node_modules/@typescript-eslint/utils": {
- "version": "5.59.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/typescript-estree": "5.59.11",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/opensearch/node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.59.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.11",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/opensearch/node_modules/acorn": {
- "version": "8.8.2",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "../services/libs/opensearch/node_modules/acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/opensearch/node_modules/ajv": {
- "version": "6.12.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "../services/libs/opensearch/node_modules/ansi-regex": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "../services/libs/opensearch/node_modules/argparse": {
- "version": "2.0.1",
- "dev": true,
- "license": "Python-2.0"
- },
- "../services/libs/opensearch/node_modules/array-union": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/aws4": {
- "version": "1.12.0",
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/balanced-match": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "../services/libs/opensearch/node_modules/braces": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/callsites": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/opensearch/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "../services/libs/opensearch/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "../services/libs/opensearch/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/concat-map": {
- "version": "0.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/opensearch/node_modules/debug": {
- "version": "4.3.4",
- "license": "MIT",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "../services/libs/opensearch/node_modules/deep-is": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/doctrine": {
- "version": "3.0.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/opensearch/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/opensearch/node_modules/eslint": {
- "version": "8.42.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.42.0",
- "@humanwhocodes/config-array": "^0.11.10",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/opensearch/node_modules/eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "../services/libs/opensearch/node_modules/eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
- },
- "peerDependenciesMeta": {
- "eslint-config-prettier": {
- "optional": true
- }
- }
- },
- "../services/libs/opensearch/node_modules/eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "../services/libs/opensearch/node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/opensearch/node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/opensearch/node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/opensearch/node_modules/espree": {
- "version": "9.5.2",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/opensearch/node_modules/esquery": {
- "version": "1.5.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "../services/libs/opensearch/node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/opensearch/node_modules/esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/opensearch/node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/opensearch/node_modules/estraverse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/opensearch/node_modules/esutils": {
- "version": "2.0.3",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/opensearch/node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/fast-diff": {
- "version": "1.3.0",
- "dev": true,
- "license": "Apache-2.0"
- },
- "../services/libs/opensearch/node_modules/fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "../services/libs/opensearch/node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "../services/libs/opensearch/node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/fastq": {
- "version": "1.15.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "../services/libs/opensearch/node_modules/file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/opensearch/node_modules/fill-range": {
- "version": "7.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/find-up": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/opensearch/node_modules/flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/opensearch/node_modules/flatted": {
- "version": "3.2.7",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/opensearch/node_modules/fs.realpath": {
- "version": "1.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/opensearch/node_modules/glob": {
- "version": "7.2.3",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/opensearch/node_modules/glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "../services/libs/opensearch/node_modules/globals": {
- "version": "13.20.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/opensearch/node_modules/globby": {
- "version": "11.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/opensearch/node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/graphemer": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/hpagent": {
- "version": "0.1.2",
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/ignore": {
- "version": "5.2.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "../services/libs/opensearch/node_modules/import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/opensearch/node_modules/imurmurhash": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "../services/libs/opensearch/node_modules/inflight": {
- "version": "1.0.6",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "../services/libs/opensearch/node_modules/inherits": {
- "version": "2.0.4",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/opensearch/node_modules/is-extglob": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/opensearch/node_modules/is-glob": {
- "version": "4.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/opensearch/node_modules/is-number": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "../services/libs/opensearch/node_modules/is-path-inside": {
- "version": "3.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/isexe": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/opensearch/node_modules/js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "../services/libs/opensearch/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/levn": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/opensearch/node_modules/locate-path": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/opensearch/node_modules/lodash.merge": {
- "version": "4.6.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/opensearch/node_modules/merge2": {
- "version": "1.4.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/opensearch/node_modules/micromatch": {
- "version": "4.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "../services/libs/opensearch/node_modules/minimatch": {
- "version": "3.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "../services/libs/opensearch/node_modules/ms": {
- "version": "2.1.2",
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/natural-compare": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/once": {
- "version": "1.4.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "../services/libs/opensearch/node_modules/optionator": {
- "version": "0.9.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/opensearch/node_modules/p-limit": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/opensearch/node_modules/p-locate": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/opensearch/node_modules/parent-module": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/opensearch/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/path-is-absolute": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/opensearch/node_modules/path-key": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/path-type": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/picomatch": {
- "version": "2.3.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "../services/libs/opensearch/node_modules/prelude-ls": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/opensearch/node_modules/prettier": {
- "version": "2.8.8",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "../services/libs/opensearch/node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/opensearch/node_modules/punycode": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/opensearch/node_modules/queue-microtask": {
- "version": "1.2.3",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/resolve-from": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "../services/libs/opensearch/node_modules/reusify": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "../services/libs/opensearch/node_modules/rimraf": {
- "version": "3.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/opensearch/node_modules/run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "../services/libs/opensearch/node_modules/secure-json-parse": {
- "version": "2.7.0",
- "license": "BSD-3-Clause"
- },
- "../services/libs/opensearch/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/opensearch/node_modules/shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/shebang-regex": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/slash": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/strip-json-comments": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/opensearch/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/opensearch/node_modules/text-table": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/opensearch/node_modules/to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "../services/libs/opensearch/node_modules/tslib": {
- "version": "1.14.1",
- "dev": true,
- "license": "0BSD"
- },
- "../services/libs/opensearch/node_modules/tsutils": {
- "version": "3.21.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "../services/libs/opensearch/node_modules/type-check": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/opensearch/node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/opensearch/node_modules/typescript": {
- "version": "5.1.3",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "../services/libs/opensearch/node_modules/uri-js": {
- "version": "4.4.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "../services/libs/opensearch/node_modules/which": {
- "version": "2.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/opensearch/node_modules/word-wrap": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/opensearch/node_modules/wrappy": {
- "version": "1.0.2",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/opensearch/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/opensearch/node_modules/yocto-queue": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/redis": {
- "name": "@crowd/redis",
- "version": "1.0.0",
- "dependencies": {
- "@crowd/common": "file:../common",
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "redis": "^4.6.6"
- },
- "devDependencies": {
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- }
- },
- "../services/libs/redis/node_modules/@crowd/common": {
- "resolved": "../services/libs/common",
- "link": true
- },
- "../services/libs/redis/node_modules/@crowd/logging": {
- "resolved": "../services/libs/logging",
- "link": true
- },
- "../services/libs/redis/node_modules/@crowd/types": {
- "resolved": "../services/libs/types",
- "link": true
- },
- "../services/libs/redis/node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "../services/libs/redis/node_modules/@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "../services/libs/redis/node_modules/@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/redis/node_modules/@eslint/js": {
- "version": "8.40.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "../services/libs/redis/node_modules/@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "../services/libs/redis/node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "../services/libs/redis/node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "../services/libs/redis/node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/redis/node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/redis/node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/redis/node_modules/@redis/bloom": {
- "version": "1.2.0",
- "license": "MIT",
- "peerDependencies": {
- "@redis/client": "^1.0.0"
- }
- },
- "../services/libs/redis/node_modules/@redis/client": {
- "version": "1.5.7",
- "license": "MIT",
- "dependencies": {
- "cluster-key-slot": "1.1.2",
- "generic-pool": "3.9.0",
- "yallist": "4.0.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "../services/libs/redis/node_modules/@redis/graph": {
- "version": "1.1.0",
- "license": "MIT",
- "peerDependencies": {
- "@redis/client": "^1.0.0"
- }
- },
- "../services/libs/redis/node_modules/@redis/json": {
- "version": "1.0.4",
- "license": "MIT",
- "peerDependencies": {
- "@redis/client": "^1.0.0"
- }
- },
- "../services/libs/redis/node_modules/@redis/search": {
- "version": "1.1.2",
- "license": "MIT",
- "peerDependencies": {
- "@redis/client": "^1.0.0"
- }
- },
- "../services/libs/redis/node_modules/@redis/time-series": {
- "version": "1.0.4",
- "license": "MIT",
- "peerDependencies": {
- "@redis/client": "^1.0.0"
- }
- },
- "../services/libs/redis/node_modules/@types/json-schema": {
- "version": "7.0.11",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/@types/node": {
- "version": "18.16.9",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/@types/semver": {
- "version": "7.5.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/redis/node_modules/@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/redis/node_modules/@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/redis/node_modules/@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/redis/node_modules/@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/redis/node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/redis/node_modules/@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/redis/node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "../services/libs/redis/node_modules/@typescript-eslint/utils/node_modules/estraverse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/redis/node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/redis/node_modules/acorn": {
- "version": "8.8.2",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "../services/libs/redis/node_modules/acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/redis/node_modules/ajv": {
- "version": "6.12.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "../services/libs/redis/node_modules/ansi-regex": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "../services/libs/redis/node_modules/argparse": {
- "version": "2.0.1",
- "dev": true,
- "license": "Python-2.0"
- },
- "../services/libs/redis/node_modules/array-union": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/balanced-match": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "../services/libs/redis/node_modules/braces": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/callsites": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/redis/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "../services/libs/redis/node_modules/cluster-key-slot": {
- "version": "1.1.2",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/redis/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "../services/libs/redis/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/concat-map": {
- "version": "0.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/redis/node_modules/debug": {
- "version": "4.3.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "../services/libs/redis/node_modules/deep-is": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/doctrine": {
- "version": "3.0.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/redis/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/redis/node_modules/eslint": {
- "version": "8.40.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/redis/node_modules/eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "../services/libs/redis/node_modules/eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
- },
- "peerDependenciesMeta": {
- "eslint-config-prettier": {
- "optional": true
- }
- }
- },
- "../services/libs/redis/node_modules/eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/redis/node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/redis/node_modules/espree": {
- "version": "9.5.2",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/redis/node_modules/esquery": {
- "version": "1.5.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "../services/libs/redis/node_modules/esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/redis/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/redis/node_modules/esutils": {
- "version": "2.0.3",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/redis/node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/fast-diff": {
- "version": "1.2.0",
- "dev": true,
- "license": "Apache-2.0"
- },
- "../services/libs/redis/node_modules/fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "../services/libs/redis/node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "../services/libs/redis/node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/fastq": {
- "version": "1.15.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "../services/libs/redis/node_modules/file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/redis/node_modules/fill-range": {
- "version": "7.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/find-up": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/redis/node_modules/flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/redis/node_modules/flatted": {
- "version": "3.2.7",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/redis/node_modules/fs.realpath": {
- "version": "1.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/redis/node_modules/generic-pool": {
- "version": "3.9.0",
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "../services/libs/redis/node_modules/glob": {
- "version": "7.2.3",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/redis/node_modules/glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "../services/libs/redis/node_modules/globals": {
- "version": "13.20.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/redis/node_modules/globby": {
- "version": "11.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/redis/node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/ignore": {
- "version": "5.2.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "../services/libs/redis/node_modules/import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/redis/node_modules/imurmurhash": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "../services/libs/redis/node_modules/inflight": {
- "version": "1.0.6",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "../services/libs/redis/node_modules/inherits": {
- "version": "2.0.4",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/redis/node_modules/is-extglob": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/redis/node_modules/is-glob": {
- "version": "4.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/redis/node_modules/is-number": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "../services/libs/redis/node_modules/is-path-inside": {
- "version": "3.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/isexe": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/redis/node_modules/js-sdsl": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/js-sdsl"
- }
- },
- "../services/libs/redis/node_modules/js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "../services/libs/redis/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/levn": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/redis/node_modules/locate-path": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/redis/node_modules/lodash.merge": {
- "version": "4.6.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/redis/node_modules/merge2": {
- "version": "1.4.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/redis/node_modules/micromatch": {
- "version": "4.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "../services/libs/redis/node_modules/minimatch": {
- "version": "3.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "../services/libs/redis/node_modules/ms": {
- "version": "2.1.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/natural-compare": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/once": {
- "version": "1.4.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "../services/libs/redis/node_modules/optionator": {
- "version": "0.9.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/redis/node_modules/p-limit": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/redis/node_modules/p-locate": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/redis/node_modules/parent-module": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/redis/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/path-is-absolute": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/redis/node_modules/path-key": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/path-type": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/picomatch": {
- "version": "2.3.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "../services/libs/redis/node_modules/prelude-ls": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/redis/node_modules/prettier": {
- "version": "2.8.8",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "../services/libs/redis/node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/redis/node_modules/punycode": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/redis/node_modules/queue-microtask": {
- "version": "1.2.3",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/redis": {
- "version": "4.6.6",
- "license": "MIT",
- "workspaces": [
- "./packages/*"
- ],
- "dependencies": {
- "@redis/bloom": "1.2.0",
- "@redis/client": "1.5.7",
- "@redis/graph": "1.1.0",
- "@redis/json": "1.0.4",
- "@redis/search": "1.1.2",
- "@redis/time-series": "1.0.4"
- }
- },
- "../services/libs/redis/node_modules/resolve-from": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "../services/libs/redis/node_modules/reusify": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "../services/libs/redis/node_modules/rimraf": {
- "version": "3.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/redis/node_modules/run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "../services/libs/redis/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/redis/node_modules/shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/shebang-regex": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/slash": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/strip-json-comments": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/redis/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/redis/node_modules/text-table": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/redis/node_modules/to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "../services/libs/redis/node_modules/tslib": {
- "version": "1.14.1",
- "dev": true,
- "license": "0BSD"
- },
- "../services/libs/redis/node_modules/tsutils": {
- "version": "3.21.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "../services/libs/redis/node_modules/type-check": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/redis/node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/redis/node_modules/typescript": {
- "version": "5.0.4",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "../services/libs/redis/node_modules/uri-js": {
- "version": "4.4.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "../services/libs/redis/node_modules/which": {
- "version": "2.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/redis/node_modules/word-wrap": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/redis/node_modules/wrappy": {
- "version": "1.0.2",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/redis/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "../services/libs/redis/node_modules/yocto-queue": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/sqs": {
- "name": "@crowd/sqs",
- "version": "1.0.0",
- "dependencies": {
- "@aws-sdk/client-sqs": "^3.332.0",
- "@aws-sdk/types": "^3.329.0",
- "@crowd/common": "file:../common",
- "@crowd/logging": "file:../logging",
- "@crowd/tracing": "file:../tracing",
- "@crowd/types": "file:../types",
- "@smithy/util-retry": "^2.0.1"
- },
- "devDependencies": {
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- }
- },
- "../services/libs/sqs/node_modules/@aws-crypto/ie11-detection": {
- "version": "3.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^1.11.1"
- }
- },
- "../services/libs/sqs/node_modules/@aws-crypto/ie11-detection/node_modules/tslib": {
- "version": "1.14.1",
- "license": "0BSD"
- },
- "../services/libs/sqs/node_modules/@aws-crypto/sha256-browser": {
- "version": "3.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/ie11-detection": "^3.0.0",
- "@aws-crypto/sha256-js": "^3.0.0",
- "@aws-crypto/supports-web-crypto": "^3.0.0",
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-locate-window": "^3.0.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
- }
- },
- "../services/libs/sqs/node_modules/@aws-crypto/sha256-browser/node_modules/tslib": {
- "version": "1.14.1",
- "license": "0BSD"
- },
- "../services/libs/sqs/node_modules/@aws-crypto/sha256-js": {
- "version": "3.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^1.11.1"
- }
- },
- "../services/libs/sqs/node_modules/@aws-crypto/sha256-js/node_modules/tslib": {
- "version": "1.14.1",
- "license": "0BSD"
- },
- "../services/libs/sqs/node_modules/@aws-crypto/supports-web-crypto": {
- "version": "3.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^1.11.1"
- }
- },
- "../services/libs/sqs/node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": {
- "version": "1.14.1",
- "license": "0BSD"
- },
- "../services/libs/sqs/node_modules/@aws-crypto/util": {
- "version": "3.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
- }
- },
- "../services/libs/sqs/node_modules/@aws-crypto/util/node_modules/tslib": {
- "version": "1.14.1",
- "license": "0BSD"
- },
- "../services/libs/sqs/node_modules/@aws-sdk/abort-controller": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/client-sqs": {
- "version": "3.332.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.332.0",
- "@aws-sdk/config-resolver": "3.329.0",
- "@aws-sdk/credential-provider-node": "3.332.0",
- "@aws-sdk/fetch-http-handler": "3.329.0",
- "@aws-sdk/hash-node": "3.329.0",
- "@aws-sdk/invalid-dependency": "3.329.0",
- "@aws-sdk/md5-js": "3.329.0",
- "@aws-sdk/middleware-content-length": "3.329.0",
- "@aws-sdk/middleware-endpoint": "3.329.0",
- "@aws-sdk/middleware-host-header": "3.329.0",
- "@aws-sdk/middleware-logger": "3.329.0",
- "@aws-sdk/middleware-recursion-detection": "3.329.0",
- "@aws-sdk/middleware-retry": "3.329.0",
- "@aws-sdk/middleware-sdk-sqs": "3.329.0",
- "@aws-sdk/middleware-serde": "3.329.0",
- "@aws-sdk/middleware-signing": "3.329.0",
- "@aws-sdk/middleware-stack": "3.329.0",
- "@aws-sdk/middleware-user-agent": "3.332.0",
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/node-http-handler": "3.329.0",
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/smithy-client": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/url-parser": "3.329.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.329.0",
- "@aws-sdk/util-defaults-mode-node": "3.329.0",
- "@aws-sdk/util-endpoints": "3.332.0",
- "@aws-sdk/util-retry": "3.329.0",
- "@aws-sdk/util-user-agent-browser": "3.329.0",
- "@aws-sdk/util-user-agent-node": "3.329.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "fast-xml-parser": "4.1.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/client-sso": {
- "version": "3.332.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.329.0",
- "@aws-sdk/fetch-http-handler": "3.329.0",
- "@aws-sdk/hash-node": "3.329.0",
- "@aws-sdk/invalid-dependency": "3.329.0",
- "@aws-sdk/middleware-content-length": "3.329.0",
- "@aws-sdk/middleware-endpoint": "3.329.0",
- "@aws-sdk/middleware-host-header": "3.329.0",
- "@aws-sdk/middleware-logger": "3.329.0",
- "@aws-sdk/middleware-recursion-detection": "3.329.0",
- "@aws-sdk/middleware-retry": "3.329.0",
- "@aws-sdk/middleware-serde": "3.329.0",
- "@aws-sdk/middleware-stack": "3.329.0",
- "@aws-sdk/middleware-user-agent": "3.332.0",
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/node-http-handler": "3.329.0",
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/smithy-client": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/url-parser": "3.329.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.329.0",
- "@aws-sdk/util-defaults-mode-node": "3.329.0",
- "@aws-sdk/util-endpoints": "3.332.0",
- "@aws-sdk/util-retry": "3.329.0",
- "@aws-sdk/util-user-agent-browser": "3.329.0",
- "@aws-sdk/util-user-agent-node": "3.329.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/client-sso-oidc": {
- "version": "3.332.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.329.0",
- "@aws-sdk/fetch-http-handler": "3.329.0",
- "@aws-sdk/hash-node": "3.329.0",
- "@aws-sdk/invalid-dependency": "3.329.0",
- "@aws-sdk/middleware-content-length": "3.329.0",
- "@aws-sdk/middleware-endpoint": "3.329.0",
- "@aws-sdk/middleware-host-header": "3.329.0",
- "@aws-sdk/middleware-logger": "3.329.0",
- "@aws-sdk/middleware-recursion-detection": "3.329.0",
- "@aws-sdk/middleware-retry": "3.329.0",
- "@aws-sdk/middleware-serde": "3.329.0",
- "@aws-sdk/middleware-stack": "3.329.0",
- "@aws-sdk/middleware-user-agent": "3.332.0",
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/node-http-handler": "3.329.0",
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/smithy-client": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/url-parser": "3.329.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.329.0",
- "@aws-sdk/util-defaults-mode-node": "3.329.0",
- "@aws-sdk/util-endpoints": "3.332.0",
- "@aws-sdk/util-retry": "3.329.0",
- "@aws-sdk/util-user-agent-browser": "3.329.0",
- "@aws-sdk/util-user-agent-node": "3.329.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/client-sts": {
- "version": "3.332.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.329.0",
- "@aws-sdk/credential-provider-node": "3.332.0",
- "@aws-sdk/fetch-http-handler": "3.329.0",
- "@aws-sdk/hash-node": "3.329.0",
- "@aws-sdk/invalid-dependency": "3.329.0",
- "@aws-sdk/middleware-content-length": "3.329.0",
- "@aws-sdk/middleware-endpoint": "3.329.0",
- "@aws-sdk/middleware-host-header": "3.329.0",
- "@aws-sdk/middleware-logger": "3.329.0",
- "@aws-sdk/middleware-recursion-detection": "3.329.0",
- "@aws-sdk/middleware-retry": "3.329.0",
- "@aws-sdk/middleware-sdk-sts": "3.329.0",
- "@aws-sdk/middleware-serde": "3.329.0",
- "@aws-sdk/middleware-signing": "3.329.0",
- "@aws-sdk/middleware-stack": "3.329.0",
- "@aws-sdk/middleware-user-agent": "3.332.0",
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/node-http-handler": "3.329.0",
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/smithy-client": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/url-parser": "3.329.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.329.0",
- "@aws-sdk/util-defaults-mode-node": "3.329.0",
- "@aws-sdk/util-endpoints": "3.332.0",
- "@aws-sdk/util-retry": "3.329.0",
- "@aws-sdk/util-user-agent-browser": "3.329.0",
- "@aws-sdk/util-user-agent-node": "3.329.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "fast-xml-parser": "4.1.2",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/config-resolver": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-config-provider": "3.310.0",
- "@aws-sdk/util-middleware": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/credential-provider-imds": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/url-parser": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.332.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/credential-provider-env": "3.329.0",
- "@aws-sdk/credential-provider-imds": "3.329.0",
- "@aws-sdk/credential-provider-process": "3.329.0",
- "@aws-sdk/credential-provider-sso": "3.332.0",
- "@aws-sdk/credential-provider-web-identity": "3.329.0",
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/shared-ini-file-loader": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.332.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/credential-provider-env": "3.329.0",
- "@aws-sdk/credential-provider-imds": "3.329.0",
- "@aws-sdk/credential-provider-ini": "3.332.0",
- "@aws-sdk/credential-provider-process": "3.329.0",
- "@aws-sdk/credential-provider-sso": "3.332.0",
- "@aws-sdk/credential-provider-web-identity": "3.329.0",
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/shared-ini-file-loader": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/shared-ini-file-loader": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.332.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/client-sso": "3.332.0",
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/shared-ini-file-loader": "3.329.0",
- "@aws-sdk/token-providers": "3.332.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/fetch-http-handler": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/querystring-builder": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-base64": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/hash-node": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-buffer-from": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/invalid-dependency": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/is-array-buffer": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/md5-js": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/middleware-content-length": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/middleware-endpoint": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/middleware-serde": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/url-parser": "3.329.0",
- "@aws-sdk/util-middleware": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/middleware-logger": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/middleware-retry": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/service-error-classification": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-middleware": "3.329.0",
- "@aws-sdk/util-retry": "3.329.0",
- "tslib": "^2.5.0",
- "uuid": "^8.3.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/middleware-sdk-sqs": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-hex-encoding": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/middleware-sdk-sts": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/middleware-signing": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/middleware-serde": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/middleware-signing": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/signature-v4": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-middleware": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/middleware-stack": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.332.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-endpoints": "3.332.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/node-config-provider": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/shared-ini-file-loader": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/node-http-handler": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/abort-controller": "3.329.0",
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/querystring-builder": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/property-provider": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/protocol-http": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/querystring-builder": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-uri-escape": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/querystring-parser": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/service-error-classification": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/shared-ini-file-loader": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/signature-v4": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/is-array-buffer": "3.310.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-hex-encoding": "3.310.0",
- "@aws-sdk/util-middleware": "3.329.0",
- "@aws-sdk/util-uri-escape": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/smithy-client": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/middleware-stack": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/token-providers": {
- "version": "3.332.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/client-sso-oidc": "3.332.0",
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/shared-ini-file-loader": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/types": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/url-parser": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/querystring-parser": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-base64": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/util-buffer-from": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-body-length-browser": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-body-length-node": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-buffer-from": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/is-array-buffer": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-config-provider": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-defaults-mode-browser": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "bowser": "^2.11.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-defaults-mode-node": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/config-resolver": "3.329.0",
- "@aws-sdk/credential-provider-imds": "3.329.0",
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-endpoints": {
- "version": "3.332.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-hex-encoding": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-locate-window": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-middleware": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-retry": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/service-error-classification": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-uri-escape": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.329.0",
- "bowser": "^2.11.0",
- "tslib": "^2.5.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.329.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "aws-crt": ">=1.0.0"
- },
- "peerDependenciesMeta": {
- "aws-crt": {
- "optional": true
- }
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-utf8": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/util-buffer-from": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@aws-sdk/util-utf8-browser": {
- "version": "3.259.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.3.1"
- }
- },
- "../services/libs/sqs/node_modules/@crowd/common": {
- "resolved": "../services/libs/common",
- "link": true
- },
- "../services/libs/sqs/node_modules/@crowd/logging": {
- "resolved": "../services/libs/logging",
- "link": true
- },
- "../services/libs/sqs/node_modules/@crowd/types": {
- "resolved": "../services/libs/types",
- "link": true
- },
- "../services/libs/sqs/node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/sqs/node_modules/@eslint/js": {
- "version": "8.40.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "../services/libs/sqs/node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "../services/libs/sqs/node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "../services/libs/sqs/node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/sqs/node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/sqs/node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/sqs/node_modules/@types/json-schema": {
- "version": "7.0.11",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/@types/node": {
- "version": "18.16.8",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/@types/semver": {
- "version": "7.5.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/type-utils": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/sqs/node_modules/@typescript-eslint/parser": {
- "version": "5.59.5",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/sqs/node_modules/@typescript-eslint/scope-manager": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/sqs/node_modules/@typescript-eslint/type-utils": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/sqs/node_modules/@typescript-eslint/types": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/sqs/node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.59.5",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/sqs/node_modules/@typescript-eslint/utils": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "../services/libs/sqs/node_modules/@typescript-eslint/utils/node_modules/estraverse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/sqs/node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.5",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/sqs/node_modules/acorn": {
- "version": "8.8.2",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "../services/libs/sqs/node_modules/acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/sqs/node_modules/ajv": {
- "version": "6.12.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "../services/libs/sqs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "../services/libs/sqs/node_modules/argparse": {
- "version": "2.0.1",
- "dev": true,
- "license": "Python-2.0"
- },
- "../services/libs/sqs/node_modules/array-union": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/balanced-match": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/bowser": {
- "version": "2.11.0",
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "../services/libs/sqs/node_modules/braces": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/callsites": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/sqs/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "../services/libs/sqs/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "../services/libs/sqs/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/concat-map": {
- "version": "0.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/sqs/node_modules/debug": {
- "version": "4.3.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "../services/libs/sqs/node_modules/deep-is": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/doctrine": {
- "version": "3.0.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/sqs/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/sqs/node_modules/eslint": {
- "version": "8.40.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/sqs/node_modules/eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "../services/libs/sqs/node_modules/eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
- },
- "peerDependenciesMeta": {
- "eslint-config-prettier": {
- "optional": true
- }
- }
- },
- "../services/libs/sqs/node_modules/eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/sqs/node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/sqs/node_modules/espree": {
- "version": "9.5.2",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/sqs/node_modules/esquery": {
- "version": "1.5.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "../services/libs/sqs/node_modules/esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/sqs/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/sqs/node_modules/esutils": {
- "version": "2.0.3",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/sqs/node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/fast-diff": {
- "version": "1.2.0",
- "dev": true,
- "license": "Apache-2.0"
- },
- "../services/libs/sqs/node_modules/fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "../services/libs/sqs/node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "../services/libs/sqs/node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/fast-xml-parser": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "strnum": "^1.0.5"
- },
- "bin": {
- "fxparser": "src/cli/cli.js"
- },
- "funding": {
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
- }
- },
- "../services/libs/sqs/node_modules/fastq": {
- "version": "1.15.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "../services/libs/sqs/node_modules/file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/sqs/node_modules/fill-range": {
- "version": "7.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/find-up": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/sqs/node_modules/flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/sqs/node_modules/flatted": {
- "version": "3.2.7",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/sqs/node_modules/fs.realpath": {
- "version": "1.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/sqs/node_modules/glob": {
- "version": "7.2.3",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/sqs/node_modules/glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "../services/libs/sqs/node_modules/globals": {
- "version": "13.20.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/sqs/node_modules/globby": {
- "version": "11.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/sqs/node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/ignore": {
- "version": "5.2.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "../services/libs/sqs/node_modules/import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/sqs/node_modules/imurmurhash": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "../services/libs/sqs/node_modules/inflight": {
- "version": "1.0.6",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "../services/libs/sqs/node_modules/inherits": {
- "version": "2.0.4",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/sqs/node_modules/is-extglob": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/sqs/node_modules/is-glob": {
- "version": "4.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/sqs/node_modules/is-number": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "../services/libs/sqs/node_modules/is-path-inside": {
- "version": "3.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/isexe": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/sqs/node_modules/js-sdsl": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/js-sdsl"
- }
- },
- "../services/libs/sqs/node_modules/js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "../services/libs/sqs/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/levn": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/sqs/node_modules/locate-path": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/sqs/node_modules/lodash.merge": {
- "version": "4.6.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/sqs/node_modules/merge2": {
- "version": "1.4.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/sqs/node_modules/micromatch": {
- "version": "4.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "../services/libs/sqs/node_modules/minimatch": {
- "version": "3.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "../services/libs/sqs/node_modules/ms": {
- "version": "2.1.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/natural-compare": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/once": {
- "version": "1.4.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "../services/libs/sqs/node_modules/optionator": {
- "version": "0.9.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/sqs/node_modules/p-limit": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/sqs/node_modules/p-locate": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/sqs/node_modules/parent-module": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/sqs/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/path-is-absolute": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/sqs/node_modules/path-key": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/path-type": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/picomatch": {
- "version": "2.3.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "../services/libs/sqs/node_modules/prelude-ls": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/sqs/node_modules/prettier": {
- "version": "2.8.8",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "../services/libs/sqs/node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/sqs/node_modules/punycode": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/sqs/node_modules/queue-microtask": {
- "version": "1.2.3",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/resolve-from": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "../services/libs/sqs/node_modules/reusify": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "../services/libs/sqs/node_modules/rimraf": {
- "version": "3.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/sqs/node_modules/run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "../services/libs/sqs/node_modules/semver": {
- "version": "7.5.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/sqs/node_modules/shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/shebang-regex": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/slash": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/strip-json-comments": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/sqs/node_modules/strnum": {
- "version": "1.0.5",
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/sqs/node_modules/text-table": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/sqs/node_modules/to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "../services/libs/sqs/node_modules/tslib": {
- "version": "2.5.0",
- "license": "0BSD"
- },
- "../services/libs/sqs/node_modules/tsutils": {
- "version": "3.21.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "../services/libs/sqs/node_modules/tsutils/node_modules/tslib": {
- "version": "1.14.1",
- "dev": true,
- "license": "0BSD"
- },
- "../services/libs/sqs/node_modules/type-check": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/sqs/node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/sqs/node_modules/typescript": {
- "version": "5.0.4",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "../services/libs/sqs/node_modules/uri-js": {
- "version": "4.4.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "../services/libs/sqs/node_modules/uuid": {
- "version": "8.3.2",
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "../services/libs/sqs/node_modules/which": {
- "version": "2.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/sqs/node_modules/word-wrap": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/sqs/node_modules/wrappy": {
- "version": "1.0.2",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/sqs/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/sqs/node_modules/yocto-queue": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/tracing": {
- "name": "@crowd/tracing",
- "version": "1.0.0",
- "dependencies": {
- "@crowd/common": "file:../common",
- "@opentelemetry/api": "~1.6.0",
- "@opentelemetry/exporter-trace-otlp-grpc": "~0.43.0",
- "@opentelemetry/instrumentation-aws-sdk": "~0.36.0",
- "@opentelemetry/instrumentation-bunyan": "~0.32.1",
- "@opentelemetry/instrumentation-express": "~0.33.1",
- "@opentelemetry/instrumentation-http": "~0.43.0",
- "@opentelemetry/instrumentation-redis": "~0.35.1",
- "@opentelemetry/resource-detector-aws": "~1.3.1",
- "@opentelemetry/resources": "~1.17.0",
- "@opentelemetry/sdk-node": "~0.43.0",
- "@opentelemetry/semantic-conventions": "~1.17.0",
- "opentelemetry-instrumentation-sequelize": "~0.39.1"
- },
- "devDependencies": {
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- }
- },
- "../services/libs/types": {
- "name": "@crowd/types",
- "version": "1.0.0",
- "devDependencies": {
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- }
- },
- "../services/libs/types/node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "../services/libs/types/node_modules/@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "../services/libs/types/node_modules/@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/types/node_modules/@eslint/js": {
- "version": "8.40.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "../services/libs/types/node_modules/@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "../services/libs/types/node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "../services/libs/types/node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "../services/libs/types/node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/types/node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/types/node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/types/node_modules/@types/json-schema": {
- "version": "7.0.11",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/@types/node": {
- "version": "18.16.9",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/@types/semver": {
- "version": "7.5.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/type-utils": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/types/node_modules/@typescript-eslint/parser": {
- "version": "5.59.5",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/types/node_modules/@typescript-eslint/scope-manager": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/types/node_modules/@typescript-eslint/type-utils": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/types/node_modules/@typescript-eslint/types": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/types/node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.59.5",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "../services/libs/types/node_modules/@typescript-eslint/utils": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/types/node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.59.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.59.5",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "../services/libs/types/node_modules/acorn": {
- "version": "8.8.2",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "../services/libs/types/node_modules/acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "../services/libs/types/node_modules/ajv": {
- "version": "6.12.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "../services/libs/types/node_modules/ansi-regex": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "../services/libs/types/node_modules/argparse": {
- "version": "2.0.1",
- "dev": true,
- "license": "Python-2.0"
- },
- "../services/libs/types/node_modules/array-union": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/balanced-match": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "../services/libs/types/node_modules/braces": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/callsites": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/types/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "../services/libs/types/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "../services/libs/types/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/concat-map": {
- "version": "0.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/types/node_modules/debug": {
- "version": "4.3.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "../services/libs/types/node_modules/deep-is": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/doctrine": {
- "version": "3.0.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/types/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/types/node_modules/eslint": {
- "version": "8.40.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/types/node_modules/eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "../services/libs/types/node_modules/eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
- },
- "peerDependenciesMeta": {
- "eslint-config-prettier": {
- "optional": true
- }
- }
- },
- "../services/libs/types/node_modules/eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "../services/libs/types/node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/types/node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/types/node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/types/node_modules/espree": {
- "version": "9.5.2",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "../services/libs/types/node_modules/esquery": {
- "version": "1.5.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "../services/libs/types/node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/types/node_modules/esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/types/node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/types/node_modules/estraverse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "../services/libs/types/node_modules/esutils": {
- "version": "2.0.3",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/types/node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/fast-diff": {
- "version": "1.2.0",
- "dev": true,
- "license": "Apache-2.0"
- },
- "../services/libs/types/node_modules/fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "../services/libs/types/node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "../services/libs/types/node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/fastq": {
- "version": "1.15.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "../services/libs/types/node_modules/file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/types/node_modules/fill-range": {
- "version": "7.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/find-up": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/types/node_modules/flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "../services/libs/types/node_modules/flatted": {
- "version": "3.2.7",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/types/node_modules/fs.realpath": {
- "version": "1.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/types/node_modules/glob": {
- "version": "7.2.3",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/types/node_modules/glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "../services/libs/types/node_modules/globals": {
- "version": "13.20.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/types/node_modules/globby": {
- "version": "11.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/types/node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/ignore": {
- "version": "5.2.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "../services/libs/types/node_modules/import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/types/node_modules/imurmurhash": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "../services/libs/types/node_modules/inflight": {
- "version": "1.0.6",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "../services/libs/types/node_modules/inherits": {
- "version": "2.0.4",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/types/node_modules/is-extglob": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/types/node_modules/is-glob": {
- "version": "4.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/types/node_modules/is-number": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "../services/libs/types/node_modules/is-path-inside": {
- "version": "3.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/isexe": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/types/node_modules/js-sdsl": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/js-sdsl"
- }
- },
- "../services/libs/types/node_modules/js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "../services/libs/types/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/levn": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/types/node_modules/locate-path": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/types/node_modules/lodash.merge": {
- "version": "4.6.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/types/node_modules/merge2": {
- "version": "1.4.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/types/node_modules/micromatch": {
- "version": "4.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "../services/libs/types/node_modules/minimatch": {
- "version": "3.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "../services/libs/types/node_modules/ms": {
- "version": "2.1.2",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/natural-compare": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/once": {
- "version": "1.4.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "../services/libs/types/node_modules/optionator": {
- "version": "0.9.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/types/node_modules/p-limit": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/types/node_modules/p-locate": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/types/node_modules/parent-module": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/types/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/path-is-absolute": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/types/node_modules/path-key": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/path-type": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/picomatch": {
- "version": "2.3.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "../services/libs/types/node_modules/prelude-ls": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/types/node_modules/prettier": {
- "version": "2.8.8",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "../services/libs/types/node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "../services/libs/types/node_modules/punycode": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "../services/libs/types/node_modules/queue-microtask": {
- "version": "1.2.3",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "../services/libs/types/node_modules/resolve-from": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "../services/libs/types/node_modules/reusify": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "../services/libs/types/node_modules/rimraf": {
- "version": "3.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "../services/libs/types/node_modules/run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "../services/libs/types/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "../services/libs/types/node_modules/shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/shebang-regex": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/slash": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/strip-json-comments": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/types/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "../services/libs/types/node_modules/text-table": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT"
- },
- "../services/libs/types/node_modules/to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "../services/libs/types/node_modules/tslib": {
- "version": "1.14.1",
- "dev": true,
- "license": "0BSD"
- },
- "../services/libs/types/node_modules/tsutils": {
- "version": "3.21.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "../services/libs/types/node_modules/type-check": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "../services/libs/types/node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "../services/libs/types/node_modules/typescript": {
- "version": "5.0.4",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=12.20"
- }
- },
- "../services/libs/types/node_modules/uri-js": {
- "version": "4.4.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "../services/libs/types/node_modules/which": {
- "version": "2.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "../services/libs/types/node_modules/word-wrap": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "../services/libs/types/node_modules/wrappy": {
- "version": "1.0.2",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/types/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "../services/libs/types/node_modules/yocto-queue": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@actions/core": {
- "version": "1.10.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@actions/http-client": "^2.0.1",
- "uuid": "^8.3.2"
- }
- },
- "node_modules/@actions/core/node_modules/uuid": {
- "version": "8.3.2",
- "dev": true,
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/@actions/http-client": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tunnel": "^0.0.6"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.2.1",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@apidevtools/openapi-schemas": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@apidevtools/swagger-methods": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@aws-crypto/crc32": {
- "version": "3.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/crc32/node_modules/tslib": {
- "version": "1.14.1",
- "license": "0BSD"
- },
- "node_modules/@aws-crypto/ie11-detection": {
- "version": "3.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": {
- "version": "1.14.1",
- "license": "0BSD"
- },
- "node_modules/@aws-crypto/sha256-browser": {
- "version": "3.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/ie11-detection": "^3.0.0",
- "@aws-crypto/sha256-js": "^3.0.0",
- "@aws-crypto/supports-web-crypto": "^3.0.0",
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-locate-window": "^3.0.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": {
- "version": "1.14.1",
- "license": "0BSD"
- },
- "node_modules/@aws-crypto/sha256-js": {
- "version": "3.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/sha256-js/node_modules/tslib": {
- "version": "1.14.1",
- "license": "0BSD"
- },
- "node_modules/@aws-crypto/supports-web-crypto": {
- "version": "3.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": {
- "version": "1.14.1",
- "license": "0BSD"
- },
- "node_modules/@aws-crypto/util": {
- "version": "3.0.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
- }
- },
- "node_modules/@aws-crypto/util/node_modules/tslib": {
- "version": "1.14.1",
- "license": "0BSD"
- },
- "node_modules/@aws-sdk/abort-controller": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/client-comprehend": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.357.0",
- "@aws-sdk/config-resolver": "3.357.0",
- "@aws-sdk/credential-provider-node": "3.357.0",
- "@aws-sdk/fetch-http-handler": "3.357.0",
- "@aws-sdk/hash-node": "3.357.0",
- "@aws-sdk/invalid-dependency": "3.357.0",
- "@aws-sdk/middleware-content-length": "3.357.0",
- "@aws-sdk/middleware-endpoint": "3.357.0",
- "@aws-sdk/middleware-host-header": "3.357.0",
- "@aws-sdk/middleware-logger": "3.357.0",
- "@aws-sdk/middleware-recursion-detection": "3.357.0",
- "@aws-sdk/middleware-retry": "3.357.0",
- "@aws-sdk/middleware-serde": "3.357.0",
- "@aws-sdk/middleware-signing": "3.357.0",
- "@aws-sdk/middleware-stack": "3.357.0",
- "@aws-sdk/middleware-user-agent": "3.357.0",
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/node-http-handler": "3.357.0",
- "@aws-sdk/smithy-client": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/url-parser": "3.357.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.357.0",
- "@aws-sdk/util-defaults-mode-node": "3.357.0",
- "@aws-sdk/util-endpoints": "3.357.0",
- "@aws-sdk/util-retry": "3.357.0",
- "@aws-sdk/util-user-agent-browser": "3.357.0",
- "@aws-sdk/util-user-agent-node": "3.357.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "@smithy/protocol-http": "^1.0.1",
- "@smithy/types": "^1.0.0",
- "tslib": "^2.5.0",
- "uuid": "^8.3.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/client-comprehend/node_modules/uuid": {
- "version": "8.3.2",
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/@aws-sdk/client-sso": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.357.0",
- "@aws-sdk/fetch-http-handler": "3.357.0",
- "@aws-sdk/hash-node": "3.357.0",
- "@aws-sdk/invalid-dependency": "3.357.0",
- "@aws-sdk/middleware-content-length": "3.357.0",
- "@aws-sdk/middleware-endpoint": "3.357.0",
- "@aws-sdk/middleware-host-header": "3.357.0",
- "@aws-sdk/middleware-logger": "3.357.0",
- "@aws-sdk/middleware-recursion-detection": "3.357.0",
- "@aws-sdk/middleware-retry": "3.357.0",
- "@aws-sdk/middleware-serde": "3.357.0",
- "@aws-sdk/middleware-stack": "3.357.0",
- "@aws-sdk/middleware-user-agent": "3.357.0",
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/node-http-handler": "3.357.0",
- "@aws-sdk/smithy-client": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/url-parser": "3.357.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.357.0",
- "@aws-sdk/util-defaults-mode-node": "3.357.0",
- "@aws-sdk/util-endpoints": "3.357.0",
- "@aws-sdk/util-retry": "3.357.0",
- "@aws-sdk/util-user-agent-browser": "3.357.0",
- "@aws-sdk/util-user-agent-node": "3.357.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "@smithy/protocol-http": "^1.0.1",
- "@smithy/types": "^1.0.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/client-sso-oidc": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.357.0",
- "@aws-sdk/fetch-http-handler": "3.357.0",
- "@aws-sdk/hash-node": "3.357.0",
- "@aws-sdk/invalid-dependency": "3.357.0",
- "@aws-sdk/middleware-content-length": "3.357.0",
- "@aws-sdk/middleware-endpoint": "3.357.0",
- "@aws-sdk/middleware-host-header": "3.357.0",
- "@aws-sdk/middleware-logger": "3.357.0",
- "@aws-sdk/middleware-recursion-detection": "3.357.0",
- "@aws-sdk/middleware-retry": "3.357.0",
- "@aws-sdk/middleware-serde": "3.357.0",
- "@aws-sdk/middleware-stack": "3.357.0",
- "@aws-sdk/middleware-user-agent": "3.357.0",
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/node-http-handler": "3.357.0",
- "@aws-sdk/smithy-client": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/url-parser": "3.357.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.357.0",
- "@aws-sdk/util-defaults-mode-node": "3.357.0",
- "@aws-sdk/util-endpoints": "3.357.0",
- "@aws-sdk/util-retry": "3.357.0",
- "@aws-sdk/util-user-agent-browser": "3.357.0",
- "@aws-sdk/util-user-agent-node": "3.357.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "@smithy/protocol-http": "^1.0.1",
- "@smithy/types": "^1.0.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/client-sts": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.357.0",
- "@aws-sdk/credential-provider-node": "3.357.0",
- "@aws-sdk/fetch-http-handler": "3.357.0",
- "@aws-sdk/hash-node": "3.357.0",
- "@aws-sdk/invalid-dependency": "3.357.0",
- "@aws-sdk/middleware-content-length": "3.357.0",
- "@aws-sdk/middleware-endpoint": "3.357.0",
- "@aws-sdk/middleware-host-header": "3.357.0",
- "@aws-sdk/middleware-logger": "3.357.0",
- "@aws-sdk/middleware-recursion-detection": "3.357.0",
- "@aws-sdk/middleware-retry": "3.357.0",
- "@aws-sdk/middleware-sdk-sts": "3.357.0",
- "@aws-sdk/middleware-serde": "3.357.0",
- "@aws-sdk/middleware-signing": "3.357.0",
- "@aws-sdk/middleware-stack": "3.357.0",
- "@aws-sdk/middleware-user-agent": "3.357.0",
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/node-http-handler": "3.357.0",
- "@aws-sdk/smithy-client": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/url-parser": "3.357.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.357.0",
- "@aws-sdk/util-defaults-mode-node": "3.357.0",
- "@aws-sdk/util-endpoints": "3.357.0",
- "@aws-sdk/util-retry": "3.357.0",
- "@aws-sdk/util-user-agent-browser": "3.357.0",
- "@aws-sdk/util-user-agent-node": "3.357.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "@smithy/protocol-http": "^1.0.1",
- "@smithy/types": "^1.0.0",
- "fast-xml-parser": "4.2.4",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/config-resolver": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-config-provider": "3.310.0",
- "@aws-sdk/util-middleware": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-imds": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/url-parser": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/credential-provider-env": "3.357.0",
- "@aws-sdk/credential-provider-imds": "3.357.0",
- "@aws-sdk/credential-provider-process": "3.357.0",
- "@aws-sdk/credential-provider-sso": "3.357.0",
- "@aws-sdk/credential-provider-web-identity": "3.357.0",
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/shared-ini-file-loader": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/credential-provider-env": "3.357.0",
- "@aws-sdk/credential-provider-imds": "3.357.0",
- "@aws-sdk/credential-provider-ini": "3.357.0",
- "@aws-sdk/credential-provider-process": "3.357.0",
- "@aws-sdk/credential-provider-sso": "3.357.0",
- "@aws-sdk/credential-provider-web-identity": "3.357.0",
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/shared-ini-file-loader": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/shared-ini-file-loader": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/client-sso": "3.357.0",
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/shared-ini-file-loader": "3.357.0",
- "@aws-sdk/token-providers": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/eventstream-codec": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-crypto/crc32": "3.0.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-hex-encoding": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "node_modules/@aws-sdk/fetch-http-handler": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/querystring-builder": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-base64": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "node_modules/@aws-sdk/hash-node": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-buffer-from": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/invalid-dependency": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "node_modules/@aws-sdk/is-array-buffer": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-content-length": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-endpoint": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/middleware-serde": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/url-parser": "3.357.0",
- "@aws-sdk/util-middleware": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-logger": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-retry": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/service-error-classification": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-middleware": "3.357.0",
- "@aws-sdk/util-retry": "3.357.0",
- "tslib": "^2.5.0",
- "uuid": "^8.3.2"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-retry/node_modules/uuid": {
- "version": "8.3.2",
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/@aws-sdk/middleware-sdk-sts": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/middleware-signing": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-serde": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-signing": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/signature-v4": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-middleware": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-stack": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-endpoints": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/node-config-provider": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/shared-ini-file-loader": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/node-http-handler": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/abort-controller": "3.357.0",
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/querystring-builder": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/property-provider": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/protocol-http": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/querystring-builder": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-uri-escape": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/querystring-parser": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/s3-request-presigner": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/middleware-endpoint": "3.357.0",
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/signature-v4-multi-region": "3.357.0",
- "@aws-sdk/smithy-client": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-format-url": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/service-error-classification": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/shared-ini-file-loader": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/signature-v4": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/eventstream-codec": "3.357.0",
- "@aws-sdk/is-array-buffer": "3.310.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-hex-encoding": "3.310.0",
- "@aws-sdk/util-middleware": "3.357.0",
- "@aws-sdk/util-uri-escape": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/signature-v4-multi-region": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/signature-v4": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "@aws-sdk/signature-v4-crt": "^3.118.0"
- },
- "peerDependenciesMeta": {
- "@aws-sdk/signature-v4-crt": {
- "optional": true
- }
- }
- },
- "node_modules/@aws-sdk/smithy-client": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/middleware-stack": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-stream": "3.357.0",
- "@smithy/types": "^1.0.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/token-providers": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/client-sso-oidc": "3.357.0",
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/shared-ini-file-loader": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/types": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/url-parser": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/querystring-parser": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "node_modules/@aws-sdk/util-base64": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/util-buffer-from": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-body-length-browser": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- }
- },
- "node_modules/@aws-sdk/util-body-length-node": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-buffer-from": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/is-array-buffer": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-config-provider": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-defaults-mode-browser": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "bowser": "^2.11.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@aws-sdk/util-defaults-mode-node": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/config-resolver": "3.357.0",
- "@aws-sdk/credential-provider-imds": "3.357.0",
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@aws-sdk/util-endpoints": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-format-url": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/querystring-builder": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-hex-encoding": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-locate-window": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-middleware": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-retry": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/service-error-classification": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-stream": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/fetch-http-handler": "3.357.0",
- "@aws-sdk/node-http-handler": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-buffer-from": "3.310.0",
- "@aws-sdk/util-hex-encoding": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-uri-escape": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.357.0",
- "bowser": "^2.11.0",
- "tslib": "^2.5.0"
- }
- },
- "node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.357.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "aws-crt": ">=1.0.0"
- },
- "peerDependenciesMeta": {
- "aws-crt": {
- "optional": true
- }
- }
- },
- "node_modules/@aws-sdk/util-utf8": {
- "version": "3.310.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/util-buffer-from": "3.310.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/util-utf8-browser": {
- "version": "3.259.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.3.1"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/highlight": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helpers": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.2",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.5",
- "browserslist": "^4.21.3",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
- "@babel/helper-member-expression-to-functions": "^7.22.5",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "regexpu-core": "^5.3.1",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.17.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2",
- "semver": "^6.1.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0-0"
- }
- },
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.22.5",
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-module-imports": "^7.22.5",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-wrap-function": "^7.22.5",
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-replace-supers": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-member-expression-to-functions": "^7.22.5",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-wrap-function": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-function-name": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/plugin-transform-optional-chaining": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.13.0"
- }
- },
- "node_modules/@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0-placeholder-for-preset-env.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.18.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-bigint": {
- "version": "7.8.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-static-block": {
- "version": "7.14.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-private-property-in-object": {
- "version": "7.14.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
- "version": "7.18.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.5",
- "@babel/plugin-syntax-async-generators": "^7.8.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.12.0"
- }
- },
- "node_modules/@babel/plugin-transform-classes": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/template": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-dynamic-import": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-export-namespace-from": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-for-of": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-function-name": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-json-strings": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-literals": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-simple-access": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-new-target": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-numeric-separator": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-object-super": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-optional-catch-binding": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-parameters": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "regenerator-transform": "^0.15.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-spread": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-typescript": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-typescript": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-property-regex": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/preset-env": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.5",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5",
- "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.22.5",
- "@babel/plugin-syntax-import-attributes": "^7.22.5",
- "@babel/plugin-syntax-import-meta": "^7.10.4",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.22.5",
- "@babel/plugin-transform-async-generator-functions": "^7.22.5",
- "@babel/plugin-transform-async-to-generator": "^7.22.5",
- "@babel/plugin-transform-block-scoped-functions": "^7.22.5",
- "@babel/plugin-transform-block-scoping": "^7.22.5",
- "@babel/plugin-transform-class-properties": "^7.22.5",
- "@babel/plugin-transform-class-static-block": "^7.22.5",
- "@babel/plugin-transform-classes": "^7.22.5",
- "@babel/plugin-transform-computed-properties": "^7.22.5",
- "@babel/plugin-transform-destructuring": "^7.22.5",
- "@babel/plugin-transform-dotall-regex": "^7.22.5",
- "@babel/plugin-transform-duplicate-keys": "^7.22.5",
- "@babel/plugin-transform-dynamic-import": "^7.22.5",
- "@babel/plugin-transform-exponentiation-operator": "^7.22.5",
- "@babel/plugin-transform-export-namespace-from": "^7.22.5",
- "@babel/plugin-transform-for-of": "^7.22.5",
- "@babel/plugin-transform-function-name": "^7.22.5",
- "@babel/plugin-transform-json-strings": "^7.22.5",
- "@babel/plugin-transform-literals": "^7.22.5",
- "@babel/plugin-transform-logical-assignment-operators": "^7.22.5",
- "@babel/plugin-transform-member-expression-literals": "^7.22.5",
- "@babel/plugin-transform-modules-amd": "^7.22.5",
- "@babel/plugin-transform-modules-commonjs": "^7.22.5",
- "@babel/plugin-transform-modules-systemjs": "^7.22.5",
- "@babel/plugin-transform-modules-umd": "^7.22.5",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
- "@babel/plugin-transform-new-target": "^7.22.5",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5",
- "@babel/plugin-transform-numeric-separator": "^7.22.5",
- "@babel/plugin-transform-object-rest-spread": "^7.22.5",
- "@babel/plugin-transform-object-super": "^7.22.5",
- "@babel/plugin-transform-optional-catch-binding": "^7.22.5",
- "@babel/plugin-transform-optional-chaining": "^7.22.5",
- "@babel/plugin-transform-parameters": "^7.22.5",
- "@babel/plugin-transform-private-methods": "^7.22.5",
- "@babel/plugin-transform-private-property-in-object": "^7.22.5",
- "@babel/plugin-transform-property-literals": "^7.22.5",
- "@babel/plugin-transform-regenerator": "^7.22.5",
- "@babel/plugin-transform-reserved-words": "^7.22.5",
- "@babel/plugin-transform-shorthand-properties": "^7.22.5",
- "@babel/plugin-transform-spread": "^7.22.5",
- "@babel/plugin-transform-sticky-regex": "^7.22.5",
- "@babel/plugin-transform-template-literals": "^7.22.5",
- "@babel/plugin-transform-typeof-symbol": "^7.22.5",
- "@babel/plugin-transform-unicode-escapes": "^7.22.5",
- "@babel/plugin-transform-unicode-property-regex": "^7.22.5",
- "@babel/plugin-transform-unicode-regex": "^7.22.5",
- "@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
- "@babel/preset-modules": "^0.1.5",
- "@babel/types": "^7.22.5",
- "babel-plugin-polyfill-corejs2": "^0.4.3",
- "babel-plugin-polyfill-corejs3": "^0.8.1",
- "babel-plugin-polyfill-regenerator": "^0.5.0",
- "core-js-compat": "^3.30.2",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-modules": {
- "version": "0.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
- "@babel/plugin-transform-dotall-regex": "^7.4.4",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-typescript": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.5",
- "@babel/plugin-syntax-jsx": "^7.22.5",
- "@babel/plugin-transform-modules-commonjs": "^7.22.5",
- "@babel/plugin-transform-typescript": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/regjsgen": {
- "version": "0.8.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@babel/runtime": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "regenerator-runtime": "^0.13.11"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@bcoe/v8-coverage": {
- "version": "0.2.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@crowd/alerting": {
- "resolved": "../services/libs/alerting",
- "link": true
- },
- "node_modules/@crowd/common": {
- "resolved": "../services/libs/common",
- "link": true
- },
- "node_modules/@crowd/integrations": {
- "resolved": "../services/libs/integrations",
- "link": true
- },
- "node_modules/@crowd/logging": {
- "resolved": "../services/libs/logging",
- "link": true
- },
- "node_modules/@crowd/opensearch": {
- "resolved": "../services/libs/opensearch",
- "link": true
- },
- "node_modules/@crowd/redis": {
- "resolved": "../services/libs/redis",
- "link": true
- },
- "node_modules/@crowd/sqs": {
- "resolved": "../services/libs/sqs",
- "link": true
- },
- "node_modules/@crowd/tracing": {
- "resolved": "../services/libs/tracing",
- "link": true
- },
- "node_modules/@crowd/types": {
- "resolved": "../services/libs/types",
- "link": true
- },
- "node_modules/@cspotcode/source-map-consumer": {
- "version": "0.8.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/@cspotcode/source-map-support": {
- "version": "0.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@cspotcode/source-map-consumer": "0.8.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@cubejs-client/core": {
- "version": "0.30.74",
- "license": "MIT",
- "dependencies": {
- "core-js": "^3.6.5",
- "cross-fetch": "^3.0.2",
- "dayjs": "^1.10.4",
- "ramda": "^0.27.0",
- "url-search-params-polyfill": "^7.0.0",
- "uuid": "^8.3.2"
- }
- },
- "node_modules/@cubejs-client/core/node_modules/uuid": {
- "version": "8.3.2",
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/@discordjs/builders": {
- "version": "1.6.3",
- "license": "Apache-2.0",
- "dependencies": {
- "@discordjs/formatters": "^0.3.1",
- "@discordjs/util": "^0.3.1",
- "@sapphire/shapeshift": "^3.8.2",
- "discord-api-types": "^0.37.41",
- "fast-deep-equal": "^3.1.3",
- "ts-mixer": "^6.0.3",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=16.9.0"
- }
- },
- "node_modules/@discordjs/collection": {
- "version": "1.5.1",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=16.9.0"
- }
- },
- "node_modules/@discordjs/formatters": {
- "version": "0.3.1",
- "license": "Apache-2.0",
- "dependencies": {
- "discord-api-types": "^0.37.41"
- },
- "engines": {
- "node": ">=16.9.0"
- }
- },
- "node_modules/@discordjs/rest": {
- "version": "1.7.1",
- "license": "Apache-2.0",
- "dependencies": {
- "@discordjs/collection": "^1.5.1",
- "@discordjs/util": "^0.3.0",
- "@sapphire/async-queue": "^1.5.0",
- "@sapphire/snowflake": "^3.4.2",
- "discord-api-types": "^0.37.41",
- "file-type": "^18.3.0",
- "tslib": "^2.5.0",
- "undici": "^5.22.0"
- },
- "engines": {
- "node": ">=16.9.0"
- }
- },
- "node_modules/@discordjs/util": {
- "version": "0.3.1",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=16.9.0"
- }
- },
- "node_modules/@discordjs/ws": {
- "version": "0.8.3",
- "license": "Apache-2.0",
- "dependencies": {
- "@discordjs/collection": "^1.5.1",
- "@discordjs/rest": "^1.7.1",
- "@discordjs/util": "^0.3.1",
- "@sapphire/async-queue": "^1.5.0",
- "@types/ws": "^8.5.4",
- "@vladfrangu/async_event_emitter": "^2.2.1",
- "discord-api-types": "^0.37.41",
- "tslib": "^2.5.0",
- "ws": "^8.13.0"
- },
- "engines": {
- "node": ">=16.9.0"
- }
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/ajv": {
- "version": "6.12.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.20.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@eslint/eslintrc/node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/js": {
- "version": "8.43.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/@exodus/schemasafe": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@gar/promisify": {
- "version": "1.1.3",
- "license": "MIT"
- },
- "node_modules/@google-cloud/common": {
- "version": "3.10.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@google-cloud/projectify": "^2.0.0",
- "@google-cloud/promisify": "^2.0.0",
- "arrify": "^2.0.1",
- "duplexify": "^4.1.1",
- "ent": "^2.2.0",
- "extend": "^3.0.2",
- "google-auth-library": "^7.14.0",
- "retry-request": "^4.2.2",
- "teeny-request": "^7.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@google-cloud/common/node_modules/duplexify": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "end-of-stream": "^1.4.1",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1",
- "stream-shift": "^1.0.0"
- }
- },
- "node_modules/@google-cloud/paginator": {
- "version": "3.0.7",
- "license": "Apache-2.0",
- "dependencies": {
- "arrify": "^2.0.0",
- "extend": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@google-cloud/projectify": {
- "version": "2.1.1",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@google-cloud/promisify": {
- "version": "2.0.4",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@google-cloud/storage": {
- "version": "5.3.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@google-cloud/common": "^3.3.0",
- "@google-cloud/paginator": "^3.0.0",
- "@google-cloud/promisify": "^2.0.0",
- "arrify": "^2.0.0",
- "compressible": "^2.0.12",
- "concat-stream": "^2.0.0",
- "date-and-time": "^0.14.0",
- "duplexify": "^3.5.0",
- "extend": "^3.0.2",
- "gaxios": "^3.0.0",
- "gcs-resumable-upload": "^3.1.0",
- "hash-stream-validation": "^0.2.2",
- "mime": "^2.2.0",
- "mime-types": "^2.0.8",
- "onetime": "^5.1.0",
- "p-limit": "^3.0.1",
- "pumpify": "^2.0.0",
- "snakeize": "^0.1.0",
- "stream-events": "^1.0.1",
- "xdg-basedir": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.10",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/momoa": {
- "version": "2.0.4",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "node_modules/@istanbuljs/load-nyc-config": {
- "version": "1.1.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "get-package-type": "^0.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": {
- "version": "1.0.10",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": {
- "version": "3.14.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": {
- "version": "1.0.3",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "node_modules/@istanbuljs/schema": {
- "version": "0.1.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/console": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/console/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/console/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/console/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/console/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jest/console/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/console/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/core": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/console": "^29.5.0",
- "@jest/reporters": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.5.0",
- "jest-config": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-resolve-dependencies": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "jest-watcher": "^29.5.0",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/@jest/core/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/core/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/core/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/core/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jest/core/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/core/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/environment": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "jest-mock": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/expect": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "expect": "^29.5.0",
- "jest-snapshot": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/expect-utils": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "jest-get-type": "^29.4.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/fake-timers": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^29.5.0",
- "@sinonjs/fake-timers": "^10.0.2",
- "@types/node": "*",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/globals": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/types": "^29.5.0",
- "jest-mock": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/reporters": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@jridgewell/trace-mapping": "^0.3.15",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^5.1.0",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
- "slash": "^3.0.0",
- "string-length": "^4.0.1",
- "strip-ansi": "^6.0.0",
- "v8-to-istanbul": "^9.0.1"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/@jest/reporters/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/reporters/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/reporters/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/reporters/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jest/reporters/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/reporters/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/schemas": {
- "version": "29.4.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@sinclair/typebox": "^0.25.16"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/source-map": {
- "version": "29.4.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.15",
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.9"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/test-result": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/console": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/test-sequencer": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/test-result": "^29.5.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/transform": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.11.6",
- "@jest/types": "^29.5.0",
- "@jridgewell/trace-mapping": "^0.3.15",
- "babel-plugin-istanbul": "^6.1.1",
- "chalk": "^4.0.0",
- "convert-source-map": "^2.0.0",
- "fast-json-stable-stringify": "^2.1.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
- "micromatch": "^4.0.4",
- "pirates": "^4.0.4",
- "slash": "^3.0.0",
- "write-file-atomic": "^4.0.2"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/transform/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/transform/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/transform/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/transform/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jest/transform/node_modules/convert-source-map": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jest/transform/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/transform/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/transform/node_modules/write-file-atomic": {
- "version": "4.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@jest/types": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/schemas": "^29.4.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^17.0.8",
- "chalk": "^4.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/types/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/types/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/types/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/types/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jest/types/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/types/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.18",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
- }
- },
- "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jsdevtools/ono": {
- "version": "7.1.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@npmcli/fs": {
- "version": "2.1.2",
- "license": "ISC",
- "dependencies": {
- "@gar/promisify": "^1.1.3",
- "semver": "^7.3.5"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@npmcli/fs/node_modules/lru-cache": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@npmcli/fs/node_modules/semver": {
- "version": "7.5.2",
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@npmcli/fs/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/@npmcli/move-file": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "mkdirp": "^1.0.4",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@octokit/auth-app": {
- "version": "3.6.1",
- "license": "MIT",
- "dependencies": {
- "@octokit/auth-oauth-app": "^4.3.0",
- "@octokit/auth-oauth-user": "^1.2.3",
- "@octokit/request": "^5.6.0",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.0.3",
- "@types/lru-cache": "^5.1.0",
- "deprecation": "^2.3.1",
- "lru-cache": "^6.0.0",
- "universal-github-app-jwt": "^1.0.1",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/auth-app/node_modules/lru-cache": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@octokit/auth-app/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/@octokit/auth-oauth-app": {
- "version": "4.3.4",
- "license": "MIT",
- "dependencies": {
- "@octokit/auth-oauth-device": "^3.1.1",
- "@octokit/auth-oauth-user": "^2.0.0",
- "@octokit/request": "^5.6.3",
- "@octokit/types": "^6.0.3",
- "@types/btoa-lite": "^1.0.0",
- "btoa-lite": "^1.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/auth-oauth-user": {
- "version": "2.1.2",
- "license": "MIT",
- "dependencies": {
- "@octokit/auth-oauth-device": "^4.0.0",
- "@octokit/oauth-methods": "^2.0.0",
- "@octokit/request": "^6.0.0",
- "@octokit/types": "^9.0.0",
- "btoa-lite": "^1.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/auth-oauth-user/node_modules/@octokit/auth-oauth-device": {
- "version": "4.0.5",
- "license": "MIT",
- "dependencies": {
- "@octokit/oauth-methods": "^2.0.0",
- "@octokit/request": "^6.0.0",
- "@octokit/types": "^9.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request": {
- "version": "6.2.8",
- "license": "MIT",
- "dependencies": {
- "@octokit/endpoint": "^7.0.0",
- "@octokit/request-error": "^3.0.0",
- "@octokit/types": "^9.0.0",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/auth-oauth-user/node_modules/@octokit/types": {
- "version": "9.3.2",
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^18.0.0"
- }
- },
- "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint": {
- "version": "7.0.6",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^9.0.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint/node_modules/@octokit/types": {
- "version": "9.3.2",
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^18.0.0"
- }
- },
- "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/openapi-types": {
- "version": "18.0.0",
- "license": "MIT"
- },
- "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request-error": {
- "version": "3.0.3",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^9.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request-error/node_modules/@octokit/types": {
- "version": "9.3.2",
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^18.0.0"
- }
- },
- "node_modules/@octokit/auth-oauth-device": {
- "version": "3.1.4",
- "license": "MIT",
- "dependencies": {
- "@octokit/oauth-methods": "^2.0.0",
- "@octokit/request": "^6.0.0",
- "@octokit/types": "^6.10.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint": {
- "version": "7.0.6",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^9.0.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint/node_modules/@octokit/types": {
- "version": "9.3.2",
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^18.0.0"
- }
- },
- "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/openapi-types": {
- "version": "18.0.0",
- "license": "MIT"
- },
- "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request": {
- "version": "6.2.8",
- "license": "MIT",
- "dependencies": {
- "@octokit/endpoint": "^7.0.0",
- "@octokit/request-error": "^3.0.0",
- "@octokit/types": "^9.0.0",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request-error": {
- "version": "3.0.3",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^9.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request-error/node_modules/@octokit/types": {
- "version": "9.3.2",
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^18.0.0"
- }
- },
- "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request/node_modules/@octokit/types": {
- "version": "9.3.2",
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^18.0.0"
- }
- },
- "node_modules/@octokit/auth-oauth-user": {
- "version": "1.3.0",
- "license": "MIT",
- "dependencies": {
- "@octokit/auth-oauth-device": "^3.1.1",
- "@octokit/oauth-methods": "^1.1.0",
- "@octokit/request": "^5.4.14",
- "@octokit/types": "^6.12.2",
- "btoa-lite": "^1.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/oauth-authorization-url": {
- "version": "4.3.3",
- "license": "MIT"
- },
- "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/oauth-methods": {
- "version": "1.2.6",
- "license": "MIT",
- "dependencies": {
- "@octokit/oauth-authorization-url": "^4.3.1",
- "@octokit/request": "^5.4.14",
- "@octokit/request-error": "^2.0.5",
- "@octokit/types": "^6.12.2",
- "btoa-lite": "^1.0.0"
- }
- },
- "node_modules/@octokit/endpoint": {
- "version": "6.0.12",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^6.0.3",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/graphql": {
- "version": "4.8.0",
- "license": "MIT",
- "dependencies": {
- "@octokit/request": "^5.6.0",
- "@octokit/types": "^6.0.3",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/oauth-authorization-url": {
- "version": "5.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/oauth-methods": {
- "version": "2.0.6",
- "license": "MIT",
- "dependencies": {
- "@octokit/oauth-authorization-url": "^5.0.0",
- "@octokit/request": "^6.2.3",
- "@octokit/request-error": "^3.0.3",
- "@octokit/types": "^9.0.0",
- "btoa-lite": "^1.0.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/oauth-methods/node_modules/@octokit/endpoint": {
- "version": "7.0.6",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^9.0.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/oauth-methods/node_modules/@octokit/openapi-types": {
- "version": "18.0.0",
- "license": "MIT"
- },
- "node_modules/@octokit/oauth-methods/node_modules/@octokit/request": {
- "version": "6.2.8",
- "license": "MIT",
- "dependencies": {
- "@octokit/endpoint": "^7.0.0",
- "@octokit/request-error": "^3.0.0",
- "@octokit/types": "^9.0.0",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/oauth-methods/node_modules/@octokit/request-error": {
- "version": "3.0.3",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^9.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/@octokit/oauth-methods/node_modules/@octokit/types": {
- "version": "9.3.2",
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^18.0.0"
- }
- },
- "node_modules/@octokit/openapi-types": {
- "version": "12.11.0",
- "license": "MIT"
- },
- "node_modules/@octokit/request": {
- "version": "5.6.3",
- "license": "MIT",
- "dependencies": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.16.1",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/request-error": {
- "version": "2.1.0",
- "license": "MIT",
- "dependencies": {
- "@octokit/types": "^6.0.3",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "node_modules/@octokit/types": {
- "version": "6.41.0",
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^12.11.0"
- }
- },
- "node_modules/@opencensus/core": {
- "version": "0.0.9",
- "license": "Apache-2.0",
- "dependencies": {
- "continuation-local-storage": "^3.2.1",
- "log-driver": "^1.2.7",
- "semver": "^5.5.0",
- "shimmer": "^1.2.0",
- "uuid": "^3.2.1"
- },
- "engines": {
- "node": ">=6.0"
- }
- },
- "node_modules/@opencensus/core/node_modules/semver": {
- "version": "5.7.1",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@opencensus/core/node_modules/uuid": {
- "version": "3.4.0",
- "license": "MIT",
- "bin": {
- "uuid": "bin/uuid"
- }
- },
- "node_modules/@opencensus/propagation-b3": {
- "version": "0.0.8",
- "license": "Apache-2.0",
- "dependencies": {
- "@opencensus/core": "^0.0.8",
- "uuid": "^3.2.1"
- },
- "engines": {
- "node": ">=6.0"
- }
- },
- "node_modules/@opencensus/propagation-b3/node_modules/@opencensus/core": {
- "version": "0.0.8",
- "license": "Apache-2.0",
- "dependencies": {
- "continuation-local-storage": "^3.2.1",
- "log-driver": "^1.2.7",
- "semver": "^5.5.0",
- "shimmer": "^1.2.0",
- "uuid": "^3.2.1"
- },
- "engines": {
- "node": ">=6.0"
- }
- },
- "node_modules/@opencensus/propagation-b3/node_modules/semver": {
- "version": "5.7.1",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@opencensus/propagation-b3/node_modules/uuid": {
- "version": "3.4.0",
- "license": "MIT",
- "bin": {
- "uuid": "bin/uuid"
- }
- },
- "node_modules/@opensearch-project/opensearch": {
- "version": "1.2.0",
- "license": "Apache-2.0",
- "dependencies": {
- "aws4": "^1.11.0",
- "debug": "^4.3.1",
- "hpagent": "^0.1.1",
- "ms": "^2.1.3",
- "secure-json-parse": "^2.4.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@pm2/agent": {
- "version": "2.0.1",
- "license": "AGPL-3.0",
- "dependencies": {
- "async": "~3.2.0",
- "chalk": "~3.0.0",
- "dayjs": "~1.8.24",
- "debug": "~4.3.1",
- "eventemitter2": "~5.0.1",
- "fast-json-patch": "^3.0.0-1",
- "fclone": "~1.0.11",
- "nssocket": "0.6.0",
- "pm2-axon": "~4.0.1",
- "pm2-axon-rpc": "~0.7.0",
- "proxy-agent": "~5.0.0",
- "semver": "~7.2.0",
- "ws": "~7.4.0"
- }
- },
- "node_modules/@pm2/agent/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@pm2/agent/node_modules/async": {
- "version": "3.2.4",
- "license": "MIT"
- },
- "node_modules/@pm2/agent/node_modules/chalk": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@pm2/agent/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@pm2/agent/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/@pm2/agent/node_modules/dayjs": {
- "version": "1.8.36",
- "license": "MIT"
- },
- "node_modules/@pm2/agent/node_modules/eventemitter2": {
- "version": "5.0.1",
- "license": "MIT"
- },
- "node_modules/@pm2/agent/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@pm2/agent/node_modules/semver": {
- "version": "7.2.3",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@pm2/agent/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@pm2/agent/node_modules/ws": {
- "version": "7.4.6",
- "license": "MIT",
- "engines": {
- "node": ">=8.3.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/@pm2/io": {
- "version": "5.0.0",
- "license": "Apache-2",
- "dependencies": {
- "@opencensus/core": "0.0.9",
- "@opencensus/propagation-b3": "0.0.8",
- "async": "~2.6.1",
- "debug": "~4.3.1",
- "eventemitter2": "^6.3.1",
- "require-in-the-middle": "^5.0.0",
- "semver": "6.3.0",
- "shimmer": "^1.2.0",
- "signal-exit": "^3.0.3",
- "tslib": "1.9.3"
- },
- "engines": {
- "node": ">=6.0"
- }
- },
- "node_modules/@pm2/io/node_modules/tslib": {
- "version": "1.9.3",
- "license": "Apache-2.0"
- },
- "node_modules/@pm2/js-api": {
- "version": "0.6.7",
- "license": "Apache-2",
- "dependencies": {
- "async": "^2.6.3",
- "axios": "^0.21.0",
- "debug": "~4.3.1",
- "eventemitter2": "^6.3.1",
- "ws": "^7.0.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/@pm2/js-api/node_modules/axios": {
- "version": "0.21.4",
- "license": "MIT",
- "dependencies": {
- "follow-redirects": "^1.14.0"
- }
- },
- "node_modules/@pm2/js-api/node_modules/ws": {
- "version": "7.5.9",
- "license": "MIT",
- "engines": {
- "node": ">=8.3.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/@pm2/pm2-version-check": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz",
- "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==",
- "dependencies": {
- "debug": "^4.3.1"
- }
- },
- "node_modules/@readme/better-ajv-errors": {
- "version": "1.6.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@babel/code-frame": "^7.16.0",
- "@babel/runtime": "^7.21.0",
- "@humanwhocodes/momoa": "^2.0.3",
- "chalk": "^4.1.2",
- "json-to-ast": "^2.0.3",
- "jsonpointer": "^5.0.0",
- "leven": "^3.1.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "ajv": "4.11.8 - 8"
- }
- },
- "node_modules/@readme/better-ajv-errors/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@readme/better-ajv-errors/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@readme/better-ajv-errors/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@readme/better-ajv-errors/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@readme/better-ajv-errors/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@readme/better-ajv-errors/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@readme/json-schema-ref-parser": {
- "version": "1.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jsdevtools/ono": "^7.1.3",
- "@types/json-schema": "^7.0.6",
- "call-me-maybe": "^1.0.1",
- "js-yaml": "^4.1.0"
- }
- },
- "node_modules/@readme/openapi-parser": {
- "version": "2.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@apidevtools/openapi-schemas": "^2.1.0",
- "@apidevtools/swagger-methods": "^3.0.2",
- "@jsdevtools/ono": "^7.1.3",
- "@readme/better-ajv-errors": "^1.6.0",
- "@readme/json-schema-ref-parser": "^1.2.0",
- "ajv": "^8.12.0",
- "ajv-draft-04": "^1.0.0",
- "call-me-maybe": "^1.0.1"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "openapi-types": ">=7"
- }
- },
- "node_modules/@sapphire/async-queue": {
- "version": "1.5.0",
- "license": "MIT",
- "engines": {
- "node": ">=v14.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/@sapphire/shapeshift": {
- "version": "3.9.2",
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "lodash": "^4.17.21"
- },
- "engines": {
- "node": ">=v14.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/@sapphire/snowflake": {
- "version": "3.5.1",
- "license": "MIT",
- "engines": {
- "node": ">=v14.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/@segment/loosely-validate-event": {
- "version": "2.0.0",
- "dependencies": {
- "component-type": "^1.2.1",
- "join-component": "^1.1.0"
- }
- },
- "node_modules/@selderee/plugin-htmlparser2": {
- "version": "0.6.0",
- "license": "MIT",
- "dependencies": {
- "domhandler": "^4.2.0",
- "selderee": "^0.6.0"
- },
- "funding": {
- "url": "https://ko-fi.com/killymxi"
- }
- },
- "node_modules/@sendgrid/client": {
- "version": "7.7.0",
- "license": "MIT",
- "dependencies": {
- "@sendgrid/helpers": "^7.7.0",
- "axios": "^0.26.0"
- },
- "engines": {
- "node": "6.* || 8.* || >=10.*"
- }
- },
- "node_modules/@sendgrid/client/node_modules/axios": {
- "version": "0.26.1",
- "license": "MIT",
- "dependencies": {
- "follow-redirects": "^1.14.8"
- }
- },
- "node_modules/@sendgrid/eventwebhook": {
- "version": "7.7.0",
- "license": "MIT",
- "dependencies": {
- "starkbank-ecdsa": "^1.1.1"
- },
- "engines": {
- "node": "6.* || 8.* || >=10.*"
- }
- },
- "node_modules/@sendgrid/helpers": {
- "version": "7.7.0",
- "license": "MIT",
- "dependencies": {
- "deepmerge": "^4.2.2"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/@sendgrid/mail": {
- "version": "7.2.6",
- "license": "MIT",
- "dependencies": {
- "@sendgrid/client": "^7.2.6",
- "@sendgrid/helpers": "^7.2.6"
- },
- "engines": {
- "node": "6.* || 8.* || >=10.*"
- }
- },
- "node_modules/@sinclair/typebox": {
- "version": "0.25.24",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@sindresorhus/is": {
- "version": "0.14.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sinonjs/commons": {
- "version": "3.0.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "type-detect": "4.0.8"
- }
- },
- "node_modules/@sinonjs/fake-timers": {
- "version": "10.3.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@sinonjs/commons": "^3.0.0"
- }
- },
- "node_modules/@slack/logger": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "@types/node": ">=12.0.0"
- },
- "engines": {
- "node": ">= 12.13.0",
- "npm": ">= 6.12.0"
- }
- },
- "node_modules/@slack/types": {
- "version": "2.8.0",
- "license": "MIT",
- "engines": {
- "node": ">= 12.13.0",
- "npm": ">= 6.12.0"
- }
- },
- "node_modules/@slack/web-api": {
- "version": "6.8.1",
- "license": "MIT",
- "dependencies": {
- "@slack/logger": "^3.0.0",
- "@slack/types": "^2.0.0",
- "@types/is-stream": "^1.1.0",
- "@types/node": ">=12.0.0",
- "axios": "^0.27.2",
- "eventemitter3": "^3.1.0",
- "form-data": "^2.5.0",
- "is-electron": "2.2.0",
- "is-stream": "^1.1.0",
- "p-queue": "^6.6.1",
- "p-retry": "^4.0.0"
- },
- "engines": {
- "node": ">= 12.13.0",
- "npm": ">= 6.12.0"
- }
- },
- "node_modules/@smithy/protocol-http": {
- "version": "1.1.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/types": "^1.1.0",
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@smithy/types": {
- "version": "1.1.0",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@socket.io/component-emitter": {
- "version": "3.1.0",
- "license": "MIT"
- },
- "node_modules/@superfaceai/ast": {
- "version": "1.2.0",
- "license": "MIT",
- "dependencies": {
- "ajv": "^8.8.2",
- "ajv-formats": "^2.1.1"
- }
- },
- "node_modules/@superfaceai/one-sdk": {
- "version": "1.5.2",
- "dependencies": {
- "@superfaceai/ast": "1.2.0",
- "@superfaceai/parser": "1.2.0",
- "abort-controller": "^3.0.0",
- "cross-fetch": "^3.1.5",
- "debug": "^4.3.2",
- "isomorphic-form-data": "^2.0.0",
- "vm2": "^3.9.7"
- }
- },
- "node_modules/@superfaceai/parser": {
- "version": "1.2.0",
- "license": "MIT",
- "dependencies": {
- "@superfaceai/ast": "^1.2.0",
- "@types/debug": "^4.1.5",
- "debug": "^4.3.3",
- "typescript": "^4"
- }
- },
- "node_modules/@superfaceai/passport-twitter-oauth2": {
- "version": "1.2.3",
- "license": "MIT",
- "dependencies": {
- "passport-oauth2": "^1.6.1"
- },
- "optionalDependencies": {
- "@types/passport": "1.x",
- "@types/passport-oauth2": ">=1.4"
- }
- },
- "node_modules/@szmarczak/http-timer": {
- "version": "1.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "defer-to-connect": "^1.0.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@tokenizer/token": {
- "version": "0.3.0",
- "license": "MIT"
- },
- "node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@tsconfig/node10": {
- "version": "1.0.9",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@tsconfig/node12": {
- "version": "1.0.11",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@tsconfig/node14": {
- "version": "1.0.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@tsconfig/node16": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/babel__core": {
- "version": "7.20.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "node_modules/@types/babel__generator": {
- "version": "7.6.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__template": {
- "version": "7.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__traverse": {
- "version": "7.20.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.20.7"
- }
- },
- "node_modules/@types/body-parser": {
- "version": "1.19.2",
- "license": "MIT",
- "dependencies": {
- "@types/connect": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/btoa-lite": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/@types/bunyan": {
- "version": "1.8.8",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/bunyan-format": {
- "version": "0.2.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/config": {
- "version": "3.3.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/connect": {
- "version": "3.4.35",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/cookie": {
- "version": "0.4.1",
- "license": "MIT"
- },
- "node_modules/@types/cookiejar": {
- "version": "2.1.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/cors": {
- "version": "2.8.13",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/cron": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/luxon": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/debug": {
- "version": "4.1.8",
- "license": "MIT",
- "dependencies": {
- "@types/ms": "*"
- }
- },
- "node_modules/@types/express": {
- "version": "4.17.17",
- "license": "MIT",
- "dependencies": {
- "@types/body-parser": "*",
- "@types/express-serve-static-core": "^4.17.33",
- "@types/qs": "*",
- "@types/serve-static": "*"
- }
- },
- "node_modules/@types/express-serve-static-core": {
- "version": "4.17.35",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "@types/qs": "*",
- "@types/range-parser": "*",
- "@types/send": "*"
- }
- },
- "node_modules/@types/graceful-fs": {
- "version": "4.1.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/html-to-text": {
- "version": "8.1.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/is-stream": {
- "version": "1.1.0",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/istanbul-lib-coverage": {
- "version": "2.0.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/istanbul-lib-report": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "node_modules/@types/istanbul-reports": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "node_modules/@types/jest": {
- "version": "29.5.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "expect": "^29.0.0",
- "pretty-format": "^29.0.0"
- }
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.12",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
- "dev": true
- },
- "node_modules/@types/jsonwebtoken": {
- "version": "9.0.2",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/lru-cache": {
- "version": "5.1.1",
- "license": "MIT"
- },
- "node_modules/@types/luxon": {
- "version": "3.3.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/mime": {
- "version": "1.3.2",
- "license": "MIT"
- },
- "node_modules/@types/ms": {
- "version": "0.7.31",
- "license": "MIT"
- },
- "node_modules/@types/node": {
- "version": "17.0.45",
- "license": "MIT"
- },
- "node_modules/@types/oauth": {
- "version": "0.9.1",
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/passport": {
- "version": "1.0.12",
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@types/express": "*"
- }
- },
- "node_modules/@types/passport-oauth2": {
- "version": "1.4.12",
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@types/express": "*",
- "@types/oauth": "*",
- "@types/passport": "*"
- }
- },
- "node_modules/@types/prettier": {
- "version": "2.7.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/qs": {
- "version": "6.9.7",
- "license": "MIT"
- },
- "node_modules/@types/range-parser": {
- "version": "1.2.4",
- "license": "MIT"
- },
- "node_modules/@types/retry": {
- "version": "0.12.0",
- "license": "MIT"
- },
- "node_modules/@types/sanitize-html": {
- "version": "2.9.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "htmlparser2": "^8.0.0"
- }
- },
- "node_modules/@types/semver": {
- "version": "7.5.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/send": {
- "version": "0.17.1",
- "license": "MIT",
- "dependencies": {
- "@types/mime": "^1",
- "@types/node": "*"
- }
- },
- "node_modules/@types/serve-static": {
- "version": "1.15.1",
- "license": "MIT",
- "dependencies": {
- "@types/mime": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/stack-utils": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/superagent": {
- "version": "4.1.18",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/cookiejar": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/uuid": {
- "version": "9.0.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/validator": {
- "version": "13.7.17",
- "license": "MIT"
- },
- "node_modules/@types/ws": {
- "version": "8.5.5",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/yargs": {
- "version": "17.0.24",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/@types/yargs-parser": {
- "version": "21.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.60.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.60.0",
- "@typescript-eslint/type-utils": "5.60.0",
- "@typescript-eslint/utils": "5.60.0",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
- "version": "7.5.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/@typescript-eslint/parser": {
- "version": "5.60.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/scope-manager": "5.60.0",
- "@typescript-eslint/types": "5.60.0",
- "@typescript-eslint/typescript-estree": "5.60.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "5.60.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.60.0",
- "@typescript-eslint/visitor-keys": "5.60.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/type-utils": {
- "version": "5.60.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "5.60.0",
- "@typescript-eslint/utils": "5.60.0",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/types": {
- "version": "5.60.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.60.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "5.60.0",
- "@typescript-eslint/visitor-keys": "5.60.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.5.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/@typescript-eslint/utils": {
- "version": "5.60.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.60.0",
- "@typescript-eslint/types": "5.60.0",
- "@typescript-eslint/typescript-estree": "5.60.0",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/semver": {
- "version": "7.5.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.60.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.60.0",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@vladfrangu/async_event_emitter": {
- "version": "2.2.2",
- "license": "MIT",
- "engines": {
- "node": ">=v14.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/abbrev": {
- "version": "1.1.1",
- "license": "ISC"
- },
- "node_modules/abort-controller": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "event-target-shim": "^5.0.0"
- },
- "engines": {
- "node": ">=6.5"
- }
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "license": "MIT",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/acorn": {
- "version": "8.9.0",
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/acorn-walk": {
- "version": "8.2.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/agent-base": {
- "version": "6.0.2",
- "license": "MIT",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/agentkeepalive": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "debug": "^4.1.0",
- "depd": "^2.0.0",
- "humanize-ms": "^1.2.1"
- },
- "engines": {
- "node": ">= 8.0.0"
- }
- },
- "node_modules/aggregate-error": {
- "version": "3.1.0",
- "license": "MIT",
- "dependencies": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ajv": {
- "version": "8.12.0",
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ajv-draft-04": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "ajv": "^8.5.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
- }
- },
- "node_modules/ajv-formats": {
- "version": "2.1.1",
- "license": "MIT",
- "dependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
- }
- },
- "node_modules/amp": {
- "version": "0.3.1",
- "license": "MIT"
- },
- "node_modules/amp-message": {
- "version": "0.1.2",
- "license": "MIT",
- "dependencies": {
- "amp": "0.3.1"
- }
- },
- "node_modules/analytics-node": {
- "version": "6.2.0",
- "license": "MIT",
- "dependencies": {
- "@segment/loosely-validate-event": "^2.0.0",
- "axios": "^0.27.2",
- "axios-retry": "3.2.0",
- "lodash.isstring": "^4.0.1",
- "md5": "^2.2.1",
- "ms": "^2.0.0",
- "remove-trailing-slash": "^0.1.0",
- "uuid": "^8.3.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/analytics-node/node_modules/uuid": {
- "version": "8.3.2",
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/ansi-align": {
- "version": "3.0.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.1.0"
- }
- },
- "node_modules/ansi-align/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-align/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-colors": {
- "version": "4.1.3",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-regex": {
- "version": "2.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/ansicolors": {
- "version": "0.2.1",
- "license": "MIT"
- },
- "node_modules/ansistyles": {
- "version": "0.1.3",
- "license": "MIT"
- },
- "node_modules/any-promise": {
- "version": "1.3.0",
- "license": "MIT"
- },
- "node_modules/anymatch": {
- "version": "3.1.3",
- "license": "ISC",
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/aproba": {
- "version": "1.2.0",
- "license": "ISC"
- },
- "node_modules/are-we-there-yet": {
- "version": "1.1.7",
- "license": "ISC",
- "dependencies": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "node_modules/are-we-there-yet/node_modules/readable-stream": {
- "version": "2.3.8",
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/are-we-there-yet/node_modules/string_decoder": {
- "version": "1.1.1",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/arg": {
- "version": "4.1.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "dev": true,
- "license": "Python-2.0"
- },
- "node_modules/array-back": {
- "version": "3.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/array-buffer-byte-length": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "license": "MIT"
- },
- "node_modules/array-includes": {
- "version": "3.1.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "get-intrinsic": "^1.1.3",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/array.prototype.flat": {
- "version": "1.3.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.flatmap": {
- "version": "1.3.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/arrify": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/asap": {
- "version": "2.0.6",
- "license": "MIT"
- },
- "node_modules/ast-types": {
- "version": "0.13.4",
- "license": "MIT",
- "dependencies": {
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/async": {
- "version": "2.6.4",
- "license": "MIT",
- "dependencies": {
- "lodash": "^4.17.14"
- }
- },
- "node_modules/async-listener": {
- "version": "0.6.10",
- "license": "BSD-2-Clause",
- "dependencies": {
- "semver": "^5.3.0",
- "shimmer": "^1.1.0"
- },
- "engines": {
- "node": "<=0.11.8 || >0.11.10"
- }
- },
- "node_modules/async-listener/node_modules/semver": {
- "version": "5.7.1",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/async-retry": {
- "version": "1.3.3",
- "license": "MIT",
- "dependencies": {
- "retry": "0.13.1"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "license": "MIT"
- },
- "node_modules/available-typed-arrays": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/aws-sdk": {
- "version": "2.814.0",
- "license": "Apache-2.0",
- "dependencies": {
- "buffer": "4.9.2",
- "events": "1.1.1",
- "ieee754": "1.1.13",
- "jmespath": "0.15.0",
- "querystring": "0.2.0",
- "sax": "1.2.1",
- "url": "0.10.3",
- "uuid": "3.3.2",
- "xml2js": "0.4.19"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/aws-sdk/node_modules/uuid": {
- "version": "3.3.2",
- "license": "MIT",
- "bin": {
- "uuid": "bin/uuid"
- }
- },
- "node_modules/aws4": {
- "version": "1.12.0",
- "license": "MIT"
- },
- "node_modules/axios": {
- "version": "0.27.2",
- "license": "MIT",
- "dependencies": {
- "follow-redirects": "^1.14.9",
- "form-data": "^4.0.0"
- }
- },
- "node_modules/axios-retry": {
- "version": "3.2.0",
- "license": "Apache-2.0",
- "dependencies": {
- "is-retry-allowed": "^1.1.0"
- }
- },
- "node_modules/axios/node_modules/form-data": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/babel-jest": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/transform": "^29.5.0",
- "@types/babel__core": "^7.1.14",
- "babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^29.5.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.8.0"
- }
- },
- "node_modules/babel-jest/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/babel-jest/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/babel-jest/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/babel-jest/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/babel-jest/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/babel-jest/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/babel-plugin-istanbul": {
- "version": "6.1.1",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^5.0.4",
- "test-exclude": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/babel-plugin-jest-hoist": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.1.14",
- "@types/babel__traverse": "^7.0.6"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.17.7",
- "@babel/helper-define-polyfill-provider": "^0.4.0",
- "semver": "^6.1.1"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.8.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.4.0",
- "core-js-compat": "^3.30.1"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.4.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/babel-preset-jest": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "babel-plugin-jest-hoist": "^29.5.0",
- "babel-preset-current-node-syntax": "^1.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "license": "MIT"
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/base64id": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": "^4.5.0 || >= 5.9"
- }
- },
- "node_modules/base64url": {
- "version": "3.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/bcrypt": {
- "version": "5.0.0",
- "hasInstallScript": true,
- "license": "MIT",
- "dependencies": {
- "node-addon-api": "^3.0.0",
- "node-pre-gyp": "0.15.0"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/big-integer": {
- "version": "1.6.51",
- "license": "Unlicense",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/bignumber.js": {
- "version": "9.1.1",
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/bindings": {
- "version": "1.5.0",
- "license": "MIT",
- "dependencies": {
- "file-uri-to-path": "1.0.0"
- }
- },
- "node_modules/bl": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "node_modules/bl/node_modules/buffer": {
- "version": "5.7.1",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "node_modules/blessed": {
- "version": "0.1.81",
- "license": "MIT",
- "bin": {
- "blessed": "bin/tput.js"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/bluebird": {
- "version": "2.11.0",
- "license": "MIT"
- },
- "node_modules/bodec": {
- "version": "0.1.0",
- "license": "MIT"
- },
- "node_modules/body-parser": {
- "version": "1.20.2",
- "license": "MIT",
- "dependencies": {
- "bytes": "3.1.2",
- "content-type": "~1.0.5",
- "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.2",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/body-parser/node_modules/debug": {
- "version": "2.6.9",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/body-parser/node_modules/ms": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/boolbase": {
- "version": "1.0.0",
- "license": "ISC"
- },
- "node_modules/bowser": {
- "version": "2.11.0",
- "license": "MIT"
- },
- "node_modules/boxen": {
- "version": "4.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-align": "^3.0.0",
- "camelcase": "^5.3.1",
- "chalk": "^3.0.0",
- "cli-boxes": "^2.2.0",
- "string-width": "^4.1.0",
- "term-size": "^2.1.0",
- "type-fest": "^0.8.1",
- "widest-line": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/boxen/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/boxen/node_modules/chalk": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/boxen/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/boxen/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/boxen/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/boxen/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/boxen/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/boxen/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/boxen/node_modules/type-fest": {
- "version": "0.8.1",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browserslist": {
- "version": "4.21.9",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "caniuse-lite": "^1.0.30001503",
- "electron-to-chromium": "^1.4.431",
- "node-releases": "^2.0.12",
- "update-browserslist-db": "^1.0.11"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/bs-logger": {
- "version": "0.2.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-json-stable-stringify": "2.x"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/bser": {
- "version": "2.1.1",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "node-int64": "^0.4.0"
- }
- },
- "node_modules/btoa-lite": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/buffer": {
- "version": "4.9.2",
- "license": "MIT",
- "dependencies": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
- }
- },
- "node_modules/buffer-equal-constant-time": {
- "version": "1.0.1",
- "license": "BSD-3-Clause"
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "license": "MIT"
- },
- "node_modules/buffer-writer": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/bufferutil": {
- "version": "4.0.7",
- "hasInstallScript": true,
- "license": "MIT",
- "dependencies": {
- "node-gyp-build": "^4.3.0"
- },
- "engines": {
- "node": ">=6.14.2"
- }
- },
- "node_modules/bunyan": {
- "version": "1.8.15",
- "engines": [
- "node >=0.10.0"
- ],
- "license": "MIT",
- "bin": {
- "bunyan": "bin/bunyan"
- },
- "optionalDependencies": {
- "dtrace-provider": "~0.8",
- "moment": "^2.19.3",
- "mv": "~2",
- "safe-json-stringify": "~1"
- }
- },
- "node_modules/bunyan-format": {
- "version": "0.2.1",
- "license": "MIT",
- "dependencies": {
- "ansicolors": "~0.2.1",
- "ansistyles": "~0.1.1",
- "xtend": "~2.1.1"
- }
- },
- "node_modules/bunyan-middleware": {
- "version": "1.0.2",
- "license": "MIT",
- "dependencies": {
- "@types/bunyan": "^1.8.6",
- "@types/express": "^4.0.35",
- "uuid": "^8.3.2"
- }
- },
- "node_modules/bunyan-middleware/node_modules/uuid": {
- "version": "8.3.2",
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/busboy": {
- "version": "1.6.0",
- "dependencies": {
- "streamsearch": "^1.1.0"
- },
- "engines": {
- "node": ">=10.16.0"
- }
- },
- "node_modules/bytes": {
- "version": "3.1.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/cacache": {
- "version": "16.1.3",
- "license": "ISC",
- "dependencies": {
- "@npmcli/fs": "^2.1.0",
- "@npmcli/move-file": "^2.0.0",
- "chownr": "^2.0.0",
- "fs-minipass": "^2.1.0",
- "glob": "^8.0.1",
- "infer-owner": "^1.0.4",
- "lru-cache": "^7.7.1",
- "minipass": "^3.1.6",
- "minipass-collect": "^1.0.2",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "mkdirp": "^1.0.4",
- "p-map": "^4.0.0",
- "promise-inflight": "^1.0.1",
- "rimraf": "^3.0.2",
- "ssri": "^9.0.0",
- "tar": "^6.1.11",
- "unique-filename": "^2.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/cacache/node_modules/brace-expansion": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/cacache/node_modules/chownr": {
- "version": "2.0.0",
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/cacache/node_modules/fs-minipass": {
- "version": "2.1.0",
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/cacache/node_modules/glob": {
- "version": "8.1.0",
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/cacache/node_modules/lru-cache": {
- "version": "7.18.3",
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/cacache/node_modules/minimatch": {
- "version": "5.1.6",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/cacache/node_modules/minipass": {
- "version": "3.3.6",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cacache/node_modules/minizlib": {
- "version": "2.1.2",
- "license": "MIT",
- "dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/cacache/node_modules/tar": {
- "version": "6.1.15",
- "license": "ISC",
- "dependencies": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^5.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/cacache/node_modules/tar/node_modules/minipass": {
- "version": "5.0.0",
- "license": "ISC",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cacache/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/cacheable-request": {
- "version": "6.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "clone-response": "^1.0.2",
- "get-stream": "^5.1.0",
- "http-cache-semantics": "^4.0.0",
- "keyv": "^3.0.0",
- "lowercase-keys": "^2.0.0",
- "normalize-url": "^4.1.0",
- "responselike": "^1.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cacheable-request/node_modules/get-stream": {
- "version": "5.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cacheable-request/node_modules/lowercase-keys": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/call-me-maybe": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase": {
- "version": "5.3.1",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001506",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "CC-BY-4.0"
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/char-regex": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/charenc": {
- "version": "0.0.2",
- "license": "BSD-3-Clause",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/charm": {
- "version": "0.1.2",
- "license": "MIT/X11"
- },
- "node_modules/chokidar": {
- "version": "3.5.3",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/chownr": {
- "version": "1.1.4",
- "license": "ISC"
- },
- "node_modules/ci-info": {
- "version": "3.8.0",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cjs-module-lexer": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/clean-stack": {
- "version": "2.2.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/clearbit": {
- "version": "1.3.5",
- "license": "MIT",
- "dependencies": {
- "bluebird": "2",
- "create-error": "0.3",
- "lodash": "4.x",
- "needle": "clearbit/needle#84d28b5f2c3916db1e7eb84aeaa9d976cc40054b"
- }
- },
- "node_modules/cli-boxes": {
- "version": "2.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cli-color": {
- "version": "1.4.0",
- "license": "ISC",
- "dependencies": {
- "ansi-regex": "^2.1.1",
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "memoizee": "^0.4.14",
- "timers-ext": "^0.1.5"
- }
- },
- "node_modules/cli-cursor": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "restore-cursor": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-highlight": {
- "version": "2.1.6",
- "license": "ISC",
- "dependencies": {
- "chalk": "^3.0.0",
- "highlight.js": "^10.0.0",
- "mz": "^2.4.0",
- "parse5": "^5.1.1",
- "parse5-htmlparser2-tree-adapter": "^5.1.1",
- "yargs": "^15.0.0"
- },
- "bin": {
- "highlight": "bin/highlight"
- },
- "engines": {
- "node": ">=8.0.0",
- "npm": ">=5.0.0"
- }
- },
- "node_modules/cli-highlight/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/cli-highlight/node_modules/chalk": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-highlight/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/cli-highlight/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/cli-highlight/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-highlight/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-spinners": {
- "version": "2.9.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cli-table": {
- "version": "0.3.11",
- "dev": true,
- "dependencies": {
- "colors": "1.0.3"
- },
- "engines": {
- "node": ">= 0.2.0"
- }
- },
- "node_modules/cli-tableau": {
- "version": "2.0.1",
- "dependencies": {
- "chalk": "3.0.0"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/cli-tableau/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/cli-tableau/node_modules/chalk": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-tableau/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/cli-tableau/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/cli-tableau/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-tableau/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
- "node_modules/cliui/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui/node_modules/string-width": {
- "version": "4.2.3",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/clone": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/clone-response": {
- "version": "1.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-response": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/co": {
- "version": "4.6.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">= 1.0.0",
- "node": ">= 0.12.0"
- }
- },
- "node_modules/code-error-fragment": {
- "version": "0.0.230",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/code-point-at": {
- "version": "1.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/collect-v8-coverage": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "license": "MIT",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "license": "MIT"
- },
- "node_modules/colors": {
- "version": "1.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.1.90"
- }
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "license": "MIT",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/command-line-args": {
- "version": "5.2.1",
- "license": "MIT",
- "dependencies": {
- "array-back": "^3.1.0",
- "find-replace": "^3.0.0",
- "lodash.camelcase": "^4.3.0",
- "typical": "^4.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/command-line-usage": {
- "version": "6.1.3",
- "license": "MIT",
- "dependencies": {
- "array-back": "^4.0.2",
- "chalk": "^2.4.2",
- "table-layout": "^1.0.2",
- "typical": "^5.2.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/command-line-usage/node_modules/array-back": {
- "version": "4.0.2",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/command-line-usage/node_modules/typical": {
- "version": "5.2.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/commander": {
- "version": "6.2.1",
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/comment-parser": {
- "version": "0.7.6",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/component-emitter": {
- "version": "1.3.0",
- "license": "MIT"
- },
- "node_modules/component-type": {
- "version": "1.2.1",
- "license": "MIT"
- },
- "node_modules/compressible": {
- "version": "2.0.18",
- "license": "MIT",
- "dependencies": {
- "mime-db": ">= 1.43.0 < 2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "license": "MIT"
- },
- "node_modules/concat-stream": {
- "version": "2.0.0",
- "engines": [
- "node >= 6.0"
- ],
- "license": "MIT",
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/config": {
- "version": "3.3.9",
- "license": "MIT",
- "dependencies": {
- "json5": "^2.2.3"
- },
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/config-chain": {
- "version": "1.1.13",
- "license": "MIT",
- "dependencies": {
- "ini": "^1.3.4",
- "proto-list": "~1.2.1"
- }
- },
- "node_modules/configstore": {
- "version": "5.0.1",
- "license": "BSD-2-Clause",
- "dependencies": {
- "dot-prop": "^5.2.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^3.0.0",
- "unique-string": "^2.0.0",
- "write-file-atomic": "^3.0.0",
- "xdg-basedir": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/confusing-browser-globals": {
- "version": "1.0.11",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/console-control-strings": {
- "version": "1.1.0",
- "license": "ISC"
- },
- "node_modules/content-disposition": {
- "version": "0.5.3",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "5.1.2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.5",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/continuation-local-storage": {
- "version": "3.2.1",
- "license": "BSD-2-Clause",
- "dependencies": {
- "async-listener": "^0.6.0",
- "emitter-listener": "^1.1.1"
- }
- },
- "node_modules/convert-source-map": {
- "version": "1.9.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cookie": {
- "version": "0.4.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "license": "MIT"
- },
- "node_modules/cookiejar": {
- "version": "2.1.4",
- "license": "MIT"
- },
- "node_modules/copy-anything": {
- "version": "3.0.5",
- "license": "MIT",
- "dependencies": {
- "is-what": "^4.1.8"
- },
- "engines": {
- "node": ">=12.13"
- },
- "funding": {
- "url": "https://github.com/sponsors/mesqueeb"
- }
- },
- "node_modules/copyfiles": {
- "version": "2.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "glob": "^7.0.5",
- "minimatch": "^3.0.3",
- "mkdirp": "^1.0.4",
- "noms": "0.0.0",
- "through2": "^2.0.1",
- "untildify": "^4.0.0",
- "yargs": "^16.1.0"
- },
- "bin": {
- "copyfiles": "copyfiles",
- "copyup": "copyfiles"
- }
- },
- "node_modules/copyfiles/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/copyfiles/node_modules/cliui": {
- "version": "7.0.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "node_modules/copyfiles/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/copyfiles/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/copyfiles/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/copyfiles/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/copyfiles/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/copyfiles/node_modules/y18n": {
- "version": "5.0.8",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/copyfiles/node_modules/yargs": {
- "version": "16.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/copyfiles/node_modules/yargs-parser": {
- "version": "20.2.9",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/core-js": {
- "version": "3.31.0",
- "hasInstallScript": true,
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/core-js-compat": {
- "version": "3.31.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.21.5"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "license": "MIT"
- },
- "node_modules/cors": {
- "version": "2.8.5",
- "license": "MIT",
- "dependencies": {
- "object-assign": "^4",
- "vary": "^1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/create-error": {
- "version": "0.3.1",
- "license": "MIT"
- },
- "node_modules/create-require": {
- "version": "1.1.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cron": {
- "version": "2.3.1",
- "license": "MIT",
- "dependencies": {
- "luxon": "^3.2.1"
- }
- },
- "node_modules/cron-time-generator": {
- "version": "1.3.2",
- "license": "MIT"
- },
- "node_modules/croner": {
- "version": "4.1.97",
- "license": "MIT"
- },
- "node_modules/cross-env": {
- "version": "7.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^7.0.1"
- },
- "bin": {
- "cross-env": "src/bin/cross-env.js",
- "cross-env-shell": "src/bin/cross-env-shell.js"
- },
- "engines": {
- "node": ">=10.14",
- "npm": ">=6",
- "yarn": ">=1"
- }
- },
- "node_modules/cross-fetch": {
- "version": "3.1.6",
- "license": "MIT",
- "dependencies": {
- "node-fetch": "^2.6.11"
- }
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/crowd-sentiment": {
- "version": "1.1.7",
- "license": "Apache-2.0"
- },
- "node_modules/crypt": {
- "version": "0.0.2",
- "license": "BSD-3-Clause",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/crypto-js": {
- "version": "4.1.1",
- "license": "MIT"
- },
- "node_modules/crypto-random-string": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/css-select": {
- "version": "5.1.0",
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/css-select/node_modules/domhandler": {
- "version": "5.0.3",
- "license": "BSD-2-Clause",
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/css-what": {
- "version": "6.1.0",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/culvert": {
- "version": "0.1.2",
- "license": "MIT"
- },
- "node_modules/d": {
- "version": "1.0.1",
- "license": "ISC",
- "dependencies": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
- }
- },
- "node_modules/data-uri-to-buffer": {
- "version": "3.0.1",
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/date-and-time": {
- "version": "0.14.2",
- "license": "MIT"
- },
- "node_modules/dayjs": {
- "version": "1.11.8",
- "license": "MIT"
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "license": "MIT",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/debug/node_modules/ms": {
- "version": "2.1.2",
- "license": "MIT"
- },
- "node_modules/decamelize": {
- "version": "1.2.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decompress-response": {
- "version": "3.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-response": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/dedent": {
- "version": "0.7.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/deep-extend": {
- "version": "0.6.0",
- "license": "MIT",
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "license": "MIT"
- },
- "node_modules/deepmerge": {
- "version": "4.3.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/defaults": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "clone": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/defer-to-connect": {
- "version": "1.1.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/define-lazy-prop": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/define-properties": {
- "version": "1.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/degenerator": {
- "version": "3.0.4",
- "license": "MIT",
- "dependencies": {
- "ast-types": "^0.13.2",
- "escodegen": "^1.8.1",
- "esprima": "^4.0.0",
- "vm2": "^3.9.17"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/delegates": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/deprecation": {
- "version": "2.3.1",
- "license": "ISC"
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/detect-libc": {
- "version": "1.0.3",
- "license": "Apache-2.0",
- "bin": {
- "detect-libc": "bin/detect-libc.js"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/detect-newline": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dezalgo": {
- "version": "1.0.4",
- "license": "ISC",
- "dependencies": {
- "asap": "^2.0.0",
- "wrappy": "1"
- }
- },
- "node_modules/diff": {
- "version": "4.0.2",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/diff-sequences": {
- "version": "29.4.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/discontinuous-range": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/discord-api-types": {
- "version": "0.37.46",
- "license": "MIT"
- },
- "node_modules/discord.js": {
- "version": "14.11.0",
- "license": "Apache-2.0",
- "dependencies": {
- "@discordjs/builders": "^1.6.3",
- "@discordjs/collection": "^1.5.1",
- "@discordjs/formatters": "^0.3.1",
- "@discordjs/rest": "^1.7.1",
- "@discordjs/util": "^0.3.1",
- "@discordjs/ws": "^0.8.3",
- "@sapphire/snowflake": "^3.4.2",
- "@types/ws": "^8.5.4",
- "discord-api-types": "^0.37.41",
- "fast-deep-equal": "^3.1.3",
- "lodash.snakecase": "^4.1.1",
- "tslib": "^2.5.0",
- "undici": "^5.22.0",
- "ws": "^8.13.0"
- },
- "engines": {
- "node": ">=16.9.0"
- }
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/dom-serializer": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/dom-serializer/node_modules/domhandler": {
- "version": "5.0.3",
- "license": "BSD-2-Clause",
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/domelementtype": {
- "version": "2.3.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "BSD-2-Clause"
- },
- "node_modules/domhandler": {
- "version": "4.3.1",
- "license": "BSD-2-Clause",
- "dependencies": {
- "domelementtype": "^2.2.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/domutils": {
- "version": "3.1.0",
- "license": "BSD-2-Clause",
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/domutils/node_modules/domhandler": {
- "version": "5.0.3",
- "license": "BSD-2-Clause",
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/dot-prop": {
- "version": "5.3.0",
- "license": "MIT",
- "dependencies": {
- "is-obj": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dotenv": {
- "version": "8.2.0",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dotenv-expand": {
- "version": "8.0.3",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/dottie": {
- "version": "2.0.6",
- "license": "MIT"
- },
- "node_modules/dtrace-provider": {
- "version": "0.8.8",
- "hasInstallScript": true,
- "license": "BSD-2-Clause",
- "optional": true,
- "dependencies": {
- "nan": "^2.14.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/duplexer3": {
- "version": "0.1.5",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "node_modules/duplexify": {
- "version": "3.7.1",
- "license": "MIT",
- "dependencies": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- }
- },
- "node_modules/duplexify/node_modules/readable-stream": {
- "version": "2.3.8",
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/duplexify/node_modules/string_decoder": {
- "version": "1.1.1",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/ecdsa-sig-formatter": {
- "version": "1.0.11",
- "license": "Apache-2.0",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/editor": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/editorconfig": {
- "version": "0.15.3",
- "license": "MIT",
- "dependencies": {
- "commander": "^2.19.0",
- "lru-cache": "^4.1.5",
- "semver": "^5.6.0",
- "sigmund": "^1.0.1"
- },
- "bin": {
- "editorconfig": "bin/editorconfig"
- }
- },
- "node_modules/editorconfig/node_modules/commander": {
- "version": "2.20.3",
- "license": "MIT"
- },
- "node_modules/editorconfig/node_modules/lru-cache": {
- "version": "4.1.5",
- "license": "ISC",
- "dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "node_modules/editorconfig/node_modules/semver": {
- "version": "5.7.1",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/editorconfig/node_modules/yallist": {
- "version": "2.1.2",
- "license": "ISC"
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "license": "MIT"
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.437",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/emitter-listener": {
- "version": "1.1.2",
- "license": "BSD-2-Clause",
- "dependencies": {
- "shimmer": "^1.2.0"
- }
- },
- "node_modules/emittery": {
- "version": "0.13.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/emittery?sponsor=1"
- }
- },
- "node_modules/emoji-chars": {
- "version": "1.0.12",
- "license": "MIT",
- "dependencies": {
- "emoji-unicode-map": "^1.0.0"
- }
- },
- "node_modules/emoji-dictionary": {
- "version": "1.0.11",
- "license": "MIT",
- "dependencies": {
- "emoji-chars": "^1.0.0",
- "emoji-name-map": "^1.0.0",
- "emoji-names": "^1.0.1",
- "emoji-unicode-map": "^1.0.0",
- "emojilib": "^2.0.2"
- }
- },
- "node_modules/emoji-name-map": {
- "version": "1.2.9",
- "license": "MIT",
- "dependencies": {
- "emojilib": "^2.0.2",
- "iterate-object": "^1.3.1",
- "map-o": "^2.0.1"
- }
- },
- "node_modules/emoji-names": {
- "version": "1.0.12",
- "license": "MIT",
- "dependencies": {
- "emoji-name-map": "^1.0.0"
- }
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "license": "MIT"
- },
- "node_modules/emoji-unicode-map": {
- "version": "1.1.11",
- "license": "MIT",
- "dependencies": {
- "emoji-name-map": "^1.1.0",
- "iterate-object": "^1.3.1"
- }
- },
- "node_modules/emojilib": {
- "version": "2.4.0",
- "license": "MIT"
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/encoding": {
- "version": "0.1.13",
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "iconv-lite": "^0.6.2"
- }
- },
- "node_modules/encoding/node_modules/iconv-lite": {
- "version": "0.6.3",
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "license": "MIT",
- "dependencies": {
- "once": "^1.4.0"
- }
- },
- "node_modules/engine.io": {
- "version": "6.4.2",
- "license": "MIT",
- "dependencies": {
- "@types/cookie": "^0.4.1",
- "@types/cors": "^2.8.12",
- "@types/node": ">=10.0.0",
- "accepts": "~1.3.4",
- "base64id": "2.0.0",
- "cookie": "~0.4.1",
- "cors": "~2.8.5",
- "debug": "~4.3.1",
- "engine.io-parser": "~5.0.3",
- "ws": "~8.11.0"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/engine.io-parser": {
- "version": "5.0.7",
- "license": "MIT",
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/engine.io/node_modules/cookie": {
- "version": "0.4.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/engine.io/node_modules/ws": {
- "version": "8.11.0",
- "license": "MIT",
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/enquirer": {
- "version": "2.3.6",
- "license": "MIT",
- "dependencies": {
- "ansi-colors": "^4.1.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/ent": {
- "version": "2.2.0",
- "license": "MIT"
- },
- "node_modules/entities": {
- "version": "4.5.0",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/erlpack": {
- "version": "0.1.4",
- "hasInstallScript": true,
- "license": "MIT",
- "dependencies": {
- "bindings": "^1.5.0",
- "nan": "^2.15.0"
- }
- },
- "node_modules/err-code": {
- "version": "2.0.3",
- "license": "MIT"
- },
- "node_modules/error-ex": {
- "version": "1.3.2",
- "license": "MIT",
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/es-abstract": {
- "version": "1.21.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.2.0",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.10",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.12.3",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.4.3",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.7",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.9"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-set-tostringtag": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-shim-unscopables": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has": "^1.0.3"
- }
- },
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es5-ext": {
- "version": "0.10.62",
- "hasInstallScript": true,
- "license": "ISC",
- "dependencies": {
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.3",
- "next-tick": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/es6-iterator": {
- "version": "2.0.3",
- "license": "MIT",
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/es6-promise": {
- "version": "3.3.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/es6-symbol": {
- "version": "3.1.3",
- "license": "ISC",
- "dependencies": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
- }
- },
- "node_modules/es6-weak-map": {
- "version": "2.0.3",
- "license": "ISC",
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-goat": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "license": "MIT"
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/escodegen": {
- "version": "1.14.3",
- "license": "BSD-2-Clause",
- "dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^4.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
- },
- "engines": {
- "node": ">=4.0"
- },
- "optionalDependencies": {
- "source-map": "~0.6.1"
- }
- },
- "node_modules/escodegen/node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
- },
- "node_modules/escodegen/node_modules/levn": {
- "version": "0.3.0",
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/optionator": {
- "version": "0.8.3",
- "license": "MIT",
- "dependencies": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/prelude-ls": {
- "version": "1.1.2",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/type-check": {
- "version": "0.3.2",
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/eslint": {
- "version": "8.43.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.43.0",
- "@humanwhocodes/config-array": "^0.11.10",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-config-airbnb-base": {
- "version": "15.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "confusing-browser-globals": "^1.0.10",
- "object.assign": "^4.1.2",
- "object.entries": "^1.1.5",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "peerDependencies": {
- "eslint": "^7.32.0 || ^8.2.0",
- "eslint-plugin-import": "^2.25.2"
- }
- },
- "node_modules/eslint-config-airbnb-typescript": {
- "version": "16.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-config-airbnb-base": "^15.0.0"
- },
- "peerDependencies": {
- "@typescript-eslint/eslint-plugin": "^5.0.0",
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^7.32.0 || ^8.2.0",
- "eslint-plugin-import": "^2.25.3"
- }
- },
- "node_modules/eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "node_modules/eslint-import-resolver-node": {
- "version": "0.3.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^3.2.7",
- "is-core-module": "^2.11.0",
- "resolve": "^1.22.1"
- }
- },
- "node_modules/eslint-import-resolver-node/node_modules/debug": {
- "version": "3.2.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-module-utils": {
- "version": "2.8.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^3.2.7"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependenciesMeta": {
- "eslint": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-module-utils/node_modules/debug": {
- "version": "3.2.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-import": {
- "version": "2.27.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flat": "^1.3.1",
- "array.prototype.flatmap": "^1.3.1",
- "debug": "^3.2.7",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.7",
- "eslint-module-utils": "^2.7.4",
- "has": "^1.0.3",
- "is-core-module": "^2.11.0",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "object.values": "^1.1.6",
- "resolve": "^1.22.1",
- "semver": "^6.3.0",
- "tsconfig-paths": "^3.14.1"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/debug": {
- "version": "3.2.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "2.1.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/json5": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
- "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.0"
- },
- "bin": {
- "json5": "lib/cli.js"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": {
- "version": "3.14.2",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
- "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==",
- "dev": true,
- "dependencies": {
- "@types/json5": "^0.0.29",
- "json5": "^1.0.2",
- "minimist": "^1.2.6",
- "strip-bom": "^3.0.0"
- }
- },
- "node_modules/eslint-plugin-openapi": {
- "version": "0.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "comment-parser": "^0.7.4"
- }
- },
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/ajv": {
- "version": "6.12.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/eslint/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/eslint/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/eslint/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/eslint/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/eslint/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/eslint/node_modules/globals": {
- "version": "13.20.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/eslint/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/eslint/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/eslint/node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/espree": {
- "version": "9.5.2",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esprima": {
- "version": "4.0.1",
- "license": "BSD-2-Clause",
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/esquery": {
- "version": "1.5.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "4.3.0",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/event-emitter": {
- "version": "0.3.5",
- "license": "MIT",
- "dependencies": {
- "d": "1",
- "es5-ext": "~0.10.14"
- }
- },
- "node_modules/event-target-shim": {
- "version": "5.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/eventemitter2": {
- "version": "6.4.9",
- "license": "MIT"
- },
- "node_modules/eventemitter3": {
- "version": "3.1.2",
- "license": "MIT"
- },
- "node_modules/events": {
- "version": "1.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.4.x"
- }
- },
- "node_modules/execa": {
- "version": "5.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/execa/node_modules/is-stream": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/exit": {
- "version": "0.1.2",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/expect": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/expect-utils": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/express": {
- "version": "4.17.1",
- "license": "MIT",
- "dependencies": {
- "accepts": "~1.3.7",
- "array-flatten": "1.1.1",
- "body-parser": "1.19.0",
- "content-disposition": "0.5.3",
- "content-type": "~1.0.4",
- "cookie": "0.4.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "~1.1.2",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.5",
- "qs": "6.7.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.1.2",
- "send": "0.17.1",
- "serve-static": "1.14.1",
- "setprototypeof": "1.1.1",
- "statuses": "~1.5.0",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/express-rate-limit": {
- "version": "6.5.1",
- "license": "MIT",
- "engines": {
- "node": ">= 12.9.0"
- },
- "peerDependencies": {
- "express": "^4 || ^5"
- }
- },
- "node_modules/express/node_modules/body-parser": {
- "version": "1.19.0",
- "license": "MIT",
- "dependencies": {
- "bytes": "3.1.0",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.7.0",
- "raw-body": "2.4.0",
- "type-is": "~1.6.17"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/express/node_modules/bytes": {
- "version": "3.1.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/express/node_modules/debug": {
- "version": "2.6.9",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/express/node_modules/depd": {
- "version": "1.1.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express/node_modules/http-errors": {
- "version": "1.7.2",
- "license": "MIT",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express/node_modules/inherits": {
- "version": "2.0.3",
- "license": "ISC"
- },
- "node_modules/express/node_modules/ms": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/express/node_modules/on-finished": {
- "version": "2.3.0",
- "license": "MIT",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/express/node_modules/qs": {
- "version": "6.7.0",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/express/node_modules/raw-body": {
- "version": "2.4.0",
- "license": "MIT",
- "dependencies": {
- "bytes": "3.1.0",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/express/node_modules/toidentifier": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/ext": {
- "version": "1.7.0",
- "license": "ISC",
- "dependencies": {
- "type": "^2.7.2"
- }
- },
- "node_modules/ext/node_modules/type": {
- "version": "2.7.2",
- "license": "ISC"
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "license": "MIT"
- },
- "node_modules/extend-shallow": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "license": "MIT"
- },
- "node_modules/fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-glob/node_modules/glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/fast-json-patch": {
- "version": "3.1.1",
- "license": "MIT"
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/fast-levenshtein": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz",
- "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==",
- "dependencies": {
- "fastest-levenshtein": "^1.0.7"
- }
- },
- "node_modules/fast-safe-stringify": {
- "version": "2.1.1",
- "license": "MIT"
- },
- "node_modules/fast-text-encoding": {
- "version": "1.0.6",
- "license": "Apache-2.0"
- },
- "node_modules/fast-xml-parser": {
- "version": "4.2.4",
- "funding": [
- {
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "strnum": "^1.0.5"
- },
- "bin": {
- "fxparser": "src/cli/cli.js"
- }
- },
- "node_modules/fastest-levenshtein": {
- "version": "1.0.16",
- "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
- "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
- "engines": {
- "node": ">= 4.9.1"
- }
- },
- "node_modules/fastq": {
- "version": "1.15.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/fb-watchman": {
- "version": "2.0.2",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "bser": "2.1.1"
- }
- },
- "node_modules/fclone": {
- "version": "1.0.11",
- "license": "MIT"
- },
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/file-type": {
- "version": "18.5.0",
- "license": "MIT",
- "dependencies": {
- "readable-web-to-node-stream": "^3.0.2",
- "strtok3": "^7.0.0",
- "token-types": "^5.0.1"
- },
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/file-type?sponsor=1"
- }
- },
- "node_modules/file-uri-to-path": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.1.2",
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/finalhandler/node_modules/debug": {
- "version": "2.6.9",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/finalhandler/node_modules/ms": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/finalhandler/node_modules/on-finished": {
- "version": "2.3.0",
- "license": "MIT",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/find-replace": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "array-back": "^3.0.1"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/flatted": {
- "version": "3.2.7",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/follow-redirects": {
- "version": "1.15.2",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "node_modules/for-each": {
- "version": "0.3.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-callable": "^1.1.3"
- }
- },
- "node_modules/form-data": {
- "version": "2.5.1",
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 0.12"
- }
- },
- "node_modules/formidable": {
- "version": "1.2.6",
- "license": "MIT",
- "funding": {
- "url": "https://ko-fi.com/tunnckoCore/commissions"
- }
- },
- "node_modules/formidable-serverless": {
- "version": "1.1.1",
- "license": "MIT",
- "dependencies": {
- "formidable": "^1.2.2"
- }
- },
- "node_modules/forwarded": {
- "version": "0.2.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fs-extra": {
- "version": "8.1.0",
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/fs-minipass": {
- "version": "1.2.7",
- "license": "ISC",
- "dependencies": {
- "minipass": "^2.6.0"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "license": "ISC"
- },
- "node_modules/ftp": {
- "version": "0.3.10",
- "dependencies": {
- "readable-stream": "1.1.x",
- "xregexp": "2.0.0"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/ftp/node_modules/isarray": {
- "version": "0.0.1",
- "license": "MIT"
- },
- "node_modules/ftp/node_modules/readable-stream": {
- "version": "1.1.14",
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "node_modules/ftp/node_modules/string_decoder": {
- "version": "0.10.31",
- "license": "MIT"
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "license": "MIT"
- },
- "node_modules/function.prototype.name": {
- "version": "1.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0",
- "functions-have-names": "^1.2.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/functions-have-names": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/gauge": {
- "version": "2.7.4",
- "license": "ISC",
- "dependencies": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "node_modules/gauge/node_modules/strip-ansi": {
- "version": "3.0.1",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gaxios": {
- "version": "3.2.0",
- "license": "Apache-2.0",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "extend": "^3.0.2",
- "https-proxy-agent": "^5.0.0",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.3.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/gaxios/node_modules/is-stream": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/gcp-metadata": {
- "version": "4.3.1",
- "license": "Apache-2.0",
- "dependencies": {
- "gaxios": "^4.0.0",
- "json-bigint": "^1.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/gcp-metadata/node_modules/gaxios": {
- "version": "4.3.3",
- "license": "Apache-2.0",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "extend": "^3.0.2",
- "https-proxy-agent": "^5.0.0",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.6.7"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/gcp-metadata/node_modules/is-stream": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/gcs-resumable-upload": {
- "version": "3.6.0",
- "license": "MIT",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "async-retry": "^1.3.3",
- "configstore": "^5.0.0",
- "extend": "^3.0.2",
- "gaxios": "^4.0.0",
- "google-auth-library": "^7.0.0",
- "pumpify": "^2.0.0",
- "stream-events": "^1.0.4"
- },
- "bin": {
- "gcs-upload": "build/src/cli.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/gcs-resumable-upload/node_modules/gaxios": {
- "version": "4.3.3",
- "license": "Apache-2.0",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "extend": "^3.0.2",
- "https-proxy-agent": "^5.0.0",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.6.7"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/gcs-resumable-upload/node_modules/is-stream": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "license": "ISC",
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.1",
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-package-type": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/get-stream": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/get-symbol-description": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-uri": {
- "version": "3.0.2",
- "license": "MIT",
- "dependencies": {
- "@tootallnate/once": "1",
- "data-uri-to-buffer": "3",
- "debug": "4",
- "file-uri-to-path": "2",
- "fs-extra": "^8.1.0",
- "ftp": "^0.3.10"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/get-uri/node_modules/file-uri-to-path": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/git-node-fs": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/git-sha1": {
- "version": "0.1.2",
- "license": "MIT"
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/global-dirs": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ini": "1.3.7"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/global-dirs/node_modules/ini": {
- "version": "1.3.7",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/globals": {
- "version": "11.12.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/globalthis": {
- "version": "1.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/globby": {
- "version": "11.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/google-auth-library": {
- "version": "7.14.1",
- "license": "Apache-2.0",
- "dependencies": {
- "arrify": "^2.0.0",
- "base64-js": "^1.3.0",
- "ecdsa-sig-formatter": "^1.0.11",
- "fast-text-encoding": "^1.0.0",
- "gaxios": "^4.0.0",
- "gcp-metadata": "^4.2.0",
- "gtoken": "^5.0.4",
- "jws": "^4.0.0",
- "lru-cache": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/google-auth-library/node_modules/gaxios": {
- "version": "4.3.3",
- "license": "Apache-2.0",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "extend": "^3.0.2",
- "https-proxy-agent": "^5.0.0",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.6.7"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/google-auth-library/node_modules/is-stream": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/google-auth-library/node_modules/lru-cache": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/google-auth-library/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/google-p12-pem": {
- "version": "3.1.4",
- "license": "MIT",
- "dependencies": {
- "node-forge": "^1.3.1"
- },
- "bin": {
- "gp12-pem": "build/src/bin/gp12-pem.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/gopd": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/got": {
- "version": "9.6.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@sindresorhus/is": "^0.14.0",
- "@szmarczak/http-timer": "^1.1.2",
- "cacheable-request": "^6.0.0",
- "decompress-response": "^3.3.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^4.1.0",
- "lowercase-keys": "^1.0.1",
- "mimic-response": "^1.0.1",
- "p-cancelable": "^1.0.0",
- "to-readable-stream": "^1.0.0",
- "url-parse-lax": "^3.0.0"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/got/node_modules/get-stream": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "license": "ISC"
- },
- "node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/graphemer": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/gray-matter": {
- "version": "4.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "js-yaml": "^3.13.1",
- "kind-of": "^6.0.2",
- "section-matter": "^1.0.0",
- "strip-bom-string": "^1.0.0"
- },
- "engines": {
- "node": ">=6.0"
- }
- },
- "node_modules/gray-matter/node_modules/argparse": {
- "version": "1.0.10",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/gray-matter/node_modules/js-yaml": {
- "version": "3.14.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/gray-matter/node_modules/sprintf-js": {
- "version": "1.0.3",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "node_modules/gtoken": {
- "version": "5.3.2",
- "license": "MIT",
- "dependencies": {
- "gaxios": "^4.0.0",
- "google-p12-pem": "^3.1.3",
- "jws": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/gtoken/node_modules/gaxios": {
- "version": "4.3.3",
- "license": "Apache-2.0",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "extend": "^3.0.2",
- "https-proxy-agent": "^5.0.0",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.6.7"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/gtoken/node_modules/is-stream": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-bigints": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/has-property-descriptors": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.1.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-proto": {
- "version": "1.0.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-unicode": {
- "version": "2.0.1",
- "license": "ISC"
- },
- "node_modules/has-yarn": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/hash-stream-validation": {
- "version": "0.2.4",
- "license": "MIT"
- },
- "node_modules/he": {
- "version": "1.2.0",
- "license": "MIT",
- "bin": {
- "he": "bin/he"
- }
- },
- "node_modules/helmet": {
- "version": "4.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/hexoid": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/highlight.js": {
- "version": "10.7.3",
- "license": "BSD-3-Clause",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/hosted-git-info": {
- "version": "2.8.9",
- "license": "ISC"
- },
- "node_modules/hpagent": {
- "version": "0.1.2",
- "license": "MIT"
- },
- "node_modules/html-escaper": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/html-to-mrkdwn-ts": {
- "version": "1.1.0",
- "license": "MIT",
- "dependencies": {
- "node-html-markdown": "^1.1.3"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/html-to-text": {
- "version": "8.2.1",
- "license": "MIT",
- "dependencies": {
- "@selderee/plugin-htmlparser2": "^0.6.0",
- "deepmerge": "^4.2.2",
- "he": "^1.2.0",
- "htmlparser2": "^6.1.0",
- "minimist": "^1.2.6",
- "selderee": "^0.6.0"
- },
- "bin": {
- "html-to-text": "bin/cli.js"
- },
- "engines": {
- "node": ">=10.23.2"
- }
- },
- "node_modules/html-to-text/node_modules/dom-serializer": {
- "version": "1.4.1",
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/html-to-text/node_modules/domutils": {
- "version": "2.8.0",
- "license": "BSD-2-Clause",
- "dependencies": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/html-to-text/node_modules/entities": {
- "version": "2.2.0",
- "license": "BSD-2-Clause",
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/html-to-text/node_modules/htmlparser2": {
- "version": "6.1.0",
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
- "domutils": "^2.5.2",
- "entities": "^2.0.0"
- }
- },
- "node_modules/htmlparser2": {
- "version": "8.0.2",
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "entities": "^4.4.0"
- }
- },
- "node_modules/htmlparser2/node_modules/domhandler": {
- "version": "5.0.3",
- "license": "BSD-2-Clause",
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/http-cache-semantics": {
- "version": "4.1.1",
- "license": "BSD-2-Clause"
- },
- "node_modules/http-errors": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/http-errors/node_modules/setprototypeof": {
- "version": "1.2.0",
- "license": "ISC"
- },
- "node_modules/http-errors/node_modules/statuses": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "license": "MIT",
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/http2-client": {
- "version": "1.3.5",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "license": "MIT",
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/human-signals": {
- "version": "2.1.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10.17.0"
- }
- },
- "node_modules/humanize-ms": {
- "version": "1.2.1",
- "license": "MIT",
- "dependencies": {
- "ms": "^2.0.0"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ieee754": {
- "version": "1.1.13",
- "license": "BSD-3-Clause"
- },
- "node_modules/ignore": {
- "version": "5.2.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/ignore-by-default": {
- "version": "1.0.1",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/ignore-walk": {
- "version": "3.0.4",
- "license": "ISC",
- "dependencies": {
- "minimatch": "^3.0.4"
- }
- },
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/import-lazy": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/import-local": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- },
- "bin": {
- "import-local-fixture": "fixtures/cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/indent-string": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/infer-owner": {
- "version": "1.0.4",
- "license": "ISC"
- },
- "node_modules/inflection": {
- "version": "1.13.4",
- "engines": [
- "node >= 0.4.0"
- ],
- "license": "MIT"
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "license": "ISC"
- },
- "node_modules/ini": {
- "version": "1.3.8",
- "license": "ISC"
- },
- "node_modules/internal-slot": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.2.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/invert-kv": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ip": {
- "version": "1.1.8",
- "license": "MIT"
- },
- "node_modules/ipaddr.js": {
- "version": "1.9.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/is-array-buffer": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "license": "MIT"
- },
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-bigints": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "license": "MIT",
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-buffer": {
- "version": "1.1.6",
- "license": "MIT"
- },
- "node_modules/is-callable": {
- "version": "1.2.7",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-ci": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ci-info": "^2.0.0"
- },
- "bin": {
- "is-ci": "bin.js"
- }
- },
- "node_modules/is-ci/node_modules/ci-info": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/is-core-module": {
- "version": "2.12.1",
- "license": "MIT",
- "dependencies": {
- "has": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-docker": {
- "version": "2.2.1",
- "dev": true,
- "license": "MIT",
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-electron": {
- "version": "2.2.0",
- "license": "MIT"
- },
- "node_modules/is-extendable": {
- "version": "0.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "number-is-nan": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-generator-fn": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-installed-globally": {
- "version": "0.3.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "global-dirs": "^2.0.1",
- "is-path-inside": "^3.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-interactive": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-lambda": {
- "version": "1.0.1",
- "license": "MIT"
- },
- "node_modules/is-negative-zero": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-npm": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-number-object": {
- "version": "1.0.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-obj": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-plain-object": {
- "version": "5.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-promise": {
- "version": "2.2.2",
- "license": "MIT"
- },
- "node_modules/is-regex": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-retry-allowed": {
- "version": "1.2.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-stream": {
- "version": "1.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-string": {
- "version": "1.0.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-symbol": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-typed-array": {
- "version": "1.1.10",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-weakref": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-what": {
- "version": "4.1.15",
- "license": "MIT",
- "engines": {
- "node": ">=12.13"
- },
- "funding": {
- "url": "https://github.com/sponsors/mesqueeb"
- }
- },
- "node_modules/is-wsl": {
- "version": "2.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-docker": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-yarn-global": {
- "version": "0.3.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/isemail": {
- "version": "3.2.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "punycode": "2.x.x"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "license": "ISC"
- },
- "node_modules/isomorphic-form-data": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "form-data": "^2.3.2"
- }
- },
- "node_modules/istanbul-lib-coverage": {
- "version": "3.2.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-instrument": {
- "version": "5.2.1",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-report": {
- "version": "3.0.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-report/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-report/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-source-maps": {
- "version": "4.0.1",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/istanbul-reports": {
- "version": "3.1.5",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/iterate-object": {
- "version": "1.3.4",
- "license": "MIT"
- },
- "node_modules/jest": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/core": "^29.5.0",
- "@jest/types": "^29.5.0",
- "import-local": "^3.0.2",
- "jest-cli": "^29.5.0"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/jest-changed-files": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "execa": "^5.0.0",
- "p-limit": "^3.1.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-circus": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "dedent": "^0.7.0",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^29.5.0",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "p-limit": "^3.1.0",
- "pretty-format": "^29.5.0",
- "pure-rand": "^6.0.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-circus/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-circus/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-circus/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-circus/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-circus/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-circus/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/core": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "import-local": "^3.0.2",
- "jest-config": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "prompts": "^2.0.1",
- "yargs": "^17.3.1"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/jest-cli/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-cli/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-cli/node_modules/cliui": {
- "version": "8.0.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/jest-cli/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-cli/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-cli/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/jest-cli/node_modules/y18n": {
- "version": "5.0.8",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/jest-cli/node_modules/yargs": {
- "version": "17.7.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/jest-config": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.5.0",
- "@jest/types": "^29.5.0",
- "babel-jest": "^29.5.0",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-circus": "^29.5.0",
- "jest-environment-node": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "micromatch": "^4.0.4",
- "parse-json": "^5.2.0",
- "pretty-format": "^29.5.0",
- "slash": "^3.0.0",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@types/node": "*",
- "ts-node": ">=9.0.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "ts-node": {
- "optional": true
- }
- }
- },
- "node_modules/jest-config/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-config/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-config/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-config/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-config/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-config/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-diff": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.0.0",
- "diff-sequences": "^29.4.3",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-diff/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-diff/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-diff/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-diff/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-diff/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-diff/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-docblock": {
- "version": "29.4.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "detect-newline": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-each": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^29.5.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
- "jest-util": "^29.5.0",
- "pretty-format": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-each/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-each/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-each/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-each/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-each/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-each/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-environment-node": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-get-type": {
- "version": "29.4.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-haste-map": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^29.5.0",
- "@types/graceful-fs": "^4.1.3",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "graceful-fs": "^4.2.9",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
- "micromatch": "^4.0.4",
- "walker": "^1.0.8"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "optionalDependencies": {
- "fsevents": "^2.3.2"
- }
- },
- "node_modules/jest-leak-detector": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-matcher-utils": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.0.0",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-matcher-utils/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-message-util": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.5.0",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-message-util/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-message-util/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-message-util/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-message-util/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-message-util/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-message-util/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-mock": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "jest-util": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-pnp-resolver": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- },
- "peerDependencies": {
- "jest-resolve": "*"
- },
- "peerDependenciesMeta": {
- "jest-resolve": {
- "optional": true
- }
- }
- },
- "node_modules/jest-regex-util": {
- "version": "29.4.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-resolve": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "resolve": "^1.20.0",
- "resolve.exports": "^2.0.0",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-resolve-dependencies": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "jest-regex-util": "^29.4.3",
- "jest-snapshot": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-resolve/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-resolve/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-resolve/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-resolve/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-resolve/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-resolve/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runner": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/console": "^29.5.0",
- "@jest/environment": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "graceful-fs": "^4.2.9",
- "jest-docblock": "^29.4.3",
- "jest-environment-node": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-leak-detector": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-resolve": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-watcher": "^29.5.0",
- "jest-worker": "^29.5.0",
- "p-limit": "^3.1.0",
- "source-map-support": "0.5.13"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-runner/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-runner/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-runner/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-runner/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-runner/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runner/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/globals": "^29.5.0",
- "@jest/source-map": "^29.4.3",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^1.0.0",
- "collect-v8-coverage": "^1.0.0",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-runtime/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-runtime/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-runtime/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-runtime/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-runtime/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-snapshot": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.11.6",
- "@babel/generator": "^7.7.2",
- "@babel/plugin-syntax-jsx": "^7.7.2",
- "@babel/plugin-syntax-typescript": "^7.7.2",
- "@babel/traverse": "^7.7.2",
- "@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/babel__traverse": "^7.0.6",
- "@types/prettier": "^2.1.5",
- "babel-preset-current-node-syntax": "^1.0.0",
- "chalk": "^4.0.0",
- "expect": "^29.5.0",
- "graceful-fs": "^4.2.9",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "natural-compare": "^1.4.0",
- "pretty-format": "^29.5.0",
- "semver": "^7.3.5"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-snapshot/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-snapshot/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-snapshot/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-snapshot/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-snapshot/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-snapshot/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/jest-snapshot/node_modules/semver": {
- "version": "7.5.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/jest-snapshot/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-snapshot/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/jest-util": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-util/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-util/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-util/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-util/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-util/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-util/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-validate": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^29.5.0",
- "camelcase": "^6.2.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
- "leven": "^3.1.0",
- "pretty-format": "^29.5.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-validate/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-validate/node_modules/camelcase": {
- "version": "6.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/jest-validate/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-validate/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-validate/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-validate/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-validate/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-watcher": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "jest-util": "^29.5.0",
- "string-length": "^4.0.1"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-watcher/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-watcher/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-watcher/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-watcher/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-watcher/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-watcher/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-worker": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "jest-util": "^29.5.0",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-worker/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-worker/node_modules/supports-color": {
- "version": "8.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/jmespath": {
- "version": "0.15.0",
- "engines": {
- "node": ">= 0.6.0"
- }
- },
- "node_modules/join-component": {
- "version": "1.1.0",
- "license": "MIT"
- },
- "node_modules/jose": {
- "version": "4.14.4",
- "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz",
- "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==",
- "funding": {
- "url": "https://github.com/sponsors/panva"
- }
- },
- "node_modules/js-beautify": {
- "version": "1.14.8",
- "license": "MIT",
- "dependencies": {
- "config-chain": "^1.1.13",
- "editorconfig": "^0.15.3",
- "glob": "^8.1.0",
- "nopt": "^6.0.0"
- },
- "bin": {
- "css-beautify": "js/bin/css-beautify.js",
- "html-beautify": "js/bin/html-beautify.js",
- "js-beautify": "js/bin/js-beautify.js"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/js-beautify/node_modules/brace-expansion": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/js-beautify/node_modules/glob": {
- "version": "8.1.0",
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/js-beautify/node_modules/minimatch": {
- "version": "5.1.6",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/js-beautify/node_modules/nopt": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "abbrev": "^1.0.0"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/js-git": {
- "version": "0.7.8",
- "license": "MIT",
- "dependencies": {
- "bodec": "^0.1.0",
- "culvert": "^0.1.2",
- "git-sha1": "^0.1.2",
- "pako": "^0.2.5"
- }
- },
- "node_modules/js-sha256": {
- "version": "0.9.0",
- "license": "MIT"
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json-bigint": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "bignumber.js": "^9.0.0"
- }
- },
- "node_modules/json-buffer": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "license": "ISC",
- "optional": true
- },
- "node_modules/json-to-ast": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "code-error-fragment": "0.0.230",
- "grapheme-splitter": "^1.0.4"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/json2csv": {
- "version": "5.0.7",
- "license": "MIT",
- "dependencies": {
- "commander": "^6.1.0",
- "jsonparse": "^1.3.1",
- "lodash.get": "^4.4.2"
- },
- "bin": {
- "json2csv": "bin/json2csv.js"
- },
- "engines": {
- "node": ">= 10",
- "npm": ">= 6.13.0"
- }
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jsonfile": {
- "version": "4.0.0",
- "license": "MIT",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/jsonparse": {
- "version": "1.3.1",
- "engines": [
- "node >= 0.2.0"
- ],
- "license": "MIT"
- },
- "node_modules/jsonpointer": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/jsonwebtoken": {
- "version": "8.5.1",
- "license": "MIT",
- "dependencies": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- },
- "engines": {
- "node": ">=4",
- "npm": ">=1.4.28"
- }
- },
- "node_modules/jsonwebtoken/node_modules/jwa": {
- "version": "1.4.1",
- "license": "MIT",
- "dependencies": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/jsonwebtoken/node_modules/jws": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/jsonwebtoken/node_modules/semver": {
- "version": "5.7.1",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/jwa": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/jwks-rsa": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.0.1.tgz",
- "integrity": "sha512-UUOZ0CVReK1QVU3rbi9bC7N5/le8ziUj0A2ef1Q0M7OPD2KvjEYizptqIxGIo6fSLYDkqBrazILS18tYuRc8gw==",
- "dependencies": {
- "@types/express": "^4.17.14",
- "@types/jsonwebtoken": "^9.0.0",
- "debug": "^4.3.4",
- "jose": "^4.10.4",
- "limiter": "^1.1.5",
- "lru-memoizer": "^2.1.4"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/jws": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "jwa": "^2.0.0",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/keyv": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "json-buffer": "3.0.0"
- }
- },
- "node_modules/kind-of": {
- "version": "6.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/kleur": {
- "version": "3.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/latest-version": {
- "version": "5.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "package-json": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/lazy": {
- "version": "1.0.11",
- "license": "MIT",
- "engines": {
- "node": ">=0.2.0"
- }
- },
- "node_modules/lcid": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "invert-kv": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/leven": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/limiter": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
- "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA=="
- },
- "node_modules/lines-and-columns": {
- "version": "1.2.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/load-json-file": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "strip-bom": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/load-json-file/node_modules/parse-json": {
- "version": "2.2.0",
- "license": "MIT",
- "dependencies": {
- "error-ex": "^1.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/load-json-file/node_modules/strip-bom": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "license": "MIT"
- },
- "node_modules/lodash.camelcase": {
- "version": "4.3.0",
- "license": "MIT"
- },
- "node_modules/lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
- },
- "node_modules/lodash.debounce": {
- "version": "4.0.8",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.get": {
- "version": "4.4.2",
- "license": "MIT"
- },
- "node_modules/lodash.includes": {
- "version": "4.3.0",
- "license": "MIT"
- },
- "node_modules/lodash.isboolean": {
- "version": "3.0.3",
- "license": "MIT"
- },
- "node_modules/lodash.isinteger": {
- "version": "4.0.4",
- "license": "MIT"
- },
- "node_modules/lodash.isnumber": {
- "version": "3.0.3",
- "license": "MIT"
- },
- "node_modules/lodash.isplainobject": {
- "version": "4.0.6",
- "license": "MIT"
- },
- "node_modules/lodash.isstring": {
- "version": "4.0.1",
- "license": "MIT"
- },
- "node_modules/lodash.memoize": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.once": {
- "version": "4.1.1",
- "license": "MIT"
- },
- "node_modules/lodash.snakecase": {
- "version": "4.1.1",
- "license": "MIT"
- },
- "node_modules/log-driver": {
- "version": "1.2.7",
- "license": "ISC",
- "engines": {
- "node": ">=0.8.6"
- }
- },
- "node_modules/log-symbols": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/log-symbols/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/log-symbols/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/log-symbols/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/log-symbols/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/log-symbols/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/log-symbols/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/lowercase-keys": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "license": "ISC",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/lru-memoizer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.2.0.tgz",
- "integrity": "sha512-QfOZ6jNkxCcM/BkIPnFsqDhtrazLRsghi9mBwFAzol5GCvj4EkFT899Za3+QwikCg5sRX8JstioBDwOxEyzaNw==",
- "dependencies": {
- "lodash.clonedeep": "^4.5.0",
- "lru-cache": "~4.0.0"
- }
- },
- "node_modules/lru-memoizer/node_modules/lru-cache": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz",
- "integrity": "sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw==",
- "dependencies": {
- "pseudomap": "^1.0.1",
- "yallist": "^2.0.0"
- }
- },
- "node_modules/lru-memoizer/node_modules/yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
- },
- "node_modules/lru-queue": {
- "version": "0.1.0",
- "license": "MIT",
- "dependencies": {
- "es5-ext": "~0.10.2"
- }
- },
- "node_modules/luxon": {
- "version": "3.3.0",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/make-dir": {
- "version": "3.1.0",
- "license": "MIT",
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/make-error": {
- "version": "1.3.6",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/make-fetch-happen": {
- "version": "10.2.1",
- "license": "ISC",
- "dependencies": {
- "agentkeepalive": "^4.2.1",
- "cacache": "^16.1.0",
- "http-cache-semantics": "^4.1.0",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
- "is-lambda": "^1.0.1",
- "lru-cache": "^7.7.1",
- "minipass": "^3.1.6",
- "minipass-collect": "^1.0.2",
- "minipass-fetch": "^2.0.3",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "negotiator": "^0.6.3",
- "promise-retry": "^2.0.1",
- "socks-proxy-agent": "^7.0.0",
- "ssri": "^9.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/make-fetch-happen/node_modules/@tootallnate/once": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/make-fetch-happen/node_modules/http-proxy-agent": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/make-fetch-happen/node_modules/lru-cache": {
- "version": "7.18.3",
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/make-fetch-happen/node_modules/minipass": {
- "version": "3.3.6",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/make-fetch-happen/node_modules/socks-proxy-agent": {
- "version": "7.0.0",
- "license": "MIT",
- "dependencies": {
- "agent-base": "^6.0.2",
- "debug": "^4.3.3",
- "socks": "^2.6.2"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/make-fetch-happen/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/makeerror": {
- "version": "1.0.12",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "tmpl": "1.0.5"
- }
- },
- "node_modules/map-o": {
- "version": "2.0.10",
- "license": "MIT",
- "dependencies": {
- "iterate-object": "^1.3.0"
- }
- },
- "node_modules/md5": {
- "version": "2.3.0",
- "license": "BSD-3-Clause",
- "dependencies": {
- "charenc": "0.0.2",
- "crypt": "0.0.2",
- "is-buffer": "~1.1.6"
- }
- },
- "node_modules/media-typer": {
- "version": "0.3.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mem": {
- "version": "1.1.0",
- "license": "MIT",
- "dependencies": {
- "mimic-fn": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mem/node_modules/mimic-fn": {
- "version": "1.2.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/memoizee": {
- "version": "0.4.15",
- "license": "ISC",
- "dependencies": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.53",
- "es6-weak-map": "^2.0.3",
- "event-emitter": "^0.3.5",
- "is-promise": "^2.2.2",
- "lru-queue": "^0.1.0",
- "next-tick": "^1.1.0",
- "timers-ext": "^0.1.7"
- }
- },
- "node_modules/merge-descriptors": {
- "version": "1.0.1",
- "license": "MIT"
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/methods": {
- "version": "1.1.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/mime": {
- "version": "2.6.0",
- "license": "MIT",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/mimic-response": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.8",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/minipass": {
- "version": "2.9.0",
- "license": "ISC",
- "dependencies": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- }
- },
- "node_modules/minipass-collect": {
- "version": "1.0.2",
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minipass-collect/node_modules/minipass": {
- "version": "3.3.6",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-collect/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/minipass-fetch": {
- "version": "2.1.2",
- "license": "MIT",
- "dependencies": {
- "minipass": "^3.1.6",
- "minipass-sized": "^1.0.3",
- "minizlib": "^2.1.2"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- },
- "optionalDependencies": {
- "encoding": "^0.1.13"
- }
- },
- "node_modules/minipass-fetch/node_modules/minipass": {
- "version": "3.3.6",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-fetch/node_modules/minizlib": {
- "version": "2.1.2",
- "license": "MIT",
- "dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minipass-fetch/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/minipass-flush": {
- "version": "1.0.5",
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minipass-flush/node_modules/minipass": {
- "version": "3.3.6",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-flush/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/minipass-pipeline": {
- "version": "1.2.4",
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-pipeline/node_modules/minipass": {
- "version": "3.3.6",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-pipeline/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/minipass-sized": {
- "version": "1.0.3",
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-sized/node_modules/minipass": {
- "version": "3.3.6",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-sized/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/minizlib": {
- "version": "1.3.3",
- "license": "MIT",
- "dependencies": {
- "minipass": "^2.9.0"
- }
- },
- "node_modules/mkdirp": {
- "version": "1.0.4",
- "license": "MIT",
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/module-details-from-path": {
- "version": "1.0.3",
- "license": "MIT"
- },
- "node_modules/moment": {
- "version": "2.29.4",
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/moment-timezone": {
- "version": "0.5.43",
- "license": "MIT",
- "dependencies": {
- "moment": "^2.29.4"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/moo": {
- "version": "0.5.2",
- "license": "BSD-3-Clause"
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "license": "MIT"
- },
- "node_modules/murmurhash3js": {
- "version": "3.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mute-stream": {
- "version": "0.0.8",
- "license": "ISC"
- },
- "node_modules/mv": {
- "version": "2.1.1",
- "license": "MIT",
- "dependencies": {
- "mkdirp": "~0.5.1",
- "ncp": "~2.0.0",
- "rimraf": "~2.4.0"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/mv/node_modules/glob": {
- "version": "6.0.4",
- "license": "ISC",
- "dependencies": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/mv/node_modules/mkdirp": {
- "version": "0.5.6",
- "license": "MIT",
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/mv/node_modules/rimraf": {
- "version": "2.4.5",
- "license": "ISC",
- "dependencies": {
- "glob": "^6.0.1"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/mz": {
- "version": "2.7.0",
- "license": "MIT",
- "dependencies": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
- }
- },
- "node_modules/nan": {
- "version": "2.17.0",
- "license": "MIT"
- },
- "node_modules/nanoid": {
- "version": "3.3.6",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/ncp": {
- "version": "2.0.0",
- "license": "MIT",
- "bin": {
- "ncp": "bin/ncp"
- }
- },
- "node_modules/nearley": {
- "version": "2.20.1",
- "license": "MIT",
- "dependencies": {
- "commander": "^2.19.0",
- "moo": "^0.5.0",
- "railroad-diagrams": "^1.0.0",
- "randexp": "0.4.6"
- },
- "bin": {
- "nearley-railroad": "bin/nearley-railroad.js",
- "nearley-test": "bin/nearley-test.js",
- "nearley-unparse": "bin/nearley-unparse.js",
- "nearleyc": "bin/nearleyc.js"
- },
- "funding": {
- "type": "individual",
- "url": "https://nearley.js.org/#give-to-nearley"
- }
- },
- "node_modules/nearley/node_modules/commander": {
- "version": "2.20.3",
- "license": "MIT"
- },
- "node_modules/needle": {
- "version": "0.7.10",
- "resolved": "git+ssh://git@github.com/clearbit/needle.git#84d28b5f2c3916db1e7eb84aeaa9d976cc40054b",
- "integrity": "sha512-9VnoxVBudfy+C5eIHHbb+SkkWugmACsefrBS+EkHTufUJeHUA5/xBeSquvw+Bj5NvQmieEStduiIDnFKP+Kbog==",
- "dependencies": {
- "iconv-lite": "^0.4.4"
- },
- "bin": {
- "needle": "bin/needle"
- },
- "engines": {
- "node": ">= 0.10.x"
- }
- },
- "node_modules/negotiator": {
- "version": "0.6.3",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/netmask": {
- "version": "2.0.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/next-tick": {
- "version": "1.1.0",
- "license": "ISC"
- },
- "node_modules/node-addon-api": {
- "version": "3.2.1",
- "license": "MIT"
- },
- "node_modules/node-fetch": {
- "version": "2.6.11",
- "license": "MIT",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
- },
- "node_modules/node-fetch-h2": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "http2-client": "^1.2.5"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- }
- },
- "node_modules/node-forge": {
- "version": "1.3.1",
- "license": "(BSD-3-Clause OR GPL-2.0)",
- "engines": {
- "node": ">= 6.13.0"
- }
- },
- "node_modules/node-gyp-build": {
- "version": "4.6.0",
- "license": "MIT",
- "bin": {
- "node-gyp-build": "bin.js",
- "node-gyp-build-optional": "optional.js",
- "node-gyp-build-test": "build-test.js"
- }
- },
- "node_modules/node-html-markdown": {
- "version": "1.3.0",
- "license": "MIT",
- "dependencies": {
- "node-html-parser": "^6.1.1"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/node-html-parser": {
- "version": "6.1.5",
- "license": "MIT",
- "dependencies": {
- "css-select": "^5.1.0",
- "he": "1.2.0"
- }
- },
- "node_modules/node-int64": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/node-mocks-http": {
- "version": "1.9.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "accepts": "^1.3.7",
- "depd": "^1.1.0",
- "fresh": "^0.5.2",
- "merge-descriptors": "^1.0.1",
- "methods": "^1.1.2",
- "mime": "^1.3.4",
- "parseurl": "^1.3.3",
- "range-parser": "^1.2.0",
- "type-is": "^1.6.18"
- },
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/node-mocks-http/node_modules/depd": {
- "version": "1.1.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/node-mocks-http/node_modules/mime": {
- "version": "1.6.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/node-pre-gyp": {
- "version": "0.15.0",
- "license": "BSD-3-Clause",
- "dependencies": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.3",
- "needle": "^2.5.0",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.2.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4.4.2"
- },
- "bin": {
- "node-pre-gyp": "bin/node-pre-gyp"
- }
- },
- "node_modules/node-pre-gyp/node_modules/debug": {
- "version": "3.2.7",
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/node-pre-gyp/node_modules/mkdirp": {
- "version": "0.5.6",
- "license": "MIT",
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/node-pre-gyp/node_modules/needle": {
- "version": "2.9.1",
- "license": "MIT",
- "dependencies": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- },
- "bin": {
- "needle": "bin/needle"
- },
- "engines": {
- "node": ">= 4.4.x"
- }
- },
- "node_modules/node-pre-gyp/node_modules/rimraf": {
- "version": "2.7.1",
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/node-pre-gyp/node_modules/sax": {
- "version": "1.2.4",
- "license": "ISC"
- },
- "node_modules/node-pre-gyp/node_modules/semver": {
- "version": "5.7.1",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/node-readfiles": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "es6-promise": "^3.2.1"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.12",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/nodemon": {
- "version": "2.0.4",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "dependencies": {
- "chokidar": "^3.2.2",
- "debug": "^3.2.6",
- "ignore-by-default": "^1.0.1",
- "minimatch": "^3.0.4",
- "pstree.remy": "^1.1.7",
- "semver": "^5.7.1",
- "supports-color": "^5.5.0",
- "touch": "^3.1.0",
- "undefsafe": "^2.0.2",
- "update-notifier": "^4.0.0"
- },
- "bin": {
- "nodemon": "bin/nodemon.js"
- },
- "engines": {
- "node": ">=8.10.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/nodemon"
- }
- },
- "node_modules/nodemon/node_modules/debug": {
- "version": "3.2.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/nodemon/node_modules/semver": {
- "version": "5.7.1",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/noms": {
- "version": "0.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "inherits": "^2.0.1",
- "readable-stream": "~1.0.31"
- }
- },
- "node_modules/noms/node_modules/isarray": {
- "version": "0.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/noms/node_modules/readable-stream": {
- "version": "1.0.34",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "node_modules/noms/node_modules/string_decoder": {
- "version": "0.10.31",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/nopt": {
- "version": "4.0.3",
- "license": "ISC",
- "dependencies": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- }
- },
- "node_modules/normalize-package-data": {
- "version": "2.5.0",
- "license": "BSD-2-Clause",
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.1",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/normalize-url": {
- "version": "4.5.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/npm-bundled": {
- "version": "1.1.2",
- "license": "ISC",
- "dependencies": {
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "node_modules/npm-normalize-package-bin": {
- "version": "1.0.1",
- "license": "ISC"
- },
- "node_modules/npm-packlist": {
- "version": "1.4.8",
- "license": "ISC",
- "dependencies": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1",
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "node_modules/npm-run-path": {
- "version": "4.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/npmlog": {
- "version": "4.1.2",
- "license": "ISC",
- "dependencies": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "node_modules/nssocket": {
- "version": "0.6.0",
- "license": "MIT",
- "dependencies": {
- "eventemitter2": "~0.4.14",
- "lazy": "~1.0.11"
- },
- "engines": {
- "node": ">= 0.10.x"
- }
- },
- "node_modules/nssocket/node_modules/eventemitter2": {
- "version": "0.4.14",
- "license": "MIT"
- },
- "node_modules/nth-check": {
- "version": "2.1.1",
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/fb55/nth-check?sponsor=1"
- }
- },
- "node_modules/number-is-nan": {
- "version": "1.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/oas-kit-common": {
- "version": "1.0.8",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "fast-safe-stringify": "^2.0.7"
- }
- },
- "node_modules/oas-linter": {
- "version": "3.2.2",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@exodus/schemasafe": "^1.0.0-rc.2",
- "should": "^13.2.1",
- "yaml": "^1.10.0"
- },
- "funding": {
- "url": "https://github.com/Mermade/oas-kit?sponsor=1"
- }
- },
- "node_modules/oas-normalize": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@readme/openapi-parser": "^2.2.0",
- "js-yaml": "^4.1.0",
- "node-fetch": "^2.6.1",
- "swagger2openapi": "^7.0.8"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/oas-resolver": {
- "version": "2.5.6",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "node-fetch-h2": "^2.3.0",
- "oas-kit-common": "^1.0.8",
- "reftools": "^1.1.9",
- "yaml": "^1.10.0",
- "yargs": "^17.0.1"
- },
- "bin": {
- "resolve": "resolve.js"
- },
- "funding": {
- "url": "https://github.com/Mermade/oas-kit?sponsor=1"
- }
- },
- "node_modules/oas-resolver/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/oas-resolver/node_modules/cliui": {
- "version": "8.0.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/oas-resolver/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/oas-resolver/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/oas-resolver/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/oas-resolver/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/oas-resolver/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/oas-resolver/node_modules/y18n": {
- "version": "5.0.8",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/oas-resolver/node_modules/yargs": {
- "version": "17.7.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/oas-schema-walker": {
- "version": "1.1.5",
- "dev": true,
- "license": "BSD-3-Clause",
- "funding": {
- "url": "https://github.com/Mermade/oas-kit?sponsor=1"
- }
- },
- "node_modules/oas-validator": {
- "version": "5.0.8",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "call-me-maybe": "^1.0.1",
- "oas-kit-common": "^1.0.8",
- "oas-linter": "^3.2.2",
- "oas-resolver": "^2.5.6",
- "oas-schema-walker": "^1.1.5",
- "reftools": "^1.1.9",
- "should": "^13.2.1",
- "yaml": "^1.10.0"
- },
- "funding": {
- "url": "https://github.com/Mermade/oas-kit?sponsor=1"
- }
- },
- "node_modules/oauth": {
- "version": "0.9.15",
- "license": "MIT"
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.assign": {
- "version": "4.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.entries": {
- "version": "1.1.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.values": {
- "version": "1.1.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/omit-deep-by-values": {
- "version": "1.0.2",
- "license": "MIT",
- "dependencies": {
- "lodash": "~4.17.11"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/on-finished": {
- "version": "2.4.1",
- "license": "MIT",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/onetime": {
- "version": "5.1.2",
- "license": "MIT",
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/open": {
- "version": "8.4.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-lazy-prop": "^2.0.0",
- "is-docker": "^2.1.1",
- "is-wsl": "^2.2.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/openapi-comment-parser": {
- "version": "1.0.0",
- "license": "MIT",
- "bin": {
- "openapi-comment-parser": "bin/index.js"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/openapi-types": {
- "version": "12.1.3",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
- "node_modules/optionator": {
- "version": "0.9.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/optionator/node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/ora": {
- "version": "5.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bl": "^4.1.0",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "is-unicode-supported": "^0.1.0",
- "log-symbols": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ora/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/ora/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/ora/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/ora/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/ora/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ora/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/os-homedir": {
- "version": "1.0.2",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/os-locale": {
- "version": "2.1.0",
- "license": "MIT",
- "dependencies": {
- "execa": "^0.7.0",
- "lcid": "^1.0.0",
- "mem": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/os-locale/node_modules/cross-spawn": {
- "version": "5.1.0",
- "license": "MIT",
- "dependencies": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "node_modules/os-locale/node_modules/execa": {
- "version": "0.7.0",
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/os-locale/node_modules/get-stream": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/os-locale/node_modules/lru-cache": {
- "version": "4.1.5",
- "license": "ISC",
- "dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "node_modules/os-locale/node_modules/npm-run-path": {
- "version": "2.0.2",
- "license": "MIT",
- "dependencies": {
- "path-key": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/os-locale/node_modules/path-key": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/os-locale/node_modules/shebang-command": {
- "version": "1.2.0",
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/os-locale/node_modules/shebang-regex": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/os-locale/node_modules/which": {
- "version": "1.3.1",
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/os-locale/node_modules/yallist": {
- "version": "2.1.2",
- "license": "ISC"
- },
- "node_modules/os-tmpdir": {
- "version": "1.0.2",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/osenv": {
- "version": "0.1.5",
- "license": "ISC",
- "dependencies": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "node_modules/p-cancelable": {
- "version": "1.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/p-finally": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-map": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "aggregate-error": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-queue": {
- "version": "6.6.2",
- "license": "MIT",
- "dependencies": {
- "eventemitter3": "^4.0.4",
- "p-timeout": "^3.2.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-queue/node_modules/eventemitter3": {
- "version": "4.0.7",
- "license": "MIT"
- },
- "node_modules/p-retry": {
- "version": "4.6.2",
- "license": "MIT",
- "dependencies": {
- "@types/retry": "0.12.0",
- "retry": "^0.13.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/p-timeout": {
- "version": "3.2.0",
- "license": "MIT",
- "dependencies": {
- "p-finally": "^1.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/p-try": {
- "version": "2.2.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pac-proxy-agent": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4",
- "get-uri": "3",
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "5",
- "pac-resolver": "^5.0.0",
- "raw-body": "^2.2.0",
- "socks-proxy-agent": "5"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/pac-resolver": {
- "version": "5.0.1",
- "license": "MIT",
- "dependencies": {
- "degenerator": "^3.0.2",
- "ip": "^1.1.5",
- "netmask": "^2.0.2"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/package-json": {
- "version": "6.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "got": "^9.6.0",
- "registry-auth-token": "^4.0.0",
- "registry-url": "^5.0.0",
- "semver": "^6.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/packet-reader": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/pako": {
- "version": "0.2.9",
- "license": "MIT"
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parse-json": {
- "version": "5.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parse-link-header": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "xtend": "~4.0.1"
- }
- },
- "node_modules/parse-link-header/node_modules/xtend": {
- "version": "4.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4"
- }
- },
- "node_modules/parse-srcset": {
- "version": "1.0.2",
- "license": "MIT"
- },
- "node_modules/parse5": {
- "version": "5.1.1",
- "license": "MIT"
- },
- "node_modules/parse5-htmlparser2-tree-adapter": {
- "version": "5.1.1",
- "license": "MIT",
- "dependencies": {
- "parse5": "^5.1.1"
- }
- },
- "node_modules/parseley": {
- "version": "0.7.0",
- "license": "MIT",
- "dependencies": {
- "moo": "^0.5.1",
- "nearley": "^2.20.1"
- },
- "funding": {
- "url": "https://ko-fi.com/killymxi"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/passport": {
- "version": "0.6.0",
- "license": "MIT",
- "dependencies": {
- "passport-strategy": "1.x.x",
- "pause": "0.0.1",
- "utils-merge": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/jaredhanson"
- }
- },
- "node_modules/passport-facebook": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "passport-oauth2": "1.x.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-github2": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/passport-github2/-/passport-github2-0.1.12.tgz",
- "integrity": "sha512-3nPUCc7ttF/3HSP/k9sAXjz3SkGv5Nki84I05kSQPo01Jqq1NzJACgMblCK0fGcv9pKCG/KXU3AJRDGLqHLoIw==",
- "dependencies": {
- "passport-oauth2": "1.x.x"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/passport-google-oauth": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "passport-google-oauth1": "1.x.x",
- "passport-google-oauth20": "2.x.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-google-oauth1": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "passport-oauth1": "1.x.x"
- }
- },
- "node_modules/passport-google-oauth20": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "passport-oauth2": "1.x.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-oauth": {
- "version": "0.1.15",
- "dependencies": {
- "oauth": "0.9.x",
- "passport": "~0.1.1",
- "pkginfo": "0.2.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-oauth/node_modules/passport": {
- "version": "0.1.18",
- "dependencies": {
- "pause": "0.0.1",
- "pkginfo": "0.2.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-oauth1": {
- "version": "1.3.0",
- "license": "MIT",
- "dependencies": {
- "oauth": "0.9.x",
- "passport-strategy": "1.x.x",
- "utils-merge": "1.x.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/jaredhanson"
- }
- },
- "node_modules/passport-oauth2": {
- "version": "1.7.0",
- "license": "MIT",
- "dependencies": {
- "base64url": "3.x.x",
- "oauth": "0.9.x",
- "passport-strategy": "1.x.x",
- "uid2": "0.0.x",
- "utils-merge": "1.x.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/jaredhanson"
- }
- },
- "node_modules/passport-slack": {
- "version": "0.0.7",
- "dependencies": {
- "passport-oauth": "~0.1.1",
- "pkginfo": "0.2.x"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/passport-strategy": {
- "version": "1.0.0",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "license": "MIT"
- },
- "node_modules/path-to-regexp": {
- "version": "0.1.7",
- "license": "MIT"
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pause": {
- "version": "0.0.1"
- },
- "node_modules/peek-readable": {
- "version": "5.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
- "node_modules/peopledatalabs": {
- "version": "5.0.5",
- "license": "MIT",
- "dependencies": {
- "axios": "^1.4.0",
- "copy-anything": "^3.0.5"
- }
- },
- "node_modules/peopledatalabs/node_modules/axios": {
- "version": "1.4.0",
- "license": "MIT",
- "dependencies": {
- "follow-redirects": "^1.15.0",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- },
- "node_modules/peopledatalabs/node_modules/form-data": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/pg": {
- "version": "8.11.0",
- "license": "MIT",
- "dependencies": {
- "buffer-writer": "2.0.0",
- "packet-reader": "1.0.0",
- "pg-connection-string": "^2.6.0",
- "pg-pool": "^3.6.0",
- "pg-protocol": "^1.6.0",
- "pg-types": "^2.1.0",
- "pgpass": "1.x"
- },
- "engines": {
- "node": ">= 8.0.0"
- },
- "optionalDependencies": {
- "pg-cloudflare": "^1.1.0"
- },
- "peerDependencies": {
- "pg-native": ">=3.0.1"
- },
- "peerDependenciesMeta": {
- "pg-native": {
- "optional": true
- }
- }
- },
- "node_modules/pg-cloudflare": {
- "version": "1.1.0",
- "license": "MIT",
- "optional": true
- },
- "node_modules/pg-connection-string": {
- "version": "2.6.0",
- "license": "MIT"
- },
- "node_modules/pg-int8": {
- "version": "1.0.1",
- "license": "ISC",
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/pg-pool": {
- "version": "3.6.0",
- "license": "MIT",
- "peerDependencies": {
- "pg": ">=8.0"
- }
- },
- "node_modules/pg-protocol": {
- "version": "1.6.0",
- "license": "MIT"
- },
- "node_modules/pg-types": {
- "version": "2.2.0",
- "license": "MIT",
- "dependencies": {
- "pg-int8": "1.0.1",
- "postgres-array": "~2.0.0",
- "postgres-bytea": "~1.0.0",
- "postgres-date": "~1.0.4",
- "postgres-interval": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/pgpass": {
- "version": "1.0.5",
- "license": "MIT",
- "dependencies": {
- "split2": "^4.1.0"
- }
- },
- "node_modules/picocolors": {
- "version": "1.0.0",
- "license": "ISC"
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pidusage": {
- "version": "3.0.2",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "^5.2.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/pidusage/node_modules/safe-buffer": {
- "version": "5.2.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/pify": {
- "version": "2.3.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pirates": {
- "version": "4.0.6",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/pkg-dir": {
- "version": "4.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/find-up": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/locate-path": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/p-limit": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pkg-dir/node_modules/p-locate": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkginfo": {
- "version": "0.2.3",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/pm2": {
- "version": "5.3.0",
- "license": "AGPL-3.0",
- "dependencies": {
- "@pm2/agent": "~2.0.0",
- "@pm2/io": "~5.0.0",
- "@pm2/js-api": "~0.6.7",
- "@pm2/pm2-version-check": "latest",
- "async": "~3.2.0",
- "blessed": "0.1.81",
- "chalk": "3.0.0",
- "chokidar": "^3.5.3",
- "cli-tableau": "^2.0.0",
- "commander": "2.15.1",
- "croner": "~4.1.92",
- "dayjs": "~1.11.5",
- "debug": "^4.3.1",
- "enquirer": "2.3.6",
- "eventemitter2": "5.0.1",
- "fclone": "1.0.11",
- "mkdirp": "1.0.4",
- "needle": "2.4.0",
- "pidusage": "~3.0",
- "pm2-axon": "~4.0.1",
- "pm2-axon-rpc": "~0.7.1",
- "pm2-deploy": "~1.0.2",
- "pm2-multimeter": "^0.1.2",
- "promptly": "^2",
- "semver": "^7.2",
- "source-map-support": "0.5.21",
- "sprintf-js": "1.1.2",
- "vizion": "~2.2.1",
- "yamljs": "0.3.0"
- },
- "bin": {
- "pm2": "bin/pm2",
- "pm2-dev": "bin/pm2-dev",
- "pm2-docker": "bin/pm2-docker",
- "pm2-runtime": "bin/pm2-runtime"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "optionalDependencies": {
- "pm2-sysmonit": "^1.2.8"
- }
- },
- "node_modules/pm2-axon": {
- "version": "4.0.1",
- "license": "MIT",
- "dependencies": {
- "amp": "~0.3.1",
- "amp-message": "~0.1.1",
- "debug": "^4.3.1",
- "escape-string-regexp": "^4.0.0"
- },
- "engines": {
- "node": ">=5"
- }
- },
- "node_modules/pm2-axon-rpc": {
- "version": "0.7.1",
- "license": "MIT",
- "dependencies": {
- "debug": "^4.3.1"
- },
- "engines": {
- "node": ">=5"
- }
- },
- "node_modules/pm2-axon/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pm2-deploy": {
- "version": "1.0.2",
- "license": "MIT",
- "dependencies": {
- "run-series": "^1.1.8",
- "tv4": "^1.3.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/pm2-multimeter": {
- "version": "0.1.2",
- "license": "MIT/X11",
- "dependencies": {
- "charm": "~0.1.1"
- }
- },
- "node_modules/pm2-sysmonit": {
- "version": "1.2.8",
- "license": "Apache",
- "optional": true,
- "dependencies": {
- "async": "^3.2.0",
- "debug": "^4.3.1",
- "pidusage": "^2.0.21",
- "systeminformation": "^5.7",
- "tx2": "~1.0.4"
- }
- },
- "node_modules/pm2-sysmonit/node_modules/async": {
- "version": "3.2.4",
- "license": "MIT",
- "optional": true
- },
- "node_modules/pm2-sysmonit/node_modules/pidusage": {
- "version": "2.0.21",
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "safe-buffer": "^5.2.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pm2-sysmonit/node_modules/safe-buffer": {
- "version": "5.2.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "optional": true
- },
- "node_modules/pm2/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/pm2/node_modules/async": {
- "version": "3.2.4",
- "license": "MIT"
- },
- "node_modules/pm2/node_modules/chalk": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pm2/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/pm2/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/pm2/node_modules/commander": {
- "version": "2.15.1",
- "license": "MIT"
- },
- "node_modules/pm2/node_modules/eventemitter2": {
- "version": "5.0.1",
- "license": "MIT"
- },
- "node_modules/pm2/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pm2/node_modules/lru-cache": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/pm2/node_modules/needle": {
- "version": "2.4.0",
- "license": "MIT",
- "dependencies": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- },
- "bin": {
- "needle": "bin/needle"
- },
- "engines": {
- "node": ">= 4.4.x"
- }
- },
- "node_modules/pm2/node_modules/needle/node_modules/debug": {
- "version": "3.2.7",
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/pm2/node_modules/sax": {
- "version": "1.2.4",
- "license": "ISC"
- },
- "node_modules/pm2/node_modules/semver": {
- "version": "7.5.2",
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/pm2/node_modules/source-map-support": {
- "version": "0.5.21",
- "license": "MIT",
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/pm2/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pm2/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/postcss": {
- "version": "8.4.24",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.6",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/postgres-array": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/postgres-bytea": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postgres-date": {
- "version": "1.0.7",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postgres-interval": {
- "version": "1.2.0",
- "license": "MIT",
- "dependencies": {
- "xtend": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postgres-interval/node_modules/xtend": {
- "version": "4.0.2",
- "license": "MIT",
- "engines": {
- "node": ">=0.4"
- }
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/prepend-http": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/prettier": {
- "version": "2.8.8",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "node_modules/pretty-format": {
- "version": "29.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/schemas": "^29.4.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/pretty-format/node_modules/ansi-styles": {
- "version": "5.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "license": "MIT"
- },
- "node_modules/promise-inflight": {
- "version": "1.0.1",
- "license": "ISC"
- },
- "node_modules/promise-retry": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "err-code": "^2.0.2",
- "retry": "^0.12.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/promise-retry/node_modules/retry": {
- "version": "0.12.0",
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/promptly": {
- "version": "2.2.0",
- "license": "MIT",
- "dependencies": {
- "read": "^1.0.4"
- }
- },
- "node_modules/prompts": {
- "version": "2.4.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/proto-list": {
- "version": "1.2.4",
- "license": "ISC"
- },
- "node_modules/proxy-addr": {
- "version": "2.0.7",
- "license": "MIT",
- "dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/proxy-agent": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "agent-base": "^6.0.0",
- "debug": "4",
- "http-proxy-agent": "^4.0.0",
- "https-proxy-agent": "^5.0.0",
- "lru-cache": "^5.1.1",
- "pac-proxy-agent": "^5.0.0",
- "proxy-from-env": "^1.0.0",
- "socks-proxy-agent": "^5.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/proxy-from-env": {
- "version": "1.1.0",
- "license": "MIT"
- },
- "node_modules/pseudomap": {
- "version": "1.0.2",
- "license": "ISC"
- },
- "node_modules/pstree.remy": {
- "version": "1.1.8",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/pump": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/pumpify": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "duplexify": "^4.1.1",
- "inherits": "^2.0.3",
- "pump": "^3.0.0"
- }
- },
- "node_modules/pumpify/node_modules/duplexify": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "end-of-stream": "^1.4.1",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1",
- "stream-shift": "^1.0.0"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pupa": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "escape-goat": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pure-rand": {
- "version": "6.0.2",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/dubzzz"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fast-check"
- }
- ],
- "license": "MIT"
- },
- "node_modules/qs": {
- "version": "6.11.0",
- "license": "BSD-3-Clause",
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/querystring": {
- "version": "0.2.0",
- "engines": {
- "node": ">=0.4.x"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/railroad-diagrams": {
- "version": "1.0.0",
- "license": "CC0-1.0"
- },
- "node_modules/ramda": {
- "version": "0.27.2",
- "license": "MIT"
- },
- "node_modules/randexp": {
- "version": "0.4.6",
- "license": "MIT",
- "dependencies": {
- "discontinuous-range": "1.0.0",
- "ret": "~0.1.10"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/raw-body": {
- "version": "2.5.2",
- "license": "MIT",
- "dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/rc": {
- "version": "1.2.8",
- "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
- "dependencies": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "bin": {
- "rc": "cli.js"
- }
- },
- "node_modules/rc/node_modules/strip-json-comments": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/rdme": {
- "version": "7.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@actions/core": "^1.6.0",
- "chalk": "^4.1.2",
- "cli-table": "^0.3.1",
- "command-line-args": "^5.2.0",
- "command-line-usage": "^6.0.2",
- "config": "^3.1.0",
- "configstore": "^5.0.0",
- "debug": "^4.3.3",
- "editor": "^1.0.0",
- "enquirer": "^2.3.0",
- "form-data": "^4.0.0",
- "gray-matter": "^4.0.1",
- "isemail": "^3.1.3",
- "mime-types": "^2.1.35",
- "node-fetch": "^2.6.1",
- "oas-normalize": "^6.0.0",
- "open": "^8.2.1",
- "ora": "^5.4.1",
- "parse-link-header": "^2.0.0",
- "read": "^1.0.7",
- "semver": "^7.0.0",
- "tmp-promise": "^3.0.2",
- "update-notifier": "^5.1.0"
- },
- "bin": {
- "rdme": "bin/rdme"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/rdme/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/rdme/node_modules/boxen": {
- "version": "5.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-align": "^3.0.0",
- "camelcase": "^6.2.0",
- "chalk": "^4.1.0",
- "cli-boxes": "^2.2.1",
- "string-width": "^4.2.2",
- "type-fest": "^0.20.2",
- "widest-line": "^3.1.0",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/rdme/node_modules/camelcase": {
- "version": "6.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/rdme/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/rdme/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/rdme/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/rdme/node_modules/form-data": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/rdme/node_modules/global-dirs": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ini": "2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/rdme/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/rdme/node_modules/ini": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/rdme/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/rdme/node_modules/is-installed-globally": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "global-dirs": "^3.0.0",
- "is-path-inside": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/rdme/node_modules/is-npm": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/rdme/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/rdme/node_modules/semver": {
- "version": "7.5.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/rdme/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/rdme/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/rdme/node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/rdme/node_modules/update-notifier": {
- "version": "5.1.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "boxen": "^5.0.0",
- "chalk": "^4.1.0",
- "configstore": "^5.0.1",
- "has-yarn": "^2.1.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^2.0.0",
- "is-installed-globally": "^0.4.0",
- "is-npm": "^5.0.0",
- "is-yarn-global": "^0.3.0",
- "latest-version": "^5.1.0",
- "pupa": "^2.1.1",
- "semver": "^7.3.4",
- "semver-diff": "^3.1.1",
- "xdg-basedir": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/yeoman/update-notifier?sponsor=1"
- }
- },
- "node_modules/rdme/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/rdme/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/react-is": {
- "version": "18.2.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/read": {
- "version": "1.0.7",
- "license": "ISC",
- "dependencies": {
- "mute-stream": "~0.0.4"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/read-pkg": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/find-up": {
- "version": "2.1.0",
- "license": "MIT",
- "dependencies": {
- "locate-path": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/locate-path": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-limit": {
- "version": "1.3.0",
- "license": "MIT",
- "dependencies": {
- "p-try": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-locate": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "p-limit": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-try": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/path-exists": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg/node_modules/path-type": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "pify": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "license": "MIT",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/readable-web-to-node-stream": {
- "version": "3.0.2",
- "license": "MIT",
- "dependencies": {
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
- "node_modules/readdirp": {
- "version": "3.6.0",
- "license": "MIT",
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/reduce-flatten": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/reftools": {
- "version": "1.1.9",
- "dev": true,
- "license": "BSD-3-Clause",
- "funding": {
- "url": "https://github.com/Mermade/oas-kit?sponsor=1"
- }
- },
- "node_modules/regenerate": {
- "version": "1.4.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/regenerate-unicode-properties": {
- "version": "10.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "regenerate": "^1.4.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regenerator-runtime": {
- "version": "0.13.11",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/regenerator-transform": {
- "version": "0.15.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "node_modules/regexp.prototype.flags": {
- "version": "1.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "functions-have-names": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/regexpu-core": {
- "version": "5.3.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/regjsgen": "^0.8.0",
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/registry-auth-token": {
- "version": "4.2.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "rc": "1.2.8"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/registry-url": {
- "version": "5.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "rc": "^1.2.8"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/regjsparser": {
- "version": "0.9.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "jsesc": "~0.5.0"
- },
- "bin": {
- "regjsparser": "bin/parser"
- }
- },
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "0.5.0",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- }
- },
- "node_modules/remove-trailing-slash": {
- "version": "0.1.1",
- "license": "MIT"
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-in-the-middle": {
- "version": "5.2.0",
- "license": "MIT",
- "dependencies": {
- "debug": "^4.1.1",
- "module-details-from-path": "^1.0.3",
- "resolve": "^1.22.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/require-main-filename": {
- "version": "2.0.0",
- "license": "ISC"
- },
- "node_modules/resolve": {
- "version": "1.22.2",
- "license": "MIT",
- "dependencies": {
- "is-core-module": "^2.11.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-cwd": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "resolve-from": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-cwd/node_modules/resolve-from": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/resolve.exports": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/responselike": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lowercase-keys": "^1.0.0"
- }
- },
- "node_modules/restore-cursor": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ret": {
- "version": "0.1.15",
- "license": "MIT",
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/retry": {
- "version": "0.13.1",
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/retry-as-promised": {
- "version": "5.0.0",
- "license": "MIT"
- },
- "node_modules/retry-request": {
- "version": "4.2.2",
- "license": "MIT",
- "dependencies": {
- "debug": "^4.1.1",
- "extend": "^3.0.2"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/run-series": {
- "version": "1.1.9",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "license": "MIT"
- },
- "node_modules/safe-json-stringify": {
- "version": "1.2.0",
- "license": "MIT",
- "optional": true
- },
- "node_modules/safe-regex-test": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "is-regex": "^1.1.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "license": "MIT"
- },
- "node_modules/sanitize-html": {
- "version": "2.11.0",
- "license": "MIT",
- "dependencies": {
- "deepmerge": "^4.2.2",
- "escape-string-regexp": "^4.0.0",
- "htmlparser2": "^8.0.0",
- "is-plain-object": "^5.0.0",
- "parse-srcset": "^1.0.2",
- "postcss": "^8.3.11"
- }
- },
- "node_modules/sanitize-html/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/sax": {
- "version": "1.2.1",
- "license": "ISC"
- },
- "node_modules/section-matter": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/secure-json-parse": {
- "version": "2.7.0",
- "license": "BSD-3-Clause"
- },
- "node_modules/selderee": {
- "version": "0.6.0",
- "license": "MIT",
- "dependencies": {
- "parseley": "^0.7.0"
- },
- "funding": {
- "url": "https://ko-fi.com/killymxi"
- }
- },
- "node_modules/semver": {
- "version": "6.3.0",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/semver-diff": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/send": {
- "version": "0.17.1",
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.7.2",
- "mime": "1.6.0",
- "ms": "2.1.1",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.1",
- "statuses": "~1.5.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/debug": {
- "version": "2.6.9",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/send/node_modules/debug/node_modules/ms": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/send/node_modules/depd": {
- "version": "1.1.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/send/node_modules/destroy": {
- "version": "1.0.4",
- "license": "MIT"
- },
- "node_modules/send/node_modules/http-errors": {
- "version": "1.7.3",
- "license": "MIT",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/send/node_modules/mime": {
- "version": "1.6.0",
- "license": "MIT",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.1",
- "license": "MIT"
- },
- "node_modules/send/node_modules/on-finished": {
- "version": "2.3.0",
- "license": "MIT",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/send/node_modules/toidentifier": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/sequelize": {
- "version": "6.21.2",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/sequelize"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@types/debug": "^4.1.7",
- "@types/validator": "^13.7.1",
- "debug": "^4.3.3",
- "dottie": "^2.0.2",
- "inflection": "^1.13.2",
- "lodash": "^4.17.21",
- "moment": "^2.29.1",
- "moment-timezone": "^0.5.34",
- "pg-connection-string": "^2.5.0",
- "retry-as-promised": "^5.0.0",
- "semver": "^7.3.5",
- "sequelize-pool": "^7.1.0",
- "toposort-class": "^1.0.1",
- "uuid": "^8.3.2",
- "validator": "^13.7.0",
- "wkx": "^0.5.0"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependenciesMeta": {
- "ibm_db": {
- "optional": true
- },
- "mariadb": {
- "optional": true
- },
- "mysql2": {
- "optional": true
- },
- "pg": {
- "optional": true
- },
- "pg-hstore": {
- "optional": true
- },
- "snowflake-sdk": {
- "optional": true
- },
- "sqlite3": {
- "optional": true
- },
- "tedious": {
- "optional": true
- }
- }
- },
- "node_modules/sequelize-cli-typescript": {
- "version": "3.2.0c",
- "license": "MIT",
- "dependencies": {
- "bluebird": "^3.5.1",
- "cli-color": "^1.2.0",
- "fs-extra": "^4.0.2",
- "js-beautify": "^1.7.4",
- "lodash": "^4.17.4",
- "resolve": "^1.5.0",
- "umzug": "^2.1.0",
- "yargs": "^8.0.2"
- },
- "bin": {
- "sequelize": "lib/sequelize"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/sequelize-cli-typescript/node_modules/bluebird": {
- "version": "3.7.2",
- "license": "MIT"
- },
- "node_modules/sequelize-cli-typescript/node_modules/camelcase": {
- "version": "4.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/sequelize-cli-typescript/node_modules/cliui": {
- "version": "3.2.0",
- "license": "ISC",
- "dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- }
- },
- "node_modules/sequelize-cli-typescript/node_modules/fs-extra": {
- "version": "4.0.3",
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
- "node_modules/sequelize-cli-typescript/node_modules/get-caller-file": {
- "version": "1.0.3",
- "license": "ISC"
- },
- "node_modules/sequelize-cli-typescript/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/sequelize-cli-typescript/node_modules/require-main-filename": {
- "version": "1.0.1",
- "license": "ISC"
- },
- "node_modules/sequelize-cli-typescript/node_modules/strip-ansi": {
- "version": "3.0.1",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sequelize-cli-typescript/node_modules/wrap-ansi": {
- "version": "2.1.0",
- "license": "MIT",
- "dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sequelize-cli-typescript/node_modules/y18n": {
- "version": "3.2.2",
- "license": "ISC"
- },
- "node_modules/sequelize-cli-typescript/node_modules/yargs": {
- "version": "8.0.2",
- "license": "MIT",
- "dependencies": {
- "camelcase": "^4.1.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^2.0.0",
- "read-pkg-up": "^2.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^7.0.0"
- }
- },
- "node_modules/sequelize-cli-typescript/node_modules/yargs-parser": {
- "version": "7.0.0",
- "license": "ISC",
- "dependencies": {
- "camelcase": "^4.1.0"
- }
- },
- "node_modules/sequelize-cli-typescript/node_modules/yargs/node_modules/ansi-regex": {
- "version": "3.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/sequelize-cli-typescript/node_modules/yargs/node_modules/string-width": {
- "version": "2.1.1",
- "license": "MIT",
- "dependencies": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/sequelize-cli-typescript/node_modules/yargs/node_modules/strip-ansi": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/sequelize-pool": {
- "version": "7.1.0",
- "license": "MIT",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/sequelize/node_modules/lru-cache": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/sequelize/node_modules/semver": {
- "version": "7.5.2",
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/sequelize/node_modules/uuid": {
- "version": "8.3.2",
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/sequelize/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/serve-static": {
- "version": "1.14.1",
- "license": "MIT",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "license": "ISC"
- },
- "node_modules/setprototypeof": {
- "version": "1.1.1",
- "license": "ISC"
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shimmer": {
- "version": "1.2.1",
- "license": "BSD-2-Clause"
- },
- "node_modules/should": {
- "version": "13.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "should-equal": "^2.0.0",
- "should-format": "^3.0.3",
- "should-type": "^1.4.0",
- "should-type-adaptors": "^1.0.1",
- "should-util": "^1.0.0"
- }
- },
- "node_modules/should-equal": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "should-type": "^1.4.0"
- }
- },
- "node_modules/should-format": {
- "version": "3.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "should-type": "^1.3.0",
- "should-type-adaptors": "^1.0.1"
- }
- },
- "node_modules/should-type": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/should-type-adaptors": {
- "version": "1.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "should-type": "^1.3.0",
- "should-util": "^1.0.0"
- }
- },
- "node_modules/should-util": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/sigmund": {
- "version": "1.0.1",
- "license": "ISC"
- },
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "license": "ISC"
- },
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/slack-block-builder": {
- "version": "2.7.2",
- "license": "MIT"
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/smart-buffer": {
- "version": "4.2.0",
- "license": "MIT",
- "engines": {
- "node": ">= 6.0.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/snakeize": {
- "version": "0.1.0",
- "license": "MIT"
- },
- "node_modules/socket.io": {
- "version": "4.6.2",
- "license": "MIT",
- "dependencies": {
- "accepts": "~1.3.4",
- "base64id": "~2.0.0",
- "debug": "~4.3.2",
- "engine.io": "~6.4.2",
- "socket.io-adapter": "~2.5.2",
- "socket.io-parser": "~4.2.4"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/socket.io-adapter": {
- "version": "2.5.2",
- "license": "MIT",
- "dependencies": {
- "ws": "~8.11.0"
- }
- },
- "node_modules/socket.io-adapter/node_modules/ws": {
- "version": "8.11.0",
- "license": "MIT",
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/socket.io-parser": {
- "version": "4.2.4",
- "license": "MIT",
- "dependencies": {
- "@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.1"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/socks": {
- "version": "2.7.1",
- "license": "MIT",
- "dependencies": {
- "ip": "^2.0.0",
- "smart-buffer": "^4.2.0"
- },
- "engines": {
- "node": ">= 10.13.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/socks-proxy-agent": {
- "version": "5.0.1",
- "license": "MIT",
- "dependencies": {
- "agent-base": "^6.0.2",
- "debug": "4",
- "socks": "^2.3.3"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/socks/node_modules/ip": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.0.2",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.13",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/spdx-correct": {
- "version": "3.2.0",
- "license": "Apache-2.0",
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "license": "CC-BY-3.0"
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "license": "MIT",
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.13",
- "license": "CC0-1.0"
- },
- "node_modules/split2": {
- "version": "4.2.0",
- "license": "ISC",
- "engines": {
- "node": ">= 10.x"
- }
- },
- "node_modules/sprintf-js": {
- "version": "1.1.2",
- "license": "BSD-3-Clause"
- },
- "node_modules/ssri": {
- "version": "9.0.1",
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.1.1"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/ssri/node_modules/minipass": {
- "version": "3.3.6",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ssri/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/stack-utils": {
- "version": "2.0.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "escape-string-regexp": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/stack-utils/node_modules/escape-string-regexp": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/starkbank-ecdsa": {
- "version": "1.1.5",
- "license": "MIT License",
- "dependencies": {
- "big-integer": "^1.6.48",
- "js-sha256": "^0.9.0"
- }
- },
- "node_modules/statuses": {
- "version": "1.5.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/stream-events": {
- "version": "1.0.5",
- "license": "MIT",
- "dependencies": {
- "stubs": "^3.0.0"
- }
- },
- "node_modules/stream-shift": {
- "version": "1.0.1",
- "license": "MIT"
- },
- "node_modules/streamsearch": {
- "version": "1.1.0",
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string_decoder/node_modules/safe-buffer": {
- "version": "5.2.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/string-length": {
- "version": "4.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/string-width": {
- "version": "1.0.2",
- "license": "MIT",
- "dependencies": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/string-width/node_modules/strip-ansi": {
- "version": "3.0.1",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/string.prototype.trim": {
- "version": "1.2.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimend": {
- "version": "1.0.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi/node_modules/ansi-regex": {
- "version": "5.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-bom": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-bom-string": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-eof": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-final-newline": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/stripe": {
- "version": "10.17.0",
- "license": "MIT",
- "dependencies": {
- "@types/node": ">=8.1.0",
- "qs": "^6.11.0"
- },
- "engines": {
- "node": "^8.1 || >=10.*"
- }
- },
- "node_modules/strnum": {
- "version": "1.0.5",
- "license": "MIT"
- },
- "node_modules/strtok3": {
- "version": "7.0.0",
- "license": "MIT",
- "dependencies": {
- "@tokenizer/token": "^0.3.0",
- "peek-readable": "^5.0.0"
- },
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
- "node_modules/stubs": {
- "version": "3.0.0",
- "license": "MIT"
- },
- "node_modules/superagent": {
- "version": "8.0.9",
- "license": "MIT",
- "dependencies": {
- "component-emitter": "^1.3.0",
- "cookiejar": "^2.1.4",
- "debug": "^4.3.4",
- "fast-safe-stringify": "^2.1.1",
- "form-data": "^4.0.0",
- "formidable": "^2.1.2",
- "methods": "^1.1.2",
- "mime": "2.6.0",
- "qs": "^6.11.0",
- "semver": "^7.3.8"
- },
- "engines": {
- "node": ">=6.4.0 <13 || >=14"
- }
- },
- "node_modules/superagent/node_modules/form-data": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/superagent/node_modules/formidable": {
- "version": "2.1.2",
- "license": "MIT",
- "dependencies": {
- "dezalgo": "^1.0.4",
- "hexoid": "^1.0.0",
- "once": "^1.4.0",
- "qs": "^6.11.0"
- },
- "funding": {
- "url": "https://ko-fi.com/tunnckoCore/commissions"
- }
- },
- "node_modules/superagent/node_modules/lru-cache": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/superagent/node_modules/semver": {
- "version": "7.5.2",
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/superagent/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/supertest": {
- "version": "6.3.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "methods": "^1.1.2",
- "superagent": "^8.0.5"
- },
- "engines": {
- "node": ">=6.4.0"
- }
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/swagger-ui-dist": {
- "version": "4.1.3",
- "license": "Apache-2.0"
- },
- "node_modules/swagger2openapi": {
- "version": "7.0.8",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "call-me-maybe": "^1.0.1",
- "node-fetch": "^2.6.1",
- "node-fetch-h2": "^2.3.0",
- "node-readfiles": "^0.2.0",
- "oas-kit-common": "^1.0.8",
- "oas-resolver": "^2.5.6",
- "oas-schema-walker": "^1.1.5",
- "oas-validator": "^5.0.8",
- "reftools": "^1.1.9",
- "yaml": "^1.10.0",
- "yargs": "^17.0.1"
- },
- "bin": {
- "boast": "boast.js",
- "oas-validate": "oas-validate.js",
- "swagger2openapi": "swagger2openapi.js"
- },
- "funding": {
- "url": "https://github.com/Mermade/oas-kit?sponsor=1"
- }
- },
- "node_modules/swagger2openapi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/swagger2openapi/node_modules/cliui": {
- "version": "8.0.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/swagger2openapi/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/swagger2openapi/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/swagger2openapi/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/swagger2openapi/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/swagger2openapi/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/swagger2openapi/node_modules/y18n": {
- "version": "5.0.8",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/swagger2openapi/node_modules/yargs": {
- "version": "17.7.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/systeminformation": {
- "version": "5.18.3",
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin",
- "linux",
- "win32",
- "freebsd",
- "openbsd",
- "netbsd",
- "sunos",
- "android"
- ],
- "bin": {
- "systeminformation": "lib/cli.js"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "funding": {
- "type": "Buy me a coffee",
- "url": "https://www.buymeacoffee.com/systeminfo"
- }
- },
- "node_modules/table-layout": {
- "version": "1.0.2",
- "license": "MIT",
- "dependencies": {
- "array-back": "^4.0.1",
- "deep-extend": "~0.6.0",
- "typical": "^5.2.0",
- "wordwrapjs": "^4.0.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/table-layout/node_modules/array-back": {
- "version": "4.0.2",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/table-layout/node_modules/typical": {
- "version": "5.2.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tar": {
- "version": "4.4.19",
- "license": "ISC",
- "dependencies": {
- "chownr": "^1.1.4",
- "fs-minipass": "^1.2.7",
- "minipass": "^2.9.0",
- "minizlib": "^1.3.3",
- "mkdirp": "^0.5.5",
- "safe-buffer": "^5.2.1",
- "yallist": "^3.1.1"
- },
- "engines": {
- "node": ">=4.5"
- }
- },
- "node_modules/tar/node_modules/mkdirp": {
- "version": "0.5.6",
- "license": "MIT",
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/tar/node_modules/safe-buffer": {
- "version": "5.2.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/teeny-request": {
- "version": "7.2.0",
- "license": "Apache-2.0",
- "dependencies": {
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
- "node-fetch": "^2.6.1",
- "stream-events": "^1.0.5",
- "uuid": "^8.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/teeny-request/node_modules/@tootallnate/once": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/teeny-request/node_modules/http-proxy-agent": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/teeny-request/node_modules/uuid": {
- "version": "8.3.2",
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/term-size": {
- "version": "2.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/test-exclude": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/text-table": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/thenify": {
- "version": "3.3.1",
- "license": "MIT",
- "dependencies": {
- "any-promise": "^1.0.0"
- }
- },
- "node_modules/thenify-all": {
- "version": "1.6.0",
- "license": "MIT",
- "dependencies": {
- "thenify": ">= 3.1.0 < 4"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/through2": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/through2/node_modules/readable-stream": {
- "version": "2.3.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/through2/node_modules/string_decoder": {
- "version": "1.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/through2/node_modules/xtend": {
- "version": "4.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4"
- }
- },
- "node_modules/timers-ext": {
- "version": "0.1.7",
- "license": "ISC",
- "dependencies": {
- "es5-ext": "~0.10.46",
- "next-tick": "1"
- }
- },
- "node_modules/tmp": {
- "version": "0.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "rimraf": "^3.0.0"
- },
- "engines": {
- "node": ">=8.17.0"
- }
- },
- "node_modules/tmp-promise": {
- "version": "3.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tmp": "^0.2.0"
- }
- },
- "node_modules/tmpl": {
- "version": "1.0.5",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-readable-stream": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/token-types": {
- "version": "5.0.1",
- "license": "MIT",
- "dependencies": {
- "@tokenizer/token": "^0.3.0",
- "ieee754": "^1.2.1"
- },
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
- "node_modules/token-types/node_modules/ieee754": {
- "version": "1.2.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "BSD-3-Clause"
- },
- "node_modules/toposort-class": {
- "version": "1.0.1",
- "license": "MIT"
- },
- "node_modules/touch": {
- "version": "3.1.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "nopt": "~1.0.10"
- },
- "bin": {
- "nodetouch": "bin/nodetouch.js"
- }
- },
- "node_modules/touch/node_modules/nopt": {
- "version": "1.0.10",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "abbrev": "1"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- }
- },
- "node_modules/tr46": {
- "version": "0.0.3",
- "license": "MIT"
- },
- "node_modules/ts-jest": {
- "version": "29.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bs-logger": "0.x",
- "fast-json-stable-stringify": "2.x",
- "jest-util": "^29.0.0",
- "json5": "^2.2.3",
- "lodash.memoize": "4.x",
- "make-error": "1.x",
- "semver": "7.x",
- "yargs-parser": "^21.0.1"
- },
- "bin": {
- "ts-jest": "cli.js"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@babel/core": ">=7.0.0-beta.0 <8",
- "@jest/types": "^29.0.0",
- "babel-jest": "^29.0.0",
- "jest": "^29.0.0",
- "typescript": ">=4.3 <6"
- },
- "peerDependenciesMeta": {
- "@babel/core": {
- "optional": true
- },
- "@jest/types": {
- "optional": true
- },
- "babel-jest": {
- "optional": true
- },
- "esbuild": {
- "optional": true
- }
- }
- },
- "node_modules/ts-jest/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/ts-jest/node_modules/semver": {
- "version": "7.5.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/ts-jest/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/ts-mixer": {
- "version": "6.0.3",
- "license": "MIT"
- },
- "node_modules/ts-node": {
- "version": "10.6.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@cspotcode/source-map-support": "0.7.0",
- "@tsconfig/node10": "^1.0.7",
- "@tsconfig/node12": "^1.0.7",
- "@tsconfig/node14": "^1.0.0",
- "@tsconfig/node16": "^1.0.2",
- "acorn": "^8.4.1",
- "acorn-walk": "^8.1.1",
- "arg": "^4.1.0",
- "create-require": "^1.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "v8-compile-cache-lib": "^3.0.0",
- "yn": "3.1.1"
- },
- "bin": {
- "ts-node": "dist/bin.js",
- "ts-node-cwd": "dist/bin-cwd.js",
- "ts-node-script": "dist/bin-script.js",
- "ts-node-transpile-only": "dist/bin-transpile.js",
- "ts-script": "dist/bin-script-deprecated.js"
- },
- "peerDependencies": {
- "@swc/core": ">=1.2.50",
- "@swc/wasm": ">=1.2.50",
- "@types/node": "*",
- "typescript": ">=2.7"
- },
- "peerDependenciesMeta": {
- "@swc/core": {
- "optional": true
- },
- "@swc/wasm": {
- "optional": true
- }
- }
- },
- "node_modules/tsconfig-paths": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
- "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
- "dependencies": {
- "json5": "^2.2.2",
- "minimist": "^1.2.6",
- "strip-bom": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tsconfig-paths/node_modules/strip-bom": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/tslib": {
- "version": "2.5.3",
- "license": "0BSD"
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "node_modules/tsutils/node_modules/tslib": {
- "version": "1.14.1",
- "dev": true,
- "license": "0BSD"
- },
- "node_modules/tunnel": {
- "version": "0.0.6",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
- }
- },
- "node_modules/tv4": {
- "version": "1.3.0",
- "license": [
- {
- "type": "Public Domain",
- "url": "http://geraintluff.github.io/tv4/LICENSE.txt"
- },
- {
- "type": "MIT",
- "url": "http://jsonary.com/LICENSE.txt"
- }
- ],
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/tx2": {
- "version": "1.0.5",
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "json-stringify-safe": "^5.0.1"
- }
- },
- "node_modules/type": {
- "version": "1.2.0",
- "license": "ISC"
- },
- "node_modules/type-check": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-detect": {
- "version": "4.0.8",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/type-fest": {
- "version": "0.21.3",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/type-is": {
- "version": "1.6.18",
- "license": "MIT",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/typed-array-length": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typedarray": {
- "version": "0.0.6",
- "license": "MIT"
- },
- "node_modules/typedarray-to-buffer": {
- "version": "3.1.5",
- "license": "MIT",
- "dependencies": {
- "is-typedarray": "^1.0.0"
- }
- },
- "node_modules/typescript": {
- "version": "4.9.5",
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/typical": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/uid2": {
- "version": "0.0.4",
- "license": "MIT"
- },
- "node_modules/umzug": {
- "version": "2.3.0",
- "license": "MIT",
- "dependencies": {
- "bluebird": "^3.7.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/umzug/node_modules/bluebird": {
- "version": "3.7.2",
- "license": "MIT"
- },
- "node_modules/unbox-primitive": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/undefsafe": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/undici": {
- "version": "5.22.1",
- "license": "MIT",
- "dependencies": {
- "busboy": "^1.6.0"
- },
- "engines": {
- "node": ">=14.0"
- }
- },
- "node_modules/unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unique-filename": {
- "version": "2.0.1",
- "license": "ISC",
- "dependencies": {
- "unique-slug": "^3.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/unique-slug": {
- "version": "3.0.0",
- "license": "ISC",
- "dependencies": {
- "imurmurhash": "^0.1.4"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/unique-string": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "crypto-random-string": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/universal-github-app-jwt": {
- "version": "1.1.1",
- "license": "MIT",
- "dependencies": {
- "@types/jsonwebtoken": "^9.0.0",
- "jsonwebtoken": "^9.0.0"
- }
- },
- "node_modules/universal-github-app-jwt/node_modules/jsonwebtoken": {
- "version": "9.0.0",
- "license": "MIT",
- "dependencies": {
- "jws": "^3.2.2",
- "lodash": "^4.17.21",
- "ms": "^2.1.1",
- "semver": "^7.3.8"
- },
- "engines": {
- "node": ">=12",
- "npm": ">=6"
- }
- },
- "node_modules/universal-github-app-jwt/node_modules/jwa": {
- "version": "1.4.1",
- "license": "MIT",
- "dependencies": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/universal-github-app-jwt/node_modules/jws": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/universal-github-app-jwt/node_modules/lru-cache": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/universal-github-app-jwt/node_modules/semver": {
- "version": "7.5.2",
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/universal-github-app-jwt/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/universal-user-agent": {
- "version": "6.0.0",
- "license": "ISC"
- },
- "node_modules/universalify": {
- "version": "0.1.2",
- "license": "MIT",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/unleash-client": {
- "version": "3.21.0",
- "license": "Apache-2.0",
- "dependencies": {
- "ip": "^1.1.8",
- "make-fetch-happen": "^10.2.1",
- "murmurhash3js": "^3.0.1",
- "semver": "^7.3.8"
- },
- "engines": {
- "node": ">=10",
- "npm": ">=4.0.0"
- }
- },
- "node_modules/unleash-client/node_modules/lru-cache": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/unleash-client/node_modules/semver": {
- "version": "7.5.2",
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/unleash-client/node_modules/yallist": {
- "version": "4.0.0",
- "license": "ISC"
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/untildify": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.0.11",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/update-notifier": {
- "version": "4.1.3",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "boxen": "^4.2.0",
- "chalk": "^3.0.0",
- "configstore": "^5.0.1",
- "has-yarn": "^2.1.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^2.0.0",
- "is-installed-globally": "^0.3.1",
- "is-npm": "^4.0.0",
- "is-yarn-global": "^0.3.0",
- "latest-version": "^5.0.0",
- "pupa": "^2.0.1",
- "semver-diff": "^3.1.1",
- "xdg-basedir": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/yeoman/update-notifier?sponsor=1"
- }
- },
- "node_modules/update-notifier/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/update-notifier/node_modules/chalk": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/update-notifier/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/update-notifier/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/update-notifier/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/update-notifier/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/url": {
- "version": "0.10.3",
- "license": "MIT",
- "dependencies": {
- "punycode": "1.3.2",
- "querystring": "0.2.0"
- }
- },
- "node_modules/url-parse-lax": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prepend-http": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/url-search-params-polyfill": {
- "version": "7.0.1",
- "license": "MIT"
- },
- "node_modules/url/node_modules/punycode": {
- "version": "1.3.2",
- "license": "MIT"
- },
- "node_modules/utf-8-validate": {
- "version": "5.0.10",
- "hasInstallScript": true,
- "license": "MIT",
- "dependencies": {
- "node-gyp-build": "^4.3.0"
- },
- "engines": {
- "node": ">=6.14.2"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "license": "MIT"
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/uuid": {
- "version": "9.0.0",
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/v8-compile-cache-lib": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/v8-to-istanbul": {
- "version": "9.1.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.12",
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0"
- },
- "engines": {
- "node": ">=10.12.0"
- }
- },
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "license": "Apache-2.0",
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "node_modules/validator": {
- "version": "13.9.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/vary": {
- "version": "1.1.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/verify-github-webhook": {
- "version": "1.0.1",
- "license": "MIT"
- },
- "node_modules/vizion": {
- "version": "2.2.1",
- "license": "Apache-2.0",
- "dependencies": {
- "async": "^2.6.3",
- "git-node-fs": "^1.0.0",
- "ini": "^1.3.5",
- "js-git": "^0.7.8"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/vm2": {
- "version": "3.9.19",
- "license": "MIT",
- "dependencies": {
- "acorn": "^8.7.0",
- "acorn-walk": "^8.2.0"
- },
- "bin": {
- "vm2": "bin/vm2"
- },
- "engines": {
- "node": ">=6.0"
- }
- },
- "node_modules/walker": {
- "version": "1.0.8",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "makeerror": "1.0.12"
- }
- },
- "node_modules/wcwidth": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "defaults": "^1.0.3"
- }
- },
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "license": "BSD-2-Clause"
- },
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-module": {
- "version": "2.0.1",
- "license": "ISC"
- },
- "node_modules/which-typed-array": {
- "version": "1.1.9",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/wide-align": {
- "version": "1.1.5",
- "license": "ISC",
- "dependencies": {
- "string-width": "^1.0.2 || 2 || 3 || 4"
- }
- },
- "node_modules/widest-line": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "string-width": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/widest-line/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/widest-line/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wkx": {
- "version": "0.5.0",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/word-wrap": {
- "version": "1.2.3",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/wordwrapjs": {
- "version": "4.0.1",
- "license": "MIT",
- "dependencies": {
- "reduce-flatten": "^2.0.0",
- "typical": "^5.2.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/wordwrapjs/node_modules/typical": {
- "version": "5.2.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi": {
- "version": "6.2.0",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/wrap-ansi/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/string-width": {
- "version": "4.2.3",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "license": "ISC"
- },
- "node_modules/write-file-atomic": {
- "version": "3.0.3",
- "license": "ISC",
- "dependencies": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
- }
- },
- "node_modules/ws": {
- "version": "8.13.0",
- "license": "MIT",
- "engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": ">=5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/xdg-basedir": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/xml2js": {
- "version": "0.4.19",
- "license": "MIT",
- "dependencies": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~9.0.1"
- }
- },
- "node_modules/xmlbuilder": {
- "version": "9.0.7",
- "license": "MIT",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/xregexp": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/xtend": {
- "version": "2.1.2",
- "dependencies": {
- "object-keys": "~0.4.0"
- },
- "engines": {
- "node": ">=0.4"
- }
- },
- "node_modules/xtend/node_modules/object-keys": {
- "version": "0.4.0",
- "license": "MIT"
- },
- "node_modules/y18n": {
- "version": "4.0.3",
- "license": "ISC"
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "license": "ISC"
- },
- "node_modules/yaml": {
- "version": "1.10.2",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/yamljs": {
- "version": "0.3.0",
- "license": "MIT",
- "dependencies": {
- "argparse": "^1.0.7",
- "glob": "^7.0.5"
- },
- "bin": {
- "json2yaml": "bin/json2yaml",
- "yaml2json": "bin/yaml2json"
- }
- },
- "node_modules/yamljs/node_modules/argparse": {
- "version": "1.0.10",
- "license": "MIT",
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/yamljs/node_modules/sprintf-js": {
- "version": "1.0.3",
- "license": "BSD-3-Clause"
- },
- "node_modules/yargs": {
- "version": "15.4.1",
- "license": "MIT",
- "dependencies": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs-parser": {
- "version": "21.1.1",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs/node_modules/find-up": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/locate-path": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/p-limit": {
- "version": "2.3.0",
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/yargs/node_modules/p-locate": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/string-width": {
- "version": "4.2.3",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/yargs-parser": {
- "version": "18.1.3",
- "license": "ISC",
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yn": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/zlib-sync": {
- "version": "0.1.8",
- "hasInstallScript": true,
- "license": "MIT",
- "dependencies": {
- "nan": "^2.17.0"
- }
- }
- },
- "dependencies": {
- "@actions/core": {
- "version": "1.10.0",
- "dev": true,
- "requires": {
- "@actions/http-client": "^2.0.1",
- "uuid": "^8.3.2"
- },
- "dependencies": {
- "uuid": {
- "version": "8.3.2",
- "dev": true
- }
- }
- },
- "@actions/http-client": {
- "version": "2.1.0",
- "dev": true,
- "requires": {
- "tunnel": "^0.0.6"
- }
- },
- "@ampproject/remapping": {
- "version": "2.2.1",
- "dev": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@apidevtools/openapi-schemas": {
- "version": "2.1.0",
- "dev": true
- },
- "@apidevtools/swagger-methods": {
- "version": "3.0.2",
- "dev": true
- },
- "@aws-crypto/crc32": {
- "version": "3.0.0",
- "requires": {
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1"
- }
- }
- },
- "@aws-crypto/ie11-detection": {
- "version": "3.0.0",
- "requires": {
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1"
- }
- }
- },
- "@aws-crypto/sha256-browser": {
- "version": "3.0.0",
- "requires": {
- "@aws-crypto/ie11-detection": "^3.0.0",
- "@aws-crypto/sha256-js": "^3.0.0",
- "@aws-crypto/supports-web-crypto": "^3.0.0",
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-locate-window": "^3.0.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1"
- }
- }
- },
- "@aws-crypto/sha256-js": {
- "version": "3.0.0",
- "requires": {
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1"
- }
- }
- },
- "@aws-crypto/supports-web-crypto": {
- "version": "3.0.0",
- "requires": {
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1"
- }
- }
- },
- "@aws-crypto/util": {
- "version": "3.0.0",
- "requires": {
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1"
- }
- }
- },
- "@aws-sdk/abort-controller": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/client-comprehend": {
- "version": "3.357.0",
- "requires": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.357.0",
- "@aws-sdk/config-resolver": "3.357.0",
- "@aws-sdk/credential-provider-node": "3.357.0",
- "@aws-sdk/fetch-http-handler": "3.357.0",
- "@aws-sdk/hash-node": "3.357.0",
- "@aws-sdk/invalid-dependency": "3.357.0",
- "@aws-sdk/middleware-content-length": "3.357.0",
- "@aws-sdk/middleware-endpoint": "3.357.0",
- "@aws-sdk/middleware-host-header": "3.357.0",
- "@aws-sdk/middleware-logger": "3.357.0",
- "@aws-sdk/middleware-recursion-detection": "3.357.0",
- "@aws-sdk/middleware-retry": "3.357.0",
- "@aws-sdk/middleware-serde": "3.357.0",
- "@aws-sdk/middleware-signing": "3.357.0",
- "@aws-sdk/middleware-stack": "3.357.0",
- "@aws-sdk/middleware-user-agent": "3.357.0",
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/node-http-handler": "3.357.0",
- "@aws-sdk/smithy-client": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/url-parser": "3.357.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.357.0",
- "@aws-sdk/util-defaults-mode-node": "3.357.0",
- "@aws-sdk/util-endpoints": "3.357.0",
- "@aws-sdk/util-retry": "3.357.0",
- "@aws-sdk/util-user-agent-browser": "3.357.0",
- "@aws-sdk/util-user-agent-node": "3.357.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "@smithy/protocol-http": "^1.0.1",
- "@smithy/types": "^1.0.0",
- "tslib": "^2.5.0",
- "uuid": "^8.3.2"
- },
- "dependencies": {
- "uuid": {
- "version": "8.3.2"
- }
- }
- },
- "@aws-sdk/client-sso": {
- "version": "3.357.0",
- "requires": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.357.0",
- "@aws-sdk/fetch-http-handler": "3.357.0",
- "@aws-sdk/hash-node": "3.357.0",
- "@aws-sdk/invalid-dependency": "3.357.0",
- "@aws-sdk/middleware-content-length": "3.357.0",
- "@aws-sdk/middleware-endpoint": "3.357.0",
- "@aws-sdk/middleware-host-header": "3.357.0",
- "@aws-sdk/middleware-logger": "3.357.0",
- "@aws-sdk/middleware-recursion-detection": "3.357.0",
- "@aws-sdk/middleware-retry": "3.357.0",
- "@aws-sdk/middleware-serde": "3.357.0",
- "@aws-sdk/middleware-stack": "3.357.0",
- "@aws-sdk/middleware-user-agent": "3.357.0",
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/node-http-handler": "3.357.0",
- "@aws-sdk/smithy-client": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/url-parser": "3.357.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.357.0",
- "@aws-sdk/util-defaults-mode-node": "3.357.0",
- "@aws-sdk/util-endpoints": "3.357.0",
- "@aws-sdk/util-retry": "3.357.0",
- "@aws-sdk/util-user-agent-browser": "3.357.0",
- "@aws-sdk/util-user-agent-node": "3.357.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "@smithy/protocol-http": "^1.0.1",
- "@smithy/types": "^1.0.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/client-sso-oidc": {
- "version": "3.357.0",
- "requires": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.357.0",
- "@aws-sdk/fetch-http-handler": "3.357.0",
- "@aws-sdk/hash-node": "3.357.0",
- "@aws-sdk/invalid-dependency": "3.357.0",
- "@aws-sdk/middleware-content-length": "3.357.0",
- "@aws-sdk/middleware-endpoint": "3.357.0",
- "@aws-sdk/middleware-host-header": "3.357.0",
- "@aws-sdk/middleware-logger": "3.357.0",
- "@aws-sdk/middleware-recursion-detection": "3.357.0",
- "@aws-sdk/middleware-retry": "3.357.0",
- "@aws-sdk/middleware-serde": "3.357.0",
- "@aws-sdk/middleware-stack": "3.357.0",
- "@aws-sdk/middleware-user-agent": "3.357.0",
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/node-http-handler": "3.357.0",
- "@aws-sdk/smithy-client": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/url-parser": "3.357.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.357.0",
- "@aws-sdk/util-defaults-mode-node": "3.357.0",
- "@aws-sdk/util-endpoints": "3.357.0",
- "@aws-sdk/util-retry": "3.357.0",
- "@aws-sdk/util-user-agent-browser": "3.357.0",
- "@aws-sdk/util-user-agent-node": "3.357.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "@smithy/protocol-http": "^1.0.1",
- "@smithy/types": "^1.0.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/client-sts": {
- "version": "3.357.0",
- "requires": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.357.0",
- "@aws-sdk/credential-provider-node": "3.357.0",
- "@aws-sdk/fetch-http-handler": "3.357.0",
- "@aws-sdk/hash-node": "3.357.0",
- "@aws-sdk/invalid-dependency": "3.357.0",
- "@aws-sdk/middleware-content-length": "3.357.0",
- "@aws-sdk/middleware-endpoint": "3.357.0",
- "@aws-sdk/middleware-host-header": "3.357.0",
- "@aws-sdk/middleware-logger": "3.357.0",
- "@aws-sdk/middleware-recursion-detection": "3.357.0",
- "@aws-sdk/middleware-retry": "3.357.0",
- "@aws-sdk/middleware-sdk-sts": "3.357.0",
- "@aws-sdk/middleware-serde": "3.357.0",
- "@aws-sdk/middleware-signing": "3.357.0",
- "@aws-sdk/middleware-stack": "3.357.0",
- "@aws-sdk/middleware-user-agent": "3.357.0",
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/node-http-handler": "3.357.0",
- "@aws-sdk/smithy-client": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/url-parser": "3.357.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.357.0",
- "@aws-sdk/util-defaults-mode-node": "3.357.0",
- "@aws-sdk/util-endpoints": "3.357.0",
- "@aws-sdk/util-retry": "3.357.0",
- "@aws-sdk/util-user-agent-browser": "3.357.0",
- "@aws-sdk/util-user-agent-node": "3.357.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "@smithy/protocol-http": "^1.0.1",
- "@smithy/types": "^1.0.0",
- "fast-xml-parser": "4.2.4",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/config-resolver": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-config-provider": "3.310.0",
- "@aws-sdk/util-middleware": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-env": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-imds": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/url-parser": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-ini": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/credential-provider-env": "3.357.0",
- "@aws-sdk/credential-provider-imds": "3.357.0",
- "@aws-sdk/credential-provider-process": "3.357.0",
- "@aws-sdk/credential-provider-sso": "3.357.0",
- "@aws-sdk/credential-provider-web-identity": "3.357.0",
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/shared-ini-file-loader": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-node": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/credential-provider-env": "3.357.0",
- "@aws-sdk/credential-provider-imds": "3.357.0",
- "@aws-sdk/credential-provider-ini": "3.357.0",
- "@aws-sdk/credential-provider-process": "3.357.0",
- "@aws-sdk/credential-provider-sso": "3.357.0",
- "@aws-sdk/credential-provider-web-identity": "3.357.0",
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/shared-ini-file-loader": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-process": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/shared-ini-file-loader": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-sso": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/client-sso": "3.357.0",
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/shared-ini-file-loader": "3.357.0",
- "@aws-sdk/token-providers": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-web-identity": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/eventstream-codec": {
- "version": "3.357.0",
- "requires": {
- "@aws-crypto/crc32": "3.0.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-hex-encoding": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/fetch-http-handler": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/querystring-builder": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-base64": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/hash-node": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-buffer-from": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/invalid-dependency": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/is-array-buffer": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-content-length": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-endpoint": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/middleware-serde": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/url-parser": "3.357.0",
- "@aws-sdk/util-middleware": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-host-header": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-logger": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-recursion-detection": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-retry": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/service-error-classification": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-middleware": "3.357.0",
- "@aws-sdk/util-retry": "3.357.0",
- "tslib": "^2.5.0",
- "uuid": "^8.3.2"
- },
- "dependencies": {
- "uuid": {
- "version": "8.3.2"
- }
- }
- },
- "@aws-sdk/middleware-sdk-sts": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/middleware-signing": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-serde": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-signing": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/signature-v4": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-middleware": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-stack": {
- "version": "3.357.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-user-agent": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-endpoints": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/node-config-provider": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/shared-ini-file-loader": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/node-http-handler": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/abort-controller": "3.357.0",
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/querystring-builder": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/property-provider": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/protocol-http": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/querystring-builder": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-uri-escape": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/querystring-parser": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/s3-request-presigner": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/middleware-endpoint": "3.357.0",
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/signature-v4-multi-region": "3.357.0",
- "@aws-sdk/smithy-client": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-format-url": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/service-error-classification": {
- "version": "3.357.0"
- },
- "@aws-sdk/shared-ini-file-loader": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/signature-v4": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/eventstream-codec": "3.357.0",
- "@aws-sdk/is-array-buffer": "3.310.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-hex-encoding": "3.310.0",
- "@aws-sdk/util-middleware": "3.357.0",
- "@aws-sdk/util-uri-escape": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/signature-v4-multi-region": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.357.0",
- "@aws-sdk/signature-v4": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/smithy-client": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/middleware-stack": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-stream": "3.357.0",
- "@smithy/types": "^1.0.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/token-providers": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/client-sso-oidc": "3.357.0",
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/shared-ini-file-loader": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/types": {
- "version": "3.357.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/url-parser": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/querystring-parser": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-base64": {
- "version": "3.310.0",
- "requires": {
- "@aws-sdk/util-buffer-from": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-body-length-browser": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-body-length-node": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-buffer-from": {
- "version": "3.310.0",
- "requires": {
- "@aws-sdk/is-array-buffer": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-config-provider": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-defaults-mode-browser": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "bowser": "^2.11.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-defaults-mode-node": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/config-resolver": "3.357.0",
- "@aws-sdk/credential-provider-imds": "3.357.0",
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/property-provider": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-endpoints": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-format-url": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/querystring-builder": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-hex-encoding": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-locate-window": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-middleware": {
- "version": "3.357.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-retry": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/service-error-classification": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-stream": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/fetch-http-handler": "3.357.0",
- "@aws-sdk/node-http-handler": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-buffer-from": "3.310.0",
- "@aws-sdk/util-hex-encoding": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-uri-escape": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-user-agent-browser": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/types": "3.357.0",
- "bowser": "^2.11.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-user-agent-node": {
- "version": "3.357.0",
- "requires": {
- "@aws-sdk/node-config-provider": "3.357.0",
- "@aws-sdk/types": "3.357.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-utf8": {
- "version": "3.310.0",
- "requires": {
- "@aws-sdk/util-buffer-from": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-utf8-browser": {
- "version": "3.259.0",
- "requires": {
- "tslib": "^2.3.1"
- }
- },
- "@babel/code-frame": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.22.5"
- }
- },
- "@babel/compat-data": {
- "version": "7.22.5",
- "dev": true
- },
- "@babel/core": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helpers": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.2",
- "semver": "^6.3.0"
- }
- },
- "@babel/generator": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/types": "^7.22.5",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
- }
- },
- "@babel/helper-annotate-as-pure": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.5",
- "browserslist": "^4.21.3",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.0"
- }
- },
- "@babel/helper-create-class-features-plugin": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
- "@babel/helper-member-expression-to-functions": "^7.22.5",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "semver": "^6.3.0"
- }
- },
- "@babel/helper-create-regexp-features-plugin": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "regexpu-core": "^5.3.1",
- "semver": "^6.3.0"
- }
- },
- "@babel/helper-define-polyfill-provider": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "@babel/helper-compilation-targets": "^7.17.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2",
- "semver": "^6.1.2"
- }
- },
- "@babel/helper-environment-visitor": {
- "version": "7.22.5",
- "dev": true
- },
- "@babel/helper-function-name": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/template": "^7.22.5",
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-member-expression-to-functions": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-module-imports": "^7.22.5",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-optimise-call-expression": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.22.5",
- "dev": true
- },
- "@babel/helper-remap-async-to-generator": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-wrap-function": "^7.22.5",
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-replace-supers": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-member-expression-to-functions": "^7.22.5",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-simple-access": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helper-string-parser": {
- "version": "7.22.5",
- "dev": true
- },
- "@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "dev": true
- },
- "@babel/helper-validator-option": {
- "version": "7.22.5",
- "dev": true
- },
- "@babel/helper-wrap-function": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-function-name": "^7.22.5",
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/helpers": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/template": "^7.22.5",
- "@babel/traverse": "^7.22.5",
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/highlight": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.22.5",
- "dev": true
- },
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/plugin-transform-optional-chaining": "^7.22.5"
- }
- },
- "@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0-placeholder-for-preset-env.2",
- "dev": true,
- "requires": {}
- },
- "@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.18.6",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-bigint": {
- "version": "7.8.3",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
- }
- },
- "@babel/plugin-syntax-class-static-block": {
- "version": "7.14.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
- }
- },
- "@babel/plugin-syntax-import-assertions": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-syntax-import-attributes": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-jsx": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-private-property-in-object": {
- "version": "7.14.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-typescript": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-syntax-unicode-sets-regex": {
- "version": "7.18.6",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-arrow-functions": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-async-generator-functions": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.5",
- "@babel/plugin-syntax-async-generators": "^7.8.4"
- }
- },
- "@babel/plugin-transform-async-to-generator": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-module-imports": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.5"
- }
- },
- "@babel/plugin-transform-block-scoped-functions": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-block-scoping": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-class-properties": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-class-static-block": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- }
- },
- "@babel/plugin-transform-classes": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "globals": "^11.1.0"
- }
- },
- "@babel/plugin-transform-computed-properties": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/template": "^7.22.5"
- }
- },
- "@babel/plugin-transform-destructuring": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-dotall-regex": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-duplicate-keys": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-dynamic-import": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- }
- },
- "@babel/plugin-transform-exponentiation-operator": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-export-namespace-from": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- }
- },
- "@babel/plugin-transform-for-of": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-function-name": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-json-strings": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- }
- },
- "@babel/plugin-transform-literals": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- }
- },
- "@babel/plugin-transform-member-expression-literals": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-modules-amd": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-modules-commonjs": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-simple-access": "^7.22.5"
- }
- },
- "@babel/plugin-transform-modules-systemjs": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5"
- }
- },
- "@babel/plugin-transform-modules-umd": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-new-target": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- }
- },
- "@babel/plugin-transform-numeric-separator": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- }
- },
- "@babel/plugin-transform-object-rest-spread": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.22.5"
- }
- },
- "@babel/plugin-transform-object-super": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.5"
- }
- },
- "@babel/plugin-transform-optional-catch-binding": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- }
- },
- "@babel/plugin-transform-optional-chaining": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- }
- },
- "@babel/plugin-transform-parameters": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-private-methods": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-private-property-in-object": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- }
- },
- "@babel/plugin-transform-property-literals": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-regenerator": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "regenerator-transform": "^0.15.1"
- }
- },
- "@babel/plugin-transform-reserved-words": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-shorthand-properties": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-spread": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
- }
- },
- "@babel/plugin-transform-sticky-regex": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-template-literals": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-typeof-symbol": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-typescript": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-typescript": "^7.22.5"
- }
- },
- "@babel/plugin-transform-unicode-escapes": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-unicode-property-regex": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-unicode-regex": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- }
- },
- "@babel/preset-env": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.22.5",
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.5",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5",
- "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.22.5",
- "@babel/plugin-syntax-import-attributes": "^7.22.5",
- "@babel/plugin-syntax-import-meta": "^7.10.4",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.22.5",
- "@babel/plugin-transform-async-generator-functions": "^7.22.5",
- "@babel/plugin-transform-async-to-generator": "^7.22.5",
- "@babel/plugin-transform-block-scoped-functions": "^7.22.5",
- "@babel/plugin-transform-block-scoping": "^7.22.5",
- "@babel/plugin-transform-class-properties": "^7.22.5",
- "@babel/plugin-transform-class-static-block": "^7.22.5",
- "@babel/plugin-transform-classes": "^7.22.5",
- "@babel/plugin-transform-computed-properties": "^7.22.5",
- "@babel/plugin-transform-destructuring": "^7.22.5",
- "@babel/plugin-transform-dotall-regex": "^7.22.5",
- "@babel/plugin-transform-duplicate-keys": "^7.22.5",
- "@babel/plugin-transform-dynamic-import": "^7.22.5",
- "@babel/plugin-transform-exponentiation-operator": "^7.22.5",
- "@babel/plugin-transform-export-namespace-from": "^7.22.5",
- "@babel/plugin-transform-for-of": "^7.22.5",
- "@babel/plugin-transform-function-name": "^7.22.5",
- "@babel/plugin-transform-json-strings": "^7.22.5",
- "@babel/plugin-transform-literals": "^7.22.5",
- "@babel/plugin-transform-logical-assignment-operators": "^7.22.5",
- "@babel/plugin-transform-member-expression-literals": "^7.22.5",
- "@babel/plugin-transform-modules-amd": "^7.22.5",
- "@babel/plugin-transform-modules-commonjs": "^7.22.5",
- "@babel/plugin-transform-modules-systemjs": "^7.22.5",
- "@babel/plugin-transform-modules-umd": "^7.22.5",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
- "@babel/plugin-transform-new-target": "^7.22.5",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5",
- "@babel/plugin-transform-numeric-separator": "^7.22.5",
- "@babel/plugin-transform-object-rest-spread": "^7.22.5",
- "@babel/plugin-transform-object-super": "^7.22.5",
- "@babel/plugin-transform-optional-catch-binding": "^7.22.5",
- "@babel/plugin-transform-optional-chaining": "^7.22.5",
- "@babel/plugin-transform-parameters": "^7.22.5",
- "@babel/plugin-transform-private-methods": "^7.22.5",
- "@babel/plugin-transform-private-property-in-object": "^7.22.5",
- "@babel/plugin-transform-property-literals": "^7.22.5",
- "@babel/plugin-transform-regenerator": "^7.22.5",
- "@babel/plugin-transform-reserved-words": "^7.22.5",
- "@babel/plugin-transform-shorthand-properties": "^7.22.5",
- "@babel/plugin-transform-spread": "^7.22.5",
- "@babel/plugin-transform-sticky-regex": "^7.22.5",
- "@babel/plugin-transform-template-literals": "^7.22.5",
- "@babel/plugin-transform-typeof-symbol": "^7.22.5",
- "@babel/plugin-transform-unicode-escapes": "^7.22.5",
- "@babel/plugin-transform-unicode-property-regex": "^7.22.5",
- "@babel/plugin-transform-unicode-regex": "^7.22.5",
- "@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
- "@babel/preset-modules": "^0.1.5",
- "@babel/types": "^7.22.5",
- "babel-plugin-polyfill-corejs2": "^0.4.3",
- "babel-plugin-polyfill-corejs3": "^0.8.1",
- "babel-plugin-polyfill-regenerator": "^0.5.0",
- "core-js-compat": "^3.30.2",
- "semver": "^6.3.0"
- }
- },
- "@babel/preset-modules": {
- "version": "0.1.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
- "@babel/plugin-transform-dotall-regex": "^7.4.4",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
- }
- },
- "@babel/preset-typescript": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.5",
- "@babel/plugin-syntax-jsx": "^7.22.5",
- "@babel/plugin-transform-modules-commonjs": "^7.22.5",
- "@babel/plugin-transform-typescript": "^7.22.5"
- }
- },
- "@babel/regjsgen": {
- "version": "0.8.0",
- "dev": true
- },
- "@babel/runtime": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "regenerator-runtime": "^0.13.11"
- }
- },
- "@babel/template": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5"
- }
- },
- "@babel/traverse": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- }
- },
- "@babel/types": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-string-parser": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@bcoe/v8-coverage": {
- "version": "0.2.3",
- "dev": true
- },
- "@crowd/alerting": {
- "version": "file:../services/libs/alerting",
- "requires": {
- "@types/node": "^20.3.1",
- "@typescript-eslint/eslint-plugin": "^5.59.11",
- "@typescript-eslint/parser": "^5.59.11",
- "axios": "^1.4.0",
- "eslint": "^8.42.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.1.3"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1"
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.42.0"
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.10",
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1"
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1"
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5"
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.12"
- },
- "@types/node": {
- "version": "20.3.1"
- },
- "@types/semver": {
- "version": "7.5.0"
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.11",
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/type-utils": "5.59.11",
- "@typescript-eslint/utils": "5.59.11",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.11",
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/typescript-estree": "5.59.11",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.11",
- "requires": {
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/visitor-keys": "5.59.11"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.11",
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.11",
- "@typescript-eslint/utils": "5.59.11",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.11"
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.11",
- "requires": {
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/visitor-keys": "5.59.11",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.11",
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/typescript-estree": "5.59.11",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0"
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.11",
- "requires": {
- "@typescript-eslint/types": "5.59.11",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2"
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1"
- },
- "ansi-styles": {
- "version": "4.3.0",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1"
- },
- "array-union": {
- "version": "2.1.0"
- },
- "asynckit": {
- "version": "0.4.0"
- },
- "axios": {
- "version": "1.4.0",
- "requires": {
- "follow-redirects": "^1.15.0",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- },
- "balanced-match": {
- "version": "1.0.2"
- },
- "brace-expansion": {
- "version": "1.1.11",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0"
- },
- "chalk": {
- "version": "4.1.2",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4"
- },
- "combined-stream": {
- "version": "1.0.8",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "concat-map": {
- "version": "0.0.1"
- },
- "cross-spawn": {
- "version": "7.0.3",
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4"
- },
- "delayed-stream": {
- "version": "1.0.0"
- },
- "dir-glob": {
- "version": "3.0.1",
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0"
- },
- "eslint": {
- "version": "8.42.0",
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.42.0",
- "@humanwhocodes/config-array": "^0.11.10",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1"
- },
- "espree": {
- "version": "9.5.2",
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0"
- },
- "esutils": {
- "version": "2.0.3"
- },
- "fast-deep-equal": {
- "version": "3.1.3"
- },
- "fast-diff": {
- "version": "1.3.0"
- },
- "fast-glob": {
- "version": "3.2.12",
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0"
- },
- "fast-levenshtein": {
- "version": "2.0.6"
- },
- "fastq": {
- "version": "1.15.0",
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7"
- },
- "follow-redirects": {
- "version": "1.15.2"
- },
- "form-data": {
- "version": "4.0.0",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- },
- "fs.realpath": {
- "version": "1.0.0"
- },
- "glob": {
- "version": "7.2.3",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4"
- },
- "graphemer": {
- "version": "1.4.0"
- },
- "has-flag": {
- "version": "4.0.0"
- },
- "ignore": {
- "version": "5.2.4"
- },
- "import-fresh": {
- "version": "3.3.0",
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4"
- },
- "inflight": {
- "version": "1.0.6",
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4"
- },
- "is-extglob": {
- "version": "2.1.1"
- },
- "is-glob": {
- "version": "4.0.3",
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0"
- },
- "is-path-inside": {
- "version": "3.0.3"
- },
- "isexe": {
- "version": "2.0.0"
- },
- "js-yaml": {
- "version": "4.1.0",
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1"
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1"
- },
- "levn": {
- "version": "0.4.1",
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2"
- },
- "lru-cache": {
- "version": "6.0.0",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1"
- },
- "micromatch": {
- "version": "4.0.5",
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "mime-db": {
- "version": "1.52.0"
- },
- "mime-types": {
- "version": "2.1.35",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2"
- },
- "natural-compare": {
- "version": "1.4.0"
- },
- "natural-compare-lite": {
- "version": "1.4.0"
- },
- "once": {
- "version": "1.4.0",
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0"
- },
- "path-is-absolute": {
- "version": "1.0.1"
- },
- "path-key": {
- "version": "3.1.1"
- },
- "path-type": {
- "version": "4.0.0"
- },
- "picomatch": {
- "version": "2.3.1"
- },
- "prelude-ls": {
- "version": "1.2.1"
- },
- "prettier": {
- "version": "2.8.8"
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "proxy-from-env": {
- "version": "1.1.0"
- },
- "punycode": {
- "version": "2.3.0"
- },
- "queue-microtask": {
- "version": "1.2.3"
- },
- "resolve-from": {
- "version": "4.0.0"
- },
- "reusify": {
- "version": "1.0.4"
- },
- "rimraf": {
- "version": "3.0.2",
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0"
- },
- "slash": {
- "version": "3.0.0"
- },
- "strip-ansi": {
- "version": "6.0.1",
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1"
- },
- "supports-color": {
- "version": "7.2.0",
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0"
- },
- "to-regex-range": {
- "version": "5.0.1",
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1"
- },
- "tsutils": {
- "version": "3.21.0",
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2"
- },
- "typescript": {
- "version": "5.1.3"
- },
- "uri-js": {
- "version": "4.4.1",
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3"
- },
- "wrappy": {
- "version": "1.0.2"
- },
- "yallist": {
- "version": "4.0.0"
- },
- "yocto-queue": {
- "version": "0.1.0"
- }
- }
- },
- "@crowd/common": {
- "version": "file:../services/libs/common",
- "requires": {
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "psl": "^1.9.0",
- "typescript": "^5.0.4",
- "uuid": "^9.0.0"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.7",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "uuid": {
- "version": "9.0.0"
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@crowd/integrations": {
- "version": "file:../services/libs/integrations",
- "requires": {
- "@crowd/common": "file:../common",
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "@octokit/auth-app": "^4.0.13",
- "@octokit/graphql": "^5.0.6",
- "@types/he": "^1.2.0",
- "@types/node": "^18.16.3",
- "@types/sanitize-html": "^2.9.0",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "axios": "^1.4.0",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "he": "^1.2.0",
- "prettier": "^2.8.8",
- "sanitize-html": "^2.10.0",
- "typescript": "^5.0.4",
- "verify-github-webhook": "^1.0.1"
- },
- "dependencies": {
- "@crowd/common": {
- "version": "file:../services/libs/common",
- "requires": {
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "psl": "^1.9.0",
- "typescript": "^5.0.4",
- "uuid": "^9.0.0"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.7",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "uuid": {
- "version": "9.0.0"
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@crowd/logging": {
- "version": "file:../services/libs/logging",
- "requires": {
- "@crowd/common": "file:../common",
- "@crowd/tracing": "file:../tracing",
- "@types/bunyan": "^1.8.8",
- "@types/bunyan-format": "^0.2.5",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "bunyan": "^1.8.15",
- "bunyan-format": "^0.2.1",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- },
- "dependencies": {
- "@crowd/common": {
- "version": "file:../services/libs/common",
- "requires": {
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "psl": "^1.9.0",
- "typescript": "^5.0.4",
- "uuid": "^9.0.0"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.7",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "uuid": {
- "version": "9.0.0"
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/bunyan": {
- "version": "1.8.8",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/bunyan-format": {
- "version": "0.2.5",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.8",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "ansicolors": {
- "version": "0.2.1"
- },
- "ansistyles": {
- "version": "0.1.3"
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "devOptional": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "devOptional": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "bunyan": {
- "version": "1.8.15",
- "requires": {
- "dtrace-provider": "~0.8",
- "moment": "^2.19.3",
- "mv": "~2",
- "safe-json-stringify": "~1"
- }
- },
- "bunyan-format": {
- "version": "0.2.1",
- "requires": {
- "ansicolors": "~0.2.1",
- "ansistyles": "~0.1.1",
- "xtend": "~2.1.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "devOptional": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "dtrace-provider": {
- "version": "0.8.8",
- "optional": true,
- "requires": {
- "nan": "^2.14.0"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "devOptional": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "devOptional": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "devOptional": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.8",
- "optional": true
- },
- "mkdirp": {
- "version": "0.5.6",
- "optional": true,
- "requires": {
- "minimist": "^1.2.6"
- }
- },
- "moment": {
- "version": "2.29.4",
- "optional": true
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "mv": {
- "version": "2.1.1",
- "optional": true,
- "requires": {
- "mkdirp": "~0.5.1",
- "ncp": "~2.0.0",
- "rimraf": "~2.4.0"
- },
- "dependencies": {
- "glob": {
- "version": "6.0.4",
- "optional": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "rimraf": {
- "version": "2.4.5",
- "optional": true,
- "requires": {
- "glob": "^6.0.1"
- }
- }
- }
- },
- "nan": {
- "version": "2.17.0",
- "optional": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "ncp": {
- "version": "2.0.0",
- "optional": true
- },
- "object-keys": {
- "version": "0.4.0"
- },
- "once": {
- "version": "1.4.0",
- "devOptional": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "devOptional": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-json-stringify": {
- "version": "1.2.0",
- "optional": true
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "devOptional": true
- },
- "xtend": {
- "version": "2.1.2",
- "requires": {
- "object-keys": "~0.4.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@crowd/types": {
- "version": "file:../services/libs/types",
- "requires": {
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.9",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/type-utils": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.5",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/he": {
- "version": "1.2.0",
- "dev": true
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.9",
- "dev": true
- },
- "@types/sanitize-html": {
- "version": "2.9.0",
- "dev": true,
- "requires": {
- "htmlparser2": "^8.0.0"
- }
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/type-utils": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.5",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "asynckit": {
- "version": "0.4.0"
- },
- "axios": {
- "version": "1.4.0",
- "requires": {
- "follow-redirects": "^1.15.0",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.8",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "deepmerge": {
- "version": "4.3.1"
- },
- "delayed-stream": {
- "version": "1.0.0"
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "dom-serializer": {
- "version": "2.0.0",
- "requires": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- }
- },
- "domelementtype": {
- "version": "2.3.0"
- },
- "domhandler": {
- "version": "5.0.3",
- "requires": {
- "domelementtype": "^2.3.0"
- }
- },
- "domutils": {
- "version": "3.1.0",
- "requires": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- }
- },
- "entities": {
- "version": "4.5.0"
- },
- "escape-string-regexp": {
- "version": "4.0.0"
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "follow-redirects": {
- "version": "1.15.2"
- },
- "form-data": {
- "version": "4.0.0",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "he": {
- "version": "1.2.0"
- },
- "htmlparser2": {
- "version": "8.0.2",
- "requires": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "entities": "^4.4.0"
- }
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "is-plain-object": {
- "version": "5.0.0"
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "mime-db": {
- "version": "1.52.0"
- },
- "mime-types": {
- "version": "2.1.35",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "nanoid": {
- "version": "3.3.6"
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "parse-srcset": {
- "version": "1.0.2"
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picocolors": {
- "version": "1.0.0"
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "postcss": {
- "version": "8.4.23",
- "requires": {
- "nanoid": "^3.3.6",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- }
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "proxy-from-env": {
- "version": "1.1.0"
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "sanitize-html": {
- "version": "2.10.0",
- "requires": {
- "deepmerge": "^4.2.2",
- "escape-string-regexp": "^4.0.0",
- "htmlparser2": "^8.0.0",
- "is-plain-object": "^5.0.0",
- "parse-srcset": "^1.0.2",
- "postcss": "^8.3.11"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "source-map-js": {
- "version": "1.0.2"
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@crowd/logging": {
- "version": "file:../services/libs/logging",
- "requires": {
- "@crowd/common": "file:../common",
- "@crowd/tracing": "file:../tracing",
- "@types/bunyan": "^1.8.8",
- "@types/bunyan-format": "^0.2.5",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "bunyan": "^1.8.15",
- "bunyan-format": "^0.2.1",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- },
- "dependencies": {
- "@crowd/common": {
- "version": "file:../services/libs/common",
- "requires": {
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "psl": "^1.9.0",
- "typescript": "^5.0.4",
- "uuid": "^9.0.0"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.7",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "uuid": {
- "version": "9.0.0"
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/bunyan": {
- "version": "1.8.8",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/bunyan-format": {
- "version": "0.2.5",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.8",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "ansicolors": {
- "version": "0.2.1"
- },
- "ansistyles": {
- "version": "0.1.3"
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "devOptional": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "devOptional": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "bunyan": {
- "version": "1.8.15",
- "requires": {
- "dtrace-provider": "~0.8",
- "moment": "^2.19.3",
- "mv": "~2",
- "safe-json-stringify": "~1"
- }
- },
- "bunyan-format": {
- "version": "0.2.1",
- "requires": {
- "ansicolors": "~0.2.1",
- "ansistyles": "~0.1.1",
- "xtend": "~2.1.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "devOptional": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "dtrace-provider": {
- "version": "0.8.8",
- "optional": true,
- "requires": {
- "nan": "^2.14.0"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "devOptional": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "devOptional": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "devOptional": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.8",
- "optional": true
- },
- "mkdirp": {
- "version": "0.5.6",
- "optional": true,
- "requires": {
- "minimist": "^1.2.6"
- }
- },
- "moment": {
- "version": "2.29.4",
- "optional": true
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "mv": {
- "version": "2.1.1",
- "optional": true,
- "requires": {
- "mkdirp": "~0.5.1",
- "ncp": "~2.0.0",
- "rimraf": "~2.4.0"
- },
- "dependencies": {
- "glob": {
- "version": "6.0.4",
- "optional": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "rimraf": {
- "version": "2.4.5",
- "optional": true,
- "requires": {
- "glob": "^6.0.1"
- }
- }
- }
- },
- "nan": {
- "version": "2.17.0",
- "optional": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "ncp": {
- "version": "2.0.0",
- "optional": true
- },
- "object-keys": {
- "version": "0.4.0"
- },
- "once": {
- "version": "1.4.0",
- "devOptional": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "devOptional": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-json-stringify": {
- "version": "1.2.0",
- "optional": true
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "devOptional": true
- },
- "xtend": {
- "version": "2.1.2",
- "requires": {
- "object-keys": "~0.4.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@crowd/opensearch": {
- "version": "file:../services/libs/opensearch",
- "requires": {
- "@crowd/types": "file:../types",
- "@opensearch-project/opensearch": "^1.2.0",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- },
- "dependencies": {
- "@crowd/types": {
- "version": "file:../services/libs/types",
- "requires": {
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.9",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/type-utils": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.5",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.42.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.10",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@opensearch-project/opensearch": {
- "version": "1.2.0",
- "requires": {
- "aws4": "^1.11.0",
- "debug": "^4.3.1",
- "hpagent": "^0.1.1",
- "ms": "^2.1.3",
- "secure-json-parse": "^2.4.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.3"
- }
- }
- },
- "@types/json-schema": {
- "version": "7.0.12",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.18",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.11",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/type-utils": "5.59.11",
- "@typescript-eslint/utils": "5.59.11",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.11",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/typescript-estree": "5.59.11",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.11",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/visitor-keys": "5.59.11"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.11",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.11",
- "@typescript-eslint/utils": "5.59.11",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.11",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.11",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/visitor-keys": "5.59.11",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.11",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.11",
- "@typescript-eslint/types": "5.59.11",
- "@typescript-eslint/typescript-estree": "5.59.11",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.11",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.11",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "aws4": {
- "version": "1.12.0"
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.42.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.42.0",
- "@humanwhocodes/config-array": "^0.11.10",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.3.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "graphemer": {
- "version": "1.4.0",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "hpagent": {
- "version": "0.1.2"
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2"
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "secure-json-parse": {
- "version": "2.7.0"
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.1.3",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@crowd/redis": {
- "version": "file:../services/libs/redis",
- "requires": {
- "@crowd/common": "file:../common",
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "redis": "^4.6.6",
- "typescript": "^5.0.4"
- },
- "dependencies": {
- "@crowd/common": {
- "version": "file:../services/libs/common",
- "requires": {
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "psl": "^1.9.0",
- "typescript": "^5.0.4",
- "uuid": "^9.0.0"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.7",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "uuid": {
- "version": "9.0.0"
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@crowd/logging": {
- "version": "file:../services/libs/logging",
- "requires": {
- "@crowd/common": "file:../common",
- "@crowd/tracing": "file:../tracing",
- "@types/bunyan": "^1.8.8",
- "@types/bunyan-format": "^0.2.5",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "bunyan": "^1.8.15",
- "bunyan-format": "^0.2.1",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- },
- "dependencies": {
- "@crowd/common": {
- "version": "file:../services/libs/common",
- "requires": {
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "psl": "^1.9.0",
- "typescript": "^5.0.4",
- "uuid": "^9.0.0"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.7",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "uuid": {
- "version": "9.0.0"
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/bunyan": {
- "version": "1.8.8",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/bunyan-format": {
- "version": "0.2.5",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.8",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "ansicolors": {
- "version": "0.2.1"
- },
- "ansistyles": {
- "version": "0.1.3"
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "devOptional": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "devOptional": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "bunyan": {
- "version": "1.8.15",
- "requires": {
- "dtrace-provider": "~0.8",
- "moment": "^2.19.3",
- "mv": "~2",
- "safe-json-stringify": "~1"
- }
- },
- "bunyan-format": {
- "version": "0.2.1",
- "requires": {
- "ansicolors": "~0.2.1",
- "ansistyles": "~0.1.1",
- "xtend": "~2.1.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "devOptional": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "dtrace-provider": {
- "version": "0.8.8",
- "optional": true,
- "requires": {
- "nan": "^2.14.0"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "devOptional": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "devOptional": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "devOptional": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.8",
- "optional": true
- },
- "mkdirp": {
- "version": "0.5.6",
- "optional": true,
- "requires": {
- "minimist": "^1.2.6"
- }
- },
- "moment": {
- "version": "2.29.4",
- "optional": true
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "mv": {
- "version": "2.1.1",
- "optional": true,
- "requires": {
- "mkdirp": "~0.5.1",
- "ncp": "~2.0.0",
- "rimraf": "~2.4.0"
- },
- "dependencies": {
- "glob": {
- "version": "6.0.4",
- "optional": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "rimraf": {
- "version": "2.4.5",
- "optional": true,
- "requires": {
- "glob": "^6.0.1"
- }
- }
- }
- },
- "nan": {
- "version": "2.17.0",
- "optional": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "ncp": {
- "version": "2.0.0",
- "optional": true
- },
- "object-keys": {
- "version": "0.4.0"
- },
- "once": {
- "version": "1.4.0",
- "devOptional": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "devOptional": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-json-stringify": {
- "version": "1.2.0",
- "optional": true
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "devOptional": true
- },
- "xtend": {
- "version": "2.1.2",
- "requires": {
- "object-keys": "~0.4.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@crowd/types": {
- "version": "file:../services/libs/types",
- "requires": {
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.9",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/type-utils": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.5",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@redis/bloom": {
- "version": "1.2.0",
- "requires": {}
- },
- "@redis/client": {
- "version": "1.5.7",
- "requires": {
- "cluster-key-slot": "1.1.2",
- "generic-pool": "3.9.0",
- "yallist": "4.0.0"
- }
- },
- "@redis/graph": {
- "version": "1.1.0",
- "requires": {}
- },
- "@redis/json": {
- "version": "1.0.4",
- "requires": {}
- },
- "@redis/search": {
- "version": "1.1.2",
- "requires": {}
- },
- "@redis/time-series": {
- "version": "1.0.4",
- "requires": {}
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.9",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "cluster-key-slot": {
- "version": "1.1.2"
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "generic-pool": {
- "version": "3.9.0"
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "redis": {
- "version": "4.6.6",
- "requires": {
- "@redis/bloom": "1.2.0",
- "@redis/client": "1.5.7",
- "@redis/graph": "1.1.0",
- "@redis/json": "1.0.4",
- "@redis/search": "1.1.2",
- "@redis/time-series": "1.0.4"
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0"
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@crowd/sqs": {
- "version": "file:../services/libs/sqs",
- "requires": {
- "@aws-sdk/client-sqs": "^3.332.0",
- "@aws-sdk/types": "^3.329.0",
- "@crowd/common": "file:../common",
- "@crowd/logging": "file:../logging",
- "@crowd/tracing": "file:../tracing",
- "@crowd/types": "file:../types",
- "@smithy/util-retry": "^2.0.1",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- },
- "dependencies": {
- "@aws-crypto/ie11-detection": {
- "version": "3.0.0",
- "requires": {
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1"
- }
- }
- },
- "@aws-crypto/sha256-browser": {
- "version": "3.0.0",
- "requires": {
- "@aws-crypto/ie11-detection": "^3.0.0",
- "@aws-crypto/sha256-js": "^3.0.0",
- "@aws-crypto/supports-web-crypto": "^3.0.0",
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-locate-window": "^3.0.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1"
- }
- }
- },
- "@aws-crypto/sha256-js": {
- "version": "3.0.0",
- "requires": {
- "@aws-crypto/util": "^3.0.0",
- "@aws-sdk/types": "^3.222.0",
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1"
- }
- }
- },
- "@aws-crypto/supports-web-crypto": {
- "version": "3.0.0",
- "requires": {
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1"
- }
- }
- },
- "@aws-crypto/util": {
- "version": "3.0.0",
- "requires": {
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-utf8-browser": "^3.0.0",
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1"
- }
- }
- },
- "@aws-sdk/abort-controller": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/client-sqs": {
- "version": "3.332.0",
- "requires": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.332.0",
- "@aws-sdk/config-resolver": "3.329.0",
- "@aws-sdk/credential-provider-node": "3.332.0",
- "@aws-sdk/fetch-http-handler": "3.329.0",
- "@aws-sdk/hash-node": "3.329.0",
- "@aws-sdk/invalid-dependency": "3.329.0",
- "@aws-sdk/md5-js": "3.329.0",
- "@aws-sdk/middleware-content-length": "3.329.0",
- "@aws-sdk/middleware-endpoint": "3.329.0",
- "@aws-sdk/middleware-host-header": "3.329.0",
- "@aws-sdk/middleware-logger": "3.329.0",
- "@aws-sdk/middleware-recursion-detection": "3.329.0",
- "@aws-sdk/middleware-retry": "3.329.0",
- "@aws-sdk/middleware-sdk-sqs": "3.329.0",
- "@aws-sdk/middleware-serde": "3.329.0",
- "@aws-sdk/middleware-signing": "3.329.0",
- "@aws-sdk/middleware-stack": "3.329.0",
- "@aws-sdk/middleware-user-agent": "3.332.0",
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/node-http-handler": "3.329.0",
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/smithy-client": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/url-parser": "3.329.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.329.0",
- "@aws-sdk/util-defaults-mode-node": "3.329.0",
- "@aws-sdk/util-endpoints": "3.332.0",
- "@aws-sdk/util-retry": "3.329.0",
- "@aws-sdk/util-user-agent-browser": "3.329.0",
- "@aws-sdk/util-user-agent-node": "3.329.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "fast-xml-parser": "4.1.2",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/client-sso": {
- "version": "3.332.0",
- "requires": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.329.0",
- "@aws-sdk/fetch-http-handler": "3.329.0",
- "@aws-sdk/hash-node": "3.329.0",
- "@aws-sdk/invalid-dependency": "3.329.0",
- "@aws-sdk/middleware-content-length": "3.329.0",
- "@aws-sdk/middleware-endpoint": "3.329.0",
- "@aws-sdk/middleware-host-header": "3.329.0",
- "@aws-sdk/middleware-logger": "3.329.0",
- "@aws-sdk/middleware-recursion-detection": "3.329.0",
- "@aws-sdk/middleware-retry": "3.329.0",
- "@aws-sdk/middleware-serde": "3.329.0",
- "@aws-sdk/middleware-stack": "3.329.0",
- "@aws-sdk/middleware-user-agent": "3.332.0",
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/node-http-handler": "3.329.0",
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/smithy-client": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/url-parser": "3.329.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.329.0",
- "@aws-sdk/util-defaults-mode-node": "3.329.0",
- "@aws-sdk/util-endpoints": "3.332.0",
- "@aws-sdk/util-retry": "3.329.0",
- "@aws-sdk/util-user-agent-browser": "3.329.0",
- "@aws-sdk/util-user-agent-node": "3.329.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/client-sso-oidc": {
- "version": "3.332.0",
- "requires": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.329.0",
- "@aws-sdk/fetch-http-handler": "3.329.0",
- "@aws-sdk/hash-node": "3.329.0",
- "@aws-sdk/invalid-dependency": "3.329.0",
- "@aws-sdk/middleware-content-length": "3.329.0",
- "@aws-sdk/middleware-endpoint": "3.329.0",
- "@aws-sdk/middleware-host-header": "3.329.0",
- "@aws-sdk/middleware-logger": "3.329.0",
- "@aws-sdk/middleware-recursion-detection": "3.329.0",
- "@aws-sdk/middleware-retry": "3.329.0",
- "@aws-sdk/middleware-serde": "3.329.0",
- "@aws-sdk/middleware-stack": "3.329.0",
- "@aws-sdk/middleware-user-agent": "3.332.0",
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/node-http-handler": "3.329.0",
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/smithy-client": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/url-parser": "3.329.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.329.0",
- "@aws-sdk/util-defaults-mode-node": "3.329.0",
- "@aws-sdk/util-endpoints": "3.332.0",
- "@aws-sdk/util-retry": "3.329.0",
- "@aws-sdk/util-user-agent-browser": "3.329.0",
- "@aws-sdk/util-user-agent-node": "3.329.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/client-sts": {
- "version": "3.332.0",
- "requires": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.329.0",
- "@aws-sdk/credential-provider-node": "3.332.0",
- "@aws-sdk/fetch-http-handler": "3.329.0",
- "@aws-sdk/hash-node": "3.329.0",
- "@aws-sdk/invalid-dependency": "3.329.0",
- "@aws-sdk/middleware-content-length": "3.329.0",
- "@aws-sdk/middleware-endpoint": "3.329.0",
- "@aws-sdk/middleware-host-header": "3.329.0",
- "@aws-sdk/middleware-logger": "3.329.0",
- "@aws-sdk/middleware-recursion-detection": "3.329.0",
- "@aws-sdk/middleware-retry": "3.329.0",
- "@aws-sdk/middleware-sdk-sts": "3.329.0",
- "@aws-sdk/middleware-serde": "3.329.0",
- "@aws-sdk/middleware-signing": "3.329.0",
- "@aws-sdk/middleware-stack": "3.329.0",
- "@aws-sdk/middleware-user-agent": "3.332.0",
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/node-http-handler": "3.329.0",
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/smithy-client": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/url-parser": "3.329.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.329.0",
- "@aws-sdk/util-defaults-mode-node": "3.329.0",
- "@aws-sdk/util-endpoints": "3.332.0",
- "@aws-sdk/util-retry": "3.329.0",
- "@aws-sdk/util-user-agent-browser": "3.329.0",
- "@aws-sdk/util-user-agent-node": "3.329.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "fast-xml-parser": "4.1.2",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/config-resolver": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-config-provider": "3.310.0",
- "@aws-sdk/util-middleware": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-env": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-imds": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/url-parser": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-ini": {
- "version": "3.332.0",
- "requires": {
- "@aws-sdk/credential-provider-env": "3.329.0",
- "@aws-sdk/credential-provider-imds": "3.329.0",
- "@aws-sdk/credential-provider-process": "3.329.0",
- "@aws-sdk/credential-provider-sso": "3.332.0",
- "@aws-sdk/credential-provider-web-identity": "3.329.0",
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/shared-ini-file-loader": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-node": {
- "version": "3.332.0",
- "requires": {
- "@aws-sdk/credential-provider-env": "3.329.0",
- "@aws-sdk/credential-provider-imds": "3.329.0",
- "@aws-sdk/credential-provider-ini": "3.332.0",
- "@aws-sdk/credential-provider-process": "3.329.0",
- "@aws-sdk/credential-provider-sso": "3.332.0",
- "@aws-sdk/credential-provider-web-identity": "3.329.0",
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/shared-ini-file-loader": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-process": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/shared-ini-file-loader": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-sso": {
- "version": "3.332.0",
- "requires": {
- "@aws-sdk/client-sso": "3.332.0",
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/shared-ini-file-loader": "3.329.0",
- "@aws-sdk/token-providers": "3.332.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/credential-provider-web-identity": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/fetch-http-handler": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/querystring-builder": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-base64": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/hash-node": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-buffer-from": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/invalid-dependency": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/is-array-buffer": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/md5-js": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-content-length": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-endpoint": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/middleware-serde": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/url-parser": "3.329.0",
- "@aws-sdk/util-middleware": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-host-header": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-logger": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-recursion-detection": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-retry": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/service-error-classification": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-middleware": "3.329.0",
- "@aws-sdk/util-retry": "3.329.0",
- "tslib": "^2.5.0",
- "uuid": "^8.3.2"
- }
- },
- "@aws-sdk/middleware-sdk-sqs": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-hex-encoding": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-sdk-sts": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/middleware-signing": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-serde": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-signing": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/signature-v4": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-middleware": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-stack": {
- "version": "3.329.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/middleware-user-agent": {
- "version": "3.332.0",
- "requires": {
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-endpoints": "3.332.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/node-config-provider": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/shared-ini-file-loader": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/node-http-handler": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/abort-controller": "3.329.0",
- "@aws-sdk/protocol-http": "3.329.0",
- "@aws-sdk/querystring-builder": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/property-provider": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/protocol-http": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/querystring-builder": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-uri-escape": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/querystring-parser": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/service-error-classification": {
- "version": "3.329.0"
- },
- "@aws-sdk/shared-ini-file-loader": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/signature-v4": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/is-array-buffer": "3.310.0",
- "@aws-sdk/types": "3.329.0",
- "@aws-sdk/util-hex-encoding": "3.310.0",
- "@aws-sdk/util-middleware": "3.329.0",
- "@aws-sdk/util-uri-escape": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/smithy-client": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/middleware-stack": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/token-providers": {
- "version": "3.332.0",
- "requires": {
- "@aws-sdk/client-sso-oidc": "3.332.0",
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/shared-ini-file-loader": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/types": {
- "version": "3.329.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/url-parser": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/querystring-parser": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-base64": {
- "version": "3.310.0",
- "requires": {
- "@aws-sdk/util-buffer-from": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-body-length-browser": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-body-length-node": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-buffer-from": {
- "version": "3.310.0",
- "requires": {
- "@aws-sdk/is-array-buffer": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-config-provider": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-defaults-mode-browser": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "bowser": "^2.11.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-defaults-mode-node": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/config-resolver": "3.329.0",
- "@aws-sdk/credential-provider-imds": "3.329.0",
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/property-provider": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-endpoints": {
- "version": "3.332.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-hex-encoding": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-locate-window": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-middleware": {
- "version": "3.329.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-retry": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/service-error-classification": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-uri-escape": {
- "version": "3.310.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-user-agent-browser": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/types": "3.329.0",
- "bowser": "^2.11.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-user-agent-node": {
- "version": "3.329.0",
- "requires": {
- "@aws-sdk/node-config-provider": "3.329.0",
- "@aws-sdk/types": "3.329.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-utf8": {
- "version": "3.310.0",
- "requires": {
- "@aws-sdk/util-buffer-from": "3.310.0",
- "tslib": "^2.5.0"
- }
- },
- "@aws-sdk/util-utf8-browser": {
- "version": "3.259.0",
- "requires": {
- "tslib": "^2.3.1"
- }
- },
- "@crowd/common": {
- "version": "file:../services/libs/common",
- "requires": {
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "psl": "^1.9.0",
- "typescript": "^5.0.4",
- "uuid": "^9.0.0"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.7",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "uuid": {
- "version": "9.0.0"
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@crowd/logging": {
- "version": "file:../services/libs/logging",
- "requires": {
- "@crowd/common": "file:../common",
- "@crowd/tracing": "file:../tracing",
- "@types/bunyan": "^1.8.8",
- "@types/bunyan-format": "^0.2.5",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "bunyan": "^1.8.15",
- "bunyan-format": "^0.2.1",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- },
- "dependencies": {
- "@crowd/common": {
- "version": "file:../services/libs/common",
- "requires": {
- "@crowd/logging": "file:../logging",
- "@crowd/types": "file:../types",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "psl": "^1.9.0",
- "typescript": "^5.0.4",
- "uuid": "^9.0.0"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.7",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "uuid": {
- "version": "9.0.0"
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/bunyan": {
- "version": "1.8.8",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/bunyan-format": {
- "version": "0.2.5",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.8",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/type-utils": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.6",
- "@typescript-eslint/utils": "5.59.6",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.6",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/visitor-keys": "5.59.6",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.6",
- "@typescript-eslint/types": "5.59.6",
- "@typescript-eslint/typescript-estree": "5.59.6",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.6",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.6",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "ansicolors": {
- "version": "0.2.1"
- },
- "ansistyles": {
- "version": "0.1.3"
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "devOptional": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "devOptional": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "bunyan": {
- "version": "1.8.15",
- "requires": {
- "dtrace-provider": "~0.8",
- "moment": "^2.19.3",
- "mv": "~2",
- "safe-json-stringify": "~1"
- }
- },
- "bunyan-format": {
- "version": "0.2.1",
- "requires": {
- "ansicolors": "~0.2.1",
- "ansistyles": "~0.1.1",
- "xtend": "~2.1.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "devOptional": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "dtrace-provider": {
- "version": "0.8.8",
- "optional": true,
- "requires": {
- "nan": "^2.14.0"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "devOptional": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "devOptional": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "devOptional": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.8",
- "optional": true
- },
- "mkdirp": {
- "version": "0.5.6",
- "optional": true,
- "requires": {
- "minimist": "^1.2.6"
- }
- },
- "moment": {
- "version": "2.29.4",
- "optional": true
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "mv": {
- "version": "2.1.1",
- "optional": true,
- "requires": {
- "mkdirp": "~0.5.1",
- "ncp": "~2.0.0",
- "rimraf": "~2.4.0"
- },
- "dependencies": {
- "glob": {
- "version": "6.0.4",
- "optional": true,
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "rimraf": {
- "version": "2.4.5",
- "optional": true,
- "requires": {
- "glob": "^6.0.1"
- }
- }
- }
- },
- "nan": {
- "version": "2.17.0",
- "optional": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "ncp": {
- "version": "2.0.0",
- "optional": true
- },
- "object-keys": {
- "version": "0.4.0"
- },
- "once": {
- "version": "1.4.0",
- "devOptional": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "devOptional": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-json-stringify": {
- "version": "1.2.0",
- "optional": true
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "devOptional": true
- },
- "xtend": {
- "version": "2.1.2",
- "requires": {
- "object-keys": "~0.4.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@crowd/types": {
- "version": "file:../services/libs/types",
- "requires": {
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.9",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/type-utils": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.5",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.8",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/type-utils": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.5",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "bowser": {
- "version": "2.11.0"
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fast-xml-parser": {
- "version": "4.1.2",
- "requires": {
- "strnum": "^1.0.5"
- }
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.0",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "strnum": {
- "version": "1.0.5"
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "2.5.0"
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1",
- "dev": true
- }
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "uuid": {
- "version": "8.3.2"
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@crowd/tracing": {
- "version": "file:../services/libs/tracing",
- "requires": {
- "@crowd/common": "file:../common",
- "@opentelemetry/api": "~1.6.0",
- "@opentelemetry/exporter-trace-otlp-grpc": "~0.43.0",
- "@opentelemetry/instrumentation-aws-sdk": "~0.36.0",
- "@opentelemetry/instrumentation-bunyan": "~0.32.1",
- "@opentelemetry/instrumentation-express": "~0.33.1",
- "@opentelemetry/instrumentation-http": "~0.43.0",
- "@opentelemetry/instrumentation-redis": "~0.35.1",
- "@opentelemetry/resource-detector-aws": "~1.3.1",
- "@opentelemetry/resources": "~1.17.0",
- "@opentelemetry/sdk-node": "~0.43.0",
- "@opentelemetry/semantic-conventions": "~1.17.0",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "opentelemetry-instrumentation-sequelize": "~0.39.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- }
- },
- "@crowd/types": {
- "version": "file:../services/libs/types",
- "requires": {
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.2",
- "@typescript-eslint/parser": "^5.59.2",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "eslint-plugin-prettier": "^4.2.1",
- "prettier": "^2.8.8",
- "typescript": "^5.0.4"
- },
- "dependencies": {
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.40.0",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.8",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.11",
- "dev": true
- },
- "@types/node": {
- "version": "18.16.9",
- "dev": true
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/type-utils": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.59.5",
- "@typescript-eslint/utils": "5.59.5",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.59.5",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/visitor-keys": "5.59.5",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.59.5",
- "@typescript-eslint/types": "5.59.5",
- "@typescript-eslint/typescript-estree": "5.59.5",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.59.5",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.59.5",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "acorn": {
- "version": "8.8.2",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint": {
- "version": "8.40.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.40.0",
- "@humanwhocodes/config-array": "^0.11.8",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "requires": {
- "prettier-linter-helpers": "^1.0.0"
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-diff": {
- "version": "1.2.0",
- "dev": true
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "js-sdsl": {
- "version": "4.4.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "fast-diff": "^1.1.2"
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "semver": {
- "version": "7.5.1",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "tslib": {
- "version": "1.14.1",
- "dev": true
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "typescript": {
- "version": "5.0.4",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "word-wrap": {
- "version": "1.2.3",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0",
- "dev": true
- }
- }
- },
- "@cspotcode/source-map-consumer": {
- "version": "0.8.0",
- "dev": true
- },
- "@cspotcode/source-map-support": {
- "version": "0.7.0",
- "dev": true,
- "requires": {
- "@cspotcode/source-map-consumer": "0.8.0"
- }
- },
- "@cubejs-client/core": {
- "version": "0.30.74",
- "requires": {
- "core-js": "^3.6.5",
- "cross-fetch": "^3.0.2",
- "dayjs": "^1.10.4",
- "ramda": "^0.27.0",
- "url-search-params-polyfill": "^7.0.0",
- "uuid": "^8.3.2"
- },
- "dependencies": {
- "uuid": {
- "version": "8.3.2"
- }
- }
- },
- "@discordjs/builders": {
- "version": "1.6.3",
- "requires": {
- "@discordjs/formatters": "^0.3.1",
- "@discordjs/util": "^0.3.1",
- "@sapphire/shapeshift": "^3.8.2",
- "discord-api-types": "^0.37.41",
- "fast-deep-equal": "^3.1.3",
- "ts-mixer": "^6.0.3",
- "tslib": "^2.5.0"
- }
- },
- "@discordjs/collection": {
- "version": "1.5.1"
- },
- "@discordjs/formatters": {
- "version": "0.3.1",
- "requires": {
- "discord-api-types": "^0.37.41"
- }
- },
- "@discordjs/rest": {
- "version": "1.7.1",
- "requires": {
- "@discordjs/collection": "^1.5.1",
- "@discordjs/util": "^0.3.0",
- "@sapphire/async-queue": "^1.5.0",
- "@sapphire/snowflake": "^3.4.2",
- "discord-api-types": "^0.37.41",
- "file-type": "^18.3.0",
- "tslib": "^2.5.0",
- "undici": "^5.22.0"
- }
- },
- "@discordjs/util": {
- "version": "0.3.1"
- },
- "@discordjs/ws": {
- "version": "0.8.3",
- "requires": {
- "@discordjs/collection": "^1.5.1",
- "@discordjs/rest": "^1.7.1",
- "@discordjs/util": "^0.3.1",
- "@sapphire/async-queue": "^1.5.0",
- "@types/ws": "^8.5.4",
- "@vladfrangu/async_event_emitter": "^2.2.1",
- "discord-api-types": "^0.37.41",
- "tslib": "^2.5.0",
- "ws": "^8.13.0"
- }
- },
- "@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.5.1",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.0.3",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.5.2",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "dependencies": {
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- }
- }
- },
- "@eslint/js": {
- "version": "8.43.0",
- "dev": true
- },
- "@exodus/schemasafe": {
- "version": "1.0.1",
- "dev": true
- },
- "@gar/promisify": {
- "version": "1.1.3"
- },
- "@google-cloud/common": {
- "version": "3.10.0",
- "requires": {
- "@google-cloud/projectify": "^2.0.0",
- "@google-cloud/promisify": "^2.0.0",
- "arrify": "^2.0.1",
- "duplexify": "^4.1.1",
- "ent": "^2.2.0",
- "extend": "^3.0.2",
- "google-auth-library": "^7.14.0",
- "retry-request": "^4.2.2",
- "teeny-request": "^7.0.0"
- },
- "dependencies": {
- "duplexify": {
- "version": "4.1.2",
- "requires": {
- "end-of-stream": "^1.4.1",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1",
- "stream-shift": "^1.0.0"
- }
- }
- }
- },
- "@google-cloud/paginator": {
- "version": "3.0.7",
- "requires": {
- "arrify": "^2.0.0",
- "extend": "^3.0.2"
- }
- },
- "@google-cloud/projectify": {
- "version": "2.1.1"
- },
- "@google-cloud/promisify": {
- "version": "2.0.4"
- },
- "@google-cloud/storage": {
- "version": "5.3.0",
- "requires": {
- "@google-cloud/common": "^3.3.0",
- "@google-cloud/paginator": "^3.0.0",
- "@google-cloud/promisify": "^2.0.0",
- "arrify": "^2.0.0",
- "compressible": "^2.0.12",
- "concat-stream": "^2.0.0",
- "date-and-time": "^0.14.0",
- "duplexify": "^3.5.0",
- "extend": "^3.0.2",
- "gaxios": "^3.0.0",
- "gcs-resumable-upload": "^3.1.0",
- "hash-stream-validation": "^0.2.2",
- "mime": "^2.2.0",
- "mime-types": "^2.0.8",
- "onetime": "^5.1.0",
- "p-limit": "^3.0.1",
- "pumpify": "^2.0.0",
- "snakeize": "^0.1.0",
- "stream-events": "^1.0.1",
- "xdg-basedir": "^4.0.0"
- }
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.10",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true
- },
- "@humanwhocodes/momoa": {
- "version": "2.0.4",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true
- },
- "@istanbuljs/load-nyc-config": {
- "version": "1.1.0",
- "dev": true,
- "requires": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "get-package-type": "^0.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
- },
- "dependencies": {
- "argparse": {
- "version": "1.0.10",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "find-up": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "js-yaml": {
- "version": "3.14.1",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "resolve-from": {
- "version": "5.0.0",
- "dev": true
- },
- "sprintf-js": {
- "version": "1.0.3",
- "dev": true
- }
- }
- },
- "@istanbuljs/schema": {
- "version": "0.1.3",
- "dev": true
- },
- "@jest/console": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jest/core": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/console": "^29.5.0",
- "@jest/reporters": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.5.0",
- "jest-config": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-resolve-dependencies": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "jest-watcher": "^29.5.0",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jest/environment": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "jest-mock": "^29.5.0"
- }
- },
- "@jest/expect": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "expect": "^29.5.0",
- "jest-snapshot": "^29.5.0"
- }
- },
- "@jest/expect-utils": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "jest-get-type": "^29.4.3"
- }
- },
- "@jest/fake-timers": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "@sinonjs/fake-timers": "^10.0.2",
- "@types/node": "*",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
- }
- },
- "@jest/globals": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/types": "^29.5.0",
- "jest-mock": "^29.5.0"
- }
- },
- "@jest/reporters": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@jridgewell/trace-mapping": "^0.3.15",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^5.1.0",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
- "slash": "^3.0.0",
- "string-length": "^4.0.1",
- "strip-ansi": "^6.0.0",
- "v8-to-istanbul": "^9.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jest/schemas": {
- "version": "29.4.3",
- "dev": true,
- "requires": {
- "@sinclair/typebox": "^0.25.16"
- }
- },
- "@jest/source-map": {
- "version": "29.4.3",
- "dev": true,
- "requires": {
- "@jridgewell/trace-mapping": "^0.3.15",
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.9"
- }
- },
- "@jest/test-result": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/console": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- }
- },
- "@jest/test-sequencer": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/test-result": "^29.5.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "slash": "^3.0.0"
- }
- },
- "@jest/transform": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@babel/core": "^7.11.6",
- "@jest/types": "^29.5.0",
- "@jridgewell/trace-mapping": "^0.3.15",
- "babel-plugin-istanbul": "^6.1.1",
- "chalk": "^4.0.0",
- "convert-source-map": "^2.0.0",
- "fast-json-stable-stringify": "^2.1.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
- "micromatch": "^4.0.4",
- "pirates": "^4.0.4",
- "slash": "^3.0.0",
- "write-file-atomic": "^4.0.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "convert-source-map": {
- "version": "2.0.0",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "write-file-atomic": {
- "version": "4.0.2",
- "dev": true,
- "requires": {
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
- }
- }
- }
- },
- "@jest/types": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/schemas": "^29.4.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^17.0.8",
- "chalk": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "dev": true
- },
- "@jridgewell/set-array": {
- "version": "1.1.2",
- "dev": true
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "dev": true
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.18",
- "dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
- },
- "dependencies": {
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "dev": true
- }
- }
- },
- "@jsdevtools/ono": {
- "version": "7.1.3",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@npmcli/fs": {
- "version": "2.1.2",
- "requires": {
- "@gar/promisify": "^1.1.3",
- "semver": "^7.3.5"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.5.2",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "@npmcli/move-file": {
- "version": "2.0.1",
- "requires": {
- "mkdirp": "^1.0.4",
- "rimraf": "^3.0.2"
- }
- },
- "@octokit/auth-app": {
- "version": "3.6.1",
- "requires": {
- "@octokit/auth-oauth-app": "^4.3.0",
- "@octokit/auth-oauth-user": "^1.2.3",
- "@octokit/request": "^5.6.0",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.0.3",
- "@types/lru-cache": "^5.1.0",
- "deprecation": "^2.3.1",
- "lru-cache": "^6.0.0",
- "universal-github-app-jwt": "^1.0.1",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "@octokit/auth-oauth-app": {
- "version": "4.3.4",
- "requires": {
- "@octokit/auth-oauth-device": "^3.1.1",
- "@octokit/auth-oauth-user": "^2.0.0",
- "@octokit/request": "^5.6.3",
- "@octokit/types": "^6.0.3",
- "@types/btoa-lite": "^1.0.0",
- "btoa-lite": "^1.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/auth-oauth-user": {
- "version": "2.1.2",
- "requires": {
- "@octokit/auth-oauth-device": "^4.0.0",
- "@octokit/oauth-methods": "^2.0.0",
- "@octokit/request": "^6.0.0",
- "@octokit/types": "^9.0.0",
- "btoa-lite": "^1.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/auth-oauth-device": {
- "version": "4.0.5",
- "requires": {
- "@octokit/oauth-methods": "^2.0.0",
- "@octokit/request": "^6.0.0",
- "@octokit/types": "^9.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/request": {
- "version": "6.2.8",
- "requires": {
- "@octokit/endpoint": "^7.0.0",
- "@octokit/request-error": "^3.0.0",
- "@octokit/types": "^9.0.0",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/types": {
- "version": "9.3.2",
- "requires": {
- "@octokit/openapi-types": "^18.0.0"
- }
- }
- }
- },
- "@octokit/endpoint": {
- "version": "7.0.6",
- "requires": {
- "@octokit/types": "^9.0.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "9.3.2",
- "requires": {
- "@octokit/openapi-types": "^18.0.0"
- }
- }
- }
- },
- "@octokit/openapi-types": {
- "version": "18.0.0"
- },
- "@octokit/request-error": {
- "version": "3.0.3",
- "requires": {
- "@octokit/types": "^9.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "9.3.2",
- "requires": {
- "@octokit/openapi-types": "^18.0.0"
- }
- }
- }
- }
- }
- },
- "@octokit/auth-oauth-device": {
- "version": "3.1.4",
- "requires": {
- "@octokit/oauth-methods": "^2.0.0",
- "@octokit/request": "^6.0.0",
- "@octokit/types": "^6.10.0",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/endpoint": {
- "version": "7.0.6",
- "requires": {
- "@octokit/types": "^9.0.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "9.3.2",
- "requires": {
- "@octokit/openapi-types": "^18.0.0"
- }
- }
- }
- },
- "@octokit/openapi-types": {
- "version": "18.0.0"
- },
- "@octokit/request": {
- "version": "6.2.8",
- "requires": {
- "@octokit/endpoint": "^7.0.0",
- "@octokit/request-error": "^3.0.0",
- "@octokit/types": "^9.0.0",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "9.3.2",
- "requires": {
- "@octokit/openapi-types": "^18.0.0"
- }
- }
- }
- },
- "@octokit/request-error": {
- "version": "3.0.3",
- "requires": {
- "@octokit/types": "^9.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "9.3.2",
- "requires": {
- "@octokit/openapi-types": "^18.0.0"
- }
- }
- }
- }
- }
- },
- "@octokit/auth-oauth-user": {
- "version": "1.3.0",
- "requires": {
- "@octokit/auth-oauth-device": "^3.1.1",
- "@octokit/oauth-methods": "^1.1.0",
- "@octokit/request": "^5.4.14",
- "@octokit/types": "^6.12.2",
- "btoa-lite": "^1.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/oauth-authorization-url": {
- "version": "4.3.3"
- },
- "@octokit/oauth-methods": {
- "version": "1.2.6",
- "requires": {
- "@octokit/oauth-authorization-url": "^4.3.1",
- "@octokit/request": "^5.4.14",
- "@octokit/request-error": "^2.0.5",
- "@octokit/types": "^6.12.2",
- "btoa-lite": "^1.0.0"
- }
- }
- }
- },
- "@octokit/endpoint": {
- "version": "6.0.12",
- "requires": {
- "@octokit/types": "^6.0.3",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/graphql": {
- "version": "4.8.0",
- "requires": {
- "@octokit/request": "^5.6.0",
- "@octokit/types": "^6.0.3",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/oauth-authorization-url": {
- "version": "5.0.0"
- },
- "@octokit/oauth-methods": {
- "version": "2.0.6",
- "requires": {
- "@octokit/oauth-authorization-url": "^5.0.0",
- "@octokit/request": "^6.2.3",
- "@octokit/request-error": "^3.0.3",
- "@octokit/types": "^9.0.0",
- "btoa-lite": "^1.0.0"
- },
- "dependencies": {
- "@octokit/endpoint": {
- "version": "7.0.6",
- "requires": {
- "@octokit/types": "^9.0.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/openapi-types": {
- "version": "18.0.0"
- },
- "@octokit/request": {
- "version": "6.2.8",
- "requires": {
- "@octokit/endpoint": "^7.0.0",
- "@octokit/request-error": "^3.0.0",
- "@octokit/types": "^9.0.0",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/request-error": {
- "version": "3.0.3",
- "requires": {
- "@octokit/types": "^9.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "@octokit/types": {
- "version": "9.3.2",
- "requires": {
- "@octokit/openapi-types": "^18.0.0"
- }
- }
- }
- },
- "@octokit/openapi-types": {
- "version": "12.11.0"
- },
- "@octokit/request": {
- "version": "5.6.3",
- "requires": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.16.1",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/request-error": {
- "version": "2.1.0",
- "requires": {
- "@octokit/types": "^6.0.3",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "@octokit/types": {
- "version": "6.41.0",
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- },
- "@opencensus/core": {
- "version": "0.0.9",
- "requires": {
- "continuation-local-storage": "^3.2.1",
- "log-driver": "^1.2.7",
- "semver": "^5.5.0",
- "shimmer": "^1.2.0",
- "uuid": "^3.2.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1"
- },
- "uuid": {
- "version": "3.4.0"
- }
- }
- },
- "@opencensus/propagation-b3": {
- "version": "0.0.8",
- "requires": {
- "@opencensus/core": "^0.0.8",
- "uuid": "^3.2.1"
- },
- "dependencies": {
- "@opencensus/core": {
- "version": "0.0.8",
- "requires": {
- "continuation-local-storage": "^3.2.1",
- "log-driver": "^1.2.7",
- "semver": "^5.5.0",
- "shimmer": "^1.2.0",
- "uuid": "^3.2.1"
- }
- },
- "semver": {
- "version": "5.7.1"
- },
- "uuid": {
- "version": "3.4.0"
- }
- }
- },
- "@opensearch-project/opensearch": {
- "version": "1.2.0",
- "requires": {
- "aws4": "^1.11.0",
- "debug": "^4.3.1",
- "hpagent": "^0.1.1",
- "ms": "^2.1.3",
- "secure-json-parse": "^2.4.0"
- }
- },
- "@pm2/agent": {
- "version": "2.0.1",
- "requires": {
- "async": "~3.2.0",
- "chalk": "~3.0.0",
- "dayjs": "~1.8.24",
- "debug": "~4.3.1",
- "eventemitter2": "~5.0.1",
- "fast-json-patch": "^3.0.0-1",
- "fclone": "~1.0.11",
- "nssocket": "0.6.0",
- "pm2-axon": "~4.0.1",
- "pm2-axon-rpc": "~0.7.0",
- "proxy-agent": "~5.0.0",
- "semver": "~7.2.0",
- "ws": "~7.4.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "async": {
- "version": "3.2.4"
- },
- "chalk": {
- "version": "3.0.0",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4"
- },
- "dayjs": {
- "version": "1.8.36"
- },
- "eventemitter2": {
- "version": "5.0.1"
- },
- "has-flag": {
- "version": "4.0.0"
- },
- "semver": {
- "version": "7.2.3"
- },
- "supports-color": {
- "version": "7.2.0",
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "ws": {
- "version": "7.4.6",
- "requires": {}
- }
- }
- },
- "@pm2/io": {
- "version": "5.0.0",
- "requires": {
- "@opencensus/core": "0.0.9",
- "@opencensus/propagation-b3": "0.0.8",
- "async": "~2.6.1",
- "debug": "~4.3.1",
- "eventemitter2": "^6.3.1",
- "require-in-the-middle": "^5.0.0",
- "semver": "6.3.0",
- "shimmer": "^1.2.0",
- "signal-exit": "^3.0.3",
- "tslib": "1.9.3"
- },
- "dependencies": {
- "tslib": {
- "version": "1.9.3"
- }
- }
- },
- "@pm2/js-api": {
- "version": "0.6.7",
- "requires": {
- "async": "^2.6.3",
- "axios": "^0.21.0",
- "debug": "~4.3.1",
- "eventemitter2": "^6.3.1",
- "ws": "^7.0.0"
- },
- "dependencies": {
- "axios": {
- "version": "0.21.4",
- "requires": {
- "follow-redirects": "^1.14.0"
- }
- },
- "ws": {
- "version": "7.5.9",
- "requires": {}
- }
- }
- },
- "@pm2/pm2-version-check": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz",
- "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==",
- "requires": {
- "debug": "^4.3.1"
- }
- },
- "@readme/better-ajv-errors": {
- "version": "1.6.0",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.16.0",
- "@babel/runtime": "^7.21.0",
- "@humanwhocodes/momoa": "^2.0.3",
- "chalk": "^4.1.2",
- "json-to-ast": "^2.0.3",
- "jsonpointer": "^5.0.0",
- "leven": "^3.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "@readme/json-schema-ref-parser": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "@jsdevtools/ono": "^7.1.3",
- "@types/json-schema": "^7.0.6",
- "call-me-maybe": "^1.0.1",
- "js-yaml": "^4.1.0"
- }
- },
- "@readme/openapi-parser": {
- "version": "2.5.0",
- "dev": true,
- "requires": {
- "@apidevtools/openapi-schemas": "^2.1.0",
- "@apidevtools/swagger-methods": "^3.0.2",
- "@jsdevtools/ono": "^7.1.3",
- "@readme/better-ajv-errors": "^1.6.0",
- "@readme/json-schema-ref-parser": "^1.2.0",
- "ajv": "^8.12.0",
- "ajv-draft-04": "^1.0.0",
- "call-me-maybe": "^1.0.1"
- }
- },
- "@sapphire/async-queue": {
- "version": "1.5.0"
- },
- "@sapphire/shapeshift": {
- "version": "3.9.2",
- "requires": {
- "fast-deep-equal": "^3.1.3",
- "lodash": "^4.17.21"
- }
- },
- "@sapphire/snowflake": {
- "version": "3.5.1"
- },
- "@segment/loosely-validate-event": {
- "version": "2.0.0",
- "requires": {
- "component-type": "^1.2.1",
- "join-component": "^1.1.0"
- }
- },
- "@selderee/plugin-htmlparser2": {
- "version": "0.6.0",
- "requires": {
- "domhandler": "^4.2.0",
- "selderee": "^0.6.0"
- }
- },
- "@sendgrid/client": {
- "version": "7.7.0",
- "requires": {
- "@sendgrid/helpers": "^7.7.0",
- "axios": "^0.26.0"
- },
- "dependencies": {
- "axios": {
- "version": "0.26.1",
- "requires": {
- "follow-redirects": "^1.14.8"
- }
- }
- }
- },
- "@sendgrid/eventwebhook": {
- "version": "7.7.0",
- "requires": {
- "starkbank-ecdsa": "^1.1.1"
- }
- },
- "@sendgrid/helpers": {
- "version": "7.7.0",
- "requires": {
- "deepmerge": "^4.2.2"
- }
- },
- "@sendgrid/mail": {
- "version": "7.2.6",
- "requires": {
- "@sendgrid/client": "^7.2.6",
- "@sendgrid/helpers": "^7.2.6"
- }
- },
- "@sinclair/typebox": {
- "version": "0.25.24",
- "dev": true
- },
- "@sindresorhus/is": {
- "version": "0.14.0",
- "dev": true
- },
- "@sinonjs/commons": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "type-detect": "4.0.8"
- }
- },
- "@sinonjs/fake-timers": {
- "version": "10.3.0",
- "dev": true,
- "requires": {
- "@sinonjs/commons": "^3.0.0"
- }
- },
- "@slack/logger": {
- "version": "3.0.0",
- "requires": {
- "@types/node": ">=12.0.0"
- }
- },
- "@slack/types": {
- "version": "2.8.0"
- },
- "@slack/web-api": {
- "version": "6.8.1",
- "requires": {
- "@slack/logger": "^3.0.0",
- "@slack/types": "^2.0.0",
- "@types/is-stream": "^1.1.0",
- "@types/node": ">=12.0.0",
- "axios": "^0.27.2",
- "eventemitter3": "^3.1.0",
- "form-data": "^2.5.0",
- "is-electron": "2.2.0",
- "is-stream": "^1.1.0",
- "p-queue": "^6.6.1",
- "p-retry": "^4.0.0"
- }
- },
- "@smithy/protocol-http": {
- "version": "1.1.0",
- "requires": {
- "@smithy/types": "^1.1.0",
- "tslib": "^2.5.0"
- }
- },
- "@smithy/types": {
- "version": "1.1.0",
- "requires": {
- "tslib": "^2.5.0"
- }
- },
- "@socket.io/component-emitter": {
- "version": "3.1.0"
- },
- "@superfaceai/ast": {
- "version": "1.2.0",
- "requires": {
- "ajv": "^8.8.2",
- "ajv-formats": "^2.1.1"
- }
- },
- "@superfaceai/one-sdk": {
- "version": "1.5.2",
- "requires": {
- "@superfaceai/ast": "1.2.0",
- "@superfaceai/parser": "1.2.0",
- "abort-controller": "^3.0.0",
- "cross-fetch": "^3.1.5",
- "debug": "^4.3.2",
- "isomorphic-form-data": "^2.0.0",
- "vm2": "^3.9.7"
- }
- },
- "@superfaceai/parser": {
- "version": "1.2.0",
- "requires": {
- "@superfaceai/ast": "^1.2.0",
- "@types/debug": "^4.1.5",
- "debug": "^4.3.3",
- "typescript": "^4"
- }
- },
- "@superfaceai/passport-twitter-oauth2": {
- "version": "1.2.3",
- "requires": {
- "@types/passport": "1.x",
- "@types/passport-oauth2": ">=1.4",
- "passport-oauth2": "^1.6.1"
- }
- },
- "@szmarczak/http-timer": {
- "version": "1.1.2",
- "dev": true,
- "requires": {
- "defer-to-connect": "^1.0.1"
- }
- },
- "@tokenizer/token": {
- "version": "0.3.0"
- },
- "@tootallnate/once": {
- "version": "1.1.2"
- },
- "@tsconfig/node10": {
- "version": "1.0.9",
- "dev": true
- },
- "@tsconfig/node12": {
- "version": "1.0.11",
- "dev": true
- },
- "@tsconfig/node14": {
- "version": "1.0.3",
- "dev": true
- },
- "@tsconfig/node16": {
- "version": "1.0.4",
- "dev": true
- },
- "@types/babel__core": {
- "version": "7.20.1",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "@types/babel__generator": {
- "version": "7.6.4",
- "dev": true,
- "requires": {
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__template": {
- "version": "7.4.1",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "@types/babel__traverse": {
- "version": "7.20.1",
- "dev": true,
- "requires": {
- "@babel/types": "^7.20.7"
- }
- },
- "@types/body-parser": {
- "version": "1.19.2",
- "requires": {
- "@types/connect": "*",
- "@types/node": "*"
- }
- },
- "@types/btoa-lite": {
- "version": "1.0.0"
- },
- "@types/bunyan": {
- "version": "1.8.8",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/bunyan-format": {
- "version": "0.2.5",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/config": {
- "version": "3.3.0",
- "dev": true
- },
- "@types/connect": {
- "version": "3.4.35",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/cookie": {
- "version": "0.4.1"
- },
- "@types/cookiejar": {
- "version": "2.1.2",
- "dev": true
- },
- "@types/cors": {
- "version": "2.8.13",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/cron": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "@types/luxon": "*",
- "@types/node": "*"
- }
- },
- "@types/debug": {
- "version": "4.1.8",
- "requires": {
- "@types/ms": "*"
- }
- },
- "@types/express": {
- "version": "4.17.17",
- "requires": {
- "@types/body-parser": "*",
- "@types/express-serve-static-core": "^4.17.33",
- "@types/qs": "*",
- "@types/serve-static": "*"
- }
- },
- "@types/express-serve-static-core": {
- "version": "4.17.35",
- "requires": {
- "@types/node": "*",
- "@types/qs": "*",
- "@types/range-parser": "*",
- "@types/send": "*"
- }
- },
- "@types/graceful-fs": {
- "version": "4.1.6",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/html-to-text": {
- "version": "8.1.1",
- "dev": true
- },
- "@types/is-stream": {
- "version": "1.1.0",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/istanbul-lib-coverage": {
- "version": "2.0.4",
- "dev": true
- },
- "@types/istanbul-lib-report": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "@types/istanbul-reports": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "@types/jest": {
- "version": "29.5.2",
- "dev": true,
- "requires": {
- "expect": "^29.0.0",
- "pretty-format": "^29.0.0"
- }
- },
- "@types/json-schema": {
- "version": "7.0.12",
- "dev": true
- },
- "@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
- "dev": true
- },
- "@types/jsonwebtoken": {
- "version": "9.0.2",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/lru-cache": {
- "version": "5.1.1"
- },
- "@types/luxon": {
- "version": "3.3.0",
- "dev": true
- },
- "@types/mime": {
- "version": "1.3.2"
- },
- "@types/ms": {
- "version": "0.7.31"
- },
- "@types/node": {
- "version": "17.0.45"
- },
- "@types/oauth": {
- "version": "0.9.1",
- "optional": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/passport": {
- "version": "1.0.12",
- "optional": true,
- "requires": {
- "@types/express": "*"
- }
- },
- "@types/passport-oauth2": {
- "version": "1.4.12",
- "optional": true,
- "requires": {
- "@types/express": "*",
- "@types/oauth": "*",
- "@types/passport": "*"
- }
- },
- "@types/prettier": {
- "version": "2.7.3",
- "dev": true
- },
- "@types/qs": {
- "version": "6.9.7"
- },
- "@types/range-parser": {
- "version": "1.2.4"
- },
- "@types/retry": {
- "version": "0.12.0"
- },
- "@types/sanitize-html": {
- "version": "2.9.0",
- "dev": true,
- "requires": {
- "htmlparser2": "^8.0.0"
- }
- },
- "@types/semver": {
- "version": "7.5.0",
- "dev": true
- },
- "@types/send": {
- "version": "0.17.1",
- "requires": {
- "@types/mime": "^1",
- "@types/node": "*"
- }
- },
- "@types/serve-static": {
- "version": "1.15.1",
- "requires": {
- "@types/mime": "*",
- "@types/node": "*"
- }
- },
- "@types/stack-utils": {
- "version": "2.0.1",
- "dev": true
- },
- "@types/superagent": {
- "version": "4.1.18",
- "dev": true,
- "requires": {
- "@types/cookiejar": "*",
- "@types/node": "*"
- }
- },
- "@types/uuid": {
- "version": "9.0.2",
- "dev": true
- },
- "@types/validator": {
- "version": "13.7.17"
- },
- "@types/ws": {
- "version": "8.5.5",
- "requires": {
- "@types/node": "*"
- }
- },
- "@types/yargs": {
- "version": "17.0.24",
- "dev": true,
- "requires": {
- "@types/yargs-parser": "*"
- }
- },
- "@types/yargs-parser": {
- "version": "21.0.0",
- "dev": true
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "5.60.0",
- "dev": true,
- "requires": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.60.0",
- "@typescript-eslint/type-utils": "5.60.0",
- "@typescript-eslint/utils": "5.60.0",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.5.2",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/parser": {
- "version": "5.60.0",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "5.60.0",
- "@typescript-eslint/types": "5.60.0",
- "@typescript-eslint/typescript-estree": "5.60.0",
- "debug": "^4.3.4"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "5.60.0",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.60.0",
- "@typescript-eslint/visitor-keys": "5.60.0"
- }
- },
- "@typescript-eslint/type-utils": {
- "version": "5.60.0",
- "dev": true,
- "requires": {
- "@typescript-eslint/typescript-estree": "5.60.0",
- "@typescript-eslint/utils": "5.60.0",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "5.60.0",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "5.60.0",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.60.0",
- "@typescript-eslint/visitor-keys": "5.60.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.5.2",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/utils": {
- "version": "5.60.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.60.0",
- "@typescript-eslint/types": "5.60.0",
- "@typescript-eslint/typescript-estree": "5.60.0",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.5.2",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "5.60.0",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "5.60.0",
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@vladfrangu/async_event_emitter": {
- "version": "2.2.2"
- },
- "abbrev": {
- "version": "1.1.1"
- },
- "abort-controller": {
- "version": "3.0.0",
- "requires": {
- "event-target-shim": "^5.0.0"
- }
- },
- "accepts": {
- "version": "1.3.8",
- "requires": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- }
- },
- "acorn": {
- "version": "8.9.0"
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "requires": {}
- },
- "acorn-walk": {
- "version": "8.2.0"
- },
- "agent-base": {
- "version": "6.0.2",
- "requires": {
- "debug": "4"
- }
- },
- "agentkeepalive": {
- "version": "4.3.0",
- "requires": {
- "debug": "^4.1.0",
- "depd": "^2.0.0",
- "humanize-ms": "^1.2.1"
- }
- },
- "aggregate-error": {
- "version": "3.1.0",
- "requires": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- }
- },
- "ajv": {
- "version": "8.12.0",
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- }
- },
- "ajv-draft-04": {
- "version": "1.0.0",
- "dev": true,
- "requires": {}
- },
- "ajv-formats": {
- "version": "2.1.1",
- "requires": {
- "ajv": "^8.0.0"
- }
- },
- "amp": {
- "version": "0.3.1"
- },
- "amp-message": {
- "version": "0.1.2",
- "requires": {
- "amp": "0.3.1"
- }
- },
- "analytics-node": {
- "version": "6.2.0",
- "requires": {
- "@segment/loosely-validate-event": "^2.0.0",
- "axios": "^0.27.2",
- "axios-retry": "3.2.0",
- "lodash.isstring": "^4.0.1",
- "md5": "^2.2.1",
- "ms": "^2.0.0",
- "remove-trailing-slash": "^0.1.0",
- "uuid": "^8.3.2"
- },
- "dependencies": {
- "uuid": {
- "version": "8.3.2"
- }
- }
- },
- "ansi-align": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "string-width": "^4.1.0"
- },
- "dependencies": {
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- }
- }
- },
- "ansi-colors": {
- "version": "4.1.3"
- },
- "ansi-escapes": {
- "version": "4.3.2",
- "dev": true,
- "requires": {
- "type-fest": "^0.21.3"
- }
- },
- "ansi-regex": {
- "version": "2.1.1"
- },
- "ansi-styles": {
- "version": "3.2.1",
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "ansicolors": {
- "version": "0.2.1"
- },
- "ansistyles": {
- "version": "0.1.3"
- },
- "any-promise": {
- "version": "1.3.0"
- },
- "anymatch": {
- "version": "3.1.3",
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "aproba": {
- "version": "1.2.0"
- },
- "are-we-there-yet": {
- "version": "1.1.7",
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.8",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "arg": {
- "version": "4.1.3",
- "dev": true
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "array-back": {
- "version": "3.1.0"
- },
- "array-buffer-byte-length": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
- }
- },
- "array-flatten": {
- "version": "1.1.1"
- },
- "array-includes": {
- "version": "3.1.6",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "get-intrinsic": "^1.1.3",
- "is-string": "^1.0.7"
- }
- },
- "array-union": {
- "version": "2.1.0",
- "dev": true
- },
- "array.prototype.flat": {
- "version": "1.3.1",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-shim-unscopables": "^1.0.0"
- }
- },
- "array.prototype.flatmap": {
- "version": "1.3.1",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-shim-unscopables": "^1.0.0"
- }
- },
- "arrify": {
- "version": "2.0.1"
- },
- "asap": {
- "version": "2.0.6"
- },
- "ast-types": {
- "version": "0.13.4",
- "requires": {
- "tslib": "^2.0.1"
- }
- },
- "async": {
- "version": "2.6.4",
- "requires": {
- "lodash": "^4.17.14"
- }
- },
- "async-listener": {
- "version": "0.6.10",
- "requires": {
- "semver": "^5.3.0",
- "shimmer": "^1.1.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1"
- }
- }
- },
- "async-retry": {
- "version": "1.3.3",
- "requires": {
- "retry": "0.13.1"
- }
- },
- "asynckit": {
- "version": "0.4.0"
- },
- "available-typed-arrays": {
- "version": "1.0.5",
- "dev": true
- },
- "aws-sdk": {
- "version": "2.814.0",
- "requires": {
- "buffer": "4.9.2",
- "events": "1.1.1",
- "ieee754": "1.1.13",
- "jmespath": "0.15.0",
- "querystring": "0.2.0",
- "sax": "1.2.1",
- "url": "0.10.3",
- "uuid": "3.3.2",
- "xml2js": "0.4.19"
- },
- "dependencies": {
- "uuid": {
- "version": "3.3.2"
- }
- }
- },
- "aws4": {
- "version": "1.12.0"
- },
- "axios": {
- "version": "0.27.2",
- "requires": {
- "follow-redirects": "^1.14.9",
- "form-data": "^4.0.0"
- },
- "dependencies": {
- "form-data": {
- "version": "4.0.0",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- }
- }
- },
- "axios-retry": {
- "version": "3.2.0",
- "requires": {
- "is-retry-allowed": "^1.1.0"
- }
- },
- "babel-jest": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/transform": "^29.5.0",
- "@types/babel__core": "^7.1.14",
- "babel-plugin-istanbul": "^6.1.1",
- "babel-preset-jest": "^29.5.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "babel-plugin-istanbul": {
- "version": "6.1.1",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^5.0.4",
- "test-exclude": "^6.0.0"
- }
- },
- "babel-plugin-jest-hoist": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.1.14",
- "@types/babel__traverse": "^7.0.6"
- }
- },
- "babel-plugin-polyfill-corejs2": {
- "version": "0.4.3",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.17.7",
- "@babel/helper-define-polyfill-provider": "^0.4.0",
- "semver": "^6.1.1"
- }
- },
- "babel-plugin-polyfill-corejs3": {
- "version": "0.8.1",
- "dev": true,
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.4.0",
- "core-js-compat": "^3.30.1"
- }
- },
- "babel-plugin-polyfill-regenerator": {
- "version": "0.5.0",
- "dev": true,
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.4.0"
- }
- },
- "babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
- }
- },
- "babel-preset-jest": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "babel-plugin-jest-hoist": "^29.5.0",
- "babel-preset-current-node-syntax": "^1.0.0"
- }
- },
- "balanced-match": {
- "version": "1.0.2"
- },
- "base64-js": {
- "version": "1.5.1"
- },
- "base64id": {
- "version": "2.0.0"
- },
- "base64url": {
- "version": "3.0.1"
- },
- "bcrypt": {
- "version": "5.0.0",
- "requires": {
- "node-addon-api": "^3.0.0",
- "node-pre-gyp": "0.15.0"
- }
- },
- "big-integer": {
- "version": "1.6.51"
- },
- "bignumber.js": {
- "version": "9.1.1"
- },
- "binary-extensions": {
- "version": "2.2.0"
- },
- "bindings": {
- "version": "1.5.0",
- "requires": {
- "file-uri-to-path": "1.0.0"
- }
- },
- "bl": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- },
- "dependencies": {
- "buffer": {
- "version": "5.7.1",
- "dev": true,
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- }
- }
- },
- "blessed": {
- "version": "0.1.81"
- },
- "bluebird": {
- "version": "2.11.0"
- },
- "bodec": {
- "version": "0.1.0"
- },
- "body-parser": {
- "version": "1.20.2",
- "requires": {
- "bytes": "3.1.2",
- "content-type": "~1.0.5",
- "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.2",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0"
- }
- }
- },
- "boolbase": {
- "version": "1.0.0"
- },
- "bowser": {
- "version": "2.11.0"
- },
- "boxen": {
- "version": "4.2.0",
- "dev": true,
- "requires": {
- "ansi-align": "^3.0.0",
- "camelcase": "^5.3.1",
- "chalk": "^3.0.0",
- "cli-boxes": "^2.2.0",
- "string-width": "^4.1.0",
- "term-size": "^2.1.0",
- "type-fest": "^0.8.1",
- "widest-line": "^3.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "type-fest": {
- "version": "0.8.1",
- "dev": true
- }
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browserslist": {
- "version": "4.21.9",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001503",
- "electron-to-chromium": "^1.4.431",
- "node-releases": "^2.0.12",
- "update-browserslist-db": "^1.0.11"
- }
- },
- "bs-logger": {
- "version": "0.2.6",
- "dev": true,
- "requires": {
- "fast-json-stable-stringify": "2.x"
- }
- },
- "bser": {
- "version": "2.1.1",
- "dev": true,
- "requires": {
- "node-int64": "^0.4.0"
- }
- },
- "btoa-lite": {
- "version": "1.0.0"
- },
- "buffer": {
- "version": "4.9.2",
- "requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
- }
- },
- "buffer-equal-constant-time": {
- "version": "1.0.1"
- },
- "buffer-from": {
- "version": "1.1.2"
- },
- "buffer-writer": {
- "version": "2.0.0"
- },
- "bufferutil": {
- "version": "4.0.7",
- "requires": {
- "node-gyp-build": "^4.3.0"
- }
- },
- "bunyan": {
- "version": "1.8.15",
- "requires": {
- "dtrace-provider": "~0.8",
- "moment": "^2.19.3",
- "mv": "~2",
- "safe-json-stringify": "~1"
- }
- },
- "bunyan-format": {
- "version": "0.2.1",
- "requires": {
- "ansicolors": "~0.2.1",
- "ansistyles": "~0.1.1",
- "xtend": "~2.1.1"
- }
- },
- "bunyan-middleware": {
- "version": "1.0.2",
- "requires": {
- "@types/bunyan": "^1.8.6",
- "@types/express": "^4.0.35",
- "uuid": "^8.3.2"
- },
- "dependencies": {
- "uuid": {
- "version": "8.3.2"
- }
- }
- },
- "busboy": {
- "version": "1.6.0",
- "requires": {
- "streamsearch": "^1.1.0"
- }
- },
- "bytes": {
- "version": "3.1.2"
- },
- "cacache": {
- "version": "16.1.3",
- "requires": {
- "@npmcli/fs": "^2.1.0",
- "@npmcli/move-file": "^2.0.0",
- "chownr": "^2.0.0",
- "fs-minipass": "^2.1.0",
- "glob": "^8.0.1",
- "infer-owner": "^1.0.4",
- "lru-cache": "^7.7.1",
- "minipass": "^3.1.6",
- "minipass-collect": "^1.0.2",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "mkdirp": "^1.0.4",
- "p-map": "^4.0.0",
- "promise-inflight": "^1.0.1",
- "rimraf": "^3.0.2",
- "ssri": "^9.0.0",
- "tar": "^6.1.11",
- "unique-filename": "^2.0.0"
- },
- "dependencies": {
- "brace-expansion": {
- "version": "2.0.1",
- "requires": {
- "balanced-match": "^1.0.0"
- }
- },
- "chownr": {
- "version": "2.0.0"
- },
- "fs-minipass": {
- "version": "2.1.0",
- "requires": {
- "minipass": "^3.0.0"
- }
- },
- "glob": {
- "version": "8.1.0",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- }
- },
- "lru-cache": {
- "version": "7.18.3"
- },
- "minimatch": {
- "version": "5.1.6",
- "requires": {
- "brace-expansion": "^2.0.1"
- }
- },
- "minipass": {
- "version": "3.3.6",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "minizlib": {
- "version": "2.1.2",
- "requires": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- }
- },
- "tar": {
- "version": "6.1.15",
- "requires": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^5.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "5.0.0"
- }
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "cacheable-request": {
- "version": "6.1.0",
- "dev": true,
- "requires": {
- "clone-response": "^1.0.2",
- "get-stream": "^5.1.0",
- "http-cache-semantics": "^4.0.0",
- "keyv": "^3.0.0",
- "lowercase-keys": "^2.0.0",
- "normalize-url": "^4.1.0",
- "responselike": "^1.0.2"
- },
- "dependencies": {
- "get-stream": {
- "version": "5.2.0",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "lowercase-keys": {
- "version": "2.0.0",
- "dev": true
- }
- }
- },
- "call-bind": {
- "version": "1.0.2",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "call-me-maybe": {
- "version": "1.0.2",
- "dev": true
- },
- "callsites": {
- "version": "3.1.0",
- "dev": true
- },
- "camelcase": {
- "version": "5.3.1"
- },
- "caniuse-lite": {
- "version": "1.0.30001506",
- "dev": true
- },
- "chalk": {
- "version": "2.4.2",
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "char-regex": {
- "version": "1.0.2",
- "dev": true
- },
- "charenc": {
- "version": "0.0.2"
- },
- "charm": {
- "version": "0.1.2"
- },
- "chokidar": {
- "version": "3.5.3",
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "chownr": {
- "version": "1.1.4"
- },
- "ci-info": {
- "version": "3.8.0",
- "dev": true
- },
- "cjs-module-lexer": {
- "version": "1.2.3",
- "dev": true
- },
- "clean-stack": {
- "version": "2.2.0"
- },
- "clearbit": {
- "version": "1.3.5",
- "requires": {
- "bluebird": "2",
- "create-error": "0.3",
- "lodash": "4.x",
- "needle": "clearbit/needle#84d28b5f2c3916db1e7eb84aeaa9d976cc40054b"
- }
- },
- "cli-boxes": {
- "version": "2.2.1",
- "dev": true
- },
- "cli-color": {
- "version": "1.4.0",
- "requires": {
- "ansi-regex": "^2.1.1",
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "memoizee": "^0.4.14",
- "timers-ext": "^0.1.5"
- }
- },
- "cli-cursor": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "restore-cursor": "^3.1.0"
- }
- },
- "cli-highlight": {
- "version": "2.1.6",
- "requires": {
- "chalk": "^3.0.0",
- "highlight.js": "^10.0.0",
- "mz": "^2.4.0",
- "parse5": "^5.1.1",
- "parse5-htmlparser2-tree-adapter": "^5.1.1",
- "yargs": "^15.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "3.0.0",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4"
- },
- "has-flag": {
- "version": "4.0.0"
- },
- "supports-color": {
- "version": "7.2.0",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "cli-spinners": {
- "version": "2.9.0",
- "dev": true
- },
- "cli-table": {
- "version": "0.3.11",
- "dev": true,
- "requires": {
- "colors": "1.0.3"
- }
- },
- "cli-tableau": {
- "version": "2.0.1",
- "requires": {
- "chalk": "3.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "3.0.0",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4"
- },
- "has-flag": {
- "version": "4.0.0"
- },
- "supports-color": {
- "version": "7.2.0",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "cliui": {
- "version": "6.0.0",
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- },
- "dependencies": {
- "is-fullwidth-code-point": {
- "version": "3.0.0"
- },
- "string-width": {
- "version": "4.2.3",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- }
- }
- },
- "clone": {
- "version": "1.0.4",
- "dev": true
- },
- "clone-response": {
- "version": "1.0.3",
- "dev": true,
- "requires": {
- "mimic-response": "^1.0.0"
- }
- },
- "co": {
- "version": "4.6.0",
- "dev": true
- },
- "code-error-fragment": {
- "version": "0.0.230",
- "dev": true
- },
- "code-point-at": {
- "version": "1.1.0"
- },
- "collect-v8-coverage": {
- "version": "1.0.1",
- "dev": true
- },
- "color-convert": {
- "version": "1.9.3",
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3"
- },
- "colors": {
- "version": "1.0.3",
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.8",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "command-line-args": {
- "version": "5.2.1",
- "requires": {
- "array-back": "^3.1.0",
- "find-replace": "^3.0.0",
- "lodash.camelcase": "^4.3.0",
- "typical": "^4.0.0"
- }
- },
- "command-line-usage": {
- "version": "6.1.3",
- "requires": {
- "array-back": "^4.0.2",
- "chalk": "^2.4.2",
- "table-layout": "^1.0.2",
- "typical": "^5.2.0"
- },
- "dependencies": {
- "array-back": {
- "version": "4.0.2"
- },
- "typical": {
- "version": "5.2.0"
- }
- }
- },
- "commander": {
- "version": "6.2.1"
- },
- "comment-parser": {
- "version": "0.7.6",
- "dev": true
- },
- "component-emitter": {
- "version": "1.3.0"
- },
- "component-type": {
- "version": "1.2.1"
- },
- "compressible": {
- "version": "2.0.18",
- "requires": {
- "mime-db": ">= 1.43.0 < 2"
- }
- },
- "concat-map": {
- "version": "0.0.1"
- },
- "concat-stream": {
- "version": "2.0.0",
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "config": {
- "version": "3.3.9",
- "requires": {
- "json5": "^2.2.3"
- }
- },
- "config-chain": {
- "version": "1.1.13",
- "requires": {
- "ini": "^1.3.4",
- "proto-list": "~1.2.1"
- }
- },
- "configstore": {
- "version": "5.0.1",
- "requires": {
- "dot-prop": "^5.2.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^3.0.0",
- "unique-string": "^2.0.0",
- "write-file-atomic": "^3.0.0",
- "xdg-basedir": "^4.0.0"
- }
- },
- "confusing-browser-globals": {
- "version": "1.0.11",
- "dev": true
- },
- "console-control-strings": {
- "version": "1.1.0"
- },
- "content-disposition": {
- "version": "0.5.3",
- "requires": {
- "safe-buffer": "5.1.2"
- }
- },
- "content-type": {
- "version": "1.0.5"
- },
- "continuation-local-storage": {
- "version": "3.2.1",
- "requires": {
- "async-listener": "^0.6.0",
- "emitter-listener": "^1.1.1"
- }
- },
- "convert-source-map": {
- "version": "1.9.0",
- "dev": true
- },
- "cookie": {
- "version": "0.4.0"
- },
- "cookie-signature": {
- "version": "1.0.6"
- },
- "cookiejar": {
- "version": "2.1.4"
- },
- "copy-anything": {
- "version": "3.0.5",
- "requires": {
- "is-what": "^4.1.8"
- }
- },
- "copyfiles": {
- "version": "2.4.1",
- "dev": true,
- "requires": {
- "glob": "^7.0.5",
- "minimatch": "^3.0.3",
- "mkdirp": "^1.0.4",
- "noms": "0.0.0",
- "through2": "^2.0.1",
- "untildify": "^4.0.0",
- "yargs": "^16.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "cliui": {
- "version": "7.0.4",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "y18n": {
- "version": "5.0.8",
- "dev": true
- },
- "yargs": {
- "version": "16.2.0",
- "dev": true,
- "requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- }
- },
- "yargs-parser": {
- "version": "20.2.9",
- "dev": true
- }
- }
- },
- "core-js": {
- "version": "3.31.0"
- },
- "core-js-compat": {
- "version": "3.31.0",
- "dev": true,
- "requires": {
- "browserslist": "^4.21.5"
- }
- },
- "core-util-is": {
- "version": "1.0.3"
- },
- "cors": {
- "version": "2.8.5",
- "requires": {
- "object-assign": "^4",
- "vary": "^1"
- }
- },
- "create-error": {
- "version": "0.3.1"
- },
- "create-require": {
- "version": "1.1.1",
- "dev": true
- },
- "cron": {
- "version": "2.3.1",
- "requires": {
- "luxon": "^3.2.1"
- }
- },
- "cron-time-generator": {
- "version": "1.3.2"
- },
- "croner": {
- "version": "4.1.97"
- },
- "cross-env": {
- "version": "7.0.2",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.1"
- }
- },
- "cross-fetch": {
- "version": "3.1.6",
- "requires": {
- "node-fetch": "^2.6.11"
- }
- },
- "cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "crowd-sentiment": {
- "version": "1.1.7"
- },
- "crypt": {
- "version": "0.0.2"
- },
- "crypto-js": {
- "version": "4.1.1"
- },
- "crypto-random-string": {
- "version": "2.0.0"
- },
- "css-select": {
- "version": "5.1.0",
- "requires": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
- },
- "dependencies": {
- "domhandler": {
- "version": "5.0.3",
- "requires": {
- "domelementtype": "^2.3.0"
- }
- }
- }
- },
- "css-what": {
- "version": "6.1.0"
- },
- "culvert": {
- "version": "0.1.2"
- },
- "d": {
- "version": "1.0.1",
- "requires": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
- }
- },
- "data-uri-to-buffer": {
- "version": "3.0.1"
- },
- "date-and-time": {
- "version": "0.14.2"
- },
- "dayjs": {
- "version": "1.11.8"
- },
- "debug": {
- "version": "4.3.4",
- "requires": {
- "ms": "2.1.2"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.2"
- }
- }
- },
- "decamelize": {
- "version": "1.2.0"
- },
- "decompress-response": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "mimic-response": "^1.0.0"
- }
- },
- "dedent": {
- "version": "0.7.0",
- "dev": true
- },
- "deep-extend": {
- "version": "0.6.0"
- },
- "deep-is": {
- "version": "0.1.4"
- },
- "deepmerge": {
- "version": "4.3.1"
- },
- "defaults": {
- "version": "1.0.4",
- "dev": true,
- "requires": {
- "clone": "^1.0.2"
- }
- },
- "defer-to-connect": {
- "version": "1.1.3",
- "dev": true
- },
- "define-lazy-prop": {
- "version": "2.0.0",
- "dev": true
- },
- "define-properties": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- }
- },
- "degenerator": {
- "version": "3.0.4",
- "requires": {
- "ast-types": "^0.13.2",
- "escodegen": "^1.8.1",
- "esprima": "^4.0.0",
- "vm2": "^3.9.17"
- }
- },
- "delayed-stream": {
- "version": "1.0.0"
- },
- "delegates": {
- "version": "1.0.0"
- },
- "depd": {
- "version": "2.0.0"
- },
- "deprecation": {
- "version": "2.3.1"
- },
- "destroy": {
- "version": "1.2.0"
- },
- "detect-libc": {
- "version": "1.0.3"
- },
- "detect-newline": {
- "version": "3.1.0",
- "dev": true
- },
- "dezalgo": {
- "version": "1.0.4",
- "requires": {
- "asap": "^2.0.0",
- "wrappy": "1"
- }
- },
- "diff": {
- "version": "4.0.2",
- "dev": true
- },
- "diff-sequences": {
- "version": "29.4.3",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "discontinuous-range": {
- "version": "1.0.0"
- },
- "discord-api-types": {
- "version": "0.37.46"
- },
- "discord.js": {
- "version": "14.11.0",
- "requires": {
- "@discordjs/builders": "^1.6.3",
- "@discordjs/collection": "^1.5.1",
- "@discordjs/formatters": "^0.3.1",
- "@discordjs/rest": "^1.7.1",
- "@discordjs/util": "^0.3.1",
- "@discordjs/ws": "^0.8.3",
- "@sapphire/snowflake": "^3.4.2",
- "@types/ws": "^8.5.4",
- "discord-api-types": "^0.37.41",
- "fast-deep-equal": "^3.1.3",
- "lodash.snakecase": "^4.1.1",
- "tslib": "^2.5.0",
- "undici": "^5.22.0",
- "ws": "^8.13.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "dom-serializer": {
- "version": "2.0.0",
- "requires": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- },
- "dependencies": {
- "domhandler": {
- "version": "5.0.3",
- "requires": {
- "domelementtype": "^2.3.0"
- }
- }
- }
- },
- "domelementtype": {
- "version": "2.3.0"
- },
- "domhandler": {
- "version": "4.3.1",
- "requires": {
- "domelementtype": "^2.2.0"
- }
- },
- "domutils": {
- "version": "3.1.0",
- "requires": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
- "dependencies": {
- "domhandler": {
- "version": "5.0.3",
- "requires": {
- "domelementtype": "^2.3.0"
- }
- }
- }
- },
- "dot-prop": {
- "version": "5.3.0",
- "requires": {
- "is-obj": "^2.0.0"
- }
- },
- "dotenv": {
- "version": "8.2.0"
- },
- "dotenv-expand": {
- "version": "8.0.3"
- },
- "dottie": {
- "version": "2.0.6"
- },
- "dtrace-provider": {
- "version": "0.8.8",
- "optional": true,
- "requires": {
- "nan": "^2.14.0"
- }
- },
- "duplexer3": {
- "version": "0.1.5",
- "dev": true
- },
- "duplexify": {
- "version": "3.7.1",
- "requires": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.8",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "ecdsa-sig-formatter": {
- "version": "1.0.11",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "editor": {
- "version": "1.0.0",
- "dev": true
- },
- "editorconfig": {
- "version": "0.15.3",
- "requires": {
- "commander": "^2.19.0",
- "lru-cache": "^4.1.5",
- "semver": "^5.6.0",
- "sigmund": "^1.0.1"
- },
- "dependencies": {
- "commander": {
- "version": "2.20.3"
- },
- "lru-cache": {
- "version": "4.1.5",
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "semver": {
- "version": "5.7.1"
- },
- "yallist": {
- "version": "2.1.2"
- }
- }
- },
- "ee-first": {
- "version": "1.1.1"
- },
- "electron-to-chromium": {
- "version": "1.4.437",
- "dev": true
- },
- "emitter-listener": {
- "version": "1.1.2",
- "requires": {
- "shimmer": "^1.2.0"
- }
- },
- "emittery": {
- "version": "0.13.1",
- "dev": true
- },
- "emoji-chars": {
- "version": "1.0.12",
- "requires": {
- "emoji-unicode-map": "^1.0.0"
- }
- },
- "emoji-dictionary": {
- "version": "1.0.11",
- "requires": {
- "emoji-chars": "^1.0.0",
- "emoji-name-map": "^1.0.0",
- "emoji-names": "^1.0.1",
- "emoji-unicode-map": "^1.0.0",
- "emojilib": "^2.0.2"
- }
- },
- "emoji-name-map": {
- "version": "1.2.9",
- "requires": {
- "emojilib": "^2.0.2",
- "iterate-object": "^1.3.1",
- "map-o": "^2.0.1"
- }
- },
- "emoji-names": {
- "version": "1.0.12",
- "requires": {
- "emoji-name-map": "^1.0.0"
- }
- },
- "emoji-regex": {
- "version": "8.0.0"
- },
- "emoji-unicode-map": {
- "version": "1.1.11",
- "requires": {
- "emoji-name-map": "^1.1.0",
- "iterate-object": "^1.3.1"
- }
- },
- "emojilib": {
- "version": "2.4.0"
- },
- "encodeurl": {
- "version": "1.0.2"
- },
- "encoding": {
- "version": "0.1.13",
- "optional": true,
- "requires": {
- "iconv-lite": "^0.6.2"
- },
- "dependencies": {
- "iconv-lite": {
- "version": "0.6.3",
- "optional": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- }
- }
- }
- },
- "end-of-stream": {
- "version": "1.4.4",
- "requires": {
- "once": "^1.4.0"
- }
- },
- "engine.io": {
- "version": "6.4.2",
- "requires": {
- "@types/cookie": "^0.4.1",
- "@types/cors": "^2.8.12",
- "@types/node": ">=10.0.0",
- "accepts": "~1.3.4",
- "base64id": "2.0.0",
- "cookie": "~0.4.1",
- "cors": "~2.8.5",
- "debug": "~4.3.1",
- "engine.io-parser": "~5.0.3",
- "ws": "~8.11.0"
- },
- "dependencies": {
- "cookie": {
- "version": "0.4.2"
- },
- "ws": {
- "version": "8.11.0",
- "requires": {}
- }
- }
- },
- "engine.io-parser": {
- "version": "5.0.7"
- },
- "enquirer": {
- "version": "2.3.6",
- "requires": {
- "ansi-colors": "^4.1.1"
- }
- },
- "ent": {
- "version": "2.2.0"
- },
- "entities": {
- "version": "4.5.0"
- },
- "erlpack": {
- "version": "0.1.4",
- "requires": {
- "bindings": "^1.5.0",
- "nan": "^2.15.0"
- }
- },
- "err-code": {
- "version": "2.0.3"
- },
- "error-ex": {
- "version": "1.3.2",
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "es-abstract": {
- "version": "1.21.2",
- "dev": true,
- "requires": {
- "array-buffer-byte-length": "^1.0.0",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.2.0",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.10",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.12.3",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.4.3",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.7",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.9"
- }
- },
- "es-set-tostringtag": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
- "has-tostringtag": "^1.0.0"
- }
- },
- "es-shim-unscopables": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "es5-ext": {
- "version": "0.10.62",
- "requires": {
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.3",
- "next-tick": "^1.1.0"
- }
- },
- "es6-iterator": {
- "version": "2.0.3",
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "es6-promise": {
- "version": "3.3.1",
- "dev": true
- },
- "es6-symbol": {
- "version": "3.1.3",
- "requires": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
- }
- },
- "es6-weak-map": {
- "version": "2.0.3",
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.1"
- }
- },
- "escalade": {
- "version": "3.1.1",
- "dev": true
- },
- "escape-goat": {
- "version": "2.1.1",
- "dev": true
- },
- "escape-html": {
- "version": "1.0.3"
- },
- "escape-string-regexp": {
- "version": "1.0.5"
- },
- "escodegen": {
- "version": "1.14.3",
- "requires": {
- "esprima": "^4.0.1",
- "estraverse": "^4.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1",
- "source-map": "~0.6.1"
- },
- "dependencies": {
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
- },
- "levn": {
- "version": "0.3.0",
- "requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- }
- },
- "optionator": {
- "version": "0.8.3",
- "requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- }
- },
- "prelude-ls": {
- "version": "1.1.2"
- },
- "type-check": {
- "version": "0.3.2",
- "requires": {
- "prelude-ls": "~1.1.2"
- }
- }
- }
- },
- "eslint": {
- "version": "8.43.0",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.3",
- "@eslint/js": "8.43.0",
- "@humanwhocodes/config-array": "^0.11.10",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.0",
- "eslint-visitor-keys": "^3.4.1",
- "espree": "^9.5.2",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "eslint-scope": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- },
- "globals": {
- "version": "13.20.0",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- }
- }
- },
- "eslint-config-airbnb-base": {
- "version": "15.0.0",
- "dev": true,
- "requires": {
- "confusing-browser-globals": "^1.0.10",
- "object.assign": "^4.1.2",
- "object.entries": "^1.1.5",
- "semver": "^6.3.0"
- }
- },
- "eslint-config-airbnb-typescript": {
- "version": "16.2.0",
- "dev": true,
- "requires": {
- "eslint-config-airbnb-base": "^15.0.0"
- }
- },
- "eslint-config-prettier": {
- "version": "8.8.0",
- "dev": true,
- "requires": {}
- },
- "eslint-import-resolver-node": {
- "version": "0.3.7",
- "dev": true,
- "requires": {
- "debug": "^3.2.7",
- "is-core-module": "^2.11.0",
- "resolve": "^1.22.1"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- }
- }
- },
- "eslint-module-utils": {
- "version": "2.8.0",
- "dev": true,
- "requires": {
- "debug": "^3.2.7"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- }
- }
- },
- "eslint-plugin-import": {
- "version": "2.27.5",
- "dev": true,
- "requires": {
- "array-includes": "^3.1.6",
- "array.prototype.flat": "^1.3.1",
- "array.prototype.flatmap": "^1.3.1",
- "debug": "^3.2.7",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.7",
- "eslint-module-utils": "^2.7.4",
- "has": "^1.0.3",
- "is-core-module": "^2.11.0",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "object.values": "^1.1.6",
- "resolve": "^1.22.1",
- "semver": "^6.3.0",
- "tsconfig-paths": "^3.14.1"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "doctrine": {
- "version": "2.1.0",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "json5": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
- "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.0"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true
- },
- "tsconfig-paths": {
- "version": "3.14.2",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
- "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==",
- "dev": true,
- "requires": {
- "@types/json5": "^0.0.29",
- "json5": "^1.0.2",
- "minimist": "^1.2.6",
- "strip-bom": "^3.0.0"
- }
- }
- }
- },
- "eslint-plugin-openapi": {
- "version": "0.0.4",
- "dev": true,
- "requires": {
- "comment-parser": "^0.7.4"
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.1",
- "dev": true
- },
- "espree": {
- "version": "9.5.2",
- "dev": true,
- "requires": {
- "acorn": "^8.8.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esprima": {
- "version": "4.0.1"
- },
- "esquery": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0"
- },
- "esutils": {
- "version": "2.0.3"
- },
- "etag": {
- "version": "1.8.1"
- },
- "event-emitter": {
- "version": "0.3.5",
- "requires": {
- "d": "1",
- "es5-ext": "~0.10.14"
- }
- },
- "event-target-shim": {
- "version": "5.0.1"
- },
- "eventemitter2": {
- "version": "6.4.9"
- },
- "eventemitter3": {
- "version": "3.1.2"
- },
- "events": {
- "version": "1.1.1"
- },
- "execa": {
- "version": "5.1.1",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "dependencies": {
- "is-stream": {
- "version": "2.0.1",
- "dev": true
- }
- }
- },
- "exit": {
- "version": "0.1.2",
- "dev": true
- },
- "expect": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/expect-utils": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0"
- }
- },
- "express": {
- "version": "4.17.1",
- "requires": {
- "accepts": "~1.3.7",
- "array-flatten": "1.1.1",
- "body-parser": "1.19.0",
- "content-disposition": "0.5.3",
- "content-type": "~1.0.4",
- "cookie": "0.4.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "~1.1.2",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.5",
- "qs": "6.7.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.1.2",
- "send": "0.17.1",
- "serve-static": "1.14.1",
- "setprototypeof": "1.1.1",
- "statuses": "~1.5.0",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "dependencies": {
- "body-parser": {
- "version": "1.19.0",
- "requires": {
- "bytes": "3.1.0",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.7.0",
- "raw-body": "2.4.0",
- "type-is": "~1.6.17"
- }
- },
- "bytes": {
- "version": "3.1.0"
- },
- "debug": {
- "version": "2.6.9",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "depd": {
- "version": "1.1.2"
- },
- "http-errors": {
- "version": "1.7.2",
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- }
- },
- "inherits": {
- "version": "2.0.3"
- },
- "ms": {
- "version": "2.0.0"
- },
- "on-finished": {
- "version": "2.3.0",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "qs": {
- "version": "6.7.0"
- },
- "raw-body": {
- "version": "2.4.0",
- "requires": {
- "bytes": "3.1.0",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- }
- },
- "toidentifier": {
- "version": "1.0.0"
- }
- }
- },
- "express-rate-limit": {
- "version": "6.5.1",
- "requires": {}
- },
- "ext": {
- "version": "1.7.0",
- "requires": {
- "type": "^2.7.2"
- },
- "dependencies": {
- "type": {
- "version": "2.7.2"
- }
- }
- },
- "extend": {
- "version": "3.0.2"
- },
- "extend-shallow": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "fast-deep-equal": {
- "version": "3.1.3"
- },
- "fast-glob": {
- "version": "3.2.12",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "fast-json-patch": {
- "version": "3.1.1"
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz",
- "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==",
- "requires": {
- "fastest-levenshtein": "^1.0.7"
- }
- },
- "fast-safe-stringify": {
- "version": "2.1.1"
- },
- "fast-text-encoding": {
- "version": "1.0.6"
- },
- "fast-xml-parser": {
- "version": "4.2.4",
- "requires": {
- "strnum": "^1.0.5"
- }
- },
- "fastest-levenshtein": {
- "version": "1.0.16",
- "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
- "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg=="
- },
- "fastq": {
- "version": "1.15.0",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "fb-watchman": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "bser": "2.1.1"
- }
- },
- "fclone": {
- "version": "1.0.11"
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "file-type": {
- "version": "18.5.0",
- "requires": {
- "readable-web-to-node-stream": "^3.0.2",
- "strtok3": "^7.0.0",
- "token-types": "^5.0.1"
- }
- },
- "file-uri-to-path": {
- "version": "1.0.0"
- },
- "fill-range": {
- "version": "7.0.1",
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "finalhandler": {
- "version": "1.1.2",
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0"
- },
- "on-finished": {
- "version": "2.3.0",
- "requires": {
- "ee-first": "1.1.1"
- }
- }
- }
- },
- "find-replace": {
- "version": "3.0.0",
- "requires": {
- "array-back": "^3.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "dev": true
- },
- "follow-redirects": {
- "version": "1.15.2"
- },
- "for-each": {
- "version": "0.3.3",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.3"
- }
- },
- "form-data": {
- "version": "2.5.1",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "formidable": {
- "version": "1.2.6"
- },
- "formidable-serverless": {
- "version": "1.1.1",
- "requires": {
- "formidable": "^1.2.2"
- }
- },
- "forwarded": {
- "version": "0.2.0"
- },
- "fresh": {
- "version": "0.5.2"
- },
- "fs-extra": {
- "version": "8.1.0",
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
- "fs-minipass": {
- "version": "1.2.7",
- "requires": {
- "minipass": "^2.6.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0"
- },
- "ftp": {
- "version": "0.3.10",
- "requires": {
- "readable-stream": "1.1.x",
- "xregexp": "2.0.0"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1"
- },
- "readable-stream": {
- "version": "1.1.14",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "string_decoder": {
- "version": "0.10.31"
- }
- }
- },
- "function-bind": {
- "version": "1.1.1"
- },
- "function.prototype.name": {
- "version": "1.1.5",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0",
- "functions-have-names": "^1.2.2"
- }
- },
- "functions-have-names": {
- "version": "1.2.3",
- "dev": true
- },
- "gauge": {
- "version": "2.7.4",
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "3.0.1",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "gaxios": {
- "version": "3.2.0",
- "requires": {
- "abort-controller": "^3.0.0",
- "extend": "^3.0.2",
- "https-proxy-agent": "^5.0.0",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.3.0"
- },
- "dependencies": {
- "is-stream": {
- "version": "2.0.1"
- }
- }
- },
- "gcp-metadata": {
- "version": "4.3.1",
- "requires": {
- "gaxios": "^4.0.0",
- "json-bigint": "^1.0.0"
- },
- "dependencies": {
- "gaxios": {
- "version": "4.3.3",
- "requires": {
- "abort-controller": "^3.0.0",
- "extend": "^3.0.2",
- "https-proxy-agent": "^5.0.0",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.6.7"
- }
- },
- "is-stream": {
- "version": "2.0.1"
- }
- }
- },
- "gcs-resumable-upload": {
- "version": "3.6.0",
- "requires": {
- "abort-controller": "^3.0.0",
- "async-retry": "^1.3.3",
- "configstore": "^5.0.0",
- "extend": "^3.0.2",
- "gaxios": "^4.0.0",
- "google-auth-library": "^7.0.0",
- "pumpify": "^2.0.0",
- "stream-events": "^1.0.4"
- },
- "dependencies": {
- "gaxios": {
- "version": "4.3.3",
- "requires": {
- "abort-controller": "^3.0.0",
- "extend": "^3.0.2",
- "https-proxy-agent": "^5.0.0",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.6.7"
- }
- },
- "is-stream": {
- "version": "2.0.1"
- }
- }
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5"
- },
- "get-intrinsic": {
- "version": "1.2.1",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
- }
- },
- "get-package-type": {
- "version": "0.1.0",
- "dev": true
- },
- "get-stream": {
- "version": "6.0.1",
- "dev": true
- },
- "get-symbol-description": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- }
- },
- "get-uri": {
- "version": "3.0.2",
- "requires": {
- "@tootallnate/once": "1",
- "data-uri-to-buffer": "3",
- "debug": "4",
- "file-uri-to-path": "2",
- "fs-extra": "^8.1.0",
- "ftp": "^0.3.10"
- },
- "dependencies": {
- "file-uri-to-path": {
- "version": "2.0.0"
- }
- }
- },
- "git-node-fs": {
- "version": "1.0.0"
- },
- "git-sha1": {
- "version": "0.1.2"
- },
- "glob": {
- "version": "7.2.3",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "global-dirs": {
- "version": "2.1.0",
- "dev": true,
- "requires": {
- "ini": "1.3.7"
- },
- "dependencies": {
- "ini": {
- "version": "1.3.7",
- "dev": true
- }
- }
- },
- "globals": {
- "version": "11.12.0",
- "dev": true
- },
- "globalthis": {
- "version": "1.0.3",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3"
- }
- },
- "globby": {
- "version": "11.1.0",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "google-auth-library": {
- "version": "7.14.1",
- "requires": {
- "arrify": "^2.0.0",
- "base64-js": "^1.3.0",
- "ecdsa-sig-formatter": "^1.0.11",
- "fast-text-encoding": "^1.0.0",
- "gaxios": "^4.0.0",
- "gcp-metadata": "^4.2.0",
- "gtoken": "^5.0.4",
- "jws": "^4.0.0",
- "lru-cache": "^6.0.0"
- },
- "dependencies": {
- "gaxios": {
- "version": "4.3.3",
- "requires": {
- "abort-controller": "^3.0.0",
- "extend": "^3.0.2",
- "https-proxy-agent": "^5.0.0",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.6.7"
- }
- },
- "is-stream": {
- "version": "2.0.1"
- },
- "lru-cache": {
- "version": "6.0.0",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "google-p12-pem": {
- "version": "3.1.4",
- "requires": {
- "node-forge": "^1.3.1"
- }
- },
- "gopd": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.3"
- }
- },
- "got": {
- "version": "9.6.0",
- "dev": true,
- "requires": {
- "@sindresorhus/is": "^0.14.0",
- "@szmarczak/http-timer": "^1.1.2",
- "cacheable-request": "^6.0.0",
- "decompress-response": "^3.3.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^4.1.0",
- "lowercase-keys": "^1.0.1",
- "mimic-response": "^1.0.1",
- "p-cancelable": "^1.0.0",
- "to-readable-stream": "^1.0.0",
- "url-parse-lax": "^3.0.0"
- },
- "dependencies": {
- "get-stream": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- }
- }
- },
- "graceful-fs": {
- "version": "4.2.11"
- },
- "grapheme-splitter": {
- "version": "1.0.4",
- "dev": true
- },
- "graphemer": {
- "version": "1.4.0",
- "dev": true
- },
- "gray-matter": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "js-yaml": "^3.13.1",
- "kind-of": "^6.0.2",
- "section-matter": "^1.0.0",
- "strip-bom-string": "^1.0.0"
- },
- "dependencies": {
- "argparse": {
- "version": "1.0.10",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "js-yaml": {
- "version": "3.14.1",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "dev": true
- }
- }
- },
- "gtoken": {
- "version": "5.3.2",
- "requires": {
- "gaxios": "^4.0.0",
- "google-p12-pem": "^3.1.3",
- "jws": "^4.0.0"
- },
- "dependencies": {
- "gaxios": {
- "version": "4.3.3",
- "requires": {
- "abort-controller": "^3.0.0",
- "extend": "^3.0.2",
- "https-proxy-agent": "^5.0.0",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.6.7"
- }
- },
- "is-stream": {
- "version": "2.0.1"
- }
- }
- },
- "has": {
- "version": "1.0.3",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-bigints": {
- "version": "1.0.2",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0"
- },
- "has-property-descriptors": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.1"
- }
- },
- "has-proto": {
- "version": "1.0.1"
- },
- "has-symbols": {
- "version": "1.0.3"
- },
- "has-tostringtag": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "has-unicode": {
- "version": "2.0.1"
- },
- "has-yarn": {
- "version": "2.1.0",
- "dev": true
- },
- "hash-stream-validation": {
- "version": "0.2.4"
- },
- "he": {
- "version": "1.2.0"
- },
- "helmet": {
- "version": "4.1.1"
- },
- "hexoid": {
- "version": "1.0.0"
- },
- "highlight.js": {
- "version": "10.7.3"
- },
- "hosted-git-info": {
- "version": "2.8.9"
- },
- "hpagent": {
- "version": "0.1.2"
- },
- "html-escaper": {
- "version": "2.0.2",
- "dev": true
- },
- "html-to-mrkdwn-ts": {
- "version": "1.1.0",
- "requires": {
- "node-html-markdown": "^1.1.3"
- }
- },
- "html-to-text": {
- "version": "8.2.1",
- "requires": {
- "@selderee/plugin-htmlparser2": "^0.6.0",
- "deepmerge": "^4.2.2",
- "he": "^1.2.0",
- "htmlparser2": "^6.1.0",
- "minimist": "^1.2.6",
- "selderee": "^0.6.0"
- },
- "dependencies": {
- "dom-serializer": {
- "version": "1.4.1",
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.2.0",
- "entities": "^2.0.0"
- }
- },
- "domutils": {
- "version": "2.8.0",
- "requires": {
- "dom-serializer": "^1.0.1",
- "domelementtype": "^2.2.0",
- "domhandler": "^4.2.0"
- }
- },
- "entities": {
- "version": "2.2.0"
- },
- "htmlparser2": {
- "version": "6.1.0",
- "requires": {
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
- "domutils": "^2.5.2",
- "entities": "^2.0.0"
- }
- }
- }
- },
- "htmlparser2": {
- "version": "8.0.2",
- "requires": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "entities": "^4.4.0"
- },
- "dependencies": {
- "domhandler": {
- "version": "5.0.3",
- "requires": {
- "domelementtype": "^2.3.0"
- }
- }
- }
- },
- "http-cache-semantics": {
- "version": "4.1.1"
- },
- "http-errors": {
- "version": "2.0.0",
- "requires": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "dependencies": {
- "setprototypeof": {
- "version": "1.2.0"
- },
- "statuses": {
- "version": "2.0.1"
- }
- }
- },
- "http-proxy-agent": {
- "version": "4.0.1",
- "requires": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- }
- },
- "http2-client": {
- "version": "1.3.5",
- "dev": true
- },
- "https-proxy-agent": {
- "version": "5.0.1",
- "requires": {
- "agent-base": "6",
- "debug": "4"
- }
- },
- "human-signals": {
- "version": "2.1.0",
- "dev": true
- },
- "humanize-ms": {
- "version": "1.2.1",
- "requires": {
- "ms": "^2.0.0"
- }
- },
- "iconv-lite": {
- "version": "0.4.24",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ieee754": {
- "version": "1.1.13"
- },
- "ignore": {
- "version": "5.2.4",
- "dev": true
- },
- "ignore-by-default": {
- "version": "1.0.1",
- "dev": true
- },
- "ignore-walk": {
- "version": "3.0.4",
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
- "import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "import-lazy": {
- "version": "2.1.0",
- "dev": true
- },
- "import-local": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4"
- },
- "indent-string": {
- "version": "4.0.0"
- },
- "infer-owner": {
- "version": "1.0.4"
- },
- "inflection": {
- "version": "1.13.4"
- },
- "inflight": {
- "version": "1.0.6",
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4"
- },
- "ini": {
- "version": "1.3.8"
- },
- "internal-slot": {
- "version": "1.0.5",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.2.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- }
- },
- "invert-kv": {
- "version": "1.0.0"
- },
- "ip": {
- "version": "1.1.8"
- },
- "ipaddr.js": {
- "version": "1.9.1"
- },
- "is-array-buffer": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
- }
- },
- "is-arrayish": {
- "version": "0.2.1"
- },
- "is-bigint": {
- "version": "1.0.4",
- "dev": true,
- "requires": {
- "has-bigints": "^1.0.1"
- }
- },
- "is-binary-path": {
- "version": "2.1.0",
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-boolean-object": {
- "version": "1.1.2",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-buffer": {
- "version": "1.1.6"
- },
- "is-callable": {
- "version": "1.2.7",
- "dev": true
- },
- "is-ci": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "ci-info": "^2.0.0"
- },
- "dependencies": {
- "ci-info": {
- "version": "2.0.0",
- "dev": true
- }
- }
- },
- "is-core-module": {
- "version": "2.12.1",
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-date-object": {
- "version": "1.0.5",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-docker": {
- "version": "2.2.1",
- "dev": true
- },
- "is-electron": {
- "version": "2.2.0"
- },
- "is-extendable": {
- "version": "0.1.1",
- "dev": true
- },
- "is-extglob": {
- "version": "2.1.1"
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "is-generator-fn": {
- "version": "2.1.0",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-installed-globally": {
- "version": "0.3.2",
- "dev": true,
- "requires": {
- "global-dirs": "^2.0.1",
- "is-path-inside": "^3.0.1"
- }
- },
- "is-interactive": {
- "version": "1.0.0",
- "dev": true
- },
- "is-lambda": {
- "version": "1.0.1"
- },
- "is-negative-zero": {
- "version": "2.0.2",
- "dev": true
- },
- "is-npm": {
- "version": "4.0.0",
- "dev": true
- },
- "is-number": {
- "version": "7.0.0"
- },
- "is-number-object": {
- "version": "1.0.7",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-obj": {
- "version": "2.0.0"
- },
- "is-path-inside": {
- "version": "3.0.3",
- "dev": true
- },
- "is-plain-object": {
- "version": "5.0.0"
- },
- "is-promise": {
- "version": "2.2.2"
- },
- "is-regex": {
- "version": "1.1.4",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-retry-allowed": {
- "version": "1.2.0"
- },
- "is-shared-array-buffer": {
- "version": "1.0.2",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2"
- }
- },
- "is-stream": {
- "version": "1.1.0"
- },
- "is-string": {
- "version": "1.0.7",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-symbol": {
- "version": "1.0.4",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "is-typed-array": {
- "version": "1.1.10",
- "dev": true,
- "requires": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-typedarray": {
- "version": "1.0.0"
- },
- "is-unicode-supported": {
- "version": "0.1.0",
- "dev": true
- },
- "is-weakref": {
- "version": "1.0.2",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2"
- }
- },
- "is-what": {
- "version": "4.1.15"
- },
- "is-wsl": {
- "version": "2.2.0",
- "dev": true,
- "requires": {
- "is-docker": "^2.0.0"
- }
- },
- "is-yarn-global": {
- "version": "0.3.0",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0"
- },
- "isemail": {
- "version": "3.2.0",
- "dev": true,
- "requires": {
- "punycode": "2.x.x"
- }
- },
- "isexe": {
- "version": "2.0.0"
- },
- "isomorphic-form-data": {
- "version": "2.0.0",
- "requires": {
- "form-data": "^2.3.2"
- }
- },
- "istanbul-lib-coverage": {
- "version": "3.2.0",
- "dev": true
- },
- "istanbul-lib-instrument": {
- "version": "5.2.1",
- "dev": true,
- "requires": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- }
- },
- "istanbul-lib-report": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^3.0.0",
- "supports-color": "^7.1.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "istanbul-lib-source-maps": {
- "version": "4.0.1",
- "dev": true,
- "requires": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
- }
- },
- "istanbul-reports": {
- "version": "3.1.5",
- "dev": true,
- "requires": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- }
- },
- "iterate-object": {
- "version": "1.3.4"
- },
- "jest": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/core": "^29.5.0",
- "@jest/types": "^29.5.0",
- "import-local": "^3.0.2",
- "jest-cli": "^29.5.0"
- }
- },
- "jest-changed-files": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "execa": "^5.0.0",
- "p-limit": "^3.1.0"
- }
- },
- "jest-circus": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/environment": "^29.5.0",
- "@jest/expect": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "dedent": "^0.7.0",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^29.5.0",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "p-limit": "^3.1.0",
- "pretty-format": "^29.5.0",
- "pure-rand": "^6.0.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-cli": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/core": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "import-local": "^3.0.2",
- "jest-config": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "prompts": "^2.0.1",
- "yargs": "^17.3.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "cliui": {
- "version": "8.0.1",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "y18n": {
- "version": "5.0.8",
- "dev": true
- },
- "yargs": {
- "version": "17.7.2",
- "dev": true,
- "requires": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- }
- }
- }
- },
- "jest-config": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.5.0",
- "@jest/types": "^29.5.0",
- "babel-jest": "^29.5.0",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-circus": "^29.5.0",
- "jest-environment-node": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-runner": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "micromatch": "^4.0.4",
- "parse-json": "^5.2.0",
- "pretty-format": "^29.5.0",
- "slash": "^3.0.0",
- "strip-json-comments": "^3.1.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-diff": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "diff-sequences": "^29.4.3",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-docblock": {
- "version": "29.4.3",
- "dev": true,
- "requires": {
- "detect-newline": "^3.0.0"
- }
- },
- "jest-each": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
- "jest-util": "^29.5.0",
- "pretty-format": "^29.5.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-environment-node": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "jest-mock": "^29.5.0",
- "jest-util": "^29.5.0"
- }
- },
- "jest-get-type": {
- "version": "29.4.3",
- "dev": true
- },
- "jest-haste-map": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "@types/graceful-fs": "^4.1.3",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "fsevents": "^2.3.2",
- "graceful-fs": "^4.2.9",
- "jest-regex-util": "^29.4.3",
- "jest-util": "^29.5.0",
- "jest-worker": "^29.5.0",
- "micromatch": "^4.0.4",
- "walker": "^1.0.8"
- }
- },
- "jest-leak-detector": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
- }
- },
- "jest-matcher-utils": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.5.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-message-util": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.12.13",
- "@jest/types": "^29.5.0",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.5.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-mock": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "jest-util": "^29.5.0"
- }
- },
- "jest-pnp-resolver": {
- "version": "1.2.3",
- "dev": true,
- "requires": {}
- },
- "jest-regex-util": {
- "version": "29.4.3",
- "dev": true
- },
- "jest-resolve": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.5.0",
- "jest-validate": "^29.5.0",
- "resolve": "^1.20.0",
- "resolve.exports": "^2.0.0",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-resolve-dependencies": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "jest-regex-util": "^29.4.3",
- "jest-snapshot": "^29.5.0"
- }
- },
- "jest-runner": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/console": "^29.5.0",
- "@jest/environment": "^29.5.0",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "graceful-fs": "^4.2.9",
- "jest-docblock": "^29.4.3",
- "jest-environment-node": "^29.5.0",
- "jest-haste-map": "^29.5.0",
- "jest-leak-detector": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-resolve": "^29.5.0",
- "jest-runtime": "^29.5.0",
- "jest-util": "^29.5.0",
- "jest-watcher": "^29.5.0",
- "jest-worker": "^29.5.0",
- "p-limit": "^3.1.0",
- "source-map-support": "0.5.13"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-runtime": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/environment": "^29.5.0",
- "@jest/fake-timers": "^29.5.0",
- "@jest/globals": "^29.5.0",
- "@jest/source-map": "^29.4.3",
- "@jest/test-result": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^1.0.0",
- "collect-v8-coverage": "^1.0.0",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-mock": "^29.5.0",
- "jest-regex-util": "^29.4.3",
- "jest-resolve": "^29.5.0",
- "jest-snapshot": "^29.5.0",
- "jest-util": "^29.5.0",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-snapshot": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@babel/core": "^7.11.6",
- "@babel/generator": "^7.7.2",
- "@babel/plugin-syntax-jsx": "^7.7.2",
- "@babel/plugin-syntax-typescript": "^7.7.2",
- "@babel/traverse": "^7.7.2",
- "@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.5.0",
- "@jest/transform": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/babel__traverse": "^7.0.6",
- "@types/prettier": "^2.1.5",
- "babel-preset-current-node-syntax": "^1.0.0",
- "chalk": "^4.0.0",
- "expect": "^29.5.0",
- "graceful-fs": "^4.2.9",
- "jest-diff": "^29.5.0",
- "jest-get-type": "^29.4.3",
- "jest-matcher-utils": "^29.5.0",
- "jest-message-util": "^29.5.0",
- "jest-util": "^29.5.0",
- "natural-compare": "^1.4.0",
- "pretty-format": "^29.5.0",
- "semver": "^7.3.5"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.5.2",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- }
- }
- },
- "jest-util": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-validate": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/types": "^29.5.0",
- "camelcase": "^6.2.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.4.3",
- "leven": "^3.1.0",
- "pretty-format": "^29.5.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "camelcase": {
- "version": "6.3.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-watcher": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/test-result": "^29.5.0",
- "@jest/types": "^29.5.0",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "jest-util": "^29.5.0",
- "string-length": "^4.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jest-worker": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@types/node": "*",
- "jest-util": "^29.5.0",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "8.1.1",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "jmespath": {
- "version": "0.15.0"
- },
- "join-component": {
- "version": "1.1.0"
- },
- "jose": {
- "version": "4.14.4",
- "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz",
- "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g=="
- },
- "js-beautify": {
- "version": "1.14.8",
- "requires": {
- "config-chain": "^1.1.13",
- "editorconfig": "^0.15.3",
- "glob": "^8.1.0",
- "nopt": "^6.0.0"
- },
- "dependencies": {
- "brace-expansion": {
- "version": "2.0.1",
- "requires": {
- "balanced-match": "^1.0.0"
- }
- },
- "glob": {
- "version": "8.1.0",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- }
- },
- "minimatch": {
- "version": "5.1.6",
- "requires": {
- "brace-expansion": "^2.0.1"
- }
- },
- "nopt": {
- "version": "6.0.0",
- "requires": {
- "abbrev": "^1.0.0"
- }
- }
- }
- },
- "js-git": {
- "version": "0.7.8",
- "requires": {
- "bodec": "^0.1.0",
- "culvert": "^0.1.2",
- "git-sha1": "^0.1.2",
- "pako": "^0.2.5"
- }
- },
- "js-sha256": {
- "version": "0.9.0"
- },
- "js-tokens": {
- "version": "4.0.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "jsesc": {
- "version": "2.5.2",
- "dev": true
- },
- "json-bigint": {
- "version": "1.0.0",
- "requires": {
- "bignumber.js": "^9.0.0"
- }
- },
- "json-buffer": {
- "version": "3.0.0",
- "dev": true
- },
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "1.0.0"
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "optional": true
- },
- "json-to-ast": {
- "version": "2.1.0",
- "dev": true,
- "requires": {
- "code-error-fragment": "0.0.230",
- "grapheme-splitter": "^1.0.4"
- }
- },
- "json2csv": {
- "version": "5.0.7",
- "requires": {
- "commander": "^6.1.0",
- "jsonparse": "^1.3.1",
- "lodash.get": "^4.4.2"
- }
- },
- "json5": {
- "version": "2.2.3"
- },
- "jsonfile": {
- "version": "4.0.0",
- "requires": {
- "graceful-fs": "^4.1.6"
- }
- },
- "jsonparse": {
- "version": "1.3.1"
- },
- "jsonpointer": {
- "version": "5.0.1",
- "dev": true
- },
- "jsonwebtoken": {
- "version": "8.5.1",
- "requires": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- },
- "dependencies": {
- "jwa": {
- "version": "1.4.1",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jws": {
- "version": "3.2.2",
- "requires": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "semver": {
- "version": "5.7.1"
- }
- }
- },
- "jwa": {
- "version": "2.0.0",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jwks-rsa": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.0.1.tgz",
- "integrity": "sha512-UUOZ0CVReK1QVU3rbi9bC7N5/le8ziUj0A2ef1Q0M7OPD2KvjEYizptqIxGIo6fSLYDkqBrazILS18tYuRc8gw==",
- "requires": {
- "@types/express": "^4.17.14",
- "@types/jsonwebtoken": "^9.0.0",
- "debug": "^4.3.4",
- "jose": "^4.10.4",
- "limiter": "^1.1.5",
- "lru-memoizer": "^2.1.4"
- }
- },
- "jws": {
- "version": "4.0.0",
- "requires": {
- "jwa": "^2.0.0",
- "safe-buffer": "^5.0.1"
- }
- },
- "keyv": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "json-buffer": "3.0.0"
- }
- },
- "kind-of": {
- "version": "6.0.3",
- "dev": true
- },
- "kleur": {
- "version": "3.0.3",
- "dev": true
- },
- "latest-version": {
- "version": "5.1.0",
- "dev": true,
- "requires": {
- "package-json": "^6.3.0"
- }
- },
- "lazy": {
- "version": "1.0.11"
- },
- "lcid": {
- "version": "1.0.0",
- "requires": {
- "invert-kv": "^1.0.0"
- }
- },
- "leven": {
- "version": "3.1.0",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "limiter": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
- "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA=="
- },
- "lines-and-columns": {
- "version": "1.2.4",
- "dev": true
- },
- "load-json-file": {
- "version": "2.0.0",
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "strip-bom": "^3.0.0"
- },
- "dependencies": {
- "parse-json": {
- "version": "2.2.0",
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "strip-bom": {
- "version": "3.0.0"
- }
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash": {
- "version": "4.17.21"
- },
- "lodash.camelcase": {
- "version": "4.3.0"
- },
- "lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
- },
- "lodash.debounce": {
- "version": "4.0.8",
- "dev": true
- },
- "lodash.get": {
- "version": "4.4.2"
- },
- "lodash.includes": {
- "version": "4.3.0"
- },
- "lodash.isboolean": {
- "version": "3.0.3"
- },
- "lodash.isinteger": {
- "version": "4.0.4"
- },
- "lodash.isnumber": {
- "version": "3.0.3"
- },
- "lodash.isplainobject": {
- "version": "4.0.6"
- },
- "lodash.isstring": {
- "version": "4.0.1"
- },
- "lodash.memoize": {
- "version": "4.1.2",
- "dev": true
- },
- "lodash.merge": {
- "version": "4.6.2",
- "dev": true
- },
- "lodash.once": {
- "version": "4.1.1"
- },
- "lodash.snakecase": {
- "version": "4.1.1"
- },
- "log-driver": {
- "version": "1.2.7"
- },
- "log-symbols": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "lowercase-keys": {
- "version": "1.0.1",
- "dev": true
- },
- "lru-cache": {
- "version": "5.1.1",
- "requires": {
- "yallist": "^3.0.2"
- }
- },
- "lru-memoizer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.2.0.tgz",
- "integrity": "sha512-QfOZ6jNkxCcM/BkIPnFsqDhtrazLRsghi9mBwFAzol5GCvj4EkFT899Za3+QwikCg5sRX8JstioBDwOxEyzaNw==",
- "requires": {
- "lodash.clonedeep": "^4.5.0",
- "lru-cache": "~4.0.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz",
- "integrity": "sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw==",
- "requires": {
- "pseudomap": "^1.0.1",
- "yallist": "^2.0.0"
- }
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
- }
- }
- },
- "lru-queue": {
- "version": "0.1.0",
- "requires": {
- "es5-ext": "~0.10.2"
- }
- },
- "luxon": {
- "version": "3.3.0"
- },
- "make-dir": {
- "version": "3.1.0",
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "make-error": {
- "version": "1.3.6",
- "dev": true
- },
- "make-fetch-happen": {
- "version": "10.2.1",
- "requires": {
- "agentkeepalive": "^4.2.1",
- "cacache": "^16.1.0",
- "http-cache-semantics": "^4.1.0",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
- "is-lambda": "^1.0.1",
- "lru-cache": "^7.7.1",
- "minipass": "^3.1.6",
- "minipass-collect": "^1.0.2",
- "minipass-fetch": "^2.0.3",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "negotiator": "^0.6.3",
- "promise-retry": "^2.0.1",
- "socks-proxy-agent": "^7.0.0",
- "ssri": "^9.0.0"
- },
- "dependencies": {
- "@tootallnate/once": {
- "version": "2.0.0"
- },
- "http-proxy-agent": {
- "version": "5.0.0",
- "requires": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
- }
- },
- "lru-cache": {
- "version": "7.18.3"
- },
- "minipass": {
- "version": "3.3.6",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "socks-proxy-agent": {
- "version": "7.0.0",
- "requires": {
- "agent-base": "^6.0.2",
- "debug": "^4.3.3",
- "socks": "^2.6.2"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "makeerror": {
- "version": "1.0.12",
- "dev": true,
- "requires": {
- "tmpl": "1.0.5"
- }
- },
- "map-o": {
- "version": "2.0.10",
- "requires": {
- "iterate-object": "^1.3.0"
- }
- },
- "md5": {
- "version": "2.3.0",
- "requires": {
- "charenc": "0.0.2",
- "crypt": "0.0.2",
- "is-buffer": "~1.1.6"
- }
- },
- "media-typer": {
- "version": "0.3.0"
- },
- "mem": {
- "version": "1.1.0",
- "requires": {
- "mimic-fn": "^1.0.0"
- },
- "dependencies": {
- "mimic-fn": {
- "version": "1.2.0"
- }
- }
- },
- "memoizee": {
- "version": "0.4.15",
- "requires": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.53",
- "es6-weak-map": "^2.0.3",
- "event-emitter": "^0.3.5",
- "is-promise": "^2.2.2",
- "lru-queue": "^0.1.0",
- "next-tick": "^1.1.0",
- "timers-ext": "^0.1.7"
- }
- },
- "merge-descriptors": {
- "version": "1.0.1"
- },
- "merge-stream": {
- "version": "2.0.0",
- "dev": true
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "methods": {
- "version": "1.1.2"
- },
- "micromatch": {
- "version": "4.0.5",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "mime": {
- "version": "2.6.0"
- },
- "mime-db": {
- "version": "1.52.0"
- },
- "mime-types": {
- "version": "2.1.35",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "mimic-fn": {
- "version": "2.1.0"
- },
- "mimic-response": {
- "version": "1.0.1",
- "dev": true
- },
- "minimatch": {
- "version": "3.1.2",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.8"
- },
- "minipass": {
- "version": "2.9.0",
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- }
- },
- "minipass-collect": {
- "version": "1.0.2",
- "requires": {
- "minipass": "^3.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "minipass-fetch": {
- "version": "2.1.2",
- "requires": {
- "encoding": "^0.1.13",
- "minipass": "^3.1.6",
- "minipass-sized": "^1.0.3",
- "minizlib": "^2.1.2"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "minizlib": {
- "version": "2.1.2",
- "requires": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "minipass-flush": {
- "version": "1.0.5",
- "requires": {
- "minipass": "^3.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "minipass-pipeline": {
- "version": "1.2.4",
- "requires": {
- "minipass": "^3.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "minipass-sized": {
- "version": "1.0.3",
- "requires": {
- "minipass": "^3.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "minizlib": {
- "version": "1.3.3",
- "requires": {
- "minipass": "^2.9.0"
- }
- },
- "mkdirp": {
- "version": "1.0.4"
- },
- "module-details-from-path": {
- "version": "1.0.3"
- },
- "moment": {
- "version": "2.29.4"
- },
- "moment-timezone": {
- "version": "0.5.43",
- "requires": {
- "moment": "^2.29.4"
- }
- },
- "moo": {
- "version": "0.5.2"
- },
- "ms": {
- "version": "2.1.3"
- },
- "murmurhash3js": {
- "version": "3.0.1"
- },
- "mute-stream": {
- "version": "0.0.8"
- },
- "mv": {
- "version": "2.1.1",
- "requires": {
- "mkdirp": "~0.5.1",
- "ncp": "~2.0.0",
- "rimraf": "~2.4.0"
- },
- "dependencies": {
- "glob": {
- "version": "6.0.4",
- "requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "mkdirp": {
- "version": "0.5.6",
- "requires": {
- "minimist": "^1.2.6"
- }
- },
- "rimraf": {
- "version": "2.4.5",
- "requires": {
- "glob": "^6.0.1"
- }
- }
- }
- },
- "mz": {
- "version": "2.7.0",
- "requires": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
- }
- },
- "nan": {
- "version": "2.17.0"
- },
- "nanoid": {
- "version": "3.3.6"
- },
- "natural-compare": {
- "version": "1.4.0",
- "dev": true
- },
- "natural-compare-lite": {
- "version": "1.4.0",
- "dev": true
- },
- "ncp": {
- "version": "2.0.0"
- },
- "nearley": {
- "version": "2.20.1",
- "requires": {
- "commander": "^2.19.0",
- "moo": "^0.5.0",
- "railroad-diagrams": "^1.0.0",
- "randexp": "0.4.6"
- },
- "dependencies": {
- "commander": {
- "version": "2.20.3"
- }
- }
- },
- "needle": {
- "version": "git+ssh://git@github.com/clearbit/needle.git#84d28b5f2c3916db1e7eb84aeaa9d976cc40054b",
- "integrity": "sha512-9VnoxVBudfy+C5eIHHbb+SkkWugmACsefrBS+EkHTufUJeHUA5/xBeSquvw+Bj5NvQmieEStduiIDnFKP+Kbog==",
- "from": "needle@clearbit/needle#84d28b5f2c3916db1e7eb84aeaa9d976cc40054b",
- "requires": {
- "iconv-lite": "^0.4.4"
- }
- },
- "negotiator": {
- "version": "0.6.3"
- },
- "netmask": {
- "version": "2.0.2"
- },
- "next-tick": {
- "version": "1.1.0"
- },
- "node-addon-api": {
- "version": "3.2.1"
- },
- "node-fetch": {
- "version": "2.6.11",
- "requires": {
- "whatwg-url": "^5.0.0"
- }
- },
- "node-fetch-h2": {
- "version": "2.3.0",
- "dev": true,
- "requires": {
- "http2-client": "^1.2.5"
- }
- },
- "node-forge": {
- "version": "1.3.1"
- },
- "node-gyp-build": {
- "version": "4.6.0"
- },
- "node-html-markdown": {
- "version": "1.3.0",
- "requires": {
- "node-html-parser": "^6.1.1"
- }
- },
- "node-html-parser": {
- "version": "6.1.5",
- "requires": {
- "css-select": "^5.1.0",
- "he": "1.2.0"
- }
- },
- "node-int64": {
- "version": "0.4.0",
- "dev": true
- },
- "node-mocks-http": {
- "version": "1.9.0",
- "dev": true,
- "requires": {
- "accepts": "^1.3.7",
- "depd": "^1.1.0",
- "fresh": "^0.5.2",
- "merge-descriptors": "^1.0.1",
- "methods": "^1.1.2",
- "mime": "^1.3.4",
- "parseurl": "^1.3.3",
- "range-parser": "^1.2.0",
- "type-is": "^1.6.18"
- },
- "dependencies": {
- "depd": {
- "version": "1.1.2",
- "dev": true
- },
- "mime": {
- "version": "1.6.0",
- "dev": true
- }
- }
- },
- "node-pre-gyp": {
- "version": "0.15.0",
- "requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.3",
- "needle": "^2.5.0",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.2.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4.4.2"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "mkdirp": {
- "version": "0.5.6",
- "requires": {
- "minimist": "^1.2.6"
- }
- },
- "needle": {
- "version": "2.9.1",
- "requires": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "sax": {
- "version": "1.2.4"
- },
- "semver": {
- "version": "5.7.1"
- }
- }
- },
- "node-readfiles": {
- "version": "0.2.0",
- "dev": true,
- "requires": {
- "es6-promise": "^3.2.1"
- }
- },
- "node-releases": {
- "version": "2.0.12",
- "dev": true
- },
- "nodemon": {
- "version": "2.0.4",
- "dev": true,
- "requires": {
- "chokidar": "^3.2.2",
- "debug": "^3.2.6",
- "ignore-by-default": "^1.0.1",
- "minimatch": "^3.0.4",
- "pstree.remy": "^1.1.7",
- "semver": "^5.7.1",
- "supports-color": "^5.5.0",
- "touch": "^3.1.0",
- "undefsafe": "^2.0.2",
- "update-notifier": "^4.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "semver": {
- "version": "5.7.1",
- "dev": true
- }
- }
- },
- "noms": {
- "version": "0.0.0",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "readable-stream": "~1.0.31"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "dev": true
- },
- "readable-stream": {
- "version": "1.0.34",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "dev": true
- }
- }
- },
- "nopt": {
- "version": "4.0.3",
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1"
- }
- }
- },
- "normalize-path": {
- "version": "3.0.0"
- },
- "normalize-url": {
- "version": "4.5.1",
- "dev": true
- },
- "npm-bundled": {
- "version": "1.1.2",
- "requires": {
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npm-normalize-package-bin": {
- "version": "1.0.1"
- },
- "npm-packlist": {
- "version": "1.4.8",
- "requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1",
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npm-run-path": {
- "version": "4.0.1",
- "dev": true,
- "requires": {
- "path-key": "^3.0.0"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "nssocket": {
- "version": "0.6.0",
- "requires": {
- "eventemitter2": "~0.4.14",
- "lazy": "~1.0.11"
- },
- "dependencies": {
- "eventemitter2": {
- "version": "0.4.14"
- }
- }
- },
- "nth-check": {
- "version": "2.1.1",
- "requires": {
- "boolbase": "^1.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1"
- },
- "oas-kit-common": {
- "version": "1.0.8",
- "dev": true,
- "requires": {
- "fast-safe-stringify": "^2.0.7"
- }
- },
- "oas-linter": {
- "version": "3.2.2",
- "dev": true,
- "requires": {
- "@exodus/schemasafe": "^1.0.0-rc.2",
- "should": "^13.2.1",
- "yaml": "^1.10.0"
- }
- },
- "oas-normalize": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "@readme/openapi-parser": "^2.2.0",
- "js-yaml": "^4.1.0",
- "node-fetch": "^2.6.1",
- "swagger2openapi": "^7.0.8"
- }
- },
- "oas-resolver": {
- "version": "2.5.6",
- "dev": true,
- "requires": {
- "node-fetch-h2": "^2.3.0",
- "oas-kit-common": "^1.0.8",
- "reftools": "^1.1.9",
- "yaml": "^1.10.0",
- "yargs": "^17.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "cliui": {
- "version": "8.0.1",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "y18n": {
- "version": "5.0.8",
- "dev": true
- },
- "yargs": {
- "version": "17.7.2",
- "dev": true,
- "requires": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- }
- }
- }
- },
- "oas-schema-walker": {
- "version": "1.1.5",
- "dev": true
- },
- "oas-validator": {
- "version": "5.0.8",
- "dev": true,
- "requires": {
- "call-me-maybe": "^1.0.1",
- "oas-kit-common": "^1.0.8",
- "oas-linter": "^3.2.2",
- "oas-resolver": "^2.5.6",
- "oas-schema-walker": "^1.1.5",
- "reftools": "^1.1.9",
- "should": "^13.2.1",
- "yaml": "^1.10.0"
- }
- },
- "oauth": {
- "version": "0.9.15"
- },
- "object-assign": {
- "version": "4.1.1"
- },
- "object-inspect": {
- "version": "1.12.3"
- },
- "object-keys": {
- "version": "1.1.1",
- "dev": true
- },
- "object.assign": {
- "version": "4.1.4",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- }
- },
- "object.entries": {
- "version": "1.1.6",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "object.values": {
- "version": "1.1.6",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "omit-deep-by-values": {
- "version": "1.0.2",
- "requires": {
- "lodash": "~4.17.11"
- }
- },
- "on-finished": {
- "version": "2.4.1",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "once": {
- "version": "1.4.0",
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "open": {
- "version": "8.4.2",
- "dev": true,
- "requires": {
- "define-lazy-prop": "^2.0.0",
- "is-docker": "^2.1.1",
- "is-wsl": "^2.2.0"
- }
- },
- "openapi-comment-parser": {
- "version": "1.0.0"
- },
- "openapi-types": {
- "version": "12.1.3",
- "dev": true,
- "peer": true
- },
- "optionator": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0",
- "word-wrap": "^1.2.3"
- },
- "dependencies": {
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- }
- }
- },
- "ora": {
- "version": "5.4.1",
- "dev": true,
- "requires": {
- "bl": "^4.1.0",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "is-unicode-supported": "^0.1.0",
- "log-symbols": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "os-homedir": {
- "version": "1.0.2"
- },
- "os-locale": {
- "version": "2.1.0",
- "requires": {
- "execa": "^0.7.0",
- "lcid": "^1.0.0",
- "mem": "^1.1.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "5.1.0",
- "requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "execa": {
- "version": "0.7.0",
- "requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- }
- },
- "get-stream": {
- "version": "3.0.0"
- },
- "lru-cache": {
- "version": "4.1.5",
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "path-key": {
- "version": "2.0.1"
- },
- "shebang-command": {
- "version": "1.2.0",
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0"
- },
- "which": {
- "version": "1.3.1",
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "yallist": {
- "version": "2.1.2"
- }
- }
- },
- "os-tmpdir": {
- "version": "1.0.2"
- },
- "osenv": {
- "version": "0.1.5",
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "p-cancelable": {
- "version": "1.1.0",
- "dev": true
- },
- "p-finally": {
- "version": "1.0.0"
- },
- "p-limit": {
- "version": "3.1.0",
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "p-map": {
- "version": "4.0.0",
- "requires": {
- "aggregate-error": "^3.0.0"
- }
- },
- "p-queue": {
- "version": "6.6.2",
- "requires": {
- "eventemitter3": "^4.0.4",
- "p-timeout": "^3.2.0"
- },
- "dependencies": {
- "eventemitter3": {
- "version": "4.0.7"
- }
- }
- },
- "p-retry": {
- "version": "4.6.2",
- "requires": {
- "@types/retry": "0.12.0",
- "retry": "^0.13.1"
- }
- },
- "p-timeout": {
- "version": "3.2.0",
- "requires": {
- "p-finally": "^1.0.0"
- }
- },
- "p-try": {
- "version": "2.2.0"
- },
- "pac-proxy-agent": {
- "version": "5.0.0",
- "requires": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4",
- "get-uri": "3",
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "5",
- "pac-resolver": "^5.0.0",
- "raw-body": "^2.2.0",
- "socks-proxy-agent": "5"
- }
- },
- "pac-resolver": {
- "version": "5.0.1",
- "requires": {
- "degenerator": "^3.0.2",
- "ip": "^1.1.5",
- "netmask": "^2.0.2"
- }
- },
- "package-json": {
- "version": "6.5.0",
- "dev": true,
- "requires": {
- "got": "^9.6.0",
- "registry-auth-token": "^4.0.0",
- "registry-url": "^5.0.0",
- "semver": "^6.2.0"
- }
- },
- "packet-reader": {
- "version": "1.0.0"
- },
- "pako": {
- "version": "0.2.9"
- },
- "parent-module": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "parse-json": {
- "version": "5.2.0",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "parse-link-header": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "xtend": "~4.0.1"
- },
- "dependencies": {
- "xtend": {
- "version": "4.0.2",
- "dev": true
- }
- }
- },
- "parse-srcset": {
- "version": "1.0.2"
- },
- "parse5": {
- "version": "5.1.1"
- },
- "parse5-htmlparser2-tree-adapter": {
- "version": "5.1.1",
- "requires": {
- "parse5": "^5.1.1"
- }
- },
- "parseley": {
- "version": "0.7.0",
- "requires": {
- "moo": "^0.5.1",
- "nearley": "^2.20.1"
- }
- },
- "parseurl": {
- "version": "1.3.3"
- },
- "passport": {
- "version": "0.6.0",
- "requires": {
- "passport-strategy": "1.x.x",
- "pause": "0.0.1",
- "utils-merge": "^1.0.1"
- }
- },
- "passport-facebook": {
- "version": "3.0.0",
- "requires": {
- "passport-oauth2": "1.x.x"
- }
- },
- "passport-github2": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/passport-github2/-/passport-github2-0.1.12.tgz",
- "integrity": "sha512-3nPUCc7ttF/3HSP/k9sAXjz3SkGv5Nki84I05kSQPo01Jqq1NzJACgMblCK0fGcv9pKCG/KXU3AJRDGLqHLoIw==",
- "requires": {
- "passport-oauth2": "1.x.x"
- }
- },
- "passport-google-oauth": {
- "version": "2.0.0",
- "requires": {
- "passport-google-oauth1": "1.x.x",
- "passport-google-oauth20": "2.x.x"
- }
- },
- "passport-google-oauth1": {
- "version": "1.0.0",
- "requires": {
- "passport-oauth1": "1.x.x"
- }
- },
- "passport-google-oauth20": {
- "version": "2.0.0",
- "requires": {
- "passport-oauth2": "1.x.x"
- }
- },
- "passport-oauth": {
- "version": "0.1.15",
- "requires": {
- "oauth": "0.9.x",
- "passport": "~0.1.1",
- "pkginfo": "0.2.x"
- },
- "dependencies": {
- "passport": {
- "version": "0.1.18",
- "requires": {
- "pause": "0.0.1",
- "pkginfo": "0.2.x"
- }
- }
- }
- },
- "passport-oauth1": {
- "version": "1.3.0",
- "requires": {
- "oauth": "0.9.x",
- "passport-strategy": "1.x.x",
- "utils-merge": "1.x.x"
- }
- },
- "passport-oauth2": {
- "version": "1.7.0",
- "requires": {
- "base64url": "3.x.x",
- "oauth": "0.9.x",
- "passport-strategy": "1.x.x",
- "uid2": "0.0.x",
- "utils-merge": "1.x.x"
- }
- },
- "passport-slack": {
- "version": "0.0.7",
- "requires": {
- "passport-oauth": "~0.1.1",
- "pkginfo": "0.2.x"
- }
- },
- "passport-strategy": {
- "version": "1.0.0"
- },
- "path-exists": {
- "version": "4.0.0"
- },
- "path-is-absolute": {
- "version": "1.0.1"
- },
- "path-key": {
- "version": "3.1.1",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7"
- },
- "path-to-regexp": {
- "version": "0.1.7"
- },
- "path-type": {
- "version": "4.0.0",
- "dev": true
- },
- "pause": {
- "version": "0.0.1"
- },
- "peek-readable": {
- "version": "5.0.0"
- },
- "peopledatalabs": {
- "version": "5.0.5",
- "requires": {
- "axios": "^1.4.0",
- "copy-anything": "^3.0.5"
- },
- "dependencies": {
- "axios": {
- "version": "1.4.0",
- "requires": {
- "follow-redirects": "^1.15.0",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- },
- "form-data": {
- "version": "4.0.0",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- }
- }
- },
- "pg": {
- "version": "8.11.0",
- "requires": {
- "buffer-writer": "2.0.0",
- "packet-reader": "1.0.0",
- "pg-cloudflare": "^1.1.0",
- "pg-connection-string": "^2.6.0",
- "pg-pool": "^3.6.0",
- "pg-protocol": "^1.6.0",
- "pg-types": "^2.1.0",
- "pgpass": "1.x"
- }
- },
- "pg-cloudflare": {
- "version": "1.1.0",
- "optional": true
- },
- "pg-connection-string": {
- "version": "2.6.0"
- },
- "pg-int8": {
- "version": "1.0.1"
- },
- "pg-pool": {
- "version": "3.6.0",
- "requires": {}
- },
- "pg-protocol": {
- "version": "1.6.0"
- },
- "pg-types": {
- "version": "2.2.0",
- "requires": {
- "pg-int8": "1.0.1",
- "postgres-array": "~2.0.0",
- "postgres-bytea": "~1.0.0",
- "postgres-date": "~1.0.4",
- "postgres-interval": "^1.1.0"
- }
- },
- "pgpass": {
- "version": "1.0.5",
- "requires": {
- "split2": "^4.1.0"
- }
- },
- "picocolors": {
- "version": "1.0.0"
- },
- "picomatch": {
- "version": "2.3.1"
- },
- "pidusage": {
- "version": "3.0.2",
- "requires": {
- "safe-buffer": "^5.2.1"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.2.1"
- }
- }
- },
- "pify": {
- "version": "2.3.0"
- },
- "pirates": {
- "version": "4.0.6",
- "dev": true
- },
- "pkg-dir": {
- "version": "4.2.0",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- }
- }
- },
- "pkginfo": {
- "version": "0.2.3"
- },
- "pm2": {
- "version": "5.3.0",
- "requires": {
- "@pm2/agent": "~2.0.0",
- "@pm2/io": "~5.0.0",
- "@pm2/js-api": "~0.6.7",
- "@pm2/pm2-version-check": "latest",
- "async": "~3.2.0",
- "blessed": "0.1.81",
- "chalk": "3.0.0",
- "chokidar": "^3.5.3",
- "cli-tableau": "^2.0.0",
- "commander": "2.15.1",
- "croner": "~4.1.92",
- "dayjs": "~1.11.5",
- "debug": "^4.3.1",
- "enquirer": "2.3.6",
- "eventemitter2": "5.0.1",
- "fclone": "1.0.11",
- "mkdirp": "1.0.4",
- "needle": "2.4.0",
- "pidusage": "~3.0",
- "pm2-axon": "~4.0.1",
- "pm2-axon-rpc": "~0.7.1",
- "pm2-deploy": "~1.0.2",
- "pm2-multimeter": "^0.1.2",
- "pm2-sysmonit": "^1.2.8",
- "promptly": "^2",
- "semver": "^7.2",
- "source-map-support": "0.5.21",
- "sprintf-js": "1.1.2",
- "vizion": "~2.2.1",
- "yamljs": "0.3.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "async": {
- "version": "3.2.4"
- },
- "chalk": {
- "version": "3.0.0",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4"
- },
- "commander": {
- "version": "2.15.1"
- },
- "eventemitter2": {
- "version": "5.0.1"
- },
- "has-flag": {
- "version": "4.0.0"
- },
- "lru-cache": {
- "version": "6.0.0",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "needle": {
- "version": "2.4.0",
- "requires": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "requires": {
- "ms": "^2.1.1"
- }
- }
- }
- },
- "sax": {
- "version": "1.2.4"
- },
- "semver": {
- "version": "7.5.2",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "source-map-support": {
- "version": "0.5.21",
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "pm2-axon": {
- "version": "4.0.1",
- "requires": {
- "amp": "~0.3.1",
- "amp-message": "~0.1.1",
- "debug": "^4.3.1",
- "escape-string-regexp": "^4.0.0"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "4.0.0"
- }
- }
- },
- "pm2-axon-rpc": {
- "version": "0.7.1",
- "requires": {
- "debug": "^4.3.1"
- }
- },
- "pm2-deploy": {
- "version": "1.0.2",
- "requires": {
- "run-series": "^1.1.8",
- "tv4": "^1.3.0"
- }
- },
- "pm2-multimeter": {
- "version": "0.1.2",
- "requires": {
- "charm": "~0.1.1"
- }
- },
- "pm2-sysmonit": {
- "version": "1.2.8",
- "optional": true,
- "requires": {
- "async": "^3.2.0",
- "debug": "^4.3.1",
- "pidusage": "^2.0.21",
- "systeminformation": "^5.7",
- "tx2": "~1.0.4"
- },
- "dependencies": {
- "async": {
- "version": "3.2.4",
- "optional": true
- },
- "pidusage": {
- "version": "2.0.21",
- "optional": true,
- "requires": {
- "safe-buffer": "^5.2.1"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "optional": true
- }
- }
- },
- "postcss": {
- "version": "8.4.24",
- "requires": {
- "nanoid": "^3.3.6",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- }
- },
- "postgres-array": {
- "version": "2.0.0"
- },
- "postgres-bytea": {
- "version": "1.0.0"
- },
- "postgres-date": {
- "version": "1.0.7"
- },
- "postgres-interval": {
- "version": "1.2.0",
- "requires": {
- "xtend": "^4.0.0"
- },
- "dependencies": {
- "xtend": {
- "version": "4.0.2"
- }
- }
- },
- "prelude-ls": {
- "version": "1.2.1",
- "dev": true
- },
- "prepend-http": {
- "version": "2.0.0",
- "dev": true
- },
- "prettier": {
- "version": "2.8.8",
- "dev": true
- },
- "pretty-format": {
- "version": "29.5.0",
- "dev": true,
- "requires": {
- "@jest/schemas": "^29.4.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "5.2.0",
- "dev": true
- }
- }
- },
- "process-nextick-args": {
- "version": "2.0.1"
- },
- "promise-inflight": {
- "version": "1.0.1"
- },
- "promise-retry": {
- "version": "2.0.1",
- "requires": {
- "err-code": "^2.0.2",
- "retry": "^0.12.0"
- },
- "dependencies": {
- "retry": {
- "version": "0.12.0"
- }
- }
- },
- "promptly": {
- "version": "2.2.0",
- "requires": {
- "read": "^1.0.4"
- }
- },
- "prompts": {
- "version": "2.4.2",
- "dev": true,
- "requires": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- }
- },
- "proto-list": {
- "version": "1.2.4"
- },
- "proxy-addr": {
- "version": "2.0.7",
- "requires": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- }
- },
- "proxy-agent": {
- "version": "5.0.0",
- "requires": {
- "agent-base": "^6.0.0",
- "debug": "4",
- "http-proxy-agent": "^4.0.0",
- "https-proxy-agent": "^5.0.0",
- "lru-cache": "^5.1.1",
- "pac-proxy-agent": "^5.0.0",
- "proxy-from-env": "^1.0.0",
- "socks-proxy-agent": "^5.0.0"
- }
- },
- "proxy-from-env": {
- "version": "1.1.0"
- },
- "pseudomap": {
- "version": "1.0.2"
- },
- "pstree.remy": {
- "version": "1.1.8",
- "dev": true
- },
- "pump": {
- "version": "3.0.0",
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "pumpify": {
- "version": "2.0.1",
- "requires": {
- "duplexify": "^4.1.1",
- "inherits": "^2.0.3",
- "pump": "^3.0.0"
- },
- "dependencies": {
- "duplexify": {
- "version": "4.1.2",
- "requires": {
- "end-of-stream": "^1.4.1",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1",
- "stream-shift": "^1.0.0"
- }
- }
- }
- },
- "punycode": {
- "version": "2.3.0"
- },
- "pupa": {
- "version": "2.1.1",
- "dev": true,
- "requires": {
- "escape-goat": "^2.0.0"
- }
- },
- "pure-rand": {
- "version": "6.0.2",
- "dev": true
- },
- "qs": {
- "version": "6.11.0",
- "requires": {
- "side-channel": "^1.0.4"
- }
- },
- "querystring": {
- "version": "0.2.0"
- },
- "queue-microtask": {
- "version": "1.2.3",
- "dev": true
- },
- "railroad-diagrams": {
- "version": "1.0.0"
- },
- "ramda": {
- "version": "0.27.2"
- },
- "randexp": {
- "version": "0.4.6",
- "requires": {
- "discontinuous-range": "1.0.0",
- "ret": "~0.1.10"
- }
- },
- "range-parser": {
- "version": "1.2.1"
- },
- "raw-body": {
- "version": "2.5.2",
- "requires": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- }
- },
- "rc": {
- "version": "1.2.8",
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "dependencies": {
- "strip-json-comments": {
- "version": "2.0.1"
- }
- }
- },
- "rdme": {
- "version": "7.5.0",
- "dev": true,
- "requires": {
- "@actions/core": "^1.6.0",
- "chalk": "^4.1.2",
- "cli-table": "^0.3.1",
- "command-line-args": "^5.2.0",
- "command-line-usage": "^6.0.2",
- "config": "^3.1.0",
- "configstore": "^5.0.0",
- "debug": "^4.3.3",
- "editor": "^1.0.0",
- "enquirer": "^2.3.0",
- "form-data": "^4.0.0",
- "gray-matter": "^4.0.1",
- "isemail": "^3.1.3",
- "mime-types": "^2.1.35",
- "node-fetch": "^2.6.1",
- "oas-normalize": "^6.0.0",
- "open": "^8.2.1",
- "ora": "^5.4.1",
- "parse-link-header": "^2.0.0",
- "read": "^1.0.7",
- "semver": "^7.0.0",
- "tmp-promise": "^3.0.2",
- "update-notifier": "^5.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "boxen": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "ansi-align": "^3.0.0",
- "camelcase": "^6.2.0",
- "chalk": "^4.1.0",
- "cli-boxes": "^2.2.1",
- "string-width": "^4.2.2",
- "type-fest": "^0.20.2",
- "widest-line": "^3.1.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "camelcase": {
- "version": "6.3.0",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "form-data": {
- "version": "4.0.0",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- },
- "global-dirs": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "ini": "2.0.0"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "ini": {
- "version": "2.0.0",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true
- },
- "is-installed-globally": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "global-dirs": "^3.0.0",
- "is-path-inside": "^3.0.2"
- }
- },
- "is-npm": {
- "version": "5.0.0",
- "dev": true
- },
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.5.2",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "string-width": {
- "version": "4.2.3",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "dev": true
- },
- "update-notifier": {
- "version": "5.1.0",
- "dev": true,
- "requires": {
- "boxen": "^5.0.0",
- "chalk": "^4.1.0",
- "configstore": "^5.0.1",
- "has-yarn": "^2.1.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^2.0.0",
- "is-installed-globally": "^0.4.0",
- "is-npm": "^5.0.0",
- "is-yarn-global": "^0.3.0",
- "latest-version": "^5.1.0",
- "pupa": "^2.1.1",
- "semver": "^7.3.4",
- "semver-diff": "^3.1.1",
- "xdg-basedir": "^4.0.0"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- }
- }
- },
- "react-is": {
- "version": "18.2.0",
- "dev": true
- },
- "read": {
- "version": "1.0.7",
- "requires": {
- "mute-stream": "~0.0.4"
- }
- },
- "read-pkg": {
- "version": "2.0.0",
- "requires": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
- },
- "dependencies": {
- "path-type": {
- "version": "2.0.0",
- "requires": {
- "pify": "^2.0.0"
- }
- }
- }
- },
- "read-pkg-up": {
- "version": "2.0.0",
- "requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "2.1.0",
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0"
- },
- "path-exists": {
- "version": "3.0.0"
- }
- }
- },
- "readable-stream": {
- "version": "3.6.2",
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "readable-web-to-node-stream": {
- "version": "3.0.2",
- "requires": {
- "readable-stream": "^3.6.0"
- }
- },
- "readdirp": {
- "version": "3.6.0",
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "reduce-flatten": {
- "version": "2.0.0"
- },
- "reftools": {
- "version": "1.1.9",
- "dev": true
- },
- "regenerate": {
- "version": "1.4.2",
- "dev": true
- },
- "regenerate-unicode-properties": {
- "version": "10.1.0",
- "dev": true,
- "requires": {
- "regenerate": "^1.4.2"
- }
- },
- "regenerator-runtime": {
- "version": "0.13.11",
- "dev": true
- },
- "regenerator-transform": {
- "version": "0.15.1",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "regexp.prototype.flags": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "functions-have-names": "^1.2.3"
- }
- },
- "regexpu-core": {
- "version": "5.3.2",
- "dev": true,
- "requires": {
- "@babel/regjsgen": "^0.8.0",
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- }
- },
- "registry-auth-token": {
- "version": "4.2.2",
- "dev": true,
- "requires": {
- "rc": "1.2.8"
- }
- },
- "registry-url": {
- "version": "5.1.0",
- "dev": true,
- "requires": {
- "rc": "^1.2.8"
- }
- },
- "regjsparser": {
- "version": "0.9.1",
- "dev": true,
- "requires": {
- "jsesc": "~0.5.0"
- },
- "dependencies": {
- "jsesc": {
- "version": "0.5.0",
- "dev": true
- }
- }
- },
- "remove-trailing-slash": {
- "version": "0.1.1"
- },
- "require-directory": {
- "version": "2.1.1"
- },
- "require-from-string": {
- "version": "2.0.2"
- },
- "require-in-the-middle": {
- "version": "5.2.0",
- "requires": {
- "debug": "^4.1.1",
- "module-details-from-path": "^1.0.3",
- "resolve": "^1.22.1"
- }
- },
- "require-main-filename": {
- "version": "2.0.0"
- },
- "resolve": {
- "version": "1.22.2",
- "requires": {
- "is-core-module": "^2.11.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "resolve-cwd": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "resolve-from": "^5.0.0"
- },
- "dependencies": {
- "resolve-from": {
- "version": "5.0.0",
- "dev": true
- }
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "dev": true
- },
- "resolve.exports": {
- "version": "2.0.2",
- "dev": true
- },
- "responselike": {
- "version": "1.0.2",
- "dev": true,
- "requires": {
- "lowercase-keys": "^1.0.0"
- }
- },
- "restore-cursor": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- }
- },
- "ret": {
- "version": "0.1.15"
- },
- "retry": {
- "version": "0.13.1"
- },
- "retry-as-promised": {
- "version": "5.0.0"
- },
- "retry-request": {
- "version": "4.2.2",
- "requires": {
- "debug": "^4.1.1",
- "extend": "^3.0.2"
- }
- },
- "reusify": {
- "version": "1.0.4",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "run-series": {
- "version": "1.1.9"
- },
- "safe-buffer": {
- "version": "5.1.2"
- },
- "safe-json-stringify": {
- "version": "1.2.0",
- "optional": true
- },
- "safe-regex-test": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "is-regex": "^1.1.4"
- }
- },
- "safer-buffer": {
- "version": "2.1.2"
- },
- "sanitize-html": {
- "version": "2.11.0",
- "requires": {
- "deepmerge": "^4.2.2",
- "escape-string-regexp": "^4.0.0",
- "htmlparser2": "^8.0.0",
- "is-plain-object": "^5.0.0",
- "parse-srcset": "^1.0.2",
- "postcss": "^8.3.11"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "4.0.0"
- }
- }
- },
- "sax": {
- "version": "1.2.1"
- },
- "section-matter": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "kind-of": "^6.0.0"
- }
- },
- "secure-json-parse": {
- "version": "2.7.0"
- },
- "selderee": {
- "version": "0.6.0",
- "requires": {
- "parseley": "^0.7.0"
- }
- },
- "semver": {
- "version": "6.3.0"
- },
- "semver-diff": {
- "version": "3.1.1",
- "dev": true,
- "requires": {
- "semver": "^6.3.0"
- }
- },
- "send": {
- "version": "0.17.1",
- "requires": {
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.7.2",
- "mime": "1.6.0",
- "ms": "2.1.1",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.1",
- "statuses": "~1.5.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "requires": {
- "ms": "2.0.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.0.0"
- }
- }
- },
- "depd": {
- "version": "1.1.2"
- },
- "destroy": {
- "version": "1.0.4"
- },
- "http-errors": {
- "version": "1.7.3",
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- }
- },
- "mime": {
- "version": "1.6.0"
- },
- "ms": {
- "version": "2.1.1"
- },
- "on-finished": {
- "version": "2.3.0",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "toidentifier": {
- "version": "1.0.0"
- }
- }
- },
- "sequelize": {
- "version": "6.21.2",
- "requires": {
- "@types/debug": "^4.1.7",
- "@types/validator": "^13.7.1",
- "debug": "^4.3.3",
- "dottie": "^2.0.2",
- "inflection": "^1.13.2",
- "lodash": "^4.17.21",
- "moment": "^2.29.1",
- "moment-timezone": "^0.5.34",
- "pg-connection-string": "^2.5.0",
- "retry-as-promised": "^5.0.0",
- "semver": "^7.3.5",
- "sequelize-pool": "^7.1.0",
- "toposort-class": "^1.0.1",
- "uuid": "^8.3.2",
- "validator": "^13.7.0",
- "wkx": "^0.5.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.5.2",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "uuid": {
- "version": "8.3.2"
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "sequelize-cli-typescript": {
- "version": "3.2.0c",
- "requires": {
- "bluebird": "^3.5.1",
- "cli-color": "^1.2.0",
- "fs-extra": "^4.0.2",
- "js-beautify": "^1.7.4",
- "lodash": "^4.17.4",
- "resolve": "^1.5.0",
- "umzug": "^2.1.0",
- "yargs": "^8.0.2"
- },
- "dependencies": {
- "bluebird": {
- "version": "3.7.2"
- },
- "camelcase": {
- "version": "4.1.0"
- },
- "cliui": {
- "version": "3.2.0",
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- }
- },
- "fs-extra": {
- "version": "4.0.3",
- "requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
- "get-caller-file": {
- "version": "1.0.3"
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0"
- },
- "require-main-filename": {
- "version": "1.0.1"
- },
- "strip-ansi": {
- "version": "3.0.1",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
- }
- },
- "y18n": {
- "version": "3.2.2"
- },
- "yargs": {
- "version": "8.0.2",
- "requires": {
- "camelcase": "^4.1.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^2.0.0",
- "read-pkg-up": "^2.0.0",
- "require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
- "which-module": "^2.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^7.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.1"
- },
- "string-width": {
- "version": "2.1.1",
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "yargs-parser": {
- "version": "7.0.0",
- "requires": {
- "camelcase": "^4.1.0"
- }
- }
- }
- },
- "sequelize-pool": {
- "version": "7.1.0"
- },
- "serve-static": {
- "version": "1.14.1",
- "requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.1"
- }
- },
- "set-blocking": {
- "version": "2.0.0"
- },
- "setprototypeof": {
- "version": "1.1.1"
- },
- "shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "dev": true
- },
- "shimmer": {
- "version": "1.2.1"
- },
- "should": {
- "version": "13.2.3",
- "dev": true,
- "requires": {
- "should-equal": "^2.0.0",
- "should-format": "^3.0.3",
- "should-type": "^1.4.0",
- "should-type-adaptors": "^1.0.1",
- "should-util": "^1.0.0"
- }
- },
- "should-equal": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "should-type": "^1.4.0"
- }
- },
- "should-format": {
- "version": "3.0.3",
- "dev": true,
- "requires": {
- "should-type": "^1.3.0",
- "should-type-adaptors": "^1.0.1"
- }
- },
- "should-type": {
- "version": "1.4.0",
- "dev": true
- },
- "should-type-adaptors": {
- "version": "1.1.0",
- "dev": true,
- "requires": {
- "should-type": "^1.3.0",
- "should-util": "^1.0.0"
- }
- },
- "should-util": {
- "version": "1.0.1",
- "dev": true
- },
- "side-channel": {
- "version": "1.0.4",
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "sigmund": {
- "version": "1.0.1"
- },
- "signal-exit": {
- "version": "3.0.7"
- },
- "sisteransi": {
- "version": "1.0.5",
- "dev": true
- },
- "slack-block-builder": {
- "version": "2.7.2"
- },
- "slash": {
- "version": "3.0.0",
- "dev": true
- },
- "smart-buffer": {
- "version": "4.2.0"
- },
- "snakeize": {
- "version": "0.1.0"
- },
- "socket.io": {
- "version": "4.6.2",
- "requires": {
- "accepts": "~1.3.4",
- "base64id": "~2.0.0",
- "debug": "~4.3.2",
- "engine.io": "~6.4.2",
- "socket.io-adapter": "~2.5.2",
- "socket.io-parser": "~4.2.4"
- }
- },
- "socket.io-adapter": {
- "version": "2.5.2",
- "requires": {
- "ws": "~8.11.0"
- },
- "dependencies": {
- "ws": {
- "version": "8.11.0",
- "requires": {}
- }
- }
- },
- "socket.io-parser": {
- "version": "4.2.4",
- "requires": {
- "@socket.io/component-emitter": "~3.1.0",
- "debug": "~4.3.1"
- }
- },
- "socks": {
- "version": "2.7.1",
- "requires": {
- "ip": "^2.0.0",
- "smart-buffer": "^4.2.0"
- },
- "dependencies": {
- "ip": {
- "version": "2.0.0"
- }
- }
- },
- "socks-proxy-agent": {
- "version": "5.0.1",
- "requires": {
- "agent-base": "^6.0.2",
- "debug": "4",
- "socks": "^2.3.3"
- }
- },
- "source-map": {
- "version": "0.6.1"
- },
- "source-map-js": {
- "version": "1.0.2"
- },
- "source-map-support": {
- "version": "0.5.13",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "spdx-correct": {
- "version": "3.2.0",
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0"
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.13"
- },
- "split2": {
- "version": "4.2.0"
- },
- "sprintf-js": {
- "version": "1.1.2"
- },
- "ssri": {
- "version": "9.0.1",
- "requires": {
- "minipass": "^3.1.1"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "stack-utils": {
- "version": "2.0.6",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^2.0.0"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "2.0.0",
- "dev": true
- }
- }
- },
- "starkbank-ecdsa": {
- "version": "1.1.5",
- "requires": {
- "big-integer": "^1.6.48",
- "js-sha256": "^0.9.0"
- }
- },
- "statuses": {
- "version": "1.5.0"
- },
- "stream-events": {
- "version": "1.0.5",
- "requires": {
- "stubs": "^3.0.0"
- }
- },
- "stream-shift": {
- "version": "1.0.1"
- },
- "streamsearch": {
- "version": "1.1.0"
- },
- "string_decoder": {
- "version": "1.3.0",
- "requires": {
- "safe-buffer": "~5.2.0"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.2.1"
- }
- }
- },
- "string-length": {
- "version": "4.0.2",
- "dev": true,
- "requires": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "3.0.1",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "string.prototype.trim": {
- "version": "1.2.7",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "string.prototype.trimend": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "string.prototype.trimstart": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "requires": {
- "ansi-regex": "^5.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.1"
- }
- }
- },
- "strip-bom": {
- "version": "4.0.0",
- "dev": true
- },
- "strip-bom-string": {
- "version": "1.0.0",
- "dev": true
- },
- "strip-eof": {
- "version": "1.0.0"
- },
- "strip-final-newline": {
- "version": "2.0.0",
- "dev": true
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "stripe": {
- "version": "10.17.0",
- "requires": {
- "@types/node": ">=8.1.0",
- "qs": "^6.11.0"
- }
- },
- "strnum": {
- "version": "1.0.5"
- },
- "strtok3": {
- "version": "7.0.0",
- "requires": {
- "@tokenizer/token": "^0.3.0",
- "peek-readable": "^5.0.0"
- }
- },
- "stubs": {
- "version": "3.0.0"
- },
- "superagent": {
- "version": "8.0.9",
- "requires": {
- "component-emitter": "^1.3.0",
- "cookiejar": "^2.1.4",
- "debug": "^4.3.4",
- "fast-safe-stringify": "^2.1.1",
- "form-data": "^4.0.0",
- "formidable": "^2.1.2",
- "methods": "^1.1.2",
- "mime": "2.6.0",
- "qs": "^6.11.0",
- "semver": "^7.3.8"
- },
- "dependencies": {
- "form-data": {
- "version": "4.0.0",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- }
- },
- "formidable": {
- "version": "2.1.2",
- "requires": {
- "dezalgo": "^1.0.4",
- "hexoid": "^1.0.0",
- "once": "^1.4.0",
- "qs": "^6.11.0"
- }
- },
- "lru-cache": {
- "version": "6.0.0",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.5.2",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "supertest": {
- "version": "6.3.3",
- "dev": true,
- "requires": {
- "methods": "^1.1.2",
- "superagent": "^8.0.5"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "supports-preserve-symlinks-flag": {
- "version": "1.0.0"
- },
- "swagger-ui-dist": {
- "version": "4.1.3"
- },
- "swagger2openapi": {
- "version": "7.0.8",
- "dev": true,
- "requires": {
- "call-me-maybe": "^1.0.1",
- "node-fetch": "^2.6.1",
- "node-fetch-h2": "^2.3.0",
- "node-readfiles": "^0.2.0",
- "oas-kit-common": "^1.0.8",
- "oas-resolver": "^2.5.6",
- "oas-schema-walker": "^1.1.5",
- "oas-validator": "^5.0.8",
- "reftools": "^1.1.9",
- "yaml": "^1.10.0",
- "yargs": "^17.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "cliui": {
- "version": "8.0.1",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "y18n": {
- "version": "5.0.8",
- "dev": true
- },
- "yargs": {
- "version": "17.7.2",
- "dev": true,
- "requires": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- }
- }
- }
- },
- "systeminformation": {
- "version": "5.18.3",
- "optional": true
- },
- "table-layout": {
- "version": "1.0.2",
- "requires": {
- "array-back": "^4.0.1",
- "deep-extend": "~0.6.0",
- "typical": "^5.2.0",
- "wordwrapjs": "^4.0.0"
- },
- "dependencies": {
- "array-back": {
- "version": "4.0.2"
- },
- "typical": {
- "version": "5.2.0"
- }
- }
- },
- "tar": {
- "version": "4.4.19",
- "requires": {
- "chownr": "^1.1.4",
- "fs-minipass": "^1.2.7",
- "minipass": "^2.9.0",
- "minizlib": "^1.3.3",
- "mkdirp": "^0.5.5",
- "safe-buffer": "^5.2.1",
- "yallist": "^3.1.1"
- },
- "dependencies": {
- "mkdirp": {
- "version": "0.5.6",
- "requires": {
- "minimist": "^1.2.6"
- }
- },
- "safe-buffer": {
- "version": "5.2.1"
- }
- }
- },
- "teeny-request": {
- "version": "7.2.0",
- "requires": {
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
- "node-fetch": "^2.6.1",
- "stream-events": "^1.0.5",
- "uuid": "^8.0.0"
- },
- "dependencies": {
- "@tootallnate/once": {
- "version": "2.0.0"
- },
- "http-proxy-agent": {
- "version": "5.0.0",
- "requires": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
- }
- },
- "uuid": {
- "version": "8.3.2"
- }
- }
- },
- "term-size": {
- "version": "2.2.1",
- "dev": true
- },
- "test-exclude": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "dev": true
- },
- "thenify": {
- "version": "3.3.1",
- "requires": {
- "any-promise": "^1.0.0"
- }
- },
- "thenify-all": {
- "version": "1.6.0",
- "requires": {
- "thenify": ">= 3.1.0 < 4"
- }
- },
- "through2": {
- "version": "2.0.5",
- "dev": true,
- "requires": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.8",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "xtend": {
- "version": "4.0.2",
- "dev": true
- }
- }
- },
- "timers-ext": {
- "version": "0.1.7",
- "requires": {
- "es5-ext": "~0.10.46",
- "next-tick": "1"
- }
- },
- "tmp": {
- "version": "0.2.1",
- "dev": true,
- "requires": {
- "rimraf": "^3.0.0"
- }
- },
- "tmp-promise": {
- "version": "3.0.3",
- "dev": true,
- "requires": {
- "tmp": "^0.2.0"
- }
- },
- "tmpl": {
- "version": "1.0.5",
- "dev": true
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "dev": true
- },
- "to-readable-stream": {
- "version": "1.0.0",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "toidentifier": {
- "version": "1.0.1"
- },
- "token-types": {
- "version": "5.0.1",
- "requires": {
- "@tokenizer/token": "^0.3.0",
- "ieee754": "^1.2.1"
- },
- "dependencies": {
- "ieee754": {
- "version": "1.2.1"
- }
- }
- },
- "toposort-class": {
- "version": "1.0.1"
- },
- "touch": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "nopt": "~1.0.10"
- },
- "dependencies": {
- "nopt": {
- "version": "1.0.10",
- "dev": true,
- "requires": {
- "abbrev": "1"
- }
- }
- }
- },
- "tr46": {
- "version": "0.0.3"
- },
- "ts-jest": {
- "version": "29.1.0",
- "dev": true,
- "requires": {
- "bs-logger": "0.x",
- "fast-json-stable-stringify": "2.x",
- "jest-util": "^29.0.0",
- "json5": "^2.2.3",
- "lodash.memoize": "4.x",
- "make-error": "1.x",
- "semver": "7.x",
- "yargs-parser": "^21.0.1"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.5.2",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- }
- }
- },
- "ts-mixer": {
- "version": "6.0.3"
- },
- "ts-node": {
- "version": "10.6.0",
- "dev": true,
- "requires": {
- "@cspotcode/source-map-support": "0.7.0",
- "@tsconfig/node10": "^1.0.7",
- "@tsconfig/node12": "^1.0.7",
- "@tsconfig/node14": "^1.0.0",
- "@tsconfig/node16": "^1.0.2",
- "acorn": "^8.4.1",
- "acorn-walk": "^8.1.1",
- "arg": "^4.1.0",
- "create-require": "^1.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "v8-compile-cache-lib": "^3.0.0",
- "yn": "3.1.1"
- }
- },
- "tsconfig-paths": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
- "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
- "requires": {
- "json5": "^2.2.2",
- "minimist": "^1.2.6",
- "strip-bom": "^3.0.0"
- },
- "dependencies": {
- "strip-bom": {
- "version": "3.0.0"
- }
- }
- },
- "tslib": {
- "version": "2.5.3"
- },
- "tsutils": {
- "version": "3.21.0",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1",
- "dev": true
- }
- }
- },
- "tunnel": {
- "version": "0.0.6",
- "dev": true
- },
- "tv4": {
- "version": "1.3.0"
- },
- "tx2": {
- "version": "1.0.5",
- "optional": true,
- "requires": {
- "json-stringify-safe": "^5.0.1"
- }
- },
- "type": {
- "version": "1.2.0"
- },
- "type-check": {
- "version": "0.4.0",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-detect": {
- "version": "4.0.8",
- "dev": true
- },
- "type-fest": {
- "version": "0.21.3",
- "dev": true
- },
- "type-is": {
- "version": "1.6.18",
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- }
- },
- "typed-array-length": {
- "version": "1.0.4",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
- }
- },
- "typedarray": {
- "version": "0.0.6"
- },
- "typedarray-to-buffer": {
- "version": "3.1.5",
- "requires": {
- "is-typedarray": "^1.0.0"
- }
- },
- "typescript": {
- "version": "4.9.5"
- },
- "typical": {
- "version": "4.0.0"
- },
- "uid2": {
- "version": "0.0.4"
- },
- "umzug": {
- "version": "2.3.0",
- "requires": {
- "bluebird": "^3.7.2"
- },
- "dependencies": {
- "bluebird": {
- "version": "3.7.2"
- }
- }
- },
- "unbox-primitive": {
- "version": "1.0.2",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- }
- },
- "undefsafe": {
- "version": "2.0.5",
- "dev": true
- },
- "undici": {
- "version": "5.22.1",
- "requires": {
- "busboy": "^1.6.0"
- }
- },
- "unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "dev": true
- },
- "unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- }
- },
- "unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "dev": true
- },
- "unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "dev": true
- },
- "unique-filename": {
- "version": "2.0.1",
- "requires": {
- "unique-slug": "^3.0.0"
- }
- },
- "unique-slug": {
- "version": "3.0.0",
- "requires": {
- "imurmurhash": "^0.1.4"
- }
- },
- "unique-string": {
- "version": "2.0.0",
- "requires": {
- "crypto-random-string": "^2.0.0"
- }
- },
- "universal-github-app-jwt": {
- "version": "1.1.1",
- "requires": {
- "@types/jsonwebtoken": "^9.0.0",
- "jsonwebtoken": "^9.0.0"
- },
- "dependencies": {
- "jsonwebtoken": {
- "version": "9.0.0",
- "requires": {
- "jws": "^3.2.2",
- "lodash": "^4.17.21",
- "ms": "^2.1.1",
- "semver": "^7.3.8"
- }
- },
- "jwa": {
- "version": "1.4.1",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jws": {
- "version": "3.2.2",
- "requires": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "lru-cache": {
- "version": "6.0.0",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.5.2",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "universal-user-agent": {
- "version": "6.0.0"
- },
- "universalify": {
- "version": "0.1.2"
- },
- "unleash-client": {
- "version": "3.21.0",
- "requires": {
- "ip": "^1.1.8",
- "make-fetch-happen": "^10.2.1",
- "murmurhash3js": "^3.0.1",
- "semver": "^7.3.8"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.5.2",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0"
- }
- }
- },
- "unpipe": {
- "version": "1.0.0"
- },
- "untildify": {
- "version": "4.0.0",
- "dev": true
- },
- "update-browserslist-db": {
- "version": "1.0.11",
- "dev": true,
- "requires": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- }
- },
- "update-notifier": {
- "version": "4.1.3",
- "dev": true,
- "requires": {
- "boxen": "^4.2.0",
- "chalk": "^3.0.0",
- "configstore": "^5.0.1",
- "has-yarn": "^2.1.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^2.0.0",
- "is-installed-globally": "^0.3.1",
- "is-npm": "^4.0.0",
- "is-yarn-global": "^0.3.0",
- "latest-version": "^5.0.0",
- "pupa": "^2.0.1",
- "semver-diff": "^3.1.1",
- "xdg-basedir": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "uri-js": {
- "version": "4.4.1",
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "url": {
- "version": "0.10.3",
- "requires": {
- "punycode": "1.3.2",
- "querystring": "0.2.0"
- },
- "dependencies": {
- "punycode": {
- "version": "1.3.2"
- }
- }
- },
- "url-parse-lax": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "prepend-http": "^2.0.0"
- }
- },
- "url-search-params-polyfill": {
- "version": "7.0.1"
- },
- "utf-8-validate": {
- "version": "5.0.10",
- "requires": {
- "node-gyp-build": "^4.3.0"
- }
- },
- "util-deprecate": {
- "version": "1.0.2"
- },
- "utils-merge": {
- "version": "1.0.1"
- },
- "uuid": {
- "version": "9.0.0"
- },
- "v8-compile-cache-lib": {
- "version": "3.0.1",
- "dev": true
- },
- "v8-to-istanbul": {
- "version": "9.1.0",
- "dev": true,
- "requires": {
- "@jridgewell/trace-mapping": "^0.3.12",
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0"
- }
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "validator": {
- "version": "13.9.0"
- },
- "vary": {
- "version": "1.1.2"
- },
- "verify-github-webhook": {
- "version": "1.0.1"
- },
- "vizion": {
- "version": "2.2.1",
- "requires": {
- "async": "^2.6.3",
- "git-node-fs": "^1.0.0",
- "ini": "^1.3.5",
- "js-git": "^0.7.8"
- }
- },
- "vm2": {
- "version": "3.9.19",
- "requires": {
- "acorn": "^8.7.0",
- "acorn-walk": "^8.2.0"
- }
- },
- "walker": {
- "version": "1.0.8",
- "dev": true,
- "requires": {
- "makeerror": "1.0.12"
- }
- },
- "wcwidth": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "defaults": "^1.0.3"
- }
- },
- "webidl-conversions": {
- "version": "3.0.1"
- },
- "whatwg-url": {
- "version": "5.0.0",
- "requires": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-boxed-primitive": {
- "version": "1.0.2",
- "dev": true,
- "requires": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- }
- },
- "which-module": {
- "version": "2.0.1"
- },
- "which-typed-array": {
- "version": "1.1.9",
- "dev": true,
- "requires": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0",
- "is-typed-array": "^1.1.10"
- }
- },
- "wide-align": {
- "version": "1.1.5",
- "requires": {
- "string-width": "^1.0.2 || 2 || 3 || 4"
- }
- },
- "widest-line": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "string-width": "^4.0.0"
- },
- "dependencies": {
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- }
- }
- },
- "wkx": {
- "version": "0.5.0",
- "requires": {
- "@types/node": "*"
- }
- },
- "word-wrap": {
- "version": "1.2.3"
- },
- "wordwrapjs": {
- "version": "4.0.1",
- "requires": {
- "reduce-flatten": "^2.0.0",
- "typical": "^5.2.0"
- },
- "dependencies": {
- "typical": {
- "version": "5.2.0"
- }
- }
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4"
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0"
- },
- "string-width": {
- "version": "4.2.3",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- }
- }
- },
- "wrappy": {
- "version": "1.0.2"
- },
- "write-file-atomic": {
- "version": "3.0.3",
- "requires": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
- }
- },
- "ws": {
- "version": "8.13.0",
- "requires": {}
- },
- "xdg-basedir": {
- "version": "4.0.0"
- },
- "xml2js": {
- "version": "0.4.19",
- "requires": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~9.0.1"
- }
- },
- "xmlbuilder": {
- "version": "9.0.7"
- },
- "xregexp": {
- "version": "2.0.0"
- },
- "xtend": {
- "version": "2.1.2",
- "requires": {
- "object-keys": "~0.4.0"
- },
- "dependencies": {
- "object-keys": {
- "version": "0.4.0"
- }
- }
- },
- "y18n": {
- "version": "4.0.3"
- },
- "yallist": {
- "version": "3.1.1"
- },
- "yaml": {
- "version": "1.10.2",
- "dev": true
- },
- "yamljs": {
- "version": "0.3.0",
- "requires": {
- "argparse": "^1.0.7",
- "glob": "^7.0.5"
- },
- "dependencies": {
- "argparse": {
- "version": "1.0.10",
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "sprintf-js": {
- "version": "1.0.3"
- }
- }
- },
- "yargs": {
- "version": "15.4.1",
- "requires": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "dependencies": {
- "find-up": {
- "version": "4.1.0",
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0"
- },
- "locate-path": {
- "version": "5.0.0",
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "string-width": {
- "version": "4.2.3",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "yargs-parser": {
- "version": "18.1.3",
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
- }
- },
- "yargs-parser": {
- "version": "21.1.1",
- "dev": true
- },
- "yn": {
- "version": "3.1.1",
- "dev": true
- },
- "yocto-queue": {
- "version": "0.1.0"
- },
- "zlib-sync": {
- "version": "0.1.8",
- "requires": {
- "nan": "^2.17.0"
- }
- }
- }
-}
diff --git a/backend/package.json b/backend/package.json
index f7852e3f3b..a90c9770e8 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -2,47 +2,43 @@
"name": "app-backend",
"description": "Backend",
"scripts": {
- "start:api": "SERVICE=api TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/api.ts",
- "start:api:dev": "nodemon --watch \"src/**/*.ts\" --watch ../services/libs -e ts,json --exec \"npm run start:api\"",
- "start:api:dev:local": "set -a && . ./.env.dist.local && . ./.env.override.local && set +a && npm run start:api:dev",
- "start:job-generator": "SERVICE=job-generator TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/job-generator.ts",
- "start:job-generator:dev": "nodemon --watch \"src/**/*.ts\" --watch ../services/libs -e ts,json --exec \"npm run start:job-generator\"",
- "start:job-generator:dev:local": "set -a && . ./.env.dist.local && . ./.env.override.local && set +a && npm run start:job-generator:dev",
- "start:nodejs-worker": "SERVICE=nodejs-worker TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/nodejs-worker",
- "start:nodejs-worker:dev": "nodemon --watch \"src/**/*.ts\" --watch ../services/libs -e ts,json --exec \"npm run start:nodejs-worker\"",
- "start:nodejs-worker:dev:local": "set -a && . ./.env.dist.local && . ./.env.override.local && set +a && npm run start:nodejs-worker:dev",
- "start:discord-ws": "SERVICE=discord-ws TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/discord-ws.ts",
- "start:discord-ws:dev": "nodemon --watch \"src/**/*.ts\" --watch ../services/libs -e ts,json --exec \"npm run start:discord-ws\"",
- "start:discord-ws:dev:local": "set -a && . ./.env.dist.local && . ./.env.override.local && set +a && npm run start:discord-ws:dev",
- "build": "tsc && npm run build:documentation && cp package*json dist/ && cp .sequelizerc dist/.sequelizerc ",
- "test": "../scripts/cli scaffold up-test && jest --clearCache && set -a && . ./.env.dist.local && . ./.env.test && set +a && NODE_ENV=test SERVICE=test jest --runInBand --verbose --forceExit",
- "build:documentation": "copyfiles --flat ./src/documentation/openapi.json ./dist/documentation/",
- "db:create:test": "npx ts-node ./src/database/initializers/create test",
- "db:create:dev:source": "ts-node ./src/database/initializers/create dev",
- "db:seed:test": "npx ts-node ./src/database/initializers/seed test",
- "db:seed:dev": "npx ts-node ./src/database/initializers/seed dev",
- "db:publish": "bash ./util/publish-db.sh",
- "docs": "bash ./util/publish-docs.sh",
- "sequelize-cli:source": "npm run build && npx sequelize --config src/database/sequelize-cli-config.ts --migrations-source-path src/database/migrations",
+ "start:api": "SERVICE=api TS_NODE_TRANSPILE_ONLY=true tsx src/bin/api.ts",
+ "start:api:dev": "nodemon --watch \"src/**/*.ts\" --watch ../services/libs -e ts,json --exec \"pnpm run start:api\"",
+ "start:api:dev:local": "set -a && . ./.env.dist.local && . ./.env.override.local && set +a && pnpm run start:api:dev",
+ "start:job-generator": "SERVICE=job-generator TS_NODE_TRANSPILE_ONLY=true tsx src/bin/job-generator.ts",
+ "start:job-generator:dev": "nodemon --watch \"src/**/*.ts\" --watch ../services/libs -e ts,json --exec \"pnpm run start:job-generator\"",
+ "start:job-generator:dev:local": "set -a && . ./.env.dist.local && . ./.env.override.local && set +a && pnpm run start:job-generator:dev",
+ "build": "tsc && cp package*json dist/ && cp .sequelizerc dist/.sequelizerc ",
+ "sequelize-cli:source": "pnpm run build && npx sequelize --config src/database/sequelize-cli-config.ts --migrations-source-path src/database/migrations",
"sequelize-cli:build": "npx sequelize --config database/sequelize-cli-config.js --migrations-compiled-path database/migrations",
- "stripe:login": "stripe login",
- "stripe:start": "stripe listen --forward-to localhost:8080/api/plan/stripe/webhook",
"lint": "eslint .",
"format": "prettier --write .",
"format-check": "prettier --check .",
"tsc-check": "tsc --noEmit",
- "script:process-integration": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/process-integration.ts",
- "script:process-stream": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/process-stream.ts",
- "script:continue-run": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/continue-run.ts",
- "script:change-tenant-plan": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/change-tenant-plan.ts",
- "script:process-webhook": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/process-webhook.ts",
- "script:trigger-webhook": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/trigger-webhook.ts",
- "script:send-weekly-analytics-email": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/send-weekly-analytics-email.ts",
- "script:unleash-init": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/unleash-init.ts",
- "script:enrich-members-organizations": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/enrich-members-and-organizations.ts",
- "script:enrich-organizations": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/enrich-organizations-synchronous.ts",
- "script:generate-merge-suggestions": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/generate-merge-suggestions.ts",
- "script:merge-organizations": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/merge-organizations.ts"
+ "script": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx",
+ "script:continue-run": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/continue-run.ts",
+ "script:trigger-webhook": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/trigger-webhook.ts",
+ "script:send-weekly-analytics-email": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/send-weekly-analytics-email.ts",
+ "script:merge-organizations": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/merge-organizations.ts",
+ "script:refresh-materialized-views": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/refresh-materialized-views.ts",
+ "script:unmerge-members": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/unmerge-members.ts",
+ "script:member-unmerge-testing": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true node -r tsconfig-paths/register -r ts-node/register src/bin/scripts/member-unmerge-testing.ts",
+ "script:merge-similar-organizations": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/merge-similar-organizations.ts",
+ "script:cache-dashboard": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/cache-dashboard.ts",
+ "script:purge-tenants-and-data": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/purge-tenants-and-data.ts",
+ "script:import-lfx-memberships": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/import-lfx-memberships.ts",
+ "script:fix-missing-org-displayName": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/fix-missing-org-displayName.ts",
+ "script:refreshGithubRepoSettings": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/refresh-github-repo-settings.ts",
+ "script:fix-duplicate-members": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/fix-duplicate-members.ts",
+ "script:fix-members-activities-after-unaffilation": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/fix-members-activities-after-unaffilation.ts",
+ "script:process-bot-members": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/process-bot-members.ts",
+ "script:backfill-email-domain-member-organization-dates": "SERVICE=script TS_NODE_TRANSPILE_ONLY=true tsx src/bin/scripts/backfill-email-domain-member-organization-dates.ts"
+ },
+ "lint-staged": {
+ "**/*.ts": [
+ "eslint",
+ "prettier --write"
+ ]
},
"dependencies": {
"@aws-sdk/client-comprehend": "^3.159.0",
@@ -51,27 +47,29 @@
"@aws-sdk/s3-request-presigner": "^3.229.0",
"@aws-sdk/url-parser": "^3.226.0",
"@aws-sdk/util-format-url": "^3.226.0",
- "@crowd/alerting": "file:../services/libs/alerting",
- "@crowd/common": "file:../services/libs/common",
- "@crowd/integrations": "file:../services/libs/integrations",
- "@crowd/logging": "file:../services/libs/logging",
- "@crowd/opensearch": "file:../services/libs/opensearch",
- "@crowd/redis": "file:../services/libs/redis",
- "@crowd/sqs": "file:../services/libs/sqs",
- "@crowd/tracing": "file:../services/libs/tracing",
- "@crowd/types": "file:../services/libs/types",
- "@cubejs-client/core": "^0.30.4",
+ "@crowd/audit-logs": "workspace:*",
+ "@crowd/common": "workspace:*",
+ "@crowd/common_services": "workspace:*",
+ "@crowd/data-access-layer": "workspace:*",
+ "@crowd/integrations": "workspace:*",
+ "@crowd/logging": "workspace:*",
+ "@crowd/nango": "workspace:*",
+ "@crowd/opensearch": "workspace:*",
+ "@crowd/queue": "workspace:*",
+ "@crowd/redis": "workspace:*",
+ "@crowd/slack": "workspace:*",
+ "@crowd/snowflake": "workspace:*",
+ "@crowd/telemetry": "workspace:*",
+ "@crowd/temporal": "workspace:*",
+ "@crowd/types": "workspace:*",
"@google-cloud/storage": "5.3.0",
"@octokit/auth-app": "^3.6.1",
+ "@octokit/core": "^6.1.2",
"@octokit/graphql": "^4.8.0",
"@octokit/request": "^5.6.3",
- "@opensearch-project/opensearch": "^1.2.0",
- "@pm2/io": "^5.0.0",
- "@sendgrid/eventwebhook": "^7.7.0",
- "@sendgrid/mail": "7.2.6",
+ "@octokit/rest": "^22.0.0",
+ "@opensearch-project/opensearch": "^2.11.0",
"@slack/web-api": "^6.7.2",
- "@superfaceai/one-sdk": "^1.3.0",
- "@superfaceai/passport-twitter-oauth2": "^1.0.0",
"analytics-node": "^6.2.0",
"aws-sdk": "2.814.0",
"axios": "^0.27.2",
@@ -91,12 +89,13 @@
"cron-time-generator": "^1.3.0",
"crowd-sentiment": "^1.1.7",
"crypto-js": "^4.1.1",
- "discord.js": "^14.7.1",
+ "csv-parse": "^5.5.6",
"dotenv": "8.2.0",
"dotenv-expand": "^8.0.3",
"emoji-dictionary": "^1.0.11",
"erlpack": "^0.1.4",
"express": "4.17.1",
+ "express-oauth2-jwt-bearer": "^1.7.4",
"express-rate-limit": "6.5.1",
"fast-levenshtein": "^3.0.0",
"formidable-serverless": "1.1.1",
@@ -113,44 +112,39 @@
"mv": "2.1.1",
"node-fetch": "^2.6.7",
"omit-deep-by-values": "^1.0.2",
- "openapi-comment-parser": "^1.0.0",
"passport": "0.6.0",
"passport-facebook": "3.0.0",
"passport-github2": "^0.1.12",
"passport-google-oauth": "2.0.0",
"passport-google-oauth20": "^2.0.0",
"passport-slack": "0.0.7",
- "peopledatalabs": "^5.0.3",
+ "peopledatalabs": "~6.1.5",
"pg": "^8.7.3",
- "pm2": "^5.2.0",
+ "pg-promise": "^11.4.3",
"sanitize-html": "^2.7.1",
- "sequelize": "6.21.2",
+ "sequelize": "6.37.8",
"sequelize-cli-typescript": "^3.2.0-c",
"slack-block-builder": "^2.7.2",
"socket.io": "^4.5.4",
- "stripe": "^10.0.0",
"superagent": "^8.0.0",
- "swagger-ui-dist": "4.1.3",
"tsconfig-paths": "^4.2.0",
- "unleash-client": "^3.18.1",
"utf-8-validate": "^5.0.10",
"uuid": "^9.0.0",
"validator": "^13.7.0",
"verify-github-webhook": "^1.0.1",
- "zlib-sync": "^0.1.8"
+ "zlib-sync": "^0.1.8",
+ "zod": "^4.3.6"
},
"private": true,
"devDependencies": {
- "@babel/core": "^7.21.8",
- "@babel/preset-env": "^7.21.5",
- "@babel/preset-typescript": "^7.21.5",
+ "@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/bunyan": "^1.8.8",
"@types/bunyan-format": "^0.2.5",
"@types/config": "^3.3.0",
"@types/cron": "^2.0.0",
+ "@types/express": "^4.17.17",
"@types/html-to-text": "^8.1.1",
- "@types/jest": "^29.5.1",
- "@types/node": "^17.0.21",
+ "@types/node": "^20.8.2",
"@types/sanitize-html": "^2.6.2",
"@types/superagent": "^4.1.15",
"@types/uuid": "^9.0.2",
@@ -158,20 +152,18 @@
"@typescript-eslint/parser": "^5.17.0",
"copyfiles": "2.4.1",
"cross-env": "7.0.2",
+ "deep-object-diff": "^1.1.9",
"eslint": "^8.12.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-airbnb-typescript": "^16.1.4",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "^2.25.4",
- "eslint-plugin-openapi": "^0.0.4",
- "jest": "^29.5.0",
- "node-mocks-http": "1.9.0",
+ "lint-staged": "^15.4.3",
"nodemon": "2.0.4",
- "prettier": "^2.5.1",
+ "prettier": "^3.3.3",
"rdme": "^7.2.0",
- "supertest": "^6.2.2",
- "ts-jest": "^29.1.0",
- "ts-node": "10.6.0",
- "typescript": "^4.7.4"
- }
+ "tsx": "^4.7.1",
+ "typescript": "^5.6.3"
+ },
+ "packageManager": "pnpm@9.15.0"
}
diff --git a/backend/schema.sql b/backend/schema.sql
deleted file mode 100644
index b82a2e3164..0000000000
--- a/backend/schema.sql
+++ /dev/null
@@ -1,1381 +0,0 @@
---
--- PostgreSQL database dump
---
-
--- Dumped from database version 13.6
--- Dumped by pg_dump version 13.6
-
-SET statement_timeout = 0;
-SET lock_timeout = 0;
-SET idle_in_transaction_session_timeout = 0;
-SET client_encoding = 'UTF8';
-SET standard_conforming_strings = on;
-SELECT pg_catalog.set_config('search_path', '', false);
-SET check_function_bodies = false;
-SET xmloption = content;
-SET client_min_messages = warning;
-SET row_security = off;
-
-SET default_tablespace = '';
-
-SET default_table_access_method = heap;
-
---
--- Name: activities; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.activities (
- id uuid NOT NULL,
- type text NOT NULL,
- "timestamp" timestamp with time zone NOT NULL,
- platform text NOT NULL,
- info jsonb DEFAULT '{}'::jsonb,
- "crowdInfo" jsonb DEFAULT '{}'::jsonb,
- "isKeyAction" boolean DEFAULT false NOT NULL,
- score integer DEFAULT 2,
- "sourceId" text NOT NULL,
- "sourceParentId" character varying(255),
- "importHash" character varying(255),
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "deletedAt" timestamp with time zone,
- "communityMemberId" uuid NOT NULL,
- "conversationId" uuid,
- "parentId" uuid,
- "tenantId" uuid NOT NULL,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: auditLogs; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public."auditLogs" (
- id uuid NOT NULL,
- "entityName" character varying(255) NOT NULL,
- "entityId" character varying(255) NOT NULL,
- "tenantId" uuid,
- action character varying(32) NOT NULL,
- "createdById" uuid,
- "createdByEmail" character varying(255),
- "timestamp" timestamp with time zone NOT NULL,
- "values" json NOT NULL
-);
-
-
---
--- Name: automationExecutions; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public."automationExecutions" (
- id uuid NOT NULL,
- "automationId" uuid NOT NULL,
- type character varying(80) NOT NULL,
- "tenantId" uuid NOT NULL,
- trigger character varying(80) NOT NULL,
- state character varying(80) NOT NULL,
- error json,
- "executedAt" timestamp with time zone NOT NULL,
- "eventId" character varying(255) NOT NULL,
- payload json NOT NULL
-);
-
-
---
--- Name: automations; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.automations (
- id uuid NOT NULL,
- type character varying(80) NOT NULL,
- "tenantId" uuid NOT NULL,
- trigger character varying(80) NOT NULL,
- settings jsonb NOT NULL,
- state character varying(80) NOT NULL,
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: communityMemberNoMerge; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public."communityMemberNoMerge" (
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "communityMemberId" uuid NOT NULL,
- "noMergeId" uuid NOT NULL
-);
-
-
---
--- Name: communityMemberTags; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public."communityMemberTags" (
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "communityMemberId" uuid NOT NULL,
- "tagId" uuid NOT NULL
-);
-
-
---
--- Name: communityMemberToMerge; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public."communityMemberToMerge" (
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "communityMemberId" uuid NOT NULL,
- "toMergeId" uuid NOT NULL
-);
-
-
---
--- Name: communityMembers; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public."communityMembers" (
- id uuid NOT NULL,
- username jsonb NOT NULL,
- type character varying(255) DEFAULT 'member'::character varying NOT NULL,
- info jsonb DEFAULT '{}'::jsonb,
- "crowdInfo" jsonb DEFAULT '{}'::jsonb,
- email text,
- score integer DEFAULT '-1'::integer,
- bio text,
- organisation text,
- location text,
- signals text,
- "joinedAt" timestamp with time zone NOT NULL,
- "importHash" character varying(255),
- reach jsonb DEFAULT '{"total": -1}'::jsonb,
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "deletedAt" timestamp with time zone,
- "tenantId" uuid NOT NULL,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: conversationSettings; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public."conversationSettings" (
- id uuid NOT NULL,
- "customUrl" text,
- "logoUrl" text,
- "faviconUrl" text,
- theme jsonb,
- "autoPublish" jsonb,
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "tenantId" uuid,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: conversations; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.conversations (
- id uuid NOT NULL,
- title text NOT NULL,
- slug text NOT NULL,
- published boolean DEFAULT false NOT NULL,
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "tenantId" uuid NOT NULL,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: eagleEyeContents; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public."eagleEyeContents" (
- id uuid NOT NULL,
- "sourceId" text NOT NULL,
- "vectorId" text NOT NULL,
- status character varying(255) DEFAULT NULL::character varying,
- title text NOT NULL,
- username text NOT NULL,
- url text NOT NULL,
- text text,
- "timestamp" timestamp with time zone NOT NULL,
- platform text NOT NULL,
- keywords text[],
- "similarityScore" double precision,
- "userAttributes" jsonb,
- "postAttributes" jsonb,
- "importHash" character varying(255),
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "deletedAt" timestamp with time zone,
- "tenantId" uuid NOT NULL,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: files; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.files (
- id uuid NOT NULL,
- "belongsTo" character varying(255) NOT NULL,
- "belongsToId" character varying(255) NOT NULL,
- "belongsToColumn" character varying(255) NOT NULL,
- name character varying(2083) NOT NULL,
- "sizeInBytes" integer,
- "privateUrl" character varying(2083),
- "publicUrl" character varying(2083),
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "deletedAt" timestamp with time zone,
- "tenantId" uuid,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: integrations; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.integrations (
- id uuid NOT NULL,
- platform text,
- status text,
- "limitCount" integer,
- "limitLastResetAt" timestamp with time zone,
- token text,
- "refreshToken" text,
- settings jsonb DEFAULT '{}'::jsonb,
- "integrationIdentifier" text,
- "importHash" character varying(255),
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "deletedAt" timestamp with time zone,
- "tenantId" uuid NOT NULL,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: microservices; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.microservices (
- id uuid NOT NULL,
- init boolean DEFAULT false NOT NULL,
- running boolean DEFAULT false NOT NULL,
- type text NOT NULL,
- variant text DEFAULT 'default'::text,
- settings jsonb DEFAULT '{}'::jsonb NOT NULL,
- "importHash" character varying(255),
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "tenantId" uuid NOT NULL,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: reports; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.reports (
- id uuid NOT NULL,
- public boolean DEFAULT false NOT NULL,
- name text NOT NULL,
- "importHash" character varying(255),
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "deletedAt" timestamp with time zone,
- "tenantId" uuid NOT NULL,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: settings; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.settings (
- id character varying(255) DEFAULT 'default'::character varying NOT NULL,
- website character varying(255),
- "backgroundImageUrl" character varying(1024),
- "logoUrl" character varying(1024),
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "deletedAt" timestamp with time zone,
- "tenantId" uuid NOT NULL,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: tags; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.tags (
- id uuid NOT NULL,
- name text NOT NULL,
- "importHash" character varying(255),
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "deletedAt" timestamp with time zone,
- "tenantId" uuid NOT NULL,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: tenantUsers; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public."tenantUsers" (
- id uuid NOT NULL,
- roles text[],
- "invitationToken" character varying(255),
- status character varying(255) NOT NULL,
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "deletedAt" timestamp with time zone,
- "tenantId" uuid,
- "userId" uuid NOT NULL,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: tenants; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.tenants (
- id uuid NOT NULL,
- name character varying(255) NOT NULL,
- url character varying(50) NOT NULL,
- plan character varying(255) DEFAULT 'free'::character varying NOT NULL,
- "planStatus" character varying(255) DEFAULT 'active'::character varying NOT NULL,
- "planStripeCustomerId" character varying(255),
- "planUserId" uuid,
- "onboardedAt" timestamp with time zone,
- "hasSampleData" boolean DEFAULT false NOT NULL,
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "deletedAt" timestamp with time zone,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: users; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.users (
- id uuid NOT NULL,
- "fullName" character varying(255),
- "firstName" character varying(80),
- password character varying(255),
- "emailVerified" boolean DEFAULT false NOT NULL,
- "emailVerificationToken" character varying(255),
- "emailVerificationTokenExpiresAt" timestamp with time zone,
- provider character varying(255),
- "providerId" character varying(2024),
- "passwordResetToken" character varying(255),
- "passwordResetTokenExpiresAt" timestamp with time zone,
- "lastName" character varying(175),
- "phoneNumber" character varying(24),
- email character varying(255) NOT NULL,
- "jwtTokenInvalidBefore" timestamp with time zone,
- "importHash" character varying(255),
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "deletedAt" timestamp with time zone,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: widgets; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.widgets (
- id uuid NOT NULL,
- type text NOT NULL,
- title text,
- settings jsonb,
- cache jsonb,
- "importHash" character varying(255),
- "createdAt" timestamp with time zone NOT NULL,
- "updatedAt" timestamp with time zone NOT NULL,
- "deletedAt" timestamp with time zone,
- "reportId" uuid,
- "tenantId" uuid NOT NULL,
- "createdById" uuid,
- "updatedById" uuid
-);
-
-
---
--- Name: activities activities_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.activities
- ADD CONSTRAINT activities_pkey PRIMARY KEY (id);
-
-
---
--- Name: auditLogs auditLogs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."auditLogs"
- ADD CONSTRAINT "auditLogs_pkey" PRIMARY KEY (id);
-
-
---
--- Name: automationExecutions automationExecutions_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."automationExecutions"
- ADD CONSTRAINT "automationExecutions_pkey" PRIMARY KEY (id);
-
-
---
--- Name: automations automations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.automations
- ADD CONSTRAINT automations_pkey PRIMARY KEY (id);
-
-
---
--- Name: communityMemberNoMerge communityMemberNoMerge_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMemberNoMerge"
- ADD CONSTRAINT "communityMemberNoMerge_pkey" PRIMARY KEY ("communityMemberId", "noMergeId");
-
-
---
--- Name: communityMemberTags communityMemberTags_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMemberTags"
- ADD CONSTRAINT "communityMemberTags_pkey" PRIMARY KEY ("communityMemberId", "tagId");
-
-
---
--- Name: communityMemberToMerge communityMemberToMerge_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMemberToMerge"
- ADD CONSTRAINT "communityMemberToMerge_pkey" PRIMARY KEY ("communityMemberId", "toMergeId");
-
-
---
--- Name: communityMembers communityMembers_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMembers"
- ADD CONSTRAINT "communityMembers_pkey" PRIMARY KEY (id);
-
-
---
--- Name: conversationSettings conversationSettings_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."conversationSettings"
- ADD CONSTRAINT "conversationSettings_pkey" PRIMARY KEY (id);
-
-
---
--- Name: conversations conversations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.conversations
- ADD CONSTRAINT conversations_pkey PRIMARY KEY (id);
-
-
---
--- Name: eagleEyeContents eagleEyeContents_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."eagleEyeContents"
- ADD CONSTRAINT "eagleEyeContents_pkey" PRIMARY KEY (id);
-
-
---
--- Name: files files_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.files
- ADD CONSTRAINT files_pkey PRIMARY KEY (id);
-
-
---
--- Name: integrations integrations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.integrations
- ADD CONSTRAINT integrations_pkey PRIMARY KEY (id);
-
-
---
--- Name: microservices microservices_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.microservices
- ADD CONSTRAINT microservices_pkey PRIMARY KEY (id);
-
-
---
--- Name: reports reports_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.reports
- ADD CONSTRAINT reports_pkey PRIMARY KEY (id);
-
-
---
--- Name: settings settings_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.settings
- ADD CONSTRAINT settings_pkey PRIMARY KEY (id);
-
-
---
--- Name: tags tags_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.tags
- ADD CONSTRAINT tags_pkey PRIMARY KEY (id);
-
-
---
--- Name: tenantUsers tenantUsers_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."tenantUsers"
- ADD CONSTRAINT "tenantUsers_pkey" PRIMARY KEY (id);
-
-
---
--- Name: tenants tenants_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.tenants
- ADD CONSTRAINT tenants_pkey PRIMARY KEY (id);
-
-
---
--- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.users
- ADD CONSTRAINT users_pkey PRIMARY KEY (id);
-
-
---
--- Name: widgets widgets_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.widgets
- ADD CONSTRAINT widgets_pkey PRIMARY KEY (id);
-
-
---
--- Name: activities_community_member_id_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX activities_community_member_id_tenant_id ON public.activities USING btree ("communityMemberId", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: activities_conversation_id_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX activities_conversation_id_tenant_id ON public.activities USING btree ("conversationId", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: activities_deleted_at; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX activities_deleted_at ON public.activities USING btree ("deletedAt");
-
-
---
--- Name: activities_import_hash_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX activities_import_hash_tenant_id ON public.activities USING btree ("importHash", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: activities_parent_id_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX activities_parent_id_tenant_id ON public.activities USING btree ("parentId", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: activities_platform_tenant_id_type_timestamp; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX activities_platform_tenant_id_type_timestamp ON public.activities USING btree (platform, "tenantId", type, "timestamp") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: activities_source_id_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX activities_source_id_tenant_id ON public.activities USING btree ("sourceId", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: activities_source_parent_id_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX activities_source_parent_id_tenant_id ON public.activities USING btree ("sourceParentId", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: activities_timestamp_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX activities_timestamp_tenant_id ON public.activities USING btree ("timestamp", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: automation_executions_automation_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX automation_executions_automation_id ON public."automationExecutions" USING btree ("automationId");
-
-
---
--- Name: automations_type_tenant_id_trigger_state; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX automations_type_tenant_id_trigger_state ON public.automations USING btree (type, "tenantId", trigger, state);
-
-
---
--- Name: community_members_created_at_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX community_members_created_at_tenant_id ON public."communityMembers" USING btree ("createdAt", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: community_members_email_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX community_members_email_tenant_id ON public."communityMembers" USING btree (email, "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: community_members_import_hash_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX community_members_import_hash_tenant_id ON public."communityMembers" USING btree ("importHash", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: community_members_joined_at_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX community_members_joined_at_tenant_id ON public."communityMembers" USING btree ("joinedAt", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: community_members_location_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX community_members_location_tenant_id ON public."communityMembers" USING btree (location, "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: community_members_organisation_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX community_members_organisation_tenant_id ON public."communityMembers" USING btree (organisation, "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: community_members_score_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX community_members_score_tenant_id ON public."communityMembers" USING btree (score, "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: community_members_signals_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX community_members_signals_tenant_id ON public."communityMembers" USING btree (signals, "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: community_members_type_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX community_members_type_tenant_id ON public."communityMembers" USING btree (type, "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: community_members_username; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX community_members_username ON public."communityMembers" USING gin (username jsonb_path_ops);
-
-
---
--- Name: conversations_slug_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX conversations_slug_tenant_id ON public.conversations USING btree (slug, "tenantId");
-
-
---
--- Name: discord; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX discord ON public."communityMembers" USING btree (((username ->> 'discord'::text)));
-
-
---
--- Name: eagle_eye_contents_import_hash_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX eagle_eye_contents_import_hash_tenant_id ON public."eagleEyeContents" USING btree ("importHash", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: eagle_eye_contents_platform_tenant_id_timestamp; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX eagle_eye_contents_platform_tenant_id_timestamp ON public."eagleEyeContents" USING btree (platform, "tenantId", "timestamp") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: eagle_eye_contents_status_tenant_id_timestamp; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX eagle_eye_contents_status_tenant_id_timestamp ON public."eagleEyeContents" USING btree (status, "tenantId", "timestamp") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: eagle_eye_contents_tenant_id_timestamp; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX eagle_eye_contents_tenant_id_timestamp ON public."eagleEyeContents" USING btree ("tenantId", "timestamp") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: github; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX github ON public."communityMembers" USING btree (((username ->> 'github'::text)));
-
-
---
--- Name: integrations_import_hash_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX integrations_import_hash_tenant_id ON public.integrations USING btree ("importHash", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: integrations_integration_identifier; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX integrations_integration_identifier ON public.integrations USING btree ("integrationIdentifier");
-
-
---
--- Name: microservices_import_hash_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX microservices_import_hash_tenant_id ON public.microservices USING btree ("importHash", "tenantId");
-
-
---
--- Name: microservices_type_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX microservices_type_tenant_id ON public.microservices USING btree (type, "tenantId");
-
-
---
--- Name: reports_import_hash_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX reports_import_hash_tenant_id ON public.reports USING btree ("importHash", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: slack; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX slack ON public."communityMembers" USING btree (((username ->> 'slack'::text)));
-
-
---
--- Name: tags_import_hash_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX tags_import_hash_tenant_id ON public.tags USING btree ("importHash", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: tags_name_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX tags_name_tenant_id ON public.tags USING btree (name, "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: tenants_url; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX tenants_url ON public.tenants USING btree (url) WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: twitter; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE INDEX twitter ON public."communityMembers" USING btree (((username ->> 'twitter'::text)));
-
-
---
--- Name: users_email; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX users_email ON public.users USING btree (email) WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: users_import_hash; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX users_import_hash ON public.users USING btree ("importHash") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: widgets_import_hash_tenant_id; Type: INDEX; Schema: public; Owner: -
---
-
-CREATE UNIQUE INDEX widgets_import_hash_tenant_id ON public.widgets USING btree ("importHash", "tenantId") WHERE ("deletedAt" IS NULL);
-
-
---
--- Name: activities activities_communityMemberId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.activities
- ADD CONSTRAINT "activities_communityMemberId_fkey" FOREIGN KEY ("communityMemberId") REFERENCES public."communityMembers"(id) ON UPDATE CASCADE ON DELETE CASCADE;
-
-
---
--- Name: activities activities_conversationId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.activities
- ADD CONSTRAINT "activities_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES public.conversations(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: activities activities_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.activities
- ADD CONSTRAINT "activities_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: activities activities_parentId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.activities
- ADD CONSTRAINT "activities_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES public.activities(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: activities activities_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.activities
- ADD CONSTRAINT "activities_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE;
-
-
---
--- Name: activities activities_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.activities
- ADD CONSTRAINT "activities_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: automationExecutions automationExecutions_automationId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."automationExecutions"
- ADD CONSTRAINT "automationExecutions_automationId_fkey" FOREIGN KEY ("automationId") REFERENCES public.automations(id) ON UPDATE CASCADE;
-
-
---
--- Name: automationExecutions automationExecutions_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."automationExecutions"
- ADD CONSTRAINT "automationExecutions_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE;
-
-
---
--- Name: automations automations_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.automations
- ADD CONSTRAINT "automations_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: automations automations_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.automations
- ADD CONSTRAINT "automations_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE;
-
-
---
--- Name: automations automations_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.automations
- ADD CONSTRAINT "automations_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: communityMemberNoMerge communityMemberNoMerge_communityMemberId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMemberNoMerge"
- ADD CONSTRAINT "communityMemberNoMerge_communityMemberId_fkey" FOREIGN KEY ("communityMemberId") REFERENCES public."communityMembers"(id) ON UPDATE CASCADE ON DELETE CASCADE;
-
-
---
--- Name: communityMemberNoMerge communityMemberNoMerge_noMergeId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMemberNoMerge"
- ADD CONSTRAINT "communityMemberNoMerge_noMergeId_fkey" FOREIGN KEY ("noMergeId") REFERENCES public."communityMembers"(id) ON UPDATE CASCADE ON DELETE CASCADE;
-
-
---
--- Name: communityMemberTags communityMemberTags_communityMemberId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMemberTags"
- ADD CONSTRAINT "communityMemberTags_communityMemberId_fkey" FOREIGN KEY ("communityMemberId") REFERENCES public."communityMembers"(id) ON UPDATE CASCADE ON DELETE CASCADE;
-
-
---
--- Name: communityMemberTags communityMemberTags_tagId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMemberTags"
- ADD CONSTRAINT "communityMemberTags_tagId_fkey" FOREIGN KEY ("tagId") REFERENCES public.tags(id) ON UPDATE CASCADE ON DELETE CASCADE;
-
-
---
--- Name: communityMemberToMerge communityMemberToMerge_communityMemberId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMemberToMerge"
- ADD CONSTRAINT "communityMemberToMerge_communityMemberId_fkey" FOREIGN KEY ("communityMemberId") REFERENCES public."communityMembers"(id) ON UPDATE CASCADE ON DELETE CASCADE;
-
-
---
--- Name: communityMemberToMerge communityMemberToMerge_toMergeId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMemberToMerge"
- ADD CONSTRAINT "communityMemberToMerge_toMergeId_fkey" FOREIGN KEY ("toMergeId") REFERENCES public."communityMembers"(id) ON UPDATE CASCADE ON DELETE CASCADE;
-
-
---
--- Name: communityMembers communityMembers_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMembers"
- ADD CONSTRAINT "communityMembers_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: communityMembers communityMembers_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMembers"
- ADD CONSTRAINT "communityMembers_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE;
-
-
---
--- Name: communityMembers communityMembers_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."communityMembers"
- ADD CONSTRAINT "communityMembers_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: conversationSettings conversationSettings_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."conversationSettings"
- ADD CONSTRAINT "conversationSettings_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: conversationSettings conversationSettings_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."conversationSettings"
- ADD CONSTRAINT "conversationSettings_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: conversationSettings conversationSettings_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."conversationSettings"
- ADD CONSTRAINT "conversationSettings_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: conversations conversations_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.conversations
- ADD CONSTRAINT "conversations_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: conversations conversations_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.conversations
- ADD CONSTRAINT "conversations_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE;
-
-
---
--- Name: conversations conversations_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.conversations
- ADD CONSTRAINT "conversations_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: eagleEyeContents eagleEyeContents_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."eagleEyeContents"
- ADD CONSTRAINT "eagleEyeContents_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: eagleEyeContents eagleEyeContents_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."eagleEyeContents"
- ADD CONSTRAINT "eagleEyeContents_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE;
-
-
---
--- Name: eagleEyeContents eagleEyeContents_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."eagleEyeContents"
- ADD CONSTRAINT "eagleEyeContents_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: files files_belongsToId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.files
- ADD CONSTRAINT "files_belongsToId_fkey" FOREIGN KEY ("belongsToId") REFERENCES public.settings(id) ON UPDATE CASCADE ON DELETE CASCADE;
-
-
---
--- Name: files files_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.files
- ADD CONSTRAINT "files_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: files files_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.files
- ADD CONSTRAINT "files_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: files files_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.files
- ADD CONSTRAINT "files_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: integrations integrations_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.integrations
- ADD CONSTRAINT "integrations_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: integrations integrations_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.integrations
- ADD CONSTRAINT "integrations_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE;
-
-
---
--- Name: integrations integrations_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.integrations
- ADD CONSTRAINT "integrations_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: microservices microservices_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.microservices
- ADD CONSTRAINT "microservices_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: microservices microservices_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.microservices
- ADD CONSTRAINT "microservices_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE;
-
-
---
--- Name: microservices microservices_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.microservices
- ADD CONSTRAINT "microservices_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: reports reports_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.reports
- ADD CONSTRAINT "reports_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: reports reports_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.reports
- ADD CONSTRAINT "reports_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE;
-
-
---
--- Name: reports reports_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.reports
- ADD CONSTRAINT "reports_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: settings settings_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.settings
- ADD CONSTRAINT "settings_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: settings settings_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.settings
- ADD CONSTRAINT "settings_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE;
-
-
---
--- Name: settings settings_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.settings
- ADD CONSTRAINT "settings_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: tags tags_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.tags
- ADD CONSTRAINT "tags_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: tags tags_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.tags
- ADD CONSTRAINT "tags_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE;
-
-
---
--- Name: tags tags_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.tags
- ADD CONSTRAINT "tags_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: tenantUsers tenantUsers_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."tenantUsers"
- ADD CONSTRAINT "tenantUsers_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: tenantUsers tenantUsers_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."tenantUsers"
- ADD CONSTRAINT "tenantUsers_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: tenantUsers tenantUsers_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."tenantUsers"
- ADD CONSTRAINT "tenantUsers_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: tenantUsers tenantUsers_userId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public."tenantUsers"
- ADD CONSTRAINT "tenantUsers_userId_fkey" FOREIGN KEY ("userId") REFERENCES public.users(id) ON UPDATE CASCADE;
-
-
---
--- Name: tenants tenants_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.tenants
- ADD CONSTRAINT "tenants_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: tenants tenants_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.tenants
- ADD CONSTRAINT "tenants_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: users users_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.users
- ADD CONSTRAINT "users_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: users users_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.users
- ADD CONSTRAINT "users_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: widgets widgets_createdById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.widgets
- ADD CONSTRAINT "widgets_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- Name: widgets widgets_reportId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.widgets
- ADD CONSTRAINT "widgets_reportId_fkey" FOREIGN KEY ("reportId") REFERENCES public.reports(id) ON UPDATE CASCADE ON DELETE CASCADE;
-
-
---
--- Name: widgets widgets_tenantId_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.widgets
- ADD CONSTRAINT "widgets_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES public.tenants(id) ON UPDATE CASCADE;
-
-
---
--- Name: widgets widgets_updatedById_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.widgets
- ADD CONSTRAINT "widgets_updatedById_fkey" FOREIGN KEY ("updatedById") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE SET NULL;
-
-
---
--- PostgreSQL database dump complete
---
-
diff --git a/backend/server-config/nginx/anton-prod.crowd.dev b/backend/server-config/nginx/anton-prod.crowd.dev
deleted file mode 100644
index f72800b627..0000000000
--- a/backend/server-config/nginx/anton-prod.crowd.dev
+++ /dev/null
@@ -1,20 +0,0 @@
-server {
- listen 80;
- server_name anton-prod.crowd.dev;
-
- client_max_body_size 200M;
- access_log /var/log/nginx/anton-prod.access.log;
- error_log /var/log/nginx/anton-prod.error.log;
-
- location / {
- proxy_pass http://localhost:8080;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection 'upgrade';
- proxy_set_header Host $host;
- proxy_cache_bypass $http_upgrade;
- # kill cache
- expires -1;
- }
-}
-
diff --git a/backend/server-config/nginx/anton.crowd.dev b/backend/server-config/nginx/anton.crowd.dev
deleted file mode 100644
index ffe0cf66d7..0000000000
--- a/backend/server-config/nginx/anton.crowd.dev
+++ /dev/null
@@ -1,20 +0,0 @@
-server {
- listen 80;
- server_name anton.crowd.dev;
-
- client_max_body_size 200M;
- access_log /var/log/nginx/anton.access.log;
- error_log /var/log/nginx/anton.error.log;
-
- location / {
- proxy_pass http://localhost:8081;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection 'upgrade';
- proxy_set_header Host $host;
- proxy_cache_bypass $http_upgrade;
- # kill cache
- expires -1;
- }
-}
-
diff --git a/backend/server-config/nginx/default b/backend/server-config/nginx/default
deleted file mode 100644
index 0527f8e154..0000000000
--- a/backend/server-config/nginx/default
+++ /dev/null
@@ -1,100 +0,0 @@
-##
-# You should look at the following URL's in order to grasp a solid understanding
-# of Nginx configuration files in order to fully unleash the power of Nginx.
-# https://www.nginx.com/resources/wiki/start/
-# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
-# https://wiki.debian.org/Nginx/DirectoryStructure
-#
-# In most cases, administrators will remove this file from sites-enabled/ and
-# leave it as reference inside of sites-available where it will continue to be
-# updated by the nginx packaging team.
-#
-# This file will automatically load configuration files provided by other
-# applications, such as Drupal or Wordpress. These applications will be made
-# available underneath a path with that package name, such as /drupal8.
-#
-# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
-##
-
-# Default server configuration
-#
-server {
- listen 80 default_server;
- listen [::]:80 default_server;
-
- # SSL configuration
- #
- # listen 443 ssl default_server;
- # listen [::]:443 ssl default_server;
- #
- # Note: You should disable gzip for SSL traffic.
- # See: https://bugs.debian.org/773332
- #
- # Read up on ssl_ciphers to ensure a secure configuration.
- # See: https://bugs.debian.org/765782
- #
- # Self signed certs generated by the ssl-cert package
- # Don't use them in a production server!
- #
- # include snippets/snakeoil.conf;
-
- root /var/www/html;
-
- # Add index.php to the list if you are using PHP
- index index.html index.htm index.nginx-debian.html;
-
- server_name _;
-
- location /health {
- try_files $uri $uri/ =404;
- }
- location / {
- ## First attempt to serve request as file, then
- ## as directory, then fall back to displaying a 404.
- #try_files $uri $uri/ =404;
- #proxy_pass http://localhost:8080;
- #proxy_http_version 1.1;
- #proxy_set_header Upgrade $http_upgrade;
- #proxy_set_header Connection 'upgrade';
- #proxy_set_header Host $host;
- #proxy_cache_bypass $http_upgrade;
- }
-
- # pass PHP scripts to FastCGI server
- #
- #location ~ \.php$ {
- # include snippets/fastcgi-php.conf;
- #
- # # With php-fpm (or other unix sockets):
- # fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
- # # With php-cgi (or other tcp sockets):
- # fastcgi_pass 127.0.0.1:9000;
- #}
-
- # deny access to .htaccess files, if Apache's document root
- # concurs with nginx's one
- #
- #location ~ /\.ht {
- # deny all;
- #}
-}
-
-
-# Virtual Host configuration for example.com
-#
-# You can move that to a different file under sites-available/ and symlink that
-# to sites-enabled/ to enable it.
-#
-#server {
-# listen 80;
-# listen [::]:80;
-#
-# server_name example.com;
-#
-# root /var/www/example.com;
-# index index.html;
-#
-# location / {
-# try_files $uri $uri/ =404;
-# }
-#}
diff --git a/backend/server-config/nginx/setup.sh b/backend/server-config/nginx/setup.sh
deleted file mode 100755
index 047b69a88d..0000000000
--- a/backend/server-config/nginx/setup.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-# Install nginx configuration and restart the service if test passes
-
-cp anton* default /etc/nginx/sites-available/
-
-nginx -t
-if [ $? -eq 0 ]; then
- echo "Passed nginx test, restarting"
-else
- echo "Failed nginx test, not restarting"
- exit 1
-fi
-
-systemctl restart nginx
-
diff --git a/backend/server-config/pm2.config.js b/backend/server-config/pm2.config.js
deleted file mode 100644
index 8c740ae690..0000000000
--- a/backend/server-config/pm2.config.js
+++ /dev/null
@@ -1,28 +0,0 @@
-module.exports = {
- apps: [
- {
- name: 'anton-prod',
- script: 'server.js',
- watch: true,
- env: {
- PORT: 8080,
- NODE_ENV: 'production',
- },
- merge_logs: true,
- cwd: '/home/ubuntu/deploy/dist-prod/',
- interpreter: 'node@16.13.1',
- },
- {
- name: 'anton',
- script: 'server.js',
- watch: true,
- env: {
- PORT: 8081,
- NODE_ENV: 'staging',
- },
- merge_logs: true,
- cwd: '/home/ubuntu/deploy/dist/',
- interpreter: 'node@16.13.1',
- },
- ],
-}
diff --git a/backend/src/api/activity/activityAddWithMember.ts b/backend/src/api/activity/activityAddWithMember.ts
index f65663a7ec..f3a96657fa 100644
--- a/backend/src/api/activity/activityAddWithMember.ts
+++ b/backend/src/api/activity/activityAddWithMember.ts
@@ -1,16 +1,15 @@
-import PermissionChecker from '../../services/user/permissionChecker'
import Permissions from '../../security/permissions'
import ActivityService from '../../services/activityService'
+import PermissionChecker from '../../services/user/permissionChecker'
/**
- * POST /tenant/{tenantId}/activity/with-member
+ * POST /activity/with-member
* @summary Create or update an activity with a member
* @tag Activities
* @security Bearer
* @description Create or update an activity with a member
- * Activity existence is checked by sourceId and tenantId
+ * Activity existence is checked by sourceId
* Member existence is checked by platform and username
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @bodyContent {ActivityUpsertWithMemberInput} application/json
* @response 200 - Ok
* @responseContent {Activity} 200.application/json
@@ -20,10 +19,7 @@ import ActivityService from '../../services/activityService'
* @response 429 - Too many requests
*/
export default async (req, res) => {
- // Check we have the Create permissions
new PermissionChecker(req).validateHas(Permissions.values.activityCreate)
- // Call the createWithMember function in activity service
- // to create the activity.
const payload = await new ActivityService(req).createWithMember(req.body)
await req.responseHandler.success(req, res, payload)
diff --git a/backend/src/api/activity/activityAutocomplete.ts b/backend/src/api/activity/activityAutocomplete.ts
deleted file mode 100644
index df173580ff..0000000000
--- a/backend/src/api/activity/activityAutocomplete.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import ActivityService from '../../services/activityService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.activityAutocomplete)
-
- const payload = await new ActivityService(req).findAllAutocomplete(
- req.query.query,
- req.query.limit,
- )
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/activity/activityChannels.ts b/backend/src/api/activity/activityChannels.ts
new file mode 100644
index 0000000000..f1b0c33208
--- /dev/null
+++ b/backend/src/api/activity/activityChannels.ts
@@ -0,0 +1,24 @@
+import Permissions from '../../security/permissions'
+import ActivityService from '../../services/activityService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * GET /activity/channel
+ * @summary List activity channels
+ * @tag Activities
+ * @security Bearer
+ * @description Find all activity channels
+ * @response 200 - Ok
+ * @responseContent {ActivityResponse} 200.application/json
+ * @responseExample {ActivityFind} 200.application/json.Activity
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.activityRead)
+
+ const payload = await new ActivityService(req).findActivityChannels()
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/activity/activityCreate.ts b/backend/src/api/activity/activityCreate.ts
deleted file mode 100644
index b909904c75..0000000000
--- a/backend/src/api/activity/activityCreate.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import ActivityService from '../../services/activityService'
-import track from '../../segment/track'
-
-/**
- * POST /tenant/{tenantId}/activity
- * @summary Create or update an activity
- * @tag Activities
- * @security Bearer
- * @description Create or update an activity. Existence is checked by sourceId and tenantId
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @bodyContent {ActivityUpsertInput} application/json
- * @response 200 - Ok
- * @responseContent {Activity} 200.application/json
- * @responseExample {ActivityUpsert} 200.application/json.Activity
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.activityCreate)
-
- const payload = await new ActivityService(req).upsert(req.body)
-
- track('Activity Manually Created', { ...payload }, { ...req })
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/activity/activityDestroy.ts b/backend/src/api/activity/activityDestroy.ts
deleted file mode 100644
index f042b97394..0000000000
--- a/backend/src/api/activity/activityDestroy.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import ActivityService from '../../services/activityService'
-
-/**
- * DELETE /tenant/{tenantId}/activity/{id}
- * @summary Delete an activity
- * @tag Activities
- * @security Bearer
- * @description Delete a activity given an ID
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the activity
- * @response 200 - Ok
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.activityDestroy)
-
- await new ActivityService(req).destroyAll(req.query.ids)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/activity/activityFind.ts b/backend/src/api/activity/activityFind.ts
deleted file mode 100644
index d95d20bd77..0000000000
--- a/backend/src/api/activity/activityFind.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import ActivityService from '../../services/activityService'
-
-/**
- * GET /tenant/{tenantId}/activity/{id}
- * @summary Find an activity
- * @tag Activities
- * @security Bearer
- * @description Find a single activity by ID
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the activity
- * @response 200 - Ok
- * @responseContent {ActivityResponse} 200.application/json
- * @responseExample {ActivityFind} 200.application/json.Activity
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.activityRead)
-
- const payload = await new ActivityService(req).findById(req.params.id)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/activity/activityImport.ts b/backend/src/api/activity/activityImport.ts
deleted file mode 100644
index 02bdf6aba8..0000000000
--- a/backend/src/api/activity/activityImport.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import ActivityService from '../../services/activityService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.activityImport)
-
- await new ActivityService(req).import(req.body, req.body.importHash)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/activity/activityList.ts b/backend/src/api/activity/activityList.ts
deleted file mode 100644
index 33cc328e46..0000000000
--- a/backend/src/api/activity/activityList.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import ActivityService from '../../services/activityService'
-import track from '../../segment/track'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.activityRead)
-
- const payload = await new ActivityService(req).findAndCountAll(req.query)
-
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Activities Filtered', { filter: req.query.filter }, { ...req })
- }
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/activity/activityQuery.ts b/backend/src/api/activity/activityQuery.ts
index cb07cdd102..3482dfc53f 100644
--- a/backend/src/api/activity/activityQuery.ts
+++ b/backend/src/api/activity/activityQuery.ts
@@ -1,15 +1,14 @@
-import PermissionChecker from '../../services/user/permissionChecker'
import Permissions from '../../security/permissions'
-import ActivityService from '../../services/activityService'
import track from '../../segment/track'
+import ActivityService from '../../services/activityService'
+import PermissionChecker from '../../services/user/permissionChecker'
/**
- * POST /tenant/{tenantId}/activity/query
+ * POST /activity/query
* @summary Query activities
* @tag Activities
* @security Bearer
* @description Query activities. It accepts filters, sorting options and pagination.
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @bodyContent {ActivityQuery} application/json
* @response 200 - Ok
* @responseContent {ActivityList} 200.application/json
@@ -21,10 +20,11 @@ import track from '../../segment/track'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.activityRead)
- const payload = await new ActivityService(req).query(req.body)
+ const service = new ActivityService(req)
+ const payload = await service.query(req.body)
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Activities Advanced Filter', { ...payload }, { ...req })
+ if (req.body?.filter && Object.keys(req.body.filter).length > 0) {
+ track('Activities Advanced Filter', { ...req.body }, { ...req })
}
await req.responseHandler.success(req, res, payload)
diff --git a/backend/src/api/activity/activityTypes.ts b/backend/src/api/activity/activityTypes.ts
new file mode 100644
index 0000000000..9f8b2b64f0
--- /dev/null
+++ b/backend/src/api/activity/activityTypes.ts
@@ -0,0 +1,11 @@
+import Permissions from '../../security/permissions'
+import ActivityService from '../../services/activityService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.activityRead)
+
+ const payload = await new ActivityService(req).findActivityTypes()
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/activity/activityUpdate.ts b/backend/src/api/activity/activityUpdate.ts
deleted file mode 100644
index 97ae23c799..0000000000
--- a/backend/src/api/activity/activityUpdate.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import ActivityService from '../../services/activityService'
-
-/**
- * PUT /tenant/{tenantId}/activity/{id}
- * @summary Update an activity
- * @tag Activities
- * @security Bearer
- * @description Update an activity given an ID.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the activity
- * @bodyContent {ActivityUpsertInput} application/json
- * @response 200 - Ok
- * @responseContent {Activity} 200.application/json
- * @responseExample {ActivityFind} 200.application/json.Activity
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.activityEdit)
-
- const payload = await new ActivityService(req).update(req.params.id, req.body)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/activity/index.ts b/backend/src/api/activity/index.ts
index b00bb99583..ef58cafbb3 100644
--- a/backend/src/api/activity/index.ts
+++ b/backend/src/api/activity/index.ts
@@ -1,20 +1,8 @@
import { safeWrap } from '../../middlewares/errorMiddleware'
export default (app) => {
- app.post(`/tenant/:tenantId/activity`, safeWrap(require('./activityCreate').default))
- app.post(`/tenant/:tenantId/activity/query`, safeWrap(require('./activityQuery').default))
- app.put(`/tenant/:tenantId/activity/:id`, safeWrap(require('./activityUpdate').default))
- app.post(`/tenant/:tenantId/activity/import`, safeWrap(require('./activityImport').default))
- app.delete(`/tenant/:tenantId/activity`, safeWrap(require('./activityDestroy').default))
- app.get(
- `/tenant/:tenantId/activity/autocomplete`,
- safeWrap(require('./activityAutocomplete').default),
- )
- app.get(`/tenant/:tenantId/activity`, safeWrap(require('./activityList').default))
- app.get(`/tenant/:tenantId/activity/:id`, safeWrap(require('./activityFind').default))
- app.post(
- '/tenant/:tenantId/activity/with-member',
- // Call the addActivityWithMember file in this dir
- safeWrap(require('./activityAddWithMember').default),
- )
+ app.post(`/activity/query`, safeWrap(require('./activityQuery').default))
+ app.get(`/activity/type`, safeWrap(require('./activityTypes').default))
+ app.get(`/activity/channel`, safeWrap(require('./activityChannels').default))
+ app.post('/activity/with-member', safeWrap(require('./activityAddWithMember').default))
}
diff --git a/backend/src/api/apiDocumentation.ts b/backend/src/api/apiDocumentation.ts
deleted file mode 100644
index f6b50d6219..0000000000
--- a/backend/src/api/apiDocumentation.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { API_CONFIG } from '../conf'
-
-const express = require('express')
-const fs = require('fs')
-const path = require('path')
-
-export default function setupSwaggerUI(app) {
- if (API_CONFIG.documentation) {
- return
- }
-
- const serveSwaggerDef = function serveSwaggerDef(req, res) {
- res.sendFile(path.resolve(`${__dirname}/../documentation/openapi.json`))
- }
- app.get('/documentation-config', serveSwaggerDef)
-
- const swaggerUiAssetPath = require('swagger-ui-dist').getAbsoluteFSPath()
- const swaggerFiles = express.static(swaggerUiAssetPath)
-
- const urlRegex = /url: "[^"]*",/
-
- const patchIndex = function patchIndex(req, res) {
- const indexContent = fs
- .readFileSync(`${swaggerUiAssetPath}/index.html`)
- .toString()
- .replace(urlRegex, 'url: "../documentation-config",')
- res.send(indexContent)
- }
-
- app.get('/documentation', (req, res) => {
- let targetUrl = req.originalUrl
- if (!targetUrl.endsWith('/')) {
- targetUrl += '/'
- }
- targetUrl += 'index.html'
- res.redirect(targetUrl)
- })
- app.get('/documentation/index.html', patchIndex)
-
- app.use('/documentation', swaggerFiles)
-}
diff --git a/backend/src/api/apiRateLimiter.ts b/backend/src/api/apiRateLimiter.ts
index 57776e3bb5..af6d7670d3 100644
--- a/backend/src/api/apiRateLimiter.ts
+++ b/backend/src/api/apiRateLimiter.ts
@@ -1,28 +1,15 @@
import rateLimit from 'express-rate-limit'
-export function createRateLimiter({
- max,
- windowMs,
- message,
-}: {
- max: number
- windowMs: number
- message: string
-}) {
+import { RateLimitError } from '@crowd/common'
+
+export function createRateLimiter({ max, windowMs }: { max: number; windowMs: number }) {
return rateLimit({
max,
windowMs,
- message,
- skip: (req) => {
- if (req.method === 'OPTIONS') {
- return true
- }
-
- if (req.originalUrl.endsWith('/import')) {
- return true
- }
-
- return false
+ handler: (_req, res) => {
+ const err = new RateLimitError()
+ res.status(err.status).json(err.toJSON())
},
+ skip: (req) => req.method === 'OPTIONS' || req.originalUrl.endsWith('/import'),
})
}
diff --git a/backend/src/api/apiResponseHandler.ts b/backend/src/api/apiResponseHandler.ts
index f03704a57a..debe217a58 100644
--- a/backend/src/api/apiResponseHandler.ts
+++ b/backend/src/api/apiResponseHandler.ts
@@ -1,7 +1,15 @@
import { LoggerBase } from '@crowd/logging'
+import {
+ SlackChannel,
+ SlackMessageSection,
+ SlackPersona,
+ sendSlackNotification,
+} from '@crowd/slack'
+
import { IServiceOptions } from '../services/IServiceOptions'
-const io = require('@pm2/io')
+// Slack section text limit is 3000 chars. Keep conservative to account for title + formatting.
+const SLACK_SECTION_TEXT_LIMIT = 2800
/* eslint-disable class-methods-use-this */
export default class ApiResponseHandler extends LoggerBase {
@@ -22,6 +30,103 @@ export default class ApiResponseHandler extends LoggerBase {
}
}
+ private truncateForSlack(text: string, maxLength: number = SLACK_SECTION_TEXT_LIMIT): string {
+ if (text.length <= maxLength) {
+ return text
+ }
+ return `${text.substring(0, maxLength - 3)}...`
+ }
+
+ private sendServerErrorToSlack(
+ req,
+ error,
+ code: number,
+ options?: { sql?: string; dbErrorMessage?: string },
+ ): void {
+ // NOTE: Temporarily ignore specific query timeout errors for these endpoints
+ // Do not remove this until https://linuxfoundation.atlassian.net/browse/CM-872, and https://linuxfoundation.atlassian.net/browse/CM-822 are completed or we have a better solution.
+ const ignoredEndpoints = ['/member/autocomplete', '/member/query']
+
+ if (
+ req.method === 'POST' &&
+ code === 500 &&
+ ignoredEndpoints.includes(req.url) &&
+ error?.name === 'SequelizeDatabaseError' &&
+ error?.message?.includes('Query read timeout')
+ ) {
+ return
+ }
+
+ const sections: SlackMessageSection[] = []
+
+ // Request info section
+ sections.push({
+ title: 'Request',
+ text: `*Method:* \`${req.method}\`\n*URL:* \`${req.url}\`\n*Status Code:* \`${code}\``,
+ })
+
+ // Error info section
+ const errorName = error?.name || 'Unknown'
+ const errorMessage = this.truncateForSlack(error?.message || 'No message', 2000)
+ sections.push({
+ title: 'Error',
+ text: `*Name:* \`${errorName}\`\n*Message:* ${errorMessage}`,
+ })
+
+ // SQL query section (for Sequelize errors)
+ if (options?.sql) {
+ const truncatedSql = this.truncateForSlack(options.sql, 2700)
+ sections.push({
+ title: 'SQL Query',
+ text: `\`\`\`${truncatedSql}\`\`\``,
+ })
+ }
+
+ // DB error message (for Sequelize errors)
+ if (options?.dbErrorMessage) {
+ sections.push({
+ title: 'Database Error',
+ text: this.truncateForSlack(options.dbErrorMessage, 2700),
+ })
+ }
+
+ // Request body section (if present)
+ if (req.body && Object.keys(req.body).length > 0) {
+ const bodyStr = JSON.stringify(req.body, null, 2)
+ const truncatedBody = this.truncateForSlack(bodyStr, 2700)
+ sections.push({
+ title: 'Request Body',
+ text: `\`\`\`${truncatedBody}\`\`\``,
+ })
+ }
+
+ // Query params section (if present)
+ if (req.query && Object.keys(req.query).length > 0) {
+ const queryStr = JSON.stringify(req.query, null, 2)
+ const truncatedQuery = this.truncateForSlack(queryStr, 2700)
+ sections.push({
+ title: 'Query Params',
+ text: `\`\`\`${truncatedQuery}\`\`\``,
+ })
+ }
+
+ // Stack trace section
+ if (error?.stack) {
+ const truncatedStack = this.truncateForSlack(error.stack, 2700)
+ sections.push({
+ title: 'Stack Trace',
+ text: `\`\`\`${truncatedStack}\`\`\``,
+ })
+ }
+
+ sendSlackNotification(
+ SlackChannel.CDP_ALERTS,
+ SlackPersona.ERROR_REPORTER,
+ `API Error ${code}: ${req.method} ${req.url}`,
+ sections,
+ )
+ }
+
async error(req, res, error) {
if (error && error.name && error.name.includes('Sequelize')) {
req.log.error(
@@ -36,7 +141,10 @@ export default class ApiResponseHandler extends LoggerBase {
},
'Database error while processing REST API request!',
)
- io.notifyError(error)
+ this.sendServerErrorToSlack(req, error, 500, {
+ sql: error.sql,
+ dbErrorMessage: error.original?.message,
+ })
res.status(500).send('Internal Server Error')
} else if (error && [400, 401, 403, 404].includes(error.code)) {
req.log.error(
@@ -45,16 +153,26 @@ export default class ApiResponseHandler extends LoggerBase {
'Client error while processing REST API request!',
)
res.status(error.code).send(error.message)
+ } else if (error && error.message === 'stream is not readable') {
+ res.status(400).send('Request interrupted')
} else {
- if (!error.code) {
+ if (error.code && (!Number.isInteger(error.code) || error.code < 100 || error.code > 599)) {
+ error.code = 500
+ } else if (!error.code) {
error.code = 500
}
+
req.log.error(
error,
{ code: error.code, url: req.url, method: req.method, query: req.query, body: req.body },
'Error while processing REST API request!',
)
- io.notifyError(error)
+
+ // Send Slack notification for server errors (500-599)
+ if (error.code >= 500 && error.code <= 599) {
+ this.sendServerErrorToSlack(req, error, error.code)
+ }
+
res.status(error.code).send(error.message)
}
}
diff --git a/backend/src/api/auditLog/auditLogList.ts b/backend/src/api/auditLog/auditLogList.ts
deleted file mode 100644
index 113b70b743..0000000000
--- a/backend/src/api/auditLog/auditLogList.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import AuditLogRepository from '../../database/repositories/auditLogRepository'
-import Permissions from '../../security/permissions'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.auditLogRead)
-
- const payload = await AuditLogRepository.findAndCountAll(req.query, req)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/auditLog/auditLogsQuery.ts b/backend/src/api/auditLog/auditLogsQuery.ts
new file mode 100644
index 0000000000..718387447b
--- /dev/null
+++ b/backend/src/api/auditLog/auditLogsQuery.ts
@@ -0,0 +1,13 @@
+import AuditLogsService from '@/services/auditLogsService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.auditLogRead)
+
+ const auditLogsService = new AuditLogsService(req)
+ const payload = await auditLogsService.query(req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/auditLog/index.ts b/backend/src/api/auditLog/index.ts
index 4cf7174642..8c2ef84601 100644
--- a/backend/src/api/auditLog/index.ts
+++ b/backend/src/api/auditLog/index.ts
@@ -1,5 +1,5 @@
import { safeWrap } from '../../middlewares/errorMiddleware'
export default (app) => {
- app.get(`/tenant/:tenantId/audit-log`, safeWrap(require('./auditLogList').default))
+ app.post(`/audit-logs/query`, safeWrap(require('./auditLogsQuery').default))
}
diff --git a/backend/src/api/auth/authMe.ts b/backend/src/api/auth/authMe.ts
index 7007c09204..7046d6dcf6 100644
--- a/backend/src/api/auth/authMe.ts
+++ b/backend/src/api/auth/authMe.ts
@@ -1,8 +1,4 @@
-import { RedisCache } from '@crowd/redis'
-import AutomationRepository from '../../database/repositories/automationRepository'
-import Error403 from '../../errors/Error403'
-import { FeatureFlagRedisKey } from '../../types/common'
-import SegmentService from '../../services/segmentService'
+import { Error403 } from '@crowd/common'
export default async (req, res) => {
if (!req.currentUser || !req.currentUser.id) {
@@ -12,48 +8,5 @@ export default async (req, res) => {
const payload = req.currentUser
- const csvExportCountCache = new RedisCache(
- FeatureFlagRedisKey.CSV_EXPORT_COUNT,
- req.redis,
- req.log,
- )
- const memberEnrichmentCountCache = new RedisCache(
- FeatureFlagRedisKey.MEMBER_ENRICHMENT_COUNT,
- req.redis,
- req.log,
- )
-
- payload.tenants = await Promise.all(
- payload.tenants.map(async (tenantUser) => {
- tenantUser.tenant.dataValues = {
- ...tenantUser.tenant.dataValues,
- csvExportCount: Number(await csvExportCountCache.get(tenantUser.tenant.id)) || 0,
- automationCount:
- Number(await AutomationRepository.countAllActive(req.database, tenantUser.tenant.id)) ||
- 0,
- memberEnrichmentCount:
- Number(await memberEnrichmentCountCache.get(tenantUser.tenant.id)) || 0,
- }
-
- const segmentService = new SegmentService(req)
- const tenantSubprojects = await segmentService.getTenantSubprojects(tenantUser.tenant)
- const activityTypes = await SegmentService.getTenantActivityTypes(tenantSubprojects)
- const activityChannels = await SegmentService.getTenantActivityChannels(
- tenantUser.tenant,
- req,
- )
-
- // TODO: return actual activityTypes using segment information
- tenantUser.tenant.dataValues.settings[0].dataValues = {
- ...tenantUser.tenant.dataValues.settings[0].dataValues,
- activityTypes,
- activityChannels,
- slackWebHook: !!tenantUser.tenant.settings[0].dataValues.slackWebHook,
- }
-
- return tenantUser
- }),
- )
-
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/auth/authPasswordReset.ts b/backend/src/api/auth/authPasswordReset.ts
deleted file mode 100644
index cb6e557741..0000000000
--- a/backend/src/api/auth/authPasswordReset.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import AuthService from '../../services/auth/authService'
-
-export default async (req, res) => {
- const payload = await AuthService.passwordReset(req.body.token, req.body.password, req)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/auth/authSendEmailAddressVerificationEmail.ts b/backend/src/api/auth/authSendEmailAddressVerificationEmail.ts
deleted file mode 100644
index af60ff102d..0000000000
--- a/backend/src/api/auth/authSendEmailAddressVerificationEmail.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import Error403 from '../../errors/Error403'
-
-import AuthService from '../../services/auth/authService'
-
-export default async (req, res) => {
- if (!req.currentUser) {
- throw new Error403(req.language)
- }
-
- await AuthService.sendEmailAddressVerificationEmail(
- req.language,
- req.currentUser.email,
- req.body.tenantId,
- req,
- )
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/auth/authSendPasswordResetEmail.ts b/backend/src/api/auth/authSendPasswordResetEmail.ts
deleted file mode 100644
index 3ff4a96e7e..0000000000
--- a/backend/src/api/auth/authSendPasswordResetEmail.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import AuthService from '../../services/auth/authService'
-
-export default async (req, res) => {
- await AuthService.sendPasswordResetEmail(req.language, req.body.email, req.body.tenantId, req)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/auth/authSignIn.ts b/backend/src/api/auth/authSignIn.ts
index 36b6d87c95..e33e918fe4 100644
--- a/backend/src/api/auth/authSignIn.ts
+++ b/backend/src/api/auth/authSignIn.ts
@@ -1,3 +1,5 @@
+import { DEFAULT_TENANT_ID } from '@crowd/common'
+
import AuthService from '../../services/auth/authService'
export default async (req, res) => {
@@ -5,7 +7,7 @@ export default async (req, res) => {
req.body.email,
req.body.password,
req.body.invitationToken,
- req.body.tenantId,
+ DEFAULT_TENANT_ID,
req,
)
diff --git a/backend/src/api/auth/authSignUp.ts b/backend/src/api/auth/authSignUp.ts
index 51faac3a3d..7cfdccc8ab 100644
--- a/backend/src/api/auth/authSignUp.ts
+++ b/backend/src/api/auth/authSignUp.ts
@@ -1,3 +1,5 @@
+import { DEFAULT_TENANT_ID } from '@crowd/common'
+
import AuthService from '../../services/auth/authService'
export default async (req, res) => {
@@ -8,7 +10,7 @@ export default async (req, res) => {
req.body.email,
req.body.password,
req.body.invitationToken,
- req.body.tenantId,
+ DEFAULT_TENANT_ID,
req.body.firstName,
req.body.lastName,
req.body.acceptedTermsAndPrivacy,
diff --git a/backend/src/api/auth/authSocial.ts b/backend/src/api/auth/authSocial.ts
index 97d9b29f0f..d27693ad62 100644
--- a/backend/src/api/auth/authSocial.ts
+++ b/backend/src/api/auth/authSocial.ts
@@ -1,5 +1,8 @@
import passport from 'passport'
+
+import { DEFAULT_TENANT_ID } from '@crowd/common'
import { getServiceChildLogger } from '@crowd/logging'
+
import { API_CONFIG, GITHUB_CONFIG, GOOGLE_CONFIG } from '../../conf'
import AuthService from '../../services/auth/authService'
@@ -19,8 +22,7 @@ export default (app, routes) => {
routes.post('/auth/social/onboard', async (req, res) => {
const payload = await AuthService.handleOnboard(
req.currentUser,
- req.body.invitationToken,
- req.body.tenantId,
+ { invitationToken: req.body.invitationToken, tenantId: DEFAULT_TENANT_ID },
req,
)
diff --git a/backend/src/api/auth/authUpdateProfile.ts b/backend/src/api/auth/authUpdateProfile.ts
index 00983df288..c118295096 100644
--- a/backend/src/api/auth/authUpdateProfile.ts
+++ b/backend/src/api/auth/authUpdateProfile.ts
@@ -1,5 +1,6 @@
+import { Error403 } from '@crowd/common'
+
import AuthProfileEditor from '../../services/auth/authProfileEditor'
-import Error403 from '../../errors/Error403'
export default async (req, res) => {
if (!req.currentUser || !req.currentUser.id) {
diff --git a/backend/src/api/auth/authVerifyEmail.ts b/backend/src/api/auth/authVerifyEmail.ts
deleted file mode 100644
index 1f8fce1f1e..0000000000
--- a/backend/src/api/auth/authVerifyEmail.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import AuthService from '../../services/auth/authService'
-
-export default async (req, res) => {
- const payload = await AuthService.verifyEmail(req.body.token, req)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/auth/index.ts b/backend/src/api/auth/index.ts
index 6579bc6cb2..1914fd26d0 100644
--- a/backend/src/api/auth/index.ts
+++ b/backend/src/api/auth/index.ts
@@ -1,31 +1,10 @@
-import { createRateLimiter } from '../apiRateLimiter'
import { safeWrap } from '../../middlewares/errorMiddleware'
+import { createRateLimiter } from '../apiRateLimiter'
export default (app) => {
- app.put(`/auth/password-reset`, safeWrap(require('./authPasswordReset').default))
-
- const emailRateLimiter = createRateLimiter({
- max: 6,
- windowMs: 15 * 60 * 1000,
- message: 'errors.429',
- })
-
- app.post(
- `/auth/send-email-address-verification-email`,
- emailRateLimiter,
- safeWrap(require('./authSendEmailAddressVerificationEmail').default),
- )
-
- app.post(
- `/auth/send-password-reset-email`,
- emailRateLimiter,
- safeWrap(require('./authSendPasswordResetEmail').default),
- )
-
const signInRateLimiter = createRateLimiter({
max: 100,
windowMs: 15 * 60 * 1000,
- message: 'errors.429',
})
app.post(`/auth/sign-in`, signInRateLimiter, safeWrap(require('./authSignIn').default))
@@ -33,7 +12,6 @@ export default (app) => {
const signUpRateLimiter = createRateLimiter({
max: 20,
windowMs: 60 * 60 * 1000,
- message: 'errors.429',
})
app.post(`/auth/sign-up`, signUpRateLimiter, safeWrap(require('./authSignUp').default))
@@ -42,8 +20,6 @@ export default (app) => {
app.put(`/auth/change-password`, safeWrap(require('./authPasswordChange').default))
- app.put(`/auth/verify-email`, safeWrap(require('./authVerifyEmail').default))
-
app.get(`/auth/me`, safeWrap(require('./authMe').default))
app.post(`/auth/sso/callback`, safeWrap(require('./ssoCallback').default))
diff --git a/backend/src/api/auth/ssoCallback.ts b/backend/src/api/auth/ssoCallback.ts
index a8b68e5172..17caecebe5 100644
--- a/backend/src/api/auth/ssoCallback.ts
+++ b/backend/src/api/auth/ssoCallback.ts
@@ -1,8 +1,10 @@
import jwt from 'jsonwebtoken'
import jwksClient from 'jwks-rsa'
-import AuthService from '../../services/auth/authService'
+
+import { DEFAULT_TENANT_ID, Error401 } from '@crowd/common'
+
import { AUTH0_CONFIG } from '../../conf'
-import Error401 from '../../errors/Error401'
+import AuthService from '../../services/auth/authService'
const jwks = jwksClient({
jwksUri: AUTH0_CONFIG.jwks,
@@ -19,18 +21,21 @@ async function getKey(header, callback) {
}
export default async (req, res) => {
- const { idToken, invitationToken, tenantId } = req.body
+ const { idToken, invitationToken } = req.body
+ const tenantId = DEFAULT_TENANT_ID
try {
const verifyToken = new Promise((resolve, reject) => {
jwt.verify(idToken, getKey, { algorithms: ['RS256'] }, (err, decoded) => {
if (err) {
+ req.log.error('Error verifying token', err)
reject(new Error401())
}
const { aud } = decoded as any
if (aud !== AUTH0_CONFIG.clientId) {
+ req.log.error(`Invalid audience: ${aud}`)
reject(new Error401())
}
@@ -50,10 +55,12 @@ export default async (req, res) => {
data.name,
invitationToken,
tenantId,
+ data['http://lfx.dev/claims/roles'],
req,
)
return res.send(token)
} catch (err) {
+ req.log.error('Error verifying token', err)
return res.status(401).send({ error: err })
}
}
diff --git a/backend/src/api/automation/automationCreate.ts b/backend/src/api/automation/automationCreate.ts
deleted file mode 100644
index e5cd8d49ab..0000000000
--- a/backend/src/api/automation/automationCreate.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import AutomationService from '../../services/automationService'
-import track from '../../segment/track'
-import identifyTenant from '../../segment/identifyTenant'
-
-/**
- * POST /tenant/{tenantId}/automation
- * @summary Create an automation
- * @tag Automations
- * @security Bearer
- * @description Create a new automation for the tenant.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @bodyContent {AutomationCreateInput} application/json
- * @response 200 - Ok
- * @responseContent {Automation} 200.application/json
- * @responseExample {Automation} 200.application/json.Automation
- * @response 401 - Unauthorized
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.automationCreate)
-
- const payload = await new AutomationService(req).create(req.body.data)
-
- track('Automation Created', { ...payload }, { ...req })
-
- identifyTenant(req)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/automation/automationDestroy.ts b/backend/src/api/automation/automationDestroy.ts
deleted file mode 100644
index 16f9271cc4..0000000000
--- a/backend/src/api/automation/automationDestroy.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import AutomationService from '../../services/automationService'
-import track from '../../segment/track'
-import identifyTenant from '../../segment/identifyTenant'
-
-/**
- * DELETE /tenant/{tenantId}/automation/{automationId}
- * @summary Destroy an automation
- * @tag Automations
- * @security Bearer
- * @description Destroys an existing automation in the tenant.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} automationId - Automation ID that you want to update
- * @response 204 - Ok - No content
- * @response 401 - Unauthorized
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.automationDestroy)
- await new AutomationService(req).destroy(req.params.automationId)
-
- track('Automation Destroyed', { id: req.params.automationId }, { ...req })
- identifyTenant(req)
-
- await req.responseHandler.success(req, res, true, 204)
-}
diff --git a/backend/src/api/automation/automationExecutionFind.ts b/backend/src/api/automation/automationExecutionFind.ts
deleted file mode 100644
index 8d4eba88ea..0000000000
--- a/backend/src/api/automation/automationExecutionFind.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import AutomationExecutionService from '../../services/automationExecutionService'
-
-/**
- * GET /tenant/{tenantId}/automation/{automationId}/executions
- * @summary Get automation history
- * @tag Automations
- * @security Bearer
- * @description Get all automation execution history for tenant and automation
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} automationId - Your workspace/tenant ID
- * @queryParam {integer} [offset=0] - How many elements from the beginning would you like to skip
- * @queryParam {integer} [limit=10] - How many elements would you like to fetch
- * @response 200 - Ok
- * @responseContent {AutomationExecutionPage} 200.application/json
- * @responseExample {AutomationExecutionPage} 200.application/json.AutomationExecutionPage
- * @response 401 - Unauthorized
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.automationRead)
-
- let offset = 0
- if (req.query.offset) {
- offset = parseInt(req.query.offset, 10)
- }
- let limit = 10
- if (req.query.limit) {
- limit = parseInt(req.query.limit, 10)
- }
-
- const payload = await new AutomationExecutionService(req).findAndCountAll({
- automationId: req.params.automationId,
- offset,
- limit,
- })
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/automation/automationFind.ts b/backend/src/api/automation/automationFind.ts
deleted file mode 100644
index 4feaa9e623..0000000000
--- a/backend/src/api/automation/automationFind.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import AutomationService from '../../services/automationService'
-
-/**
- * GET /tenant/{tenantId}/automation/{automationId}
- * @summary Find an automation
- * @tag Automations
- * @security Bearer
- * @description Get an existing automation data in the tenant.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} automationId - Automation ID that you want to find
- * @response 200 - Ok
- * @responseContent {Automation} 200.application/json
- * @responseExample {Automation} 200.application/json.Automation
- * @response 401 - Unauthorized
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.automationRead)
- const payload = await new AutomationService(req).findById(req.params.automationId)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/automation/automationList.ts b/backend/src/api/automation/automationList.ts
deleted file mode 100644
index f9a19cef85..0000000000
--- a/backend/src/api/automation/automationList.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import Permissions from '../../security/permissions'
-import AutomationService from '../../services/automationService'
-import PermissionChecker from '../../services/user/permissionChecker'
-import {
- AutomationCriteria,
- AutomationState,
- AutomationTrigger,
- AutomationType,
-} from '../../types/automationTypes'
-
-/**
- * GET /tenant/{tenantId}/automation
- * @summary List automations
- * @tag Automations
- * @security Bearer
- * @description Get all existing automation data for tenant.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @queryParam {string} [filter[type]] - Filter by type of automation
- * @queryParam {string} [filter[trigger]] - Filter by trigger type of automation
- * @queryParam {string} [filter[state]] - Filter by state of automation
- * @queryParam {number} [offset] - Skip the first n results. Default 0.
- * @queryParam {number} [limit] - Limit the number of results. Default 50.
- * @response 200 - Ok
- * @responseContent {AutomationPage} 200.application/json
- * @responseExample {AutomationPage} 200.application/json.AutomationPage
- * @response 401 - Unauthorized
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.automationRead)
-
- let offset = 0
- if (req.query.offset) {
- offset = parseInt(req.query.offset, 10)
- }
- let limit = 50
- if (req.query.limit) {
- limit = parseInt(req.query.limit, 10)
- }
-
- const criteria: AutomationCriteria = {
- type: req.query.filter?.type ? (req.query.filter.type as AutomationType) : undefined,
- trigger: req.query.filter?.trigger
- ? (req.query.filter?.trigger as AutomationTrigger)
- : undefined,
- state: req.query.filter?.state ? (req.query.filter.state as AutomationState) : undefined,
- limit,
- offset,
- }
-
- const payload = await new AutomationService(req).findAndCountAll(criteria)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/automation/automationSlackCallback.ts b/backend/src/api/automation/automationSlackCallback.ts
deleted file mode 100644
index b8b7d84615..0000000000
--- a/backend/src/api/automation/automationSlackCallback.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import Axios from 'axios'
-import Permissions from '../../security/permissions'
-import PermissionChecker from '../../services/user/permissionChecker'
-import SettingsService from '../../services/settingsService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.automationCreate)
- const { redirectUrl } = JSON.parse(Buffer.from(req.query.state, 'base64').toString())
-
- const { url } = req.account
-
- await SettingsService.save({ slackWebHook: url }, req)
- await Axios.post(url, {
- text: 'crowd.dev notifier has been successfully connected.',
- })
-
- res.redirect(redirectUrl)
-}
diff --git a/backend/src/api/automation/automationSlackConnect.ts b/backend/src/api/automation/automationSlackConnect.ts
deleted file mode 100644
index 77dfd596f1..0000000000
--- a/backend/src/api/automation/automationSlackConnect.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import passport from 'passport'
-import Permissions from '../../security/permissions'
-import PermissionChecker from '../../services/user/permissionChecker'
-import { getSlackNotifierStrategy } from '../../services/auth/passportStrategies/slackStrategy'
-
-export default async (req, res, next) => {
- new PermissionChecker(req).validateHas(Permissions.values.automationCreate)
- const state = {
- tenantId: req.params.tenantId,
- redirectUrl: req.query.redirectUrl,
- crowdToken: req.query.crowdToken,
- }
-
- const authenticator = passport.authenticate(getSlackNotifierStrategy(), {
- scope: ['incoming-webhook'],
- state: Buffer.from(JSON.stringify(state)).toString('base64'),
- })
-
- authenticator(req, res, next)
-}
diff --git a/backend/src/api/automation/automationUpdate.ts b/backend/src/api/automation/automationUpdate.ts
deleted file mode 100644
index 8d53212469..0000000000
--- a/backend/src/api/automation/automationUpdate.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import AutomationService from '../../services/automationService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * PUT /tenant/{tenantId}/automation/{automationId}
- * @summary Update an automation
- * @tag Automations
- * @security Bearer
- * @description Updates an existing automation in the tenant.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} automationId - Automation ID that you want to update
- * @bodyContent {AutomationUpdateInput} application/json
- * @response 200 - Ok
- * @responseContent {Automation} 200.application/json
- * @responseExample {Automation} 200.application/json.Automation
- * @response 401 - Unauthorized
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.automationUpdate)
- const payload = await new AutomationService(req).update(req.params.automationId, req.body.data)
-
- track('Automation Updated', { ...payload }, { ...req })
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/automation/index.ts b/backend/src/api/automation/index.ts
deleted file mode 100644
index 9230d784df..0000000000
--- a/backend/src/api/automation/index.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import passport from 'passport'
-import { safeWrap } from '../../middlewares/errorMiddleware'
-import { API_CONFIG } from '../../conf'
-import { authMiddleware } from '../../middlewares/authMiddleware'
-import TenantService from '../../services/tenantService'
-import { getSlackNotifierStrategy } from '../../services/auth/passportStrategies/slackStrategy'
-
-export default (app) => {
- app.get(
- '/tenant/:tenantId/automation/slack',
- safeWrap(require('./automationSlackConnect').default),
- )
- app.get(
- '/tenant/automation/slack/callback',
- passport.authorize(getSlackNotifierStrategy(), {
- session: false,
- failureRedirect: `${API_CONFIG.frontendUrl}/settings?activeTab=automations&error=true`,
- }),
- (req, _res, next) => {
- const { crowdToken } = JSON.parse(Buffer.from(req.query.state, 'base64').toString())
- req.headers.authorization = `Bearer ${crowdToken}`
- next()
- },
- authMiddleware,
- async (req, _res, next) => {
- const { tenantId } = JSON.parse(Buffer.from(req.query.state, 'base64').toString())
- req.currentTenant = await new TenantService(req).findById(tenantId)
- next()
- },
- safeWrap(require('./automationSlackCallback').default),
- )
- app.post('/tenant/:tenantId/automation', safeWrap(require('./automationCreate').default))
- app.put(
- '/tenant/:tenantId/automation/:automationId',
- safeWrap(require('./automationUpdate').default),
- )
- app.delete(
- '/tenant/:tenantId/automation/:automationId',
- safeWrap(require('./automationDestroy').default),
- )
- app.get(
- '/tenant/:tenantId/automation/:automationId/executions',
- safeWrap(require('./automationExecutionFind').default),
- )
- app.get(
- '/tenant/:tenantId/automation/:automationId',
- safeWrap(require('./automationFind').default),
- )
- app.get('/tenant/:tenantId/automation', safeWrap(require('./automationList').default))
-}
diff --git a/backend/src/api/categories/categoryBulkDelete.ts b/backend/src/api/categories/categoryBulkDelete.ts
new file mode 100644
index 0000000000..e361c2c948
--- /dev/null
+++ b/backend/src/api/categories/categoryBulkDelete.ts
@@ -0,0 +1,24 @@
+import { CategoryService } from '@/services/categoryService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * DELETE /category/
+ * @summary Delete multiple categories
+ * @tag Categories
+ * @security Bearer
+ * @description Delete multiple categories by ID
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.categoryEdit)
+
+ const service = new CategoryService(req)
+ await service.deleteCategories(req.body.ids)
+
+ await req.responseHandler.success(req, res, true)
+}
diff --git a/backend/src/api/categories/categoryCreate.ts b/backend/src/api/categories/categoryCreate.ts
new file mode 100644
index 0000000000..4ff8028e65
--- /dev/null
+++ b/backend/src/api/categories/categoryCreate.ts
@@ -0,0 +1,25 @@
+import { CategoryService } from '@/services/categoryService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * POST /category
+ * @summary Create a category
+ * @tag Category
+ * @security Bearer
+ * @description Create a new category
+ * @bodyContent {CollectionCreateInput} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.categoryEdit)
+
+ const service = new CategoryService(req)
+ const payload = await service.createCategory(req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/categories/categoryDelete.ts b/backend/src/api/categories/categoryDelete.ts
new file mode 100644
index 0000000000..896410730a
--- /dev/null
+++ b/backend/src/api/categories/categoryDelete.ts
@@ -0,0 +1,25 @@
+import { CategoryService } from '@/services/categoryService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * DELETE /category/{id}
+ * @summary Delete a category
+ * @tag Categories
+ * @security Bearer
+ * @description Delete a category by ID
+ * @pathParam {string} id - The ID of the category
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.categoryEdit)
+
+ const service = new CategoryService(req)
+ await service.deleteCategory(req.params.id)
+
+ await req.responseHandler.success(req, res, true)
+}
diff --git a/backend/src/api/categories/categoryGroupCreate.ts b/backend/src/api/categories/categoryGroupCreate.ts
new file mode 100644
index 0000000000..2b28f36657
--- /dev/null
+++ b/backend/src/api/categories/categoryGroupCreate.ts
@@ -0,0 +1,25 @@
+import { CategoryService } from '@/services/categoryService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * POST /category-group
+ * @summary Create a category group
+ * @tag CategoryGroup
+ * @security Bearer
+ * @description Create a new categroy group
+ * @bodyContent {CollectionCreateInput} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.categoryEdit)
+
+ const service = new CategoryService(req)
+ const payload = await service.createCategoryGroup(req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/categories/categoryGroupDelete.ts b/backend/src/api/categories/categoryGroupDelete.ts
new file mode 100644
index 0000000000..439bed0dac
--- /dev/null
+++ b/backend/src/api/categories/categoryGroupDelete.ts
@@ -0,0 +1,25 @@
+import { CategoryService } from '@/services/categoryService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * DELETE /category-groups/{id}
+ * @summary Delete a category group
+ * @tag Category Groups
+ * @security Bearer
+ * @description Delete a category group by ID
+ * @pathParam {string} id - The ID of the category group
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.categoryEdit)
+
+ const service = new CategoryService(req)
+ await service.deleteCategoryGroup(req.params.id)
+
+ await req.responseHandler.success(req, res, true)
+}
diff --git a/backend/src/api/categories/categoryGroupList.ts b/backend/src/api/categories/categoryGroupList.ts
new file mode 100644
index 0000000000..1d564d9d9d
--- /dev/null
+++ b/backend/src/api/categories/categoryGroupList.ts
@@ -0,0 +1,25 @@
+import { CategoryService } from '@/services/categoryService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * Get /category-group
+ * @summary List Category groups
+ * @tag CategoryGroups
+ * @security Bearer
+ * @description Query category groups with filters and pagination
+ * @bodyContent {CategoryGroupsQuery} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.categoryRead)
+
+ const service = new CategoryService(req)
+ const payload = await service.listCategoryGroups(req.query)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/categories/categoryGroupUpdate.ts b/backend/src/api/categories/categoryGroupUpdate.ts
new file mode 100644
index 0000000000..6cf3e7f4d6
--- /dev/null
+++ b/backend/src/api/categories/categoryGroupUpdate.ts
@@ -0,0 +1,25 @@
+import { CategoryService } from '@/services/categoryService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * PATCH /category-group/:id
+ * @summary Update a category group
+ * @tag Category Groups
+ * @security Bearer
+ * @description Update a category group
+ * @bodyContent {CategoryGroupUpdateInput} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.categoryEdit)
+
+ const service = new CategoryService(req)
+ const payload = await service.updateCategoryGroup(req.params.id, req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/categories/categoryList.ts b/backend/src/api/categories/categoryList.ts
new file mode 100644
index 0000000000..ccf815b5fa
--- /dev/null
+++ b/backend/src/api/categories/categoryList.ts
@@ -0,0 +1,24 @@
+import { CategoryService } from '@/services/categoryService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * Get /category
+ * @summary List Category
+ * @tag Category
+ * @security Bearer
+ * @description Query category with filters
+ * @bodyContent {CategoryQuery} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.categoryRead)
+
+ const service = new CategoryService(req)
+ const payload = await service.listCategories(req.query)
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/categories/categoryUpdate.ts b/backend/src/api/categories/categoryUpdate.ts
new file mode 100644
index 0000000000..dec39e37e7
--- /dev/null
+++ b/backend/src/api/categories/categoryUpdate.ts
@@ -0,0 +1,25 @@
+import { CategoryService } from '@/services/categoryService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * PATCH /category/:id
+ * @summary Update a category
+ * @tag Categories
+ * @security Bearer
+ * @description Update a category
+ * @bodyContent {CategoryUpdateInput} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.categoryEdit)
+
+ const service = new CategoryService(req)
+ const payload = await service.updateCategory(req.params.id, req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/categories/index.ts b/backend/src/api/categories/index.ts
new file mode 100644
index 0000000000..0f4c397a4f
--- /dev/null
+++ b/backend/src/api/categories/index.ts
@@ -0,0 +1,16 @@
+import { safeWrap } from '@/middlewares/errorMiddleware'
+
+export default (app) => {
+ // Category groups routes
+ app.post('/category-group', safeWrap(require('./categoryGroupCreate').default))
+ app.get('/category-group', safeWrap(require('./categoryGroupList').default))
+ app.patch('/category-group/:id', safeWrap(require('./categoryGroupUpdate').default))
+ app.delete('/category-group/:id', safeWrap(require('./categoryGroupDelete').default))
+
+ // Categories routes
+ app.post('/category', safeWrap(require('./categoryCreate').default))
+ app.get('/category', safeWrap(require('./categoryList').default))
+ app.patch('/category/:id', safeWrap(require('./categoryUpdate').default))
+ app.delete('/category/:id', safeWrap(require('./categoryDelete').default))
+ app.delete('/category', safeWrap(require('./categoryBulkDelete').default))
+}
diff --git a/backend/src/api/collections/collectionsCreate.ts b/backend/src/api/collections/collectionsCreate.ts
new file mode 100644
index 0000000000..e073884870
--- /dev/null
+++ b/backend/src/api/collections/collectionsCreate.ts
@@ -0,0 +1,25 @@
+import { CollectionService } from '@/services/collectionService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * POST /collections
+ * @summary Create a collection
+ * @tag Collections
+ * @security Bearer
+ * @description Create a new collection
+ * @bodyContent {CollectionCreateInput} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionEdit)
+
+ const service = new CollectionService(req)
+ const payload = await service.createCollection(req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/collections/collectionsDestroy.ts b/backend/src/api/collections/collectionsDestroy.ts
new file mode 100644
index 0000000000..8abf531036
--- /dev/null
+++ b/backend/src/api/collections/collectionsDestroy.ts
@@ -0,0 +1,25 @@
+import { CollectionService } from '@/services/collectionService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * DELETE /collections/{id}
+ * @summary Delete a collection
+ * @tag Collections
+ * @security Bearer
+ * @description Delete a collection by ID
+ * @pathParam {string} id - The ID of the collection
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionEdit)
+
+ const service = new CollectionService(req)
+ await service.destroy(req.params.id)
+
+ await req.responseHandler.success(req, res, true)
+}
diff --git a/backend/src/api/collections/collectionsGet.ts b/backend/src/api/collections/collectionsGet.ts
new file mode 100644
index 0000000000..c1eb27ed68
--- /dev/null
+++ b/backend/src/api/collections/collectionsGet.ts
@@ -0,0 +1,25 @@
+import { CollectionService } from '@/services/collectionService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * GET /collections/{id}
+ * @summary Get a collection
+ * @tag Collections
+ * @security Bearer
+ * @description Get a collection by ID
+ * @pathParam {string} id - The ID of the collection
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionRead)
+
+ const service = new CollectionService(req)
+ const payload = await service.findById(req.params.id)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/collections/collectionsQuery.ts b/backend/src/api/collections/collectionsQuery.ts
new file mode 100644
index 0000000000..a5b1fd44e1
--- /dev/null
+++ b/backend/src/api/collections/collectionsQuery.ts
@@ -0,0 +1,25 @@
+import { CollectionService } from '@/services/collectionService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * POST /collections/query
+ * @summary Query collections
+ * @tag Collections
+ * @security Bearer
+ * @description Query collections with filters and pagination
+ * @bodyContent {CollectionsQuery} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionRead)
+
+ const service = new CollectionService(req)
+ const payload = await service.query(req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/collections/collectionsUpdate.ts b/backend/src/api/collections/collectionsUpdate.ts
new file mode 100644
index 0000000000..79e632ac76
--- /dev/null
+++ b/backend/src/api/collections/collectionsUpdate.ts
@@ -0,0 +1,25 @@
+import { CollectionService } from '@/services/collectionService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * POST /collection/:id
+ * @summary Update a collection
+ * @tag Collections
+ * @security Bearer
+ * @description Update a collection
+ * @bodyContent {CollectionUpdateInput} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionEdit)
+
+ const service = new CollectionService(req)
+ const payload = await service.updateCollection(req.params.id, req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/collections/index.ts b/backend/src/api/collections/index.ts
new file mode 100644
index 0000000000..329fc1791e
--- /dev/null
+++ b/backend/src/api/collections/index.ts
@@ -0,0 +1,36 @@
+import { safeWrap } from '../../middlewares/errorMiddleware'
+
+export default (app) => {
+ // Insights projects routes
+ app.post(
+ '/collections/insights-projects/query',
+ safeWrap(require('./insightsProjects/insightsProjectsQuery').default),
+ )
+ app.post(
+ '/collections/insights-projects',
+ safeWrap(require('./insightsProjects/insightsProjectsCreate').default),
+ )
+ app.delete(
+ '/collections/insights-projects/:id',
+ safeWrap(require('./insightsProjects/insightsProjectsDestroy').default),
+ )
+ app.post(
+ '/collections/insights-projects/:id',
+ safeWrap(require('./insightsProjects/insightsProjectsUpdate').default),
+ )
+ app.get(
+ '/collections/insights-projects/:id',
+ safeWrap(require('./insightsProjects/insightsProjectsGet').default),
+ )
+
+ // Collections routes
+ app.post('/collections/query', safeWrap(require('./collectionsQuery').default))
+ app.post('/collections', safeWrap(require('./collectionsCreate').default))
+ app.get('/collections/:id', safeWrap(require('./collectionsGet').default))
+ app.post('/collections/:id', safeWrap(require('./collectionsUpdate').default))
+ app.delete('/collections/:id', safeWrap(require('./collectionsDestroy').default))
+
+ app.get('/segments/:id/repositories', safeWrap(require('./segmentsRepositoriesGet').default))
+ app.get('/segments/:id/github-insights', safeWrap(require('./segmentsGithubInsightsGet').default))
+ app.get('/segments/:id/widgets', safeWrap(require('./segmentsWidgetsGet').default))
+}
diff --git a/backend/src/api/collections/insightsProjects/insightsProjectsCreate.ts b/backend/src/api/collections/insightsProjects/insightsProjectsCreate.ts
new file mode 100644
index 0000000000..c36f99b97e
--- /dev/null
+++ b/backend/src/api/collections/insightsProjects/insightsProjectsCreate.ts
@@ -0,0 +1,25 @@
+import { CollectionService } from '@/services/collectionService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * POST /collections/insights-projects
+ * @summary Create an insights project
+ * @tag Collections
+ * @security Bearer
+ * @description Create a new insights project
+ * @bodyContent {InsightsProjectCreateInput} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionEdit)
+
+ const service = new CollectionService(req)
+ const payload = await service.createInsightsProject(req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/collections/insightsProjects/insightsProjectsDestroy.ts b/backend/src/api/collections/insightsProjects/insightsProjectsDestroy.ts
new file mode 100644
index 0000000000..7fdb45efa2
--- /dev/null
+++ b/backend/src/api/collections/insightsProjects/insightsProjectsDestroy.ts
@@ -0,0 +1,25 @@
+import { CollectionService } from '@/services/collectionService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * DELETE /collections/insights-projects/{id}
+ * @summary Delete an insights project
+ * @tag Collections
+ * @security Bearer
+ * @description Delete an insights project by ID
+ * @pathParam {string} id - The ID of the insights project
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionEdit)
+
+ const service = new CollectionService(req)
+ await service.destroyInsightsProject(req.params.id)
+
+ await req.responseHandler.success(req, res, true)
+}
diff --git a/backend/src/api/collections/insightsProjects/insightsProjectsGet.ts b/backend/src/api/collections/insightsProjects/insightsProjectsGet.ts
new file mode 100644
index 0000000000..bd87d3bd7b
--- /dev/null
+++ b/backend/src/api/collections/insightsProjects/insightsProjectsGet.ts
@@ -0,0 +1,24 @@
+import { CollectionService } from '@/services/collectionService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * GET /collections/insights-projects/:id
+ * @summary Get an insights project
+ * @tag Collections
+ * @security Bearer
+ * @description Get an insights project by ID
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionEdit)
+
+ const service = new CollectionService(req)
+ const payload = await service.findInsightsProjectById(req.params.id)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/collections/insightsProjects/insightsProjectsQuery.ts b/backend/src/api/collections/insightsProjects/insightsProjectsQuery.ts
new file mode 100644
index 0000000000..16c76f85d4
--- /dev/null
+++ b/backend/src/api/collections/insightsProjects/insightsProjectsQuery.ts
@@ -0,0 +1,25 @@
+import { CollectionService } from '@/services/collectionService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * POST /collections/insights-projects/query
+ * @summary Query insights projects
+ * @tag Collections
+ * @security Bearer
+ * @description Query insights projects with filters and pagination
+ * @bodyContent {InsightsProjectsQuery} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionRead)
+
+ const service = new CollectionService(req)
+ const payload = await service.queryInsightsProjects(req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/collections/insightsProjects/insightsProjectsUpdate.ts b/backend/src/api/collections/insightsProjects/insightsProjectsUpdate.ts
new file mode 100644
index 0000000000..14a2a0c8a5
--- /dev/null
+++ b/backend/src/api/collections/insightsProjects/insightsProjectsUpdate.ts
@@ -0,0 +1,25 @@
+import { CollectionService } from '@/services/collectionService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * POST /collections/insights-projects/{id}
+ * @summary Update an insights project
+ * @tag Collections
+ * @security Bearer
+ * @description Update an insights project
+ * @bodyContent {InsightsProjectUpdateInput} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionEdit)
+
+ const service = new CollectionService(req)
+ const payload = await service.updateInsightsProject(req.params.id, req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/collections/segmentsGithubInsightsGet.ts b/backend/src/api/collections/segmentsGithubInsightsGet.ts
new file mode 100644
index 0000000000..f4359e3599
--- /dev/null
+++ b/backend/src/api/collections/segmentsGithubInsightsGet.ts
@@ -0,0 +1,25 @@
+import { CollectionService } from '@/services/collectionService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * GET /segments/{id}/github-insights
+ * @summary Get github insights for a segment
+ * @tag Segments
+ * @security Bearer
+ * @description Get github insights for a segment
+ * @pathParam {string} id - The ID of the segment
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionRead)
+
+ const service = new CollectionService(req)
+ const payload = await service.findGithubInsightsForSegment(req.params.id)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/collections/segmentsRepositoriesGet.ts b/backend/src/api/collections/segmentsRepositoriesGet.ts
new file mode 100644
index 0000000000..107f2e15fd
--- /dev/null
+++ b/backend/src/api/collections/segmentsRepositoriesGet.ts
@@ -0,0 +1,27 @@
+import { findRepositoriesForSegment } from '@crowd/data-access-layer/src/integrations'
+
+import SequelizeRepository from '@/database/repositories/sequelizeRepository'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * GET /segments/{id}/repositories
+ * @summary Get repositories for a segment
+ * @tag Segments
+ * @security Bearer
+ * @description Get repositories for a segment
+ * @pathParam {string} id - The ID of the segment
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionRead)
+
+ const qx = SequelizeRepository.getQueryExecutor(req)
+ const payload = await findRepositoriesForSegment(qx, req.params.id)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/collections/segmentsWidgetsGet.ts b/backend/src/api/collections/segmentsWidgetsGet.ts
new file mode 100644
index 0000000000..1c94d56eb7
--- /dev/null
+++ b/backend/src/api/collections/segmentsWidgetsGet.ts
@@ -0,0 +1,23 @@
+import { CollectionService } from '@/services/collectionService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * GET /segments/:id/widgets
+ * @summary Get needed widgets for a segmentId
+ * @tag Collections
+ * @security Bearer
+ * @description Get an insights project by ID
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.collectionEdit)
+
+ const service = new CollectionService(req)
+ const payload = await service.findSegmentsWidgetsById(req.params.id)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/components/activity/activityTypes/examples.yaml b/backend/src/api/components/activity/activityTypes/examples.yaml
deleted file mode 100644
index 1462d69dbf..0000000000
--- a/backend/src/api/components/activity/activityTypes/examples.yaml
+++ /dev/null
@@ -1,148 +0,0 @@
-components:
- examples:
- ActivityTypes:
- value:
- default:
- github:
- discussion-started:
- default: started a discussion in {channel}
- short: started a discussion
- channel: '{channel}'
- discussion-comment:
- default: commented on a discussion in {channel}
- short: commented on a discussion
- channel: '{channel}'
- fork:
- default: forked {channel}
- short: forked
- channel: '{channel}'
- issues-closed:
- default: closed an issue in {channel}
- short: closed an issue
- channel: '{channel}'
- issues-opened:
- default: opened a new issue in {channel}
- short: opened an issue
- channel: '{channel}'
- issue-comment:
- default: commented on an issue in {channel}
- short: commented on an issue
- channel: '{channel}'
- pull_request-closed:
- default: closed a pull request in {channel}
- short: closed a pull request
- channel: '{channel}'
- pull_request-opened:
- default: opened a new pull request in {channel}
- short: opened a pull request
- channel: '{channel}'
- pull_request-comment:
- default: commented on a pull request in {channel}
- short: commented on a pull request
- channel: '{channel}'
- star:
- default: starred {channel}
- short: starred
- channel: '{channel}'
- unstar:
- default: unstarred {channel}
- short: unstarred
- channel: '{channel}'
- devto:
- comment:
- default: commented on {attributes.articleTitle}
- short: commented
- channel: {attributes.articleTitle}
- discord:
- joined_guild:
- default: joined server
- short: joined server
- channel: ''
- message:
- default: sent a message in #{channel}
- short: sent a message
- channel: #{channel}
- thread_started:
- default: started a new thread
- short: started a new thread
- channel: ''
- thread_message:
- default: replied to a message in thread #{channel} -> {attributes.parentChannel}
- short: replied to a message
- channel: 'thread #{channel}
- -> #{attributes.parentChannel}'
- hackernews:
- comment:
- default: commented on {attributes.parentTitle}
- short: commented
- channel: '{channel}'
- post:
- default: posted mentioning {channel}
- short: posted
- channel: '{channel}'
- linkedin:
- comment:
- default: commented on a post {attributes.postBody}
- short: commented
- channel: {attributes.postBody}
- message:
- default: sent a message
- short: sent a message
- channel: ''
- reaction:
- default:
- reacted with
- on a post {attributes.postBody}
- short: reacted
- channel: {attributes.postBody}
- reddit:
- comment:
- default: commented in subreddit r/{channel}
- short: commented on a post
- channel: r/{channel}
- post:
- default: posted in subreddit r/{channel}
- short: posted in subreddit
- channel: r/{channel}
- slack:
- channel_joined:
- default: joined channel {channel}
- short: joined channel
- channel: '{channel}'
- message:
- default: sent a message in {channel}
- short: sent a message
- channel: '{channel}'
- twitter:
- hashtag:
- default: posted a tweet
- short: posted a tweet
- channel: ''
- follow:
- default: followed you
- short: followed you
- channel: ''
- mention:
- default: mentioned you in a tweet
- short: mentioned you
- channel: ''
- stackoverflow:
- question:
- default: Asked a question {self}
- short: asked a question
- channel: ''
- answer:
- default: Answered a question {self}
- short: answered a question
- channel: ''
- custom:
- other:
- attended-a-meeting:
- short: Attended a meeting
- channel: ''
- default: Attended a meeting
- asked-question-in-webinar:
- default: Asked question in webinar
- short: Asked question in webinar
- channel: ''
diff --git a/backend/src/api/components/activity/activityTypes/inputs.yaml b/backend/src/api/components/activity/activityTypes/inputs.yaml
deleted file mode 100644
index 86160b3ebb..0000000000
--- a/backend/src/api/components/activity/activityTypes/inputs.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-components:
- schemas:
- ActivityTypesCreateInput:
- description: >-
- An activity type.
- properties:
- type:
- description: >-
- Human-friendly type of the activity. Default and short displays will set to this and key will be generated using this value.
-
- ActivityTypesUpdateInput:
- description: >-
- An activity type.
- properties:
- type:
- description: >-
- Human-friendly type of the activity. Default and short displays will set to this and key will be generated using this value.
diff --git a/backend/src/api/components/activity/activityTypes/models.yaml b/backend/src/api/components/activity/activityTypes/models.yaml
deleted file mode 100644
index 6e4b1e62a6..0000000000
--- a/backend/src/api/components/activity/activityTypes/models.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-components:
- schemas:
- # defines the display options of a single activity type
- ActivityTypeDisplayOptions:
- type: object
- required:
- - default
- - short
- - channel
-
- description: Activity type display options.
- properties:
- default:
- description: Default display of an activity type. Used in the activity module in the app.
- type: string
- short:
- description: Short display version of an activity type. Used in the member list -> last activity.
- type: string
- channel:
- description: Channel display of an activity type. Used in Dashboard -> trending conversations.
- type: string
-
- xml:
- name: ActivityTypeDisplayOptions
-
- # defines the custom and default activity type settings
- ActivityTypes:
- type: object
- properties:
- custom:
- type: object
- description: Custom activity types defined by the user.
- additionalProperties:
- $ref: '#/components/schemas/ActivityTypeDisplayOptions'
- default:
- type: object
- description: Default activity types used by the integrations.
- additionalProperties:
- $ref: '#/components/schemas/ActivityTypeDisplayOptions'
diff --git a/backend/src/api/components/activity/examples.yaml b/backend/src/api/components/activity/examples.yaml
deleted file mode 100644
index 48fc826041..0000000000
--- a/backend/src/api/components/activity/examples.yaml
+++ /dev/null
@@ -1,343 +0,0 @@
-components:
- examples:
- ActivityUpsert:
- value:
- id: 782b426d-adc8-4fb4-a4ee-ab0bb07ffca0
- type: message
- timestamp: '2020-05-27T15:13:30.000Z'
- platform: discord
- isContribution: true
- score: 1
- sourceId: '1234'
- sourceParentId: null
- attributes:
- reactions: 43
- channel: dev
- body: It's not magic. It's talend and sweat.
- title: null
- url: discord.gg/1234
- sentiment:
- label: negative
- mixed: 1.1410574428737164
- neutral: 11.00325882434845
- negative: 85.99738478660583
- positive: 1.8582981079816818
- sentiment: 2
- importHash: null
- createdAt: '2022-10-03T15:18:11.294Z'
- updatedAt: '2022-10-03T15:21:49.402Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: null
- parentId: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- member:
- id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: -1
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-03T15:17:27.073Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- parent: null
- tasks: []
-
- ActivityFind:
- value:
- id: 462ddc6b-5672-43b2-9018-4e3fd7332228
- type: pull_request-closed
- timestamp: '2021-07-27T20:20:30.000Z'
- platform: github
- isContribution: true
- score: 10
- sourceId: gh_1
- sourceParentId: null
- attributes: {}
- channel: piedpiper
- body: Last one to finish the code sprint! But I will have fewer bugs than Gilfoyle.
- title: Code sprint over!
- url: github.com/piedpiper/piedpier
- sentiment:
- label: positive
- mixed: 0.7594161201268435
- neutral: 39.13898766040802
- negative: 12.336093187332153
- positive: 47.76550233364105
- sentiment: 79
- createdAt: '2022-10-03T15:36:43.775Z'
- updatedAt: '2022-10-03T15:39:38.199Z'
- deletedAt: null
- memberId: 2effc566-1932-44f3-a821-2d692933a953
- conversationId: 291af008-7717-457e-9242-f5c507c8987b
- parentId: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- member:
- id: 2effc566-1932-44f3-a821-2d692933a953
- username:
- github: dinesh
- twitter: dinesh.chugtai
- attributes:
- bio:
- github: Lead developer at Pied Piper
- default: Pakistani Denzel. Tesla and gold chain owner.
- twitter: Pakistani Denzel. Tesla and gold chain owner.
- url:
- github: https://github.com/dinesh
- default: https://t.co/d
- twitter: https://t.co/d
- location:
- custom: Silicon Valley
- github: Palo alto
- default: Silicon Valley
- displayName: Dinesh
- email: dinesh@piedpiper.io
- score: 9
- joinedAt: '2022-10-03T15:30:55.672Z'
- importHash: null
- reach:
- total: 100
- github: 60
- twitter: 40
- createdAt: '2022-10-03T15:30:55.679Z'
- updatedAt: '2022-10-03T15:30:55.679Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- parent: null
- tasks: []
-
- ActivityFind2:
- value:
- id: 73aa13b7-1ef9-4987-a273-e560edff94ca
- type: pull_request-comment
- timestamp: '2021-07-27T20:22:30.000Z'
- platform: github
- isContribution: true
- score: 3
- sourceId: gh_2
- sourceParentId: gh_1
- attributes: {}
- channel: piedpiper
- body: I will never underestimate my talents again.
- title: null
- url: github.com/piedpiper/piedpier
- sentiment:
- label: positive
- mixed: 14.308956265449524
- neutral: 14.437079429626465
- negative: 9.826807677745819
- positive: 61.42715811729431
- sentiment: 86
- importHash: null
- createdAt: '2022-10-03T15:38:05.847Z'
- updatedAt: '2022-10-03T15:46:34.610Z'
- deletedAt: null
- memberId: 2effc566-1932-44f3-a821-2d692933a953
- conversationId: 291af008-7717-457e-9242-f5c507c8987b
- parentId: 462ddc6b-5672-43b2-9018-4e3fd7332228
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- member:
- id: 2effc566-1932-44f3-a821-2d692933a953
- username:
- github: dinesh
- twitter: dinesh.chugtai
- attributes:
- bio:
- github: Lead developer at Pied Piper
- default: Pakistani Denzel. Tesla and gold chain owner.
- twitter: Pakistani Denzel. Tesla and gold chain owner.
- url:
- github: https://github.com/dinesh
- default: https://t.co/d
- twitter: https://t.co/d
- location:
- custom: Silicon Valley
- github: Palo alto
- default: Silicon Valley
- displayName: Dinesh
- email: dinesh@piedpiper.io
- score: -1
- joinedAt: '2022-10-03T15:30:55.672Z'
- importHash: null
- reach:
- total: 100
- github: 60
- twitter: 40
- createdAt: '2022-10-03T15:30:55.679Z'
- updatedAt: '2022-10-03T15:30:55.679Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- parent:
- id: 462ddc6b-5672-43b2-9018-4e3fd7332228
- type: pull_request-closed
- timestamp: '2021-07-27T20:22:30.000Z'
- platform: github
- isContribution: true
- score: 10
- sourceId: gh_1
- sourceParentId: null
- attributes: {}
- channel: piedpiper
- body: Last one to finish the code sprint! But I will have less bugs than Gilfoyle.
- title: Code sprint over!
- url: github.com/piedpiper/piedpier
- sentiment:
- label: positive
- mixed: 0.7594161201268435
- neutral: 39.13898766040802
- negative: 12.336093187332153
- positive: 47.76550233364105
- sentiment: 79
- importHash: null
- createdAt: '2022-10-03T15:36:43.775Z'
- updatedAt: '2022-10-03T15:39:38.199Z'
- deletedAt: null
- memberId: 2effc566-1932-44f3-a821-2d692933a953
- conversationId: 291af008-7717-457e-9242-f5c507c8987b
- parentId: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- tasks: []
-
- ActivityFind3:
- value:
- id: 2dcbe40e-36e0-4929-ab21-a30467fd9a65
- type: pull_request-comment
- timestamp: '2021-07-27T20:23:30.000Z'
- platform: github
- isContribution: true
- score: 3
- sourceId: gh_3
- sourceParentId: gh_1
- attributes: {}
- channel: piedpiper
- body: Don't worry. I will continue to do it for you.
- title: null
- url: github.com/piedpiper/piedpier
- sentiment:
- label: positive
- mixed: 2.9098065569996834
- neutral: 25.578168034553528
- negative: 2.241993509232998
- positive: 69.27002668380737
- sentiment: 97
- importHash: null
- createdAt: '2022-10-03T15:47:20.151Z'
- updatedAt: '2022-10-03T15:47:20.220Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: 291af008-7717-457e-9242-f5c507c8987b
- parentId: 462ddc6b-5672-43b2-9018-4e3fd7332228
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- member:
- id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: -1
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-03T15:17:27.073Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- parent:
- id: 462ddc6b-5672-43b2-9018-4e3fd7332228
- type: pull_request-closed
- timestamp: '2021-07-27T20:22:30.000Z'
- platform: github
- isContribution: true
- score: 10
- sourceId: gh_1
- sourceParentId: null
- attributes: {}
- channel: piedpiper
- body: Last one to finish the code sprint! But I will have less bugs than Gilfoyle.
- title: Code sprint over!
- url: github.com/piedpiper/piedpier
- sentiment:
- label: positive
- mixed: 0.7594161201268435
- neutral: 39.13898766040802
- negative: 12.336093187332153
- positive: 47.76550233364105
- sentiment: 79
- importHash: null
- createdAt: '2022-10-03T15:36:43.775Z'
- updatedAt: '2022-10-03T15:39:38.199Z'
- deletedAt: null
- memberId: 2effc566-1932-44f3-a821-2d692933a953
- conversationId: 291af008-7717-457e-9242-f5c507c8987b
- parentId: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- tasks: []
-
- ActivityList:
- value:
- rows:
- - $ref: '#/components/examples/ActivityFind'
- - $ref: '#/components/examples/ActivityFind2'
- - $ref: '#/components/examples/ActivityFind3'
- count: 3
- limit: 10
- offset: 0
diff --git a/backend/src/api/components/activity/inputs.yaml b/backend/src/api/components/activity/inputs.yaml
deleted file mode 100644
index 4b631c8ad1..0000000000
--- a/backend/src/api/components/activity/inputs.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
-components:
- schemas:
- ActivityRelationsInput:
- description: Relations of an activity.
- type: object
- properties:
- tasks:
- description: Tasks associated with the activity
- type: array
- items:
- $ref: '#/components/schemas/TaskNoId'
-
- ActivityUpsertInput:
- required: [memberId]
- description: >-
- An activity performed by a member of your community. The member is sent as an ID.
- allOf:
- - $ref: '#/components/schemas/ActivityNoId'
- - $ref: '#/components/schemas/ActivityRelationsInput'
- properties:
- memberId:
- description: The ID of the member that performed the activity
-
- ActivityUpsertWithMemberInput:
- type: object
- description: >-
- An activity performed by a member of your community. The member is sent as a whole object.
- allOf:
- - $ref: '#/components/schemas/ActivityNoId'
- - $ref: '#/components/schemas/ActivityRelationsInput'
- properties:
- member:
- $ref: '#/components/schemas/MemberNoId'
diff --git a/backend/src/api/components/activity/models.yaml b/backend/src/api/components/activity/models.yaml
deleted file mode 100644
index fd357f108e..0000000000
--- a/backend/src/api/components/activity/models.yaml
+++ /dev/null
@@ -1,113 +0,0 @@
-components:
- schemas:
- # defines the attributes of an activity, excluding the ID
- ActivityNoId:
- description: An activity performed by a member of your community.
- type: object
-
- required:
- - type
- - platform
- - timestamp
- - sourceId
-
- properties:
- type:
- description: Type of activity
- type: string
-
- timestamp:
- description: Date and time when the activity took place
- type: string
- format: date-time
-
- platform:
- description: Platform on which the activity took place
- type: string
-
- title:
- description: Title of the activity
- type: string
-
- body:
- description: Body of the activity
- type: string
-
- channel:
- description: Channel of the activity
- type: string
-
- sentiment:
- description: Sentiment of the activity
- type: object
- properties:
- sentiment:
- description: >-
- Default sentiment score.
- Computed by mapping (positive - negative) from 0 to 100
- type: number
- minimum: 0
- maximum: 100
- label:
- description: Sentiment label
- type: string
- enum: [positive, negative, neutral, mixed]
- positive:
- description: Positive sentiment score
- type: number
- minimum: 0
- maximum: 1
- negative:
- description: Negative sentiment score
- type: number
- minimum: 0
- maximum: 1
- neutral:
- description: Neutral sentiment score
- type: number
- minimum: 0
- maximum: 1
- mixed:
- description: Mixed sentiment score. Mixed contains both positive and negative sentiments
- type: number
- minimum: 0
- maximum: 1
-
- sourceId:
- description: The id of the activity in the platform (e.g. the id of the message in Discord)
- type: string
-
- sourceParentId:
- description: The id of the parent activity in the platform (e.g. the id of the parent message in Discord)
- type: string
-
- parentId:
- description: Id of the parent activity, if the activity has a parent
- type: string
- format: uuid
-
- score:
- description: Score associated with the activity
- type: number
-
- isContribution:
- description: Whether the activity was a contribution
- type: boolean
-
- attributes:
- description: Extra attributes of the activity
- type: object
- additionalProperties: true
-
- createdAt:
- description: Date the activity was created
- type: string
- format: date-time
-
- updatedAt:
- description: Date the activity was last updated
- type: string
- format: date-time
-
- xml:
- name: ActivityNoId
diff --git a/backend/src/api/components/activity/query.yaml b/backend/src/api/components/activity/query.yaml
deleted file mode 100644
index 20a83f3919..0000000000
--- a/backend/src/api/components/activity/query.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-components:
- schemas:
- FilterType:
- type: object
- additionalProperties:
- oneOf:
- - type: string
- - $ref: '#/components/schemas/FilterType'
-
- ActivityQuery:
- description: >-
- All the parameters you can use to query activitys.
-
- properties:
- filter:
- description: >-
- Filter. Please refer to filter docs.
- type: string
- format: blob
-
- orderBy:
- type: string
- enum:
- - activitiesCount_DESC
- - score_ASC
- - score_ASC
- - joinedAt_ASC
- - joinedAt_DESC
- - createdAt_ASC
- - createdAt_DESC
- - organisation_ASC
- - organisation_DESC
- - location_ASC
- - location_DESC
-
- limit:
- description: >-
- Limit the number of records returned. Default is 10.
- type: integer
- minimum: 1
- maximum: 200
- default: 10
- offset:
- description: >-
- Offset the number of records returned. Default is 0.
- type: integer
- minimum: 0
- default: 0
diff --git a/backend/src/api/components/activity/responses.yaml b/backend/src/api/components/activity/responses.yaml
deleted file mode 100644
index 65fc16f6cf..0000000000
--- a/backend/src/api/components/activity/responses.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
-components:
- schemas:
- # defines a complete activity, including the ID
- Activity:
- type: object
- allOf:
- - $ref: '#/components/schemas/ActivityNoId'
- properties:
- id:
- description: The unique identifier for an activity.
-
- ActivityRelationsResponse:
- description: Relations of an activity.
- type: object
- properties:
- member:
- description: Member that performed the activity
- $ref: '#/components/schemas/Member'
- tasks:
- description: Tasks associated with the activity.
- type: array
- items:
- $ref: '#/components/schemas/Task'
-
- ActivityResponse:
- description: An activity performed by a member.
- type: object
- allOf:
- - $ref: '#/components/schemas/Activity'
- - $ref: '#/components/schemas/ActivityRelationsResponse'
-
- ActivityList:
- description: List and count of activities.
- type: object
- properties:
- rows:
- description: List of activities
- type: array
- items:
- $ref: '#/components/schemas/ActivityResponse'
- count:
- description: Count
- type: integer
- limit:
- description: Limit of records returned
- type: integer
- offset:
- description: Offset, for pagination
- type: integer
- xml:
- name: ActivitiesList
diff --git a/backend/src/api/components/auth.yaml b/backend/src/api/components/auth.yaml
deleted file mode 100644
index f16a980eaa..0000000000
--- a/backend/src/api/components/auth.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-components:
- securitySchemes:
- Bearer:
- type: http
- scheme: bearer
diff --git a/backend/src/api/components/automation/examples.yaml b/backend/src/api/components/automation/examples.yaml
deleted file mode 100644
index 5d7163e5d4..0000000000
--- a/backend/src/api/components/automation/examples.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-components:
- examples:
- Automation:
- value:
- id: b3297f3b-6924-4e92-80e7-ef2e0d87a120
- type: 'webhook'
- tenantId: a3297f3b-6924-4e92-80e7-ef2e0d87a120
- trigger: 'new_activity'
- settings:
- url: 'https://webhook.url/new_activities'
- createdAt: '2022-03-29T09:22:31.989Z'
-
- AutomationPage:
- value:
- count: 1
- offset: 0
- limit: 10
- rows:
- - id: b3297f3b-6924-4e92-80e7-ef2e0d87a120
- type: 'webhook'
- tenantId: a3297f3b-6924-4e92-80e7-ef2e0d87a120
- trigger: 'new_activity'
- settings:
- url: 'https://webhook.url/new_activities'
- createdAt: '2022-03-29T09:22:31.989Z'
-
- AutomationExecutionPage:
- value:
- count: 1
- offset: 0
- limit: 10
- rows:
- - id: 'b3297f3b-6924-4e92-80e7-ef2e0d87a120'
- automationId: 'a3297f3b-6924-4e92-80e7-ef2e0d87a120'
- state: success
- executedAt: '2022-03-29T09:22:31.989Z'
- eventId: 'a3297f3b-6924-4e92-80e7-ef2e0d87a121'
- payload:
- - id: 'a3297f3b-6924-4e92-80e7-ef2e0d87a121'
- type: 'comment'
- timestamp: '2022-03-29T09:22:31.989Z'
- platform: 'twitter'
diff --git a/backend/src/api/components/automation/inputs.yaml b/backend/src/api/components/automation/inputs.yaml
deleted file mode 100644
index 6d1d508499..0000000000
--- a/backend/src/api/components/automation/inputs.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
-components:
- schemas:
- AutomationCreateInput:
- type: object
- description: >-
- Data to create a new automation.
- required:
- - type
- - trigger
- - settings
- properties:
- type:
- $ref: '#/components/schemas/AutomationType'
- trigger:
- $ref: '#/components/schemas/AutomationTrigger'
- settings:
- $ref: '#/components/schemas/AutomationSettings'
-
- AutomationUpdateInput:
- type: object
- description: >-
- Data to update an existing automation.
- required:
- - trigger
- - settings
- - state
- properties:
- trigger:
- $ref: '#/components/schemas/AutomationTrigger'
- settings:
- $ref: '#/components/schemas/AutomationSettings'
- state:
- $ref: '#/components/schemas/AutomationState'
diff --git a/backend/src/api/components/automation/models.yaml b/backend/src/api/components/automation/models.yaml
deleted file mode 100644
index 428bf3d888..0000000000
--- a/backend/src/api/components/automation/models.yaml
+++ /dev/null
@@ -1,199 +0,0 @@
-components:
- schemas:
- # defines automation type enum
- AutomationType:
- description: Automation type
- type: string
- enum: ['webhook']
-
- # defines automation state enum
- AutomationState:
- description: Automation state
- type: string
- enum: ['active', 'disabled']
-
- # defines automation triggers
- AutomationTrigger:
- description: What will trigger an automation
- type: string
- enum: ['new_activity', 'new_member']
-
- # defines automation execution state
- AutomationExecutionState:
- description: What was the state of the automation execution
- type: string
- enum: ['success', 'error']
-
- # defines webhook automation settings
- WebhookAutomationSettings:
- description: Settings used by automation with type webhook
- type: object
- required:
- - url
- properties:
- url:
- description: URL to POST webhook data to
- type: string
- format: uri
-
- # defines new activity triggered automation settings
- NewActivityAutomationSettings:
- description: Settings used by automation that is triggered by new activities
- type: object
- required:
- - types
- - platforms
- - keywords
- - teamMemberActivities
- properties:
- types:
- description: 'If activity type matches any of these we should trigger this automation'
- type: array
- items:
- type: string
- platforms:
- description: 'If activity came from any of these platforms we should trigger this automation'
- type: array
- items:
- type: string
- keywords:
- description: 'If activity content contains any of these keywords we should trigger this automation'
- type: array
- items:
- type: string
- teamMemberActivities:
- description: 'If activity came from any of our team members - should we trigger automation or not?'
- type: boolean
-
- # defines automation settings object
- AutomationSettings:
- description: Settings based on automation type and trigger - you need to provide union object of both automation type based settings and trigger based settings
- type: object
- anyOf:
- - $ref: '#/components/schemas/WebhookAutomationSettings'
- - $ref: '#/components/schemas/NewActivityAutomationSettings'
-
- # Responses
- Automation:
- type: object
- required:
- - id
- - type
- - tenantId
- - trigger
- - settings
- - state
- - createdAt
- properties:
- id:
- description: Automation unique ID
- type: string
- format: uuid
- type:
- $ref: '#/components/schemas/AutomationType'
- tenantId:
- description: Automation tenant unique ID
- type: string
- format: uuid
- trigger:
- $ref: '#/components/schemas/AutomationTrigger'
- settings:
- $ref: '#/components/schemas/AutomationSettings'
- state:
- $ref: '#/components/schemas/AutomationState'
- createdAt:
- description: When was automation created
- type: string
- format: date-time
- lastExecutionAt:
- description: When was automation last executed
- type: string
- format: date-time
- lastExecutionState:
- description: State of the last automation execution
- $ref: '#/components/schemas/AutomationExecutionState'
- lastExecutionError:
- description: Error information if last automation execution failed
- type: object
-
- # Responses
- AutomationPage:
- type: object
- required:
- - rows
- - count
- - offset
- - limit
- properties:
- rows:
- description: Array of automations that were fetched
- type: array
- items:
- $ref: '#/components/schemas/Automation'
- count:
- description: How many total automations there are
- type: integer
- offset:
- description: What offset was used when preparing this response
- type: integer
- limit:
- description: What limit was used when preparing this response
- type: integer
-
- AutomationExecution:
- type: object
- required:
- - id
- - automationId
- - state
- - executedAt
- - eventId
- - payload
- properties:
- id:
- description: Automation execution unique ID
- type: string
- format: uuid
- automationId:
- description: Automation unique ID
- type: string
- format: uuid
- state:
- description: Automation execution state
- $ref: '#/components/schemas/AutomationExecutionState'
- error:
- description: If execution was not successful this object will contain error information
- type: object
- executedAt:
- description: Automation execution timestamp
- type: string
- format: date-time
- eventId:
- description: Unique ID of the event that triggered this automation execution.
- type: string
- payload:
- description: Payload that was sent when this execution was processed
- type: object
-
- AutomationExecutionPage:
- type: object
- required:
- - rows
- - count
- - offset
- - limit
- properties:
- rows:
- description: Automation Execution List
- type: array
- items:
- $ref: '#/components/schemas/AutomationExecution'
- count:
- description: How many items are there in total
- type: integer
- offset:
- description: What offset was used when preparing this response
- type: integer
- limit:
- description: What limit was used when preparing this response
- type: integer
diff --git a/backend/src/api/components/conversation/examples.yaml b/backend/src/api/components/conversation/examples.yaml
deleted file mode 100644
index cc1139bf61..0000000000
--- a/backend/src/api/components/conversation/examples.yaml
+++ /dev/null
@@ -1,503 +0,0 @@
-components:
- examples:
- Conversation:
- value:
- id: 24bdea79-3125-4950-bb38-07fa4a555012
- title: Best of dinesh and Gilfoyle
- slug: best-of-dinesh-and-gilfoyle
- published: true
- createdAt: '2022-10-05T12:21:53.271Z'
- updatedAt: '2022-10-05T12:21:53.271Z'
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- activities:
- - id: 89a136ed-336d-4586-8842-790775465212
- type: message
- timestamp: '2020-06-27T14:13:30.000Z'
- platform: discord
- isContribution: true
- score: 1
- sourceId: d42
- sourceParentId: null
- attributes: {}
- channel: piedpiper
- body: Sooner or later Gilfoyle's servers are going to fail and then it's all done
- title: null
- url: github.com/piedpiper/piedpier
- sentiment:
- label: negative
- mixed: 3.6482997238636017
- neutral: 19.5749893784523
- negative: 75.36468505859375
- positive: 1.4120269566774368
- sentiment: 2
- importHash: null
- createdAt: '2022-10-05T12:09:44.414Z'
- updatedAt: '2022-10-05T12:21:53.279Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: 24bdea79-3125-4950-bb38-07fa4a555012
- parentId: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- member:
- id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: 8
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-05T11:40:32.560Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- - id: c39dc046-da1d-4a25-8624-6b78aad00f30
- type: message
- timestamp: '2020-06-27T15:13:30.000Z'
- platform: discord
- isContribution: true
- score: 1
- sourceId: '2345'
- sourceParentId: '1234'
- attributes:
- reactions: 68
- channel: dev
- body: My servers could handle 10x the traffic, if they weren't busy apologizing for your sh*t codebase.
- title: null
- url: discord.gg/2345
- sentiment:
- label: negative
- mixed: 5.963129922747612
- neutral: 20.673033595085144
- negative: 69.99874711036682
- positive: 3.365083411335945
- sentiment: 5
- importHash: null
- createdAt: '2022-10-03T15:19:30.415Z'
- updatedAt: '2022-10-05T12:21:53.279Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: 24bdea79-3125-4950-bb38-07fa4a555012
- parentId: 782b426d-adc8-4fb4-a4ee-ab0bb07ffca0
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- member:
- id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: 8
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-05T11:40:32.560Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- conversationStarter:
- id: 89a136ed-336d-4586-8842-790775465212
- type: message
- timestamp: '2020-06-27T14:13:30.000Z'
- platform: discord
- isContribution: true
- score: 1
- sourceId: d42
- sourceParentId: null
- attributes: {}
- channel: piedpiper
- body: Sooner or later Gilfoyle's servers are going to fail and then it's all done
- title: null
- url: github.com/piedpiper/piedpier
- sentiment:
- label: negative
- mixed: 3.6482997238636017
- neutral: 19.5749893784523
- negative: 75.36468505859375
- positive: 1.4120269566774368
- sentiment: 2
- importHash: null
- createdAt: '2022-10-05T12:09:44.414Z'
- updatedAt: '2022-10-05T12:21:53.279Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: 24bdea79-3125-4950-bb38-07fa4a555012
- parentId: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- member:
- id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: 8
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-05T11:40:32.560Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- activityCount: 2
- memberCount: 2
- platform: discord
- channel: piedpiper
- lastActive: '2020-06-27T15:13:30.000Z'
-
- ConversationList:
- value:
- rows:
- - id: 291af008-7717-457e-9242-f5c507c8987b
- title: Code sprint over!
- slug: code-sprint-over
- published: false
- createdAt: '2022-10-03T15:38:05.900Z'
- updatedAt: '2022-10-03T15:38:05.900Z'
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- platform: github
- activityCount: 3
- lastActive: '2021-07-27T20:23:30.000Z'
- conversationStarter:
- id: 89a136ed-336d-4586-8842-790775465212
- type: message
- timestamp: '2020-06-27T14:13:30.000Z'
- platform: discord
- isContribution: true
- score: 1
- sourceId: d42
- sourceParentId: null
- attributes: {}
- channel: piedpiper
- body: Sooner or later Gilfoyle's servers are going to fail and then it's all done
- title: null
- url: github.com/piedpiper/piedpier
- sentiment:
- label: negative
- mixed: 3.6482997238636017
- neutral: 19.5749893784523
- negative: 75.36468505859375
- positive: 1.4120269566774368
- sentiment: 2
- importHash: null
- createdAt: '2022-10-05T12:09:44.414Z'
- updatedAt: '2022-10-05T12:21:53.279Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: 24bdea79-3125-4950-bb38-07fa4a555012
- parentId: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- member:
- id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: 8
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-05T11:40:32.560Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- lastReplies:
- - id: c39dc046-da1d-4a25-8624-6b78aad00f30
- type: message
- timestamp: '2020-06-27T15:13:30.000Z'
- platform: discord
- isContribution: true
- score: 1
- sourceId: '2345'
- sourceParentId: '1234'
- attributes:
- reactions: 68
- channel: dev
- body: My servers could handle 10x the traffic, if they weren't busy apologizing for your sh*t codebase.
- title: null
- url: discord.gg/2345
- sentiment:
- label: negative
- mixed: 5.963129922747612
- neutral: 20.673033595085144
- negative: 69.99874711036682
- positive: 3.365083411335945
- sentiment: 5
- importHash: null
- createdAt: '2022-10-03T15:19:30.415Z'
- updatedAt: '2022-10-05T12:21:53.279Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: 24bdea79-3125-4950-bb38-07fa4a555012
- parentId: 782b426d-adc8-4fb4-a4ee-ab0bb07ffca0
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- member:
- id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: 8
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-05T11:40:32.560Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- memberCount: 2
- channel: null
- - id: 24bdea79-3125-4950-bb38-07fa4a555012
- title: Best of dinesh and Gilfoyle
- slug: best-of-dinesh-and-gilfoyle
- published: true
- createdAt: '2022-10-05T12:21:53.271Z'
- updatedAt: '2022-10-05T12:21:53.271Z'
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- platform: discord
- activityCount: 1
- lastActive: '2020-06-29T15:13:30.000Z'
- conversationStarter:
- id: 89a136ed-336d-4586-8842-790775465212
- type: message
- timestamp: '2020-05-27T14:13:30.000Z'
- platform: discord
- isContribution: true
- score: 1
- sourceId: d42
- sourceParentId: null
- attributes: {}
- channel: piedpiper
- body: Best of Dinesh and gilfoyle
- title: null
- url: github.com/piedpiper/piedpier
- sentiment:
- label: negative
- mixed: 1.6482997238636017
- neutral: 12.5749893784523
- negative: 62.36468505859375
- positive: 1.4120269566774368
- sentiment: 2
- importHash: null
- createdAt: '2022-10-05T12:09:44.414Z'
- updatedAt: '2022-10-05T12:21:53.279Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: 24bdea79-3125-4950-bb38-07fa4a555012
- parentId: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- member:
- id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: 8
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-05T11:40:32.560Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- lastReplies:
- - id: c39dc046-da1d-4a25-8624-6b78aad00f30
- type: message
- timestamp: '2020-06-29T15:13:30.000Z'
- platform: discord
- isContribution: true
- score: 1
- sourceId: '2345'
- sourceParentId: '1234'
- attributes:
- reactions: 68
- channel: dev
- body: A very last reply to the conversation.
- title: null
- url: discord.gg/2345
- sentiment:
- label: negative
- mixed: 5.963129922747612
- neutral: 20.673033595085144
- negative: 69.99874711036682
- positive: 3.365083411335945
- sentiment: 5
- importHash: null
- createdAt: '2022-10-03T15:19:30.415Z'
- updatedAt: '2022-10-05T12:21:53.279Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: 24bdea79-3125-4950-bb38-07fa4a555012
- parentId: 782b426d-adc8-4fb4-a4ee-ab0bb07ffca0
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- member:
- id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: 8
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-05T11:40:32.560Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- memberCount: 2
- channel: dev
- count: 2
- limit: 10
- offset: 0
diff --git a/backend/src/api/components/conversation/inputs.yaml b/backend/src/api/components/conversation/inputs.yaml
deleted file mode 100644
index 8e3819f7f0..0000000000
--- a/backend/src/api/components/conversation/inputs.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-components:
- schemas:
diff --git a/backend/src/api/components/conversation/models.yaml b/backend/src/api/components/conversation/models.yaml
deleted file mode 100644
index 99432ac467..0000000000
--- a/backend/src/api/components/conversation/models.yaml
+++ /dev/null
@@ -1,81 +0,0 @@
-components:
- schemas:
- # defines the attributes of a conversation, excluding the ID
- ConversationNoId:
- type: object
- required:
- - platform
- - slug
- - tenantId
-
- description: A conversation is a group of activities. Some attributes, like slug, are mostly used in public pages.
- properties:
- title:
- description: Title of the conversation
- type: string
- slug:
- description: Unique slug of the conversation
- type: string
- published:
- description: Whether the conversation is publicaly visible from open pages.
- type: boolean
- default: false
- conversationStarter:
- description: The conversation starter activity
- type: object
- additionalProperties:
- $ref: '#/components/schemas/Activity'
- memberCount:
- description: Number of participating members in the conversation.
- type: integer
- lastActive:
- description: Last activity time in the conversation
- type: string
- format: date-time
- createdAt:
- description: Date the conversation was created
- type: string
- format: date-time
- updatedAt:
- description: Date the conversation was last updated
- type: string
- format: date-time
- tenantId:
- description: Your workspace/tenant id
- type: string
- format: uuid
-
- xml:
- name: Conversation
-
- # defines a complete conversation, including the ID
- Conversation:
- allOf:
- - $ref: '#/components/schemas/ConversationNoId'
- properties:
- id:
- description: Unique identifier of the conversation
- type: string
- activities:
- description: List of IDs of the activities in the conversation
- type: array
- items:
- type: string
-
- # Responses
- ConversationList:
- type: object
- properties:
- rows:
- type: array
- items:
- $ref: '#/components/schemas/Conversation'
- count:
- description: Count
- type: integer
- limit:
- description: Limit of records returned
- type: integer
- offset:
- description: Offset, for pagination
- type: integer
diff --git a/backend/src/api/components/member/examples.yaml b/backend/src/api/components/member/examples.yaml
deleted file mode 100644
index fc7ce57435..0000000000
--- a/backend/src/api/components/member/examples.yaml
+++ /dev/null
@@ -1,503 +0,0 @@
-components:
- examples:
- MemberUpsert:
- value:
- id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: -1
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-03T15:17:27.073Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
-
- MemberFind:
- value:
- id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: 8
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-05T11:40:32.560Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- activities:
- - id: 2dcbe40e-36e0-4929-ab21-a30467fd9a65
- type: pull_request-comment
- timestamp: '2021-07-27T20:23:30.000Z'
- platform: github
- isContribution: true
- score: 3
- sourceId: gh_3
- sourceParentId: gh_1
- attributes: {}
- channel: piedpiper
- body: Don't worry. I will continue to do it for you.
- title: null
- url: github.com/piedpiper/piedpier
- sentiment:
- label: positive
- mixed: 2.9098065569996834
- neutral: 25.578168034553528
- negative: 2.241993509232998
- positive: 69.27002668380737
- sentiment: 97
- importHash: null
- createdAt: '2022-10-03T15:47:20.151Z'
- updatedAt: '2022-10-03T15:47:20.220Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: 291af008-7717-457e-9242-f5c507c8987b
- parentId: 462ddc6b-5672-43b2-9018-4e3fd7332228
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- - id: c39dc046-da1d-4a25-8624-6b78aad00f30
- type: message
- timestamp: '2020-06-27T15:13:30.000Z'
- platform: discord
- isContribution: true
- score: 1
- sourceId: '2345'
- sourceParentId: '1234'
- attributes:
- reactions: 68
- channel: dev
- body: My servers could handle 10x the traffic, if they weren't busy apologizing for your sh*t codebase.
- title: null
- url: discord.gg/2345
- sentiment:
- label: negative
- mixed: 5.963129922747612
- neutral: 20.673033595085144
- negative: 69.99874711036682
- positive: 3.365083411335945
- sentiment: 5
- importHash: null
- createdAt: '2022-10-03T15:19:30.415Z'
- updatedAt: '2022-10-03T15:26:02.599Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: null
- parentId: 782b426d-adc8-4fb4-a4ee-ab0bb07ffca0
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- - id: 782b426d-adc8-4fb4-a4ee-ab0bb07ffca0
- type: message
- timestamp: '2020-05-27T15:13:30.000Z'
- platform: discord
- isContribution: true
- score: 1
- sourceId: '1234'
- sourceParentId: null
- attributes:
- reactions: 43
- channel: dev
- body: It's not magic. It's talend and sweat.
- title: null
- url: discord.gg/1234
- sentiment:
- label: negative
- mixed: 1.1410574428737164
- neutral: 11.00325882434845
- negative: 85.99738478660583
- positive: 1.8582981079816818
- sentiment: 2
- importHash: null
- createdAt: '2022-10-03T15:18:11.294Z'
- updatedAt: '2022-10-03T15:21:49.402Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: null
- parentId: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- lastActivity:
- id: 2dcbe40e-36e0-4929-ab21-a30467fd9a65
- type: pull_request-comment
- timestamp: '2021-07-27T20:23:30.000Z'
- platform: github
- isContribution: true
- score: 3
- sourceId: gh_3
- sourceParentId: gh_1
- attributes: {}
- channel: piedpiper
- body: Don't worry. I will continue to do it for you.
- title: null
- url: github.com/piedpiper/piedpier
- sentiment:
- label: positive
- mixed: 2.9098065569996834
- neutral: 25.578168034553528
- negative: 2.241993509232998
- positive: 69.27002668380737
- sentiment: 97
- importHash: null
- createdAt: '2022-10-03T15:47:20.151Z'
- updatedAt: '2022-10-03T15:47:20.220Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: 291af008-7717-457e-9242-f5c507c8987b
- parentId: 462ddc6b-5672-43b2-9018-4e3fd7332228
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- lastActive: '2021-07-27T20:23:30.000Z'
- activityCount: 3
- averageSentiment: 34.67
- tags:
- - id: 38807625-6302-47b5-9f35-58566ddec83b
- name: developer
- importHash: null
- createdAt: '2022-10-05T11:41:20.162Z'
- updatedAt: '2022-10-05T11:41:20.162Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- - id: dca36c33-38cd-4e68-8ba8-515167e00971
- name: attended-hooli-con
- importHash: null
- createdAt: '2022-10-05T11:42:17.414Z'
- updatedAt: '2022-10-05T11:42:17.414Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- organizations:
- - id: 31bff99a-2eac-49f5-b015-cba95aa6e530
- name: Pied Piper
- url: https://piedpiper.io
- description: The new internet
- emails:
- - richard@piedpiper.io
- - hello@piedpiper.io
- phoneNumbers: null
- logo: null
- tags:
- - new-internet
- - making-the-world-a-better-place
- - not-like-hooli
- twitter:
- bio: The internet we deserve
- handle: PiedPiper
- location: The valley
- followers: 5000
- following: 20
- linkedin:
- handle: company/PiedPiper
- crunchbase:
- handle: company/PiedPiper
- employees: 50
- revenueRange:
- max: 50
- min: 10
- importHash: null
- createdAt: '2022-10-03T16:15:21.812Z'
- updatedAt: '2022-10-03T16:15:21.812Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- tasks: []
- notes: []
- noMerge: []
- toMerge: []
-
- MemberList:
- value:
- rows:
- - id: 2effc566-1932-44f3-a821-2d692933a953
- username:
- github: dinesh
- twitter: dinesh.chugtai
- attributes:
- bio:
- github: Lead developer at Pied Piper
- default: Pakistani Denzel. Tesla and gold chain owner.
- twitter: Pakistani Denzel. Tesla and gold chain owner.
- url:
- github: https://github.com/dinesh
- default: https://t.co/d
- twitter: https://t.co/d
- location:
- custom: Silicon Valley
- github: Palo alto
- default: Silicon Valley
- displayName: Dinesh
- email: dinesh@piedpiper.io
- score: 9
- joinedAt: '2022-10-03T15:30:55.672Z'
- importHash: null
- reach:
- total: 100
- github: 60
- twitter: 40
- createdAt: '2022-10-03T15:30:55.679Z'
- updatedAt: '2022-10-05T11:39:58.095Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- identities:
- - github
- - twitter
- activeOn:
- - github
- activityCount: '2'
- lastActive: '2021-07-27T20:22:30.000Z'
- averageSentiment: '82.50'
- noMerge: []
- toMerge: []
- lastActivity:
- id: 73aa13b7-1ef9-4987-a273-e560edff94ca
- type: pull_request-comment
- timestamp: '2021-07-27T20:22:30.000Z'
- platform: github
- isContribution: true
- score: 3
- sourceId: gh_2
- sourceParentId: gh_1
- attributes: {}
- channel: piedpiper
- body: I will never underestimate my talents again.
- title: null
- url: github.com/piedpiper/piedpier
- sentiment:
- label: positive
- mixed: 14.308956265449524
- neutral: 14.437079429626465
- negative: 9.826807677745819
- positive: 61.42715811729431
- sentiment: 86
- importHash: null
- createdAt: '2022-10-03T15:38:05.847Z'
- updatedAt: '2022-10-03T15:46:34.610Z'
- deletedAt: null
- memberId: 2effc566-1932-44f3-a821-2d692933a953
- conversationId: 291af008-7717-457e-9242-f5c507c8987b
- parentId: 462ddc6b-5672-43b2-9018-4e3fd7332228
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- organizations:
- - id: 31bff99a-2eac-49f5-b015-cba95aa6e530
- name: Pied Piper
- url: https://piedpiper.io
- description: The new internet
- emails:
- - richard@piedpiper.io
- - hello@piedpiper.io
- phoneNumbers: null
- logo: null
- tags:
- - new-internet
- - making-the-world-a-better-place
- - not-like-hooli
- twitter:
- bio: The internet we deserve
- handle: PiedPiper
- location: The valley
- followers: 5000
- following: 20
- linkedin:
- handle: company/PiedPiper
- crunchbase:
- handle: company/PiedPiper
- employees: 50
- revenueRange:
- max: 50
- min: 10
- importHash: null
- createdAt: '2022-10-03T16:15:21.812Z'
- updatedAt: '2022-10-03T16:15:21.812Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- tags:
- - id: 38807625-6302-47b5-9f35-58566ddec83b
- name: developer
- importHash: null
- createdAt: '2022-10-05T11:41:20.162Z'
- updatedAt: '2022-10-05T11:41:20.162Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- - id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: 8
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-05T11:40:32.560Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- activityCount: '3'
- lastActive: '2021-07-27T20:23:30.000Z'
- averageSentiment: '34.67'
- noMerge: []
- toMerge: []
- lastActivity:
- id: 2dcbe40e-36e0-4929-ab21-a30467fd9a65
- type: pull_request-comment
- timestamp: '2021-07-27T20:23:30.000Z'
- platform: github
- isContribution: true
- score: 3
- sourceId: gh_3
- sourceParentId: gh_1
- attributes: {}
- channel: piedpiper
- body: Don't worry. I will continue to do it for you.
- title: null
- url: github.com/piedpiper/piedpier
- sentiment:
- label: positive
- mixed: 2.9098065569996834
- neutral: 25.578168034553528
- negative: 2.241993509232998
- positive: 69.27002668380737
- sentiment: 97
- importHash: null
- createdAt: '2022-10-03T15:47:20.151Z'
- updatedAt: '2022-10-03T15:47:20.220Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: 291af008-7717-457e-9242-f5c507c8987b
- parentId: 462ddc6b-5672-43b2-9018-4e3fd7332228
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- organizations:
- - id: 31bff99a-2eac-49f5-b015-cba95aa6e530
- name: Pied Piper
- url: https://piedpiper.io
- description: The new internet
- emails:
- - richard@piedpiper.io
- - hello@piedpiper.io
- phoneNumbers: null
- logo: null
- tags:
- - new-internet
- - making-the-world-a-better-place
- - not-like-hooli
- twitter:
- bio: The internet we deserve
- handle: PiedPiper
- location: The valley
- followers: 5000
- following: 20
- linkedin:
- handle: company/PiedPiper
- crunchbase:
- handle: company/PiedPiper
- employees: 50
- revenueRange:
- max: 50
- min: 10
- importHash: null
- createdAt: '2022-10-03T16:15:21.812Z'
- updatedAt: '2022-10-03T16:15:21.812Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- tags:
- - id: 38807625-6302-47b5-9f35-58566ddec83b
- name: developer
- importHash: null
- createdAt: '2022-10-05T11:41:20.162Z'
- updatedAt: '2022-10-05T11:41:20.162Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- - id: dca36c33-38cd-4e68-8ba8-515167e00971
- name: attended-hooli-con
- importHash: null
- createdAt: '2022-10-05T11:42:17.414Z'
- updatedAt: '2022-10-05T11:42:17.414Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- count: 2
- offset: 0
- limit: 10
diff --git a/backend/src/api/components/member/inputs.yaml b/backend/src/api/components/member/inputs.yaml
deleted file mode 100644
index 451e881980..0000000000
--- a/backend/src/api/components/member/inputs.yaml
+++ /dev/null
@@ -1,70 +0,0 @@
-components:
- schemas:
- MemberPlatformHelper:
- type: object
- required:
- - platform
- properties:
- platform:
- type: string
- description: Platform for which to check member existence.
-
- MemberOrganizations:
- type: object
- properties:
- organizations:
- description: >-
- Organizations associated with the member. Each element in the array is the name of the organization, or an organization object.
- If the organization does not exist, it will be created.
- type: array
- items:
- $ref: '#/components/schemas/OrganizationNoId'
-
- MemberOrganizationsUpdate:
- type: object
- properties:
- organizations:
- description: >-
- Organizations associated with the member. Each element in the array is the name of the organization, or an organization object.
- If the organization does not exist, it will be created.
- type: array
- items:
- type: string
-
- MemberInputRelations:
- type: object
- properties:
- tags:
- description: Tags associated with the member. Each element in the array is the ID of the tag.
- type: array
- items:
- type: string
- tasks:
- description: Tasks associated with the member. Each element in the array is the ID of the task.
- type: array
- items:
- type: string
- notes:
- description: Notes associated with the member. Each element in the array is the ID of the note.
- type: array
- items:
- type: string
- activities:
- description: Activities associated with the member. Each element in the array is the ID of the activity.
- type: array
- items:
- type: string
-
- MemberUpsertInput:
- allOf:
- - $ref: '#/components/schemas/MemberPlatformHelper'
- - $ref: '#/components/schemas/MemberNoId'
- - $ref: '#/components/schemas/MemberOrganizations'
- - $ref: '#/components/schemas/MemberInputRelations'
-
- MemberUpdateInput:
- allOf:
- - $ref: '#/components/schemas/MemberPlatformHelper'
- - $ref: '#/components/schemas/MemberNoId'
- - $ref: '#/components/schemas/MemberInputRelations'
- - $ref: '#/components/schemas/MemberOrganizationsUpdate'
diff --git a/backend/src/api/components/member/memberAttributeSettings/examples.yaml b/backend/src/api/components/member/memberAttributeSettings/examples.yaml
deleted file mode 100644
index 8de609b41f..0000000000
--- a/backend/src/api/components/member/memberAttributeSettings/examples.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-components:
- examples:
- MemberAttributeSettings:
- value:
- id: 9eaedce9-1f3a-4a75-adc8-e475cbc47553'
- type: 'string'
- canDelete: false
- show: true
- label: 'Url'
- name: 'url'
- createdAt: '2022-09-07'
- updatedAt: '2022-09-07'
- tenantId: 'fcd5b9cc-144b-4687-8fd9-34818f35e70d'
-
- MemberAttributeSettings2:
- value:
- id: '13bb9e12-c371-44ad-8806-0678c2f53dd1'
- type: 'boolean'
- canDelete: false
- show: true
- label: 'is Hireable'
- name: 'isHireable'
- createdAt: '2022-09-07'
- updatedAt: '2022-09-07'
- tenantId: 'fcd5b9cc-144b-4687-8fd9-34818f35e70d'
-
- MemberAttributeSettingsList:
- value:
- rows:
- - $ref: '#/components/examples/MemberAttributeSettings'
- - $ref: '#/components/examples/MemberAttributeSettings2'
- count: 2
diff --git a/backend/src/api/components/member/memberAttributeSettings/inputs.yaml b/backend/src/api/components/member/memberAttributeSettings/inputs.yaml
deleted file mode 100644
index a78edca3d6..0000000000
--- a/backend/src/api/components/member/memberAttributeSettings/inputs.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-components:
- schemas:
- MemberAttributeSettingsCreateInput:
- description: >-
- A member attribute.
- allOf:
- - $ref: '#/components/schemas/MemberAttributeSettingsNoId'
-
- MemberAttributeSettingsUpdateInput:
- description: >-
- A member attribute.
- properties:
- label:
- description: >-
- Human-friendly name of the attribute. Label is unique in workspaces.
- type: string
- show:
- description: >-
- Whether to show the member attribute in the web app or not.
- type: boolean
- default: true
diff --git a/backend/src/api/components/member/memberAttributeSettings/models.yaml b/backend/src/api/components/member/memberAttributeSettings/models.yaml
deleted file mode 100644
index d32f1d72c4..0000000000
--- a/backend/src/api/components/member/memberAttributeSettings/models.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
-components:
- schemas:
- # defines the settings of a member attribute, excluding the ID
- MemberAttributeSettingsNoId:
- type: object
- required:
- - label
- - type
-
- description: A member attribute that can be created dynamically.
- properties:
- label:
- description: Human-friendly name of the attribute. Label is unique in workspaces.
- type: string
- name:
- description: Camel-case code friendly name of the attribute. If ommited, name will be generated from the label. Name is unique in workspaces.
- type: string
- type:
- description: Type of the attribute's value
- type: string
- enum: ['boolean', 'number', 'email', 'string', 'url', 'date']
-
- canDelete:
- description: If set to false, member attribute can not be deleted in future requests.
- type: boolean
- default: false
-
- show:
- description: Whether to show the member attribute in the web app or not.
- type: boolean
- default: true
-
- createdAt:
- description: Date the member attribute was created.
- type: string
- format: date-time
- updatedAt:
- description: Date the member attribute was last updated.
- type: string
- format: date-time
-
- xml:
- name: MemberAttributeSettings
-
- # defines the settings of a member attribute, including the ID
- MemberAttributeSettings:
- type: object
- allOf:
- - $ref: '#/components/schemas/MemberAttributeSettingsNoId'
- properties:
- id:
- description: The attribute settings ID.
diff --git a/backend/src/api/components/member/memberAttributeSettings/responses.yaml b/backend/src/api/components/member/memberAttributeSettings/responses.yaml
deleted file mode 100644
index d980fe97cf..0000000000
--- a/backend/src/api/components/member/memberAttributeSettings/responses.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-components:
- schemas:
- # defines the response for a list of member attribute settings
- MemberAttributeSettingsList:
- description: List and count member attribute settings.
- type: object
- properties:
- rows:
- description: List of member attribute settings
- type: array
- items:
- $ref: '#/components/schemas/MemberAttributeSettings'
- count:
- description: Count
- type: integer
- limit:
- description: Limit of records returned
- type: integer
- offset:
- description: Offset, for pagination
- type: integer
- xml:
- name: MemberAttributeSettingsList
diff --git a/backend/src/api/components/member/models.yaml b/backend/src/api/components/member/models.yaml
deleted file mode 100644
index caaaf71f4d..0000000000
--- a/backend/src/api/components/member/models.yaml
+++ /dev/null
@@ -1,75 +0,0 @@
-components:
- schemas:
- # defines a member, excluding the ID
- MemberNoId:
- description: A member of your community.
- type: object
- required:
- - username
-
- properties:
- username:
- description: >-
- Usernames of the member in each platform. Exactly one for each platform in which the member is active.
- Example: ```{ github: 'iamgilfoyle', discord: 'gilfoyle '}```
- type: object
- additionalProperties: true
- displayName:
- description: UI friendly name of the member
- type: string
- emails:
- description: Email addresses of the member
- type: array
- items:
- type: string
- joinedAt:
- description: Date of joining the community
- type: string
- format: date-time
- score:
- description: Engagement score of the member. From 0 to 10. Set -1 for not yet calculated.
- type: number
- reach:
- description: >-
- Reach of the member in each platform. At most one for each platform in which the member is active.
- Example: ```{ github: 10, twitter: 250, total: 260 }```
- type: object
- properties:
- total:
- description: Sum of all the platform reaches.
- type: number
- additionalProperties: true
- attributes:
- description: >-
- Attributes associated to the member. Each attribute must be an object with it's value for each platform, and a default.
- For example: ```{"location": {"github": "San Francisco", "twitter": "California", "default": "San Francisco"}}```
- type: object
- additionalProperties:
- $ref: '#/components/schemas/MemberAttribute'
- createdAt:
- description: Date the member was created
- type: string
- format: date-time
- updatedAt:
- description: Date the member was last updated
- type: string
- format: date-time
-
- xml:
- name: Member
-
- # Member attribute
- MemberAttribute:
- description: >-
- A key for each platform.
- - ```default``` is the value that will be displayed by default in the app
- - ```custom``` is the value that will be displayed if the user has set a custom value for the attribute
- type: object
- properties:
- default:
- description: Default value for the attribute. This is set automatically according to crowd.dev rules.
- type: string
- custom:
- description: Custom value for the attribute. This is optionally set by the user. It will always be picked as the default when sent.
- type: string
- additionalProperties: true
diff --git a/backend/src/api/components/member/query.yaml b/backend/src/api/components/member/query.yaml
deleted file mode 100644
index 3edef18a02..0000000000
--- a/backend/src/api/components/member/query.yaml
+++ /dev/null
@@ -1,49 +0,0 @@
-components:
- schemas:
- FilterType:
- type: object
- additionalProperties:
- oneOf:
- - type: string
- - $ref: '#/components/schemas/FilterType'
-
- MemberQuery:
- description: >-
- All the parameters you can use to query members.
-
- properties:
- filter:
- description: >-
- Filter. Please refer to filter docs.
- type: string
- format: blob
-
- orderBy:
- type: string
- enum:
- - activityCount_ASC
- - activityCount_DESC
- - score_ASC
- - score_DESC
- - joinedAt_ASC
- - joinedAt_DESC
- - createdAt_ASC
- - createdAt_DESC
- - organisation_ASC
- - organisation_DESC
- - location_ASC
- - location_DESC
-
- limit:
- description: >-
- Limit the number of records returned. Default is 10.
- type: integer
- minimum: 1
- maximum: 200
- default: 10
- offset:
- description: >-
- Offset the number of records returned. Default is 0.
- type: integer
- minimum: 0
- default: 0
diff --git a/backend/src/api/components/member/responses.yaml b/backend/src/api/components/member/responses.yaml
deleted file mode 100644
index 0a658ffb91..0000000000
--- a/backend/src/api/components/member/responses.yaml
+++ /dev/null
@@ -1,94 +0,0 @@
-components:
- schemas:
- # Single member
- Member:
- type: object
- allOf:
- - $ref: '#/components/schemas/MemberNoId'
- properties:
- id:
- description: The unique identifier for a member of your community.
- activityCount:
- description: Number of activities performed by the member.
- type: integer
- lastActivity:
- description: Timestamp, type and platform of the last activity performed by the member.
- type: object
- properties:
- type:
- description: Type of the last activity
- type: string
- timestamp:
- description: Date and time of the last activity
- type: string
- format: date-time
- platform:
- description: Platform of the last activity
- type: string
- averageSentiment:
- description: Average sentiment of the member. From 0 to 100.
- type: number
- identities:
- description: List of platforms the member has identities in.
- type: array
- items:
- type: string
- activeOn:
- description: List of platforms the member is active on.
- type: array
- items:
- type: string
-
- MemberRelationsResponse:
- description: Relations of a member.
- type: object
- properties:
- tags:
- description: Tags associated with the member.
- type: array
- items:
- $ref: '#/components/schemas/Tag'
- notes:
- description: Notes associated with the member.
- type: array
- items:
- $ref: '#/components/schemas/Note'
- tasks:
- description: Tasks associated with the member.
- type: array
- items:
- $ref: '#/components/schemas/Task'
- organizations:
- description: Organizations associated with the member.
- type: array
- items:
- $ref: '#/components/schemas/Organization'
-
- MemberResponse:
- description: A member of your community.
- type: object
- allOf:
- - $ref: '#/components/schemas/Member'
- - $ref: '#/components/schemas/MemberRelationsResponse'
-
- # List
- MemberList:
- description: List and count of members.
- type: object
- properties:
- rows:
- description: List of members
- type: array
- items:
- $ref: '#/components/schemas/MemberResponse'
- count:
- description: Count
- type: integer
- limit:
- description: Limit of records returned
- type: integer
- offset:
- description: Offset, for pagination
- type: integer
- xml:
- name: MembersList
diff --git a/backend/src/api/components/note/examples.yaml b/backend/src/api/components/note/examples.yaml
deleted file mode 100644
index 743eea2785..0000000000
--- a/backend/src/api/components/note/examples.yaml
+++ /dev/null
@@ -1,100 +0,0 @@
-components:
- examples:
- Note2:
- value:
- id: 39c850f6-fb96-4d16-8e8c-cd7072e33925
- body: Refused to have a user feedback call
- importHash: null
- createdAt: '2022-10-03T16:00:57.867Z'
- updatedAt: '2022-10-03T16:00:57.867Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- members:
- - id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: -1
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-03T15:17:27.073Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
-
- Note:
- value:
- id: 196c07da-14e0-419e-bd9a-5f15c721a694
- body: Likes frunks
- importHash: null
- createdAt: '2022-10-05T11:58:30.977Z'
- updatedAt: '2022-10-05T11:58:30.977Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- members:
- - id: 2effc566-1932-44f3-a821-2d692933a953
- username:
- github: dinesh
- twitter: dinesh.chugtai
- attributes:
- bio:
- github: Lead developer at Pied Piper
- default: Pakistani Denzel. Tesla and gold chain owner.
- twitter: Pakistani Denzel. Tesla and gold chain owner.
- url:
- github: https://github.com/dinesh
- default: https://t.co/d
- twitter: https://t.co/d
- location:
- custom: Silicon Valley
- github: Palo alto
- default: Silicon Valley
- displayName: Dinesh
- email: dinesh@piedpiper.io
- score: 9
- joinedAt: '2022-10-03T15:30:55.672Z'
- importHash: null
- reach:
- total: 100
- github: 60
- twitter: 40
- createdAt: '2022-10-03T15:30:55.679Z'
- updatedAt: '2022-10-05T11:39:58.095Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
-
- NoteList:
- value:
- rows:
- - $ref: '#/components/examples/Note'
- - $ref: '#/components/examples/Note2'
- count: 2
- limit: 10
- offset: 0
diff --git a/backend/src/api/components/note/inputs.yaml b/backend/src/api/components/note/inputs.yaml
deleted file mode 100644
index d3d0debf7b..0000000000
--- a/backend/src/api/components/note/inputs.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-components:
- schemas:
- NoteInputRelations:
- type: object
- properties:
- members:
- description: Members associated with the note. Each element in the array is the ID of the member.
- type: array
- items:
- type: string
-
- NoteInput:
- allOf:
- - $ref: '#/components/schemas/NoteNoId'
- - $ref: '#/components/schemas/NoteInputRelations'
diff --git a/backend/src/api/components/note/models.yaml b/backend/src/api/components/note/models.yaml
deleted file mode 100644
index 7ca2a67ef1..0000000000
--- a/backend/src/api/components/note/models.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-components:
- schemas:
- # defines a note, excluding the ID
- NoteNoId:
- description: A created note.
- type: object
- properties:
- body:
- description: The body of the note.
- type: string
- format: blob
- createdAt:
- description: Date the note was created.
- type: string
- format: date-time
- updatedAt:
- description: Date the note was last updated.
- type: string
- format: date-time
-
- xml:
- name: Note
diff --git a/backend/src/api/components/note/query.yaml b/backend/src/api/components/note/query.yaml
deleted file mode 100644
index b28c34f3c2..0000000000
--- a/backend/src/api/components/note/query.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-components:
- schemas:
- FilterType:
- type: object
- additionalProperties:
- oneOf:
- - type: string
- - $ref: '#/components/schemas/FilterType'
-
- NoteQuery:
- description: >-
- All the parameters you can use to query notes.
-
- properties:
- filter:
- description: >-
- Filter. Please refer to filter docs.
- type: string
- format: blob
-
- orderBy:
- type: string
- enum:
- - createdAt_ASC
- - createdAt_DESC
-
- limit:
- description: >-
- Limit the number of records returned. Default is 10.
- type: integer
- minimum: 1
- maximum: 200
- default: 10
- offset:
- description: >-
- Offset the number of records returned. Default is 0.
- type: integer
- minimum: 0
- default: 0
diff --git a/backend/src/api/components/note/responses.yaml b/backend/src/api/components/note/responses.yaml
deleted file mode 100644
index eb2a501768..0000000000
--- a/backend/src/api/components/note/responses.yaml
+++ /dev/null
@@ -1,53 +0,0 @@
-components:
- schemas:
- # Single note
- Note:
- type: object
- allOf:
- - $ref: '#/components/schemas/NoteNoId'
- properties:
- id:
- description: The ID of the note.
- body:
- description: The body of the note.
- type: string
- format: blob
-
- NoteRelationsResponse:
- description: Relations of a note.
- type: object
- properties:
- members:
- description: Members associated with the note.
- type: array
- items:
- $ref: '#/components/schemas/Member'
-
- NoteResponse:
- description: A note of your community.
- type: object
- allOf:
- - $ref: '#/components/schemas/Note'
- - $ref: '#/components/schemas/NoteRelationsResponse'
-
- # List
- NoteList:
- description: List and count of notes.
- type: object
- properties:
- rows:
- description: List of notes
- type: array
- items:
- $ref: '#/components/schemas/NoteResponse'
- count:
- description: Count
- type: integer
- limit:
- description: Limit of records returned
- type: integer
- offset:
- description: Offset, for pagination
- type: integer
- xml:
- name: NotesList
diff --git a/backend/src/api/components/organization/examples.yaml b/backend/src/api/components/organization/examples.yaml
deleted file mode 100644
index 9c3f1daed8..0000000000
--- a/backend/src/api/components/organization/examples.yaml
+++ /dev/null
@@ -1,141 +0,0 @@
-components:
- examples:
- OrganizationCreate:
- value:
- id: 31bff99a-2eac-49f5-b015-cba95aa6e530
- name: Pied Piper
- url: https://piedpiper.io
- description: The new internet
- emails:
- - richard@piedpiper.io
- - hello@piedpiper.io
- phoneNumbers: null
- logo: null
- tags:
- - new-internet
- - making-the-world-a-better-place
- - not-like-hooli
- twitter:
- bio: The internet we deserve
- handle: PiedPiper
- location: The valley
- followers: 5000
- following: 20
- linkedin:
- handle: company/PiedPiper
- crunchbase:
- handle: company/PiedPiper
- employees: 50
- revenueRange:
- max: 50
- min: 10
- importHash: null
- createdAt: '2022-10-03T16:15:21.812Z'
- updatedAt: '2022-10-03T16:15:21.812Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- memberCount: 2
- activityCount: 4
-
- Organization:
- value:
- id: 31bff99a-2eac-49f5-b015-cba95aa6e530
- name: Pied Piper
- url: https://piedpiper.io
- description: The new internet
- emails:
- - richard@piedpiper.io
- - hello@piedpiper.io
- phoneNumbers: null
- logo: null
- tags:
- - new-internet
- - making-the-world-a-better-place
- - not-like-hooli
- identities:
- - github
- - twitter
- activeOn:
- - github
- lastActive: '2022-10-03T16:15:21.812Z'
- joinedAt: '2022-05-03T11:16:32.812Z'
- twitter:
- bio: The internet we deserve
- handle: PiedPiper
- location: The valley
- followers: 5000
- following: 20
- linkedin:
- handle: company/PiedPiper
- crunchbase:
- handle: company/PiedPiper
- employees: 50
- revenueRange:
- max: 50
- min: 10
- importHash: null
- createdAt: '2022-10-03T16:15:21.812Z'
- updatedAt: '2022-10-03T16:15:21.812Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- memberCount: 2
- activityCount: 4
-
- Organization2:
- value:
- id: 65257687-0bfa-498e-8b2f-53559f41522b
- name: Hooli
- url: https://hooli.xyz
- description: Hooli is an international corporation founded by Gavin Belson and Peter Gregory
- emails:
- - gavin@hooli.xyz
- phoneNumbers: null
- logo: null
- tags:
- - hooli
- - tethics
- - not-google
- identities:
- - devto
- - github
- - twitter
- activeOn:
- - devto
- lastActive: '2022-10-04'
- joinedAt: '2020-01-30'
- twitter:
- bio: Hooli is an international corporation founded by Gavin Belson and Peter Gregory
- handle: hooli
- location: Menlo Park
- followers: 500000
- following: 0
- linkedin:
- handle: company/Hooli
- crunchbase:
- handle: company/Hooli
- employees: 4000
- revenueRange:
- max: 500
- min: 100
- importHash: null
- createdAt: '2022-10-05T12:03:11.228Z'
- updatedAt: '2022-10-05T12:03:11.228Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- memberCount: 0
- activityCount: 0
-
- OrganizationList:
- value:
- rows:
- - $ref: '#/components/examples/Organization'
- - $ref: '#/components/examples/Organization2'
- count: 2
- limit: 10
- offset: 0
diff --git a/backend/src/api/components/organization/inputs.yaml b/backend/src/api/components/organization/inputs.yaml
deleted file mode 100644
index 6b8276301b..0000000000
--- a/backend/src/api/components/organization/inputs.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-components:
- schemas:
- OrganizationInputRelations:
- type: object
- properties:
- members:
- description: Members associated with the organization. Each element in the array is the ID of the member.
- type: array
- items:
- type: string
- format: uuid
-
- OrganizationInput:
- allOf:
- - $ref: '#/components/schemas/OrganizationNoId'
- - $ref: '#/components/schemas/OrganizationInputRelations'
diff --git a/backend/src/api/components/organization/models.yaml b/backend/src/api/components/organization/models.yaml
deleted file mode 100644
index 695131f34f..0000000000
--- a/backend/src/api/components/organization/models.yaml
+++ /dev/null
@@ -1,116 +0,0 @@
-components:
- schemas:
- # defines a organization, excluding the ID
- OrganizationNoId:
- description: A created organization.
- type: object
- required:
- - name
- properties:
- name:
- description: The name of the organization.
- type: string
- url:
- description: The URL of the organization.
- type: string
- description:
- description: A short description of the organization.
- type: string
- format: blob
- logo:
- description: A URL for logo of the organization.
- type: string
- emails:
- description: The emails for contacting the organization.
- type: array
- items:
- type: string
- phoneNumbers:
- description: The phone numbers for contacting for the organization.
- type: array
- items:
- type: string
- parentUrl:
- description: The URL of the parent organization if it has one (for example if it has been acquired).
- type: string
- tags:
- description: Tags associated with the organization.
- type: array
- items:
- type: string
- twitter:
- description: Twitter information for the organization.
- type: object
- properties:
- handle:
- description: The Twitter handle for the organization.
- type: string
- id:
- description: The Twitter ID for the organization.
- type: string
- bio:
- description: The Twitter bio for the organization.
- type: string
- followers:
- description: The number of followers on Twitter.
- type: integer
- location:
- description: The Twitter location for the organization.
- type: string
- site:
- description: The website linked to the organization's Twitter profile.
- type: string
- avatar:
- description: The URL for the organization's Twitter avatar.
- type: string
- employees:
- description: The number of employees of the organization.
- type: integer
- revenueRange:
- description: The estimated revenue range of the organization.
- type: object
- properties:
- min:
- description: The minimum estimated revenue of the organization.
- type: integer
- max:
- description: The maximum estimated revenue of the organization.
- type: integer
- linkedin:
- description: 'LinkedIn information for the organization.'
- type: object
- properties:
- handle:
- description: The LinkedIn handle for the organization.
- type: string
- crunchbase:
- description: 'Crunchbase information for the organization.'
- type: object
- properties:
- handle:
- description: The Crunchbase handle for the organization.
- type: string
- activeOn:
- description: List of platforms the organization members are active on.
- type: array
- items:
- type: string
- identities:
- description: List of platforms the organization members have identities in.
- type: array
- items:
- type: string
- memberCount:
- description: Number of members organization has.
- type: integer
- createdAt:
- description: Date the organization was created.
- type: string
- format: date-time
- updatedAt:
- description: Date the organization was last updated.
- type: string
- format: date-time
-
- xml:
- name: Organization
diff --git a/backend/src/api/components/organization/query.yaml b/backend/src/api/components/organization/query.yaml
deleted file mode 100644
index 14f00224f7..0000000000
--- a/backend/src/api/components/organization/query.yaml
+++ /dev/null
@@ -1,47 +0,0 @@
-components:
- schemas:
- FilterType:
- type: object
- additionalProperties:
- oneOf:
- - type: string
- - $ref: '#/components/schemas/FilterType'
-
- OrganizationQuery:
- description: >-
- All the parameters you can use to query organizations.
-
- properties:
- filter:
- description: >-
- Filter. Please refer to filter docs.
- type: string
- format: blob
-
- orderBy:
- type: string
- enum:
- - createdAt_ASC
- - createdAt_DESC
- - memberCount_ASC
- - memberCount_DESC
- - activityCount_ASC
- - activityCount_DESC
- - joinedAt_ASC
- - joinedAt_DESC
- - lastActive_ASC
- - lastActive_DESC
-
- limit:
- description: >-
- Limit the number of records returned. Default is 10.
- type: integer
- minimum: 1
- maximum: 200
- default: 10
- offset:
- description: >-
- Offset the number of records returned. Default is 0.
- type: integer
- minimum: 0
- default: 0
diff --git a/backend/src/api/components/organization/responses.yaml b/backend/src/api/components/organization/responses.yaml
deleted file mode 100644
index d210b950a5..0000000000
--- a/backend/src/api/components/organization/responses.yaml
+++ /dev/null
@@ -1,71 +0,0 @@
-components:
- schemas:
- # Single organization
- Organization:
- type: object
- allOf:
- - $ref: '#/components/schemas/OrganizationNoId'
- properties:
- id:
- description: The ID of the organization.
- body:
- description: The body of the organization.
- type: string
- format: blob
-
- OrganizationRelationsResponse:
- description: Relations of a organization.
- type: object
- properties:
- members:
- description: Members associated with the organization.
- type: array
- items:
- $ref: '#/components/schemas/Member'
- activeOn:
- description: The platforms where the organization is active.
- type: array
- items:
- type: string
- identities:
- description: The list of identities of the members in the organization.
- type: array
- items:
- type: string
- lastActive:
- description: The last time the organization was active.
- type: string
- format: date-time
- joinedAt:
- description: The date the first member from the organization joined the community.
- type: string
- format: date-time
-
- OrganizationResponse:
- description: A organization of your community.
- type: object
- allOf:
- - $ref: '#/components/schemas/Organization'
- - $ref: '#/components/schemas/OrganizationRelationsResponse'
-
- # List
- OrganizationList:
- description: List and count of organizations.
- type: object
- properties:
- rows:
- description: List of organizations
- type: array
- items:
- $ref: '#/components/schemas/OrganizationResponse'
- count:
- description: Count
- type: integer
- limit:
- description: Limit of records returned
- type: integer
- offset:
- description: Offset, for pagination
- type: integer
- xml:
- name: OrganizationsList
diff --git a/backend/src/api/components/parameters.yaml b/backend/src/api/components/parameters.yaml
deleted file mode 100644
index 7e28f60f71..0000000000
--- a/backend/src/api/components/parameters.yaml
+++ /dev/null
@@ -1,70 +0,0 @@
-components:
- schemas:
- MemberType:
- type: string
- enum:
- - member
- MemberScore:
- type: integer
- minimum: -1
- maximum: 10
- MemberSort:
- type: string
- enum:
- - activitiesCount_ASC
- - activitiesCount_DESC
- - score_ASC
- - score_ASC
- - joinedAt_ASC
- - joinedAt_DESC
- - createdAt_ASC
- - createdAt_DESC
- - organisation_ASC
- - organisation_DESC
- - location_ASC
- - location_DESC
- ActivitySort:
- type: string
- enum:
- - timestamp_DESC
- - timestamp_ASC
- - createdAt_DESC
- - createdAt_ASC
- - score_DESC
- - score_ASC
- - type_DESC
- - type_ASC
- - platform_DESC
- - platform_ASC
- - createdBy_DESC
- - createdBy_ASC
- ConversationSort:
- type: string
- enum:
- - createdAt_DESC
- - createdAt_ASC
- - activityCount_DESC
- - activityCount_ASC
- - platform_DESC
- - platform_ASC
- - channel_DESC
- - channel_ASC
- - createdBy_DESC
- - createdBy_ASC
- TagSort:
- type: string
- enum:
- - name_ASC
- - name_DESC
- - createdAt_DESC
- - createdAt_ASC
-
- MemberAttributeSettingsSort:
- type: string
- enum:
- - label_ASC
- - label_DESC
- - type_ASC
- - type_DESC
- - createdAt_DESC
- - createdAt_ASC
diff --git a/backend/src/api/components/tag/examples.yaml b/backend/src/api/components/tag/examples.yaml
deleted file mode 100644
index 621a7de40e..0000000000
--- a/backend/src/api/components/tag/examples.yaml
+++ /dev/null
@@ -1,130 +0,0 @@
-components:
- examples:
- Tag:
- value:
- id: dca36c33-38cd-4e68-8ba8-515167e00971
- name: attended-hooli-con
- importHash: null
- createdAt: '2022-10-05T11:42:17.414Z'
- updatedAt: '2022-10-05T11:42:17.414Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- members:
- - id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: 8
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-05T11:40:32.560Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
-
- Tag2:
- value:
- id: 38807625-6302-47b5-9f35-58566ddec83b
- name: developer
- createdAt: '2022-10-05T11:41:20.162Z'
- updatedAt: '2022-10-05T11:41:20.162Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- members:
- - id: 2effc566-1932-44f3-a821-2d692933a953
- username:
- github: dinesh
- twitter: dinesh.chugtai
- attributes:
- bio:
- github: Lead developer at Pied Piper
- default: Pakistani Denzel. Tesla and gold chain owner.
- twitter: Pakistani Denzel. Tesla and gold chain owner.
- url:
- github: https://github.com/dinesh
- default: https://t.co/d
- twitter: https://t.co/d
- location:
- custom: Silicon Valley
- github: Palo alto
- default: Silicon Valley
- displayName: Dinesh
- email: dinesh@piedpiper.io
- score: 9
- joinedAt: '2022-10-03T15:30:55.672Z'
- reach:
- total: 100
- github: 60
- twitter: 40
- createdAt: '2022-10-03T15:30:55.679Z'
- updatedAt: '2022-10-05T11:39:58.095Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- - id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: 8
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-05T11:40:32.560Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
-
- TagList:
- value:
- rows:
- - $ref: '#/components/examples/Tag'
- - $ref: '#/components/examples/Tag2'
- count: 2
- limit: 10
- offset: 0
diff --git a/backend/src/api/components/tag/models.yaml b/backend/src/api/components/tag/models.yaml
deleted file mode 100644
index 6cbdd74c61..0000000000
--- a/backend/src/api/components/tag/models.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-components:
- schemas:
- # defines the attributes of a tag, excluding the ID.
- TagNoId:
- description: A tag associated with a member.
- type: object
- required:
- - name
- - tenantId
- properties:
- name:
- description: The name of the tag
- type: string
- createdAt:
- description: Date the tag was created
- type: string
- format: date-time
- updatedAt:
- description: Date the tag was last updated
- type: string
- format: date-time
- tenantId:
- description: Your workspace/tenant id
- type: string
- format: uuid
-
- xml:
- name: Tag
-
- # Defines a complete tag, including the ID.
- Tag:
- type: object
- allOf:
- - $ref: '#/components/schemas/TagNoId'
- properties:
- id:
- description: The unique identifier for a tag.
-
- # Responses:
- TagList:
- description: List and count of tags.
- type: object
- properties:
- rows:
- description: List of tags
- type: array
- items:
- $ref: '#/components/schemas/Tag'
- count:
- description: Count
- type: integer
- limit:
- description: Limit of records returned
- type: integer
- offset:
- description: Offset, for pagination
- type: integer
- xml:
- name: TagsList
diff --git a/backend/src/api/components/task/examples.yaml b/backend/src/api/components/task/examples.yaml
deleted file mode 100644
index b5f680467c..0000000000
--- a/backend/src/api/components/task/examples.yaml
+++ /dev/null
@@ -1,113 +0,0 @@
-components:
- examples:
- Task:
- value:
- id: 8a127785-f11d-4102-804d-5b79ccddd4cc
- name: Ask for tips on building a new Anton
- body: null
- status: null
- dueDate: '2022-05-27T15:13:30.000Z'
- importHash: null
- createdAt: '2022-10-03T16:00:18.701Z'
- updatedAt: '2022-10-03T16:00:18.701Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- assignedToId: null
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- members:
- - id: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- username:
- github: gilfoyle
- twitter: gilfoyle
- attributes:
- bio:
- github: Systems engineer at Pied Piper
- default: It's not magic. It's talent and sweat
- twitter: It's not magic. It's talent and sweat
- url:
- github: https://github.com/gilfoyle
- default: https://t.co/g
- twitter: https://t.co/g
- location:
- custom: Erlich's house
- github: Palo alto
- default: Erlich's house
- displayName: Gilfoyle
- email: gilfoyle@piedpiper.io
- score: -1
- joinedAt: '2022-10-03T15:17:03.540Z'
- importHash: null
- reach:
- total: 10000
- github: 5000
- twitter: 5000
- createdAt: '2022-10-03T15:17:03.547Z'
- updatedAt: '2022-10-03T15:17:27.073Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- activities: []
-
- Task2:
- value:
- id: ef22fb05-a41b-472e-9917-a4d10d19fcc6
- name: Ask if we can use as quote
- body: null
- status: null
- dueDate: '2022-08-27T00:00:00.000Z'
- importHash: null
- createdAt: '2022-10-05T11:55:55.606Z'
- updatedAt: '2022-10-05T11:55:55.606Z'
- deletedAt: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- assignedToId: null
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- members: []
- activities:
- - id: 782b426d-adc8-4fb4-a4ee-ab0bb07ffca0
- type: message
- timestamp: '2020-05-27T15:13:30.000Z'
- platform: discord
- isContribution: true
- score: 1
- sourceId: '1234'
- sourceParentId: null
- attributes:
- reactions: 43
- channel: dev
- body: It's not magic. It's talend and sweat.
- title: null
- url: discord.gg/1234
- sentiment:
- label: negative
- mixed: 1.1410574428737164
- neutral: 11.00325882434845
- negative: 85.99738478660583
- positive: 1.8582981079816818
- sentiment: 2
- importHash: null
- createdAt: '2022-10-03T15:18:11.294Z'
- updatedAt: '2022-10-03T15:21:49.402Z'
- deletedAt: null
- memberId: ab7a9fe9-4576-46b1-a710-8b8eaeff87a5
- conversationId: null
- parentId: null
- tenantId: 8642a2bd-965e-4acd-be8c-dfedc83ef0af
- createdById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
- updatedById: debc3c7f-4c5d-4bec-9130-17bb0aea8b75
-
- TaskList:
- value:
- rows:
- - $ref: '#/components/examples/Task'
- - $ref: '#/components/examples/Task2'
- count: 2
- limit: 10
- offset: 0
-
- TaskFindAndUpdateAll:
- value:
- rowsUpdated: 5
diff --git a/backend/src/api/components/task/inputs.yaml b/backend/src/api/components/task/inputs.yaml
deleted file mode 100644
index 93c55eb398..0000000000
--- a/backend/src/api/components/task/inputs.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
-components:
- schemas:
- TaskInputRelations:
- type: object
- properties:
- members:
- description: Members associated with the task. Each element in the array is the ID of the member.
- type: array
- items:
- type: string
- format: uuid
-
- activities:
- description: Activities associated with the task. Each element in the array is the ID of the activity.
- type: array
- items:
- type: string
- format: uuid
-
- assignees:
- description: Users assigned with the task. Each element in the array is the ID of the user.
- type: string
- format: uuid
- default: null
-
- TaskInput:
- allOf:
- - $ref: '#/components/schemas/TaskNoId'
- - $ref: '#/components/schemas/TaskInputRelations'
-
- TaskBatchInput:
- type: object
- properties:
- operation:
- description: Batch operation name.
- type: string
- enum:
- - findAndUpdateAll
- payload:
- type: object
- description: Payload to send to the batch operation
- properties:
- filter:
- description: >-
- Filter to select the task entities. Please refer to filter docs.
- type: string
- format: blob
-
- update:
- description: >-
- key value object with desired updated fields.
- type: object
diff --git a/backend/src/api/components/task/models.yaml b/backend/src/api/components/task/models.yaml
deleted file mode 100644
index 1a527b2f6b..0000000000
--- a/backend/src/api/components/task/models.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-components:
- schemas:
- # defines a task, excluding the ID
- TaskNoId:
- description: A created task.
- type: object
- properties:
- name:
- description: The name of the task.
- type: string
- body:
- description: The body of the task.
- type: string
- format: blob
- status:
- description: The status of the task.
- type: string
- enum:
- - in-progress
- - done
- default: null
- createdAt:
- description: Date the task was created.
- type: string
- format: date-time
- updatedAt:
- description: Date the task was last updated.
- type: string
- format: date-time
-
- xml:
- name: Task
diff --git a/backend/src/api/components/task/query.yaml b/backend/src/api/components/task/query.yaml
deleted file mode 100644
index e8ed2dbf68..0000000000
--- a/backend/src/api/components/task/query.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-components:
- schemas:
- FilterType:
- type: object
- additionalProperties:
- oneOf:
- - type: string
- - $ref: '#/components/schemas/FilterType'
-
- TaskQuery:
- description: >-
- All the parameters you can use to query tasks.
-
- properties:
- filter:
- description: >-
- Filter. Please refer to filter docs.
- type: string
- format: blob
-
- orderBy:
- type: string
- enum:
- - createdAt_ASC
- - createdAt_DESC
-
- limit:
- description: >-
- Limit the number of records returned. Default is 10.
- type: integer
- minimum: 1
- maximum: 200
- default: 10
- offset:
- description: >-
- Offset the number of records returned. Default is 0.
- type: integer
- minimum: 0
- default: 0
diff --git a/backend/src/api/components/task/responses.yaml b/backend/src/api/components/task/responses.yaml
deleted file mode 100644
index 4ed2827cb1..0000000000
--- a/backend/src/api/components/task/responses.yaml
+++ /dev/null
@@ -1,71 +0,0 @@
-components:
- schemas:
- # Single task
- Task:
- type: object
- allOf:
- - $ref: '#/components/schemas/TaskNoId'
- properties:
- id:
- description: The ID of the task.
- body:
- description: The body of the task.
- type: string
- format: blob
-
- TaskRelationsResponse:
- description: Relations of a task.
- type: object
- properties:
- members:
- description: Members associated with the task.
- type: array
- items:
- $ref: '#/components/schemas/Member'
-
- activities:
- description: Activities associated with the task.
- type: array
- items:
- $ref: '#/components/schemas/Activity'
-
- assignedTo:
- description: The workspace member assigned to the task.
- $ref: '#/components/schemas/Member'
-
- TaskResponse:
- description: A task of your community.
- type: object
- allOf:
- - $ref: '#/components/schemas/Task'
- - $ref: '#/components/schemas/TaskRelationsResponse'
-
- # List
- TaskList:
- description: List and count of tasks.
- type: object
- properties:
- rows:
- description: List of tasks
- type: array
- items:
- $ref: '#/components/schemas/TaskResponse'
- count:
- description: Count
- type: integer
- limit:
- description: Limit of records returned
- type: integer
- offset:
- description: Offset, for pagination
- type: integer
- xml:
- name: TasksList
-
- TaskFindAndUpdateAll:
- description: Returns number of tasks updated
- type: object
- properties:
- rowsUpdated:
- description: Number of tasks updated
- type: integer
diff --git a/backend/src/api/conversation/conversationCreate.ts b/backend/src/api/conversation/conversationCreate.ts
deleted file mode 100644
index cc544a6a05..0000000000
--- a/backend/src/api/conversation/conversationCreate.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import Permissions from '../../security/permissions'
-import ConversationService from '../../services/conversationService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * POST /tenant/{tenantId}/conversation
- * @summary Create a conversation
- * @tag Conversations
- * @security Bearer
- * @description Create a conversation.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @bodyContent {ConversationNoId} application/json
- * @response 200 - Ok
- * @responseContent {Conversation} 200.application/json
- * @responseExample {Conversation} 200.application/json.Conversation
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.conversationCreate)
-
- const payload = await new ConversationService(req).create(req.body)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/conversation/conversationDestroy.ts b/backend/src/api/conversation/conversationDestroy.ts
deleted file mode 100644
index 4fecce5047..0000000000
--- a/backend/src/api/conversation/conversationDestroy.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import Permissions from '../../security/permissions'
-import ConversationService from '../../services/conversationService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * DELETE /tenant/{tenantId}/conversation/{id}
- * @summary Delete a conversation
- * @tag Conversations
- * @security Bearer
- * @description Delete a conversation.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the conversation
- * @response 200 - Ok
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.conversationDestroy)
-
- await new ConversationService(req).destroyAll(req.query.ids)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/conversation/conversationFind.ts b/backend/src/api/conversation/conversationFind.ts
deleted file mode 100644
index 833fab2e76..0000000000
--- a/backend/src/api/conversation/conversationFind.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import Permissions from '../../security/permissions'
-import ConversationService from '../../services/conversationService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * GET /tenant/{tenantId}/conversation/{id}
- * @summary Find a conversation
- * @tag Conversations
- * @security Bearer
- * @description Find a conversation by ID.
- * @pathParam {string} tenantId - Your workspace/tenant ID.
- * @pathParam {string} id - The ID of the conversation.
- * @response 200 - Ok
- * @responseContent {Conversation} 200.application/json
- * @responseExample {Conversation} 200.application/json.Conversation
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.conversationRead)
-
- const payload = await new ConversationService(req).findById(req.params.id)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/conversation/conversationList.ts b/backend/src/api/conversation/conversationList.ts
deleted file mode 100644
index 10202442d4..0000000000
--- a/backend/src/api/conversation/conversationList.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import ConversationService from '../../services/conversationService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * GET /tenant/{tenantId}/conversation
- * @summary List conversations
- * @tag Conversations
- * @security Bearer
- * @description Get a list of conversations with filtering, sorting and offsetting.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @queryParam {string} [filter[title]] - Filter by the title of the conversation.
- * @queryParam {string} [filter[slug]] - Filter by the slug of the conversation.
- * @queryParam {string} [filter[published]] - Filter by whether it is published or not.
- * @queryParam {string} [filter[platform]] - Filter by the platform of the conversation.
- * @queryParam {string} [filter[channel]] - Filter by the channel of the conversation.
- * @queryParam {string} [filter[activitiesCountRange]] - activitiesCount lower bound. If you want a range, send this parameter twice with [min] and [max]. If you send it once it will be interpreted as a lower bound.
- * @queryParam {string} [filter[createdAtRange]] - Send this parameter twice with [min] and [max].
- * @queryParam {ConversationSort} [orderBy] - Sort the results. Default timestamp_DESC.
- * @queryParam {number} [offset] - Skip the first n results. Default 0.
- * @queryParam {number} [limit] - Limit the number of results. Default 50.
- * @response 200 - Ok
- * @responseContent {ConversationList} 200.application/json
- * @responseExample {ConversationList} 200.application/json.Conversations
- * @response 401 - Unauthorized
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.conversationRead)
-
- const payload = await new ConversationService(req).findAndCountAll(req.query)
-
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Conversations Filtered', { filter: req.query.filter }, { ...req })
- }
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/conversation/conversationQuery.ts b/backend/src/api/conversation/conversationQuery.ts
deleted file mode 100644
index a592a64a51..0000000000
--- a/backend/src/api/conversation/conversationQuery.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import ConversationService from '../../services/conversationService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-// /**
-// * POST /tenant/{tenantId}/conversation
-// * @summary Create or update an conversation
-// * @tag Activities
-// * @security Bearer
-// * @description Create or update an conversation. Existence is checked by sourceId and tenantId.
-// * @pathParam {string} tenantId - Your workspace/tenant ID
-// * @bodyContent {ConversationUpsertInput} application/json
-// * @response 200 - Ok
-// * @responseContent {Conversation} 200.application/json
-// * @responseExample {ConversationUpsert} 200.application/json.Conversation
-// * @response 401 - Unauthorized
-// * @response 404 - Not found
-// * @response 429 - Too many requests
-// */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.conversationRead)
-
- const payload = await new ConversationService(req).query(req.body)
-
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Conversations Advanced Filter', { ...payload }, { ...req })
- }
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/conversation/conversationSettingsUpdate.ts b/backend/src/api/conversation/conversationSettingsUpdate.ts
deleted file mode 100644
index 0c9072d246..0000000000
--- a/backend/src/api/conversation/conversationSettingsUpdate.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import Error403 from '../../errors/Error403'
-import Permissions from '../../security/permissions'
-import ConversationService from '../../services/conversationService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.conversationEdit)
-
- if (req.body.customUrl) {
- await req.responseHandler.error(
- req,
- res,
- new Error403(
- req.language,
- 'communityHelpCenter.errors.planNotSupportingCustomUrls',
- req.currentTenant.plan,
- ),
- )
- return
- }
-
- const payload = await new ConversationService(req).updateSettings(req.body)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/conversation/conversationUpdate.ts b/backend/src/api/conversation/conversationUpdate.ts
deleted file mode 100644
index 61ae340c28..0000000000
--- a/backend/src/api/conversation/conversationUpdate.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import Permissions from '../../security/permissions'
-import ConversationService from '../../services/conversationService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * PUT /tenant/{tenantId}/conversation/{id}
- * @summary Update an conversation
- * @tag Conversations
- * @security Bearer
- * @description Update a conversation given an ID.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the conversation
- * @bodyContent {ConversationNoId} application/json
- * @response 200 - Ok
- * @responseContent {Conversation} 200.application/json
- * @responseExample {Conversation} 200.application/json.Conversation
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.conversationEdit)
-
- const payload = await new ConversationService(req).update(req.params.id, req.body)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/conversation/index.ts b/backend/src/api/conversation/index.ts
deleted file mode 100644
index 0cd63eeaeb..0000000000
--- a/backend/src/api/conversation/index.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- app.post(`/tenant/:tenantId/conversation`, safeWrap(require('./conversationCreate').default))
- app.put(`/tenant/:tenantId/conversation/:id`, safeWrap(require('./conversationUpdate').default))
- app.delete(`/tenant/:tenantId/conversation`, safeWrap(require('./conversationDestroy').default))
- app.post(`/tenant/:tenantId/conversation/query`, safeWrap(require('./conversationQuery').default))
- app.get(`/tenant/:tenantId/conversation`, safeWrap(require('./conversationList').default))
- app.get(`/tenant/:tenantId/conversation/:id`, safeWrap(require('./conversationFind').default))
- app.post(
- `/tenant/:tenantId/conversation/settings`,
- safeWrap(require('./conversationSettingsUpdate').default),
- )
-}
diff --git a/backend/src/api/cubejs/cubeJsAuth.ts b/backend/src/api/cubejs/cubeJsAuth.ts
deleted file mode 100644
index ce35e89d06..0000000000
--- a/backend/src/api/cubejs/cubeJsAuth.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import CubeJsService from '../../services/cubejs/cubeJsService'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-
-export default async (req, res) => {
- const segments = SequelizeRepository.getSegmentIds(req)
- const payload = await CubeJsService.generateJwtToken(req.params.tenantId, segments)
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/cubejs/cubeJsVerifyToken.ts b/backend/src/api/cubejs/cubeJsVerifyToken.ts
deleted file mode 100644
index e3ad64f5ff..0000000000
--- a/backend/src/api/cubejs/cubeJsVerifyToken.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import CubeJsService from '../../services/cubejs/cubeJsService'
-
-export default async (req, res) => {
- const payload = await CubeJsService.verifyToken(req.language, req.body.token, req.params.tenantId)
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/cubejs/index.ts b/backend/src/api/cubejs/index.ts
deleted file mode 100644
index 3cff27f772..0000000000
--- a/backend/src/api/cubejs/index.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- app.get(`/tenant/:tenantId/cubejs/auth`, safeWrap(require('./cubeJsAuth').default))
- app.post(`/tenant/:tenantId/cubejs/verify`, safeWrap(require('./cubeJsVerifyToken').default))
-}
diff --git a/backend/src/api/customViews/customViewCreate.ts b/backend/src/api/customViews/customViewCreate.ts
index 9f89d3cfa7..0e6aedf682 100644
--- a/backend/src/api/customViews/customViewCreate.ts
+++ b/backend/src/api/customViews/customViewCreate.ts
@@ -4,12 +4,11 @@ import CustomViewService from '../../services/customViewService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * POST /tenant/{tenantId}/customview
+ * POST /customview
* @summary Create a custom view
* @tag CustomViews
* @security Bearer
* @description Create a custom view
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @bodyContent {CustomViewInput} application/json
* @response 200 - Ok
* @responseContent {CustomView} 200.application/json
@@ -23,7 +22,7 @@ export default async (req, res) => {
const payload = await new CustomViewService(req).create(req.body)
- track('Custom view Manually Created', { ...payload }, { ...req })
+ track('Custom view Manually Created', { ...req.body }, { ...req })
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/customViews/customViewDestroy.ts b/backend/src/api/customViews/customViewDestroy.ts
index fb2fbfb8f1..340d33f184 100644
--- a/backend/src/api/customViews/customViewDestroy.ts
+++ b/backend/src/api/customViews/customViewDestroy.ts
@@ -3,12 +3,11 @@ import CustomViewService from '../../services/customViewService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * DELETE /tenant/{tenantId}/customview/{id}
+ * DELETE /customview/{id}
* @summary Delete an custom view
* @tag CustomViews
* @security Bearer
* @description Delete a custom view given an ID
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @pathParam {string} id - The ID of the custom view
* @response 200 - Ok
* @response 401 - Unauthorized
diff --git a/backend/src/api/customViews/customViewQuery.ts b/backend/src/api/customViews/customViewQuery.ts
index 0ced458371..fc402bc957 100644
--- a/backend/src/api/customViews/customViewQuery.ts
+++ b/backend/src/api/customViews/customViewQuery.ts
@@ -1,15 +1,14 @@
import Permissions from '../../security/permissions'
+import track from '../../segment/track'
import CustomViewService from '../../services/customViewService'
import PermissionChecker from '../../services/user/permissionChecker'
-import track from '../../segment/track'
/**
- * GET /tenant/{tenantId}/customview/query
+ * GET /customview/query
* @summary Query custom views
* @tag CustomViews
* @security Bearer
* @description Query custom views. It accepts filters and sorting options.
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @queryParam {string[]} placement - The placements to filter by
* @queryParam {string} visibility - The visibility to filter by
* @response 200 - Ok
@@ -25,7 +24,7 @@ export default async (req, res) => {
const payload = await new CustomViewService(req).findAll(req.query)
if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Custom views Filter', { ...payload }, { ...req })
+ track('Custom views Filter', { ...req.query }, { ...req })
}
await req.responseHandler.success(req, res, payload)
diff --git a/backend/src/api/customViews/customViewUpdate.ts b/backend/src/api/customViews/customViewUpdate.ts
index 6b8fc04cab..1210878911 100644
--- a/backend/src/api/customViews/customViewUpdate.ts
+++ b/backend/src/api/customViews/customViewUpdate.ts
@@ -3,12 +3,11 @@ import CustomViewService from '../../services/customViewService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * PUT /tenant/{tenantId}/customview/{id}
+ * PUT /customview/{id}
* @summary Update an custom view
* @tag CustomViews
* @security Bearer
* @description Update an custom view given an ID.
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @pathParam {string} id - The ID of the custom view
* @bodyContent {CustomViewUpsertInput} application/json
* @response 200 - Ok
diff --git a/backend/src/api/customViews/customViewUpdateBulk.ts b/backend/src/api/customViews/customViewUpdateBulk.ts
index 9a79ddc9da..824005cc91 100644
--- a/backend/src/api/customViews/customViewUpdateBulk.ts
+++ b/backend/src/api/customViews/customViewUpdateBulk.ts
@@ -1,14 +1,14 @@
import CustomViewService from '@/services/customViewService'
+
import Permissions from '../../security/permissions'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * PUT /tenant/{tenantId}/customview
+ * PUT /customview
* @summary Update custom views in bulk
* @tag CustomViews
* @security Bearer
* @description Update custom view of given an IDs.
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @pathParam {string} id - The ID of the custom view
* @bodyContent {CustomViewUpsertInput} application/json
* @response 200 - Ok
diff --git a/backend/src/api/customViews/index.ts b/backend/src/api/customViews/index.ts
index ad01aa5bb8..1d1cf821b7 100644
--- a/backend/src/api/customViews/index.ts
+++ b/backend/src/api/customViews/index.ts
@@ -1,9 +1,9 @@
import { safeWrap } from '../../middlewares/errorMiddleware'
export default (app) => {
- app.post(`/tenant/:tenantId/customview`, safeWrap(require('./customViewCreate').default))
- app.put(`/tenant/:tenantId/customview/:id`, safeWrap(require('./customViewUpdate').default))
- app.patch(`/tenant/:tenantId/customview`, safeWrap(require('./customViewUpdateBulk').default))
- app.delete(`/tenant/:tenantId/customview`, safeWrap(require('./customViewDestroy').default))
- app.get(`/tenant/:tenantId/customview`, safeWrap(require('./customViewQuery').default))
+ app.post(`/customview`, safeWrap(require('./customViewCreate').default))
+ app.put(`/customview/:id`, safeWrap(require('./customViewUpdate').default))
+ app.patch(`/customview`, safeWrap(require('./customViewUpdateBulk').default))
+ app.delete(`/customview`, safeWrap(require('./customViewDestroy').default))
+ app.get(`/customview`, safeWrap(require('./customViewQuery').default))
}
diff --git a/backend/src/api/dashboard/dashboardGet.ts b/backend/src/api/dashboard/dashboardGet.ts
new file mode 100644
index 0000000000..ae43c956be
--- /dev/null
+++ b/backend/src/api/dashboard/dashboardGet.ts
@@ -0,0 +1,12 @@
+import DashboardService from '@/services/dashboardService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberRead)
+
+ const payload = await new DashboardService(req).get(req.query)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/dashboard/dashboardMetricsGet.ts b/backend/src/api/dashboard/dashboardMetricsGet.ts
new file mode 100644
index 0000000000..ddf277da0a
--- /dev/null
+++ b/backend/src/api/dashboard/dashboardMetricsGet.ts
@@ -0,0 +1,12 @@
+import DashboardService from '@/services/dashboardService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberRead)
+
+ const payload = await new DashboardService(req).getMetrics(req.query)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/dashboard/index.ts b/backend/src/api/dashboard/index.ts
new file mode 100644
index 0000000000..7d370cfe07
--- /dev/null
+++ b/backend/src/api/dashboard/index.ts
@@ -0,0 +1,6 @@
+import { safeWrap } from '../../middlewares/errorMiddleware'
+
+export default (app) => {
+ app.get(`/dashboard`, safeWrap(require('./dashboardGet').default))
+ app.get(`/dashboard/metrics`, safeWrap(require('./dashboardMetricsGet').default))
+}
diff --git a/backend/src/api/dataQuality/dataQualityMember.ts b/backend/src/api/dataQuality/dataQualityMember.ts
new file mode 100644
index 0000000000..9763cb244f
--- /dev/null
+++ b/backend/src/api/dataQuality/dataQualityMember.ts
@@ -0,0 +1,33 @@
+import DataQualityService from '@/services/dataQualityService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * GET /data-quality/member
+ * @summary Find a member data issues
+ * @tag Data Quality
+ * @security Bearer
+ * @description Find a data quality issues for members
+ * @response 200 - Ok
+ * @responseContent {DataQualityResponse} 200.application/json
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberRead)
+
+ const segmentId = req.query.segments?.length > 0 ? req.query.segments[0] : null
+ if (!segmentId) {
+ await req.responseHandler.error(req, res, {
+ code: 400,
+ message: 'Segment ID is required',
+ })
+ return
+ }
+
+ const payload = await new DataQualityService(req).findMemberIssues(req.query, segmentId)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/dataQuality/dataQualityOrganization.ts b/backend/src/api/dataQuality/dataQualityOrganization.ts
new file mode 100644
index 0000000000..f835984087
--- /dev/null
+++ b/backend/src/api/dataQuality/dataQualityOrganization.ts
@@ -0,0 +1,33 @@
+import DataQualityService from '@/services/dataQualityService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * GET /data-quality/organization
+ * @summary Find a organization data issues
+ * @tag Data Quality
+ * @security Bearer
+ * @description Find a data quality issues for organizations
+ * @response 200 - Ok
+ * @responseContent {DataQualityResponse} 200.application/json
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.organizationRead)
+
+ const segmentId = req.query.segments?.length > 0 ? req.query.segments[0] : null
+ if (!segmentId) {
+ await req.responseHandler.error(req, res, {
+ code: 400,
+ message: 'Segment ID is required',
+ })
+ return
+ }
+
+ const payload = await new DataQualityService(req).findOrganizationIssues()
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/dataQuality/index.ts b/backend/src/api/dataQuality/index.ts
new file mode 100644
index 0000000000..e1ad34c80d
--- /dev/null
+++ b/backend/src/api/dataQuality/index.ts
@@ -0,0 +1,6 @@
+import { safeWrap } from '../../middlewares/errorMiddleware'
+
+export default (app) => {
+ app.get(`/data-quality/member`, safeWrap(require('./dataQualityMember').default))
+ app.get(`/data-quality/organization`, safeWrap(require('./dataQualityOrganization').default))
+}
diff --git a/backend/src/api/eagleEyeContent/eagleEyeContentQuery.ts b/backend/src/api/eagleEyeContent/eagleEyeContentQuery.ts
index fda773c582..d52972b180 100644
--- a/backend/src/api/eagleEyeContent/eagleEyeContentQuery.ts
+++ b/backend/src/api/eagleEyeContent/eagleEyeContentQuery.ts
@@ -3,28 +3,13 @@ import track from '../../segment/track'
import EagleEyeContentService from '../../services/eagleEyeContentService'
import PermissionChecker from '../../services/user/permissionChecker'
-// /**
-// * POST /tenant/{tenantId}/eagleEyeContent
-// * @summary Create or update an eagleEyeContent
-// * @tag Activities
-// * @security Bearer
-// * @description Create or update an eagleEyeContent. Existence is checked by sourceId and tenantId.
-// * @pathParam {string} tenantId - Your workspace/tenant ID
-// * @bodyContent {EagleEyeContentUpsertInput} application/json
-// * @response 200 - Ok
-// * @responseContent {EagleEyeContent} 200.application/json
-// * @responseExample {EagleEyeContentUpsert} 200.application/json.EagleEyeContent
-// * @response 401 - Unauthorized
-// * @response 404 - Not found
-// * @response 429 - Too many requests
-// */
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.eagleEyeContentRead)
const payload = await new EagleEyeContentService(req).query(req.body)
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('EagleEyeContent Advanced Filter', { ...payload }, { ...req })
+ if (req.body?.filter && Object.keys(req.body.filter).length > 0) {
+ track('EagleEyeContent Advanced Filter', { ...req.body }, { ...req })
}
await req.responseHandler.success(req, res, payload)
diff --git a/backend/src/api/eagleEyeContent/eagleEyeContentSearch.ts b/backend/src/api/eagleEyeContent/eagleEyeContentSearch.ts
index 88659e218a..a8491a0f37 100644
--- a/backend/src/api/eagleEyeContent/eagleEyeContentSearch.ts
+++ b/backend/src/api/eagleEyeContent/eagleEyeContentSearch.ts
@@ -7,6 +7,6 @@ export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.eagleEyeActionCreate)
const payload = await new EagleEyeContentService(req).search()
- track('EagleEye backend search', { ...req.body }, { ...req })
+ track('EagleEye backend search', {}, { ...req })
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/eagleEyeContent/eagleEyeContentTrack.ts b/backend/src/api/eagleEyeContent/eagleEyeContentTrack.ts
index 0457266246..a0af99bc1d 100644
--- a/backend/src/api/eagleEyeContent/eagleEyeContentTrack.ts
+++ b/backend/src/api/eagleEyeContent/eagleEyeContentTrack.ts
@@ -1,8 +1,9 @@
+import { Error404 } from '@crowd/common'
+
import Permissions from '../../security/permissions'
-import PermissionChecker from '../../services/user/permissionChecker'
-import EagleEyeContentService from '../../services/eagleEyeContentService'
import track from '../../segment/track'
-import Error404 from '../../errors/Error404'
+import EagleEyeContentService from '../../services/eagleEyeContentService'
+import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.eagleEyeContentRead)
diff --git a/backend/src/api/eagleEyeContent/index.ts b/backend/src/api/eagleEyeContent/index.ts
index 99d8a1ff27..c4451e2fa7 100644
--- a/backend/src/api/eagleEyeContent/index.ts
+++ b/backend/src/api/eagleEyeContent/index.ts
@@ -1,59 +1,27 @@
import { safeWrap } from '../../middlewares/errorMiddleware'
-import { featureFlagMiddleware } from '../../middlewares/featureFlagMiddleware'
-import { FeatureFlag } from '../../types/common'
export default (app) => {
- app.post(
- `/tenant/:tenantId/eagleEyeContent/query`,
- featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
- safeWrap(require('./eagleEyeContentQuery').default),
- )
+ app.post(`/eagleEyeContent/query`, safeWrap(require('./eagleEyeContentQuery').default))
- app.post(
- `/tenant/:tenantId/eagleEyeContent`,
- featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
- safeWrap(require('./eagleEyeContentUpsert').default),
- )
+ app.post(`/eagleEyeContent`, safeWrap(require('./eagleEyeContentUpsert').default))
- app.post(
- `/tenant/:tenantId/eagleEyeContent/track`,
- featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
- safeWrap(require('./eagleEyeContentTrack').default),
- )
+ app.post(`/eagleEyeContent/track`, safeWrap(require('./eagleEyeContentTrack').default))
- app.get(
- `/tenant/:tenantId/eagleEyeContent/reply`,
- featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
- safeWrap(require('./eagleEyeContentReply').default),
- )
+ app.get(`/eagleEyeContent/reply`, safeWrap(require('./eagleEyeContentReply').default))
- app.get(
- `/tenant/:tenantId/eagleEyeContent/search`,
- featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
- safeWrap(require('./eagleEyeContentSearch').default),
- )
+ app.get(`/eagleEyeContent/search`, safeWrap(require('./eagleEyeContentSearch').default))
- app.get(
- `/tenant/:tenantId/eagleEyeContent/:id`,
- featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
- safeWrap(require('./eagleEyeContentFind').default),
- )
+ app.get(`/eagleEyeContent/:id`, safeWrap(require('./eagleEyeContentFind').default))
app.post(
- `/tenant/:tenantId/eagleEyeContent/:contentId/action`,
- featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
+ `/eagleEyeContent/:contentId/action`,
safeWrap(require('./eagleEyeActionCreate').default),
)
- app.put(
- `/tenant/:tenantId/eagleEyeContent/settings`,
- featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
- safeWrap(require('./eagleEyeSettingsUpdate').default),
- )
+ app.put(`/eagleEyeContent/settings`, safeWrap(require('./eagleEyeSettingsUpdate').default))
app.delete(
- `/tenant/:tenantId/eagleEyeContent/:contentId/action/:actionId`,
- featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
+ `/eagleEyeContent/:contentId/action/:actionId`,
safeWrap(require('./eagleEyeActionDestroy').default),
)
}
diff --git a/backend/src/api/eventTracking/eventTrack.ts b/backend/src/api/eventTracking/eventTrack.ts
deleted file mode 100644
index 735651f54a..0000000000
--- a/backend/src/api/eventTracking/eventTrack.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import EventTrackingService from '../../services/eventTrackingService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.quickstartGuideRead)
-
- const payload = await new EventTrackingService(req).trackEvent(req.body)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/eventTracking/index.ts b/backend/src/api/eventTracking/index.ts
deleted file mode 100644
index c0413ec500..0000000000
--- a/backend/src/api/eventTracking/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- app.post(`/tenant/:tenantId/event-tracking`, safeWrap(require('./eventTrack').default))
-}
diff --git a/backend/src/api/index.ts b/backend/src/api/index.ts
index 3646945d8f..2182975ac7 100644
--- a/backend/src/api/index.ts
+++ b/backend/src/api/index.ts
@@ -1,33 +1,42 @@
-import express from 'express'
import bodyParser from 'body-parser'
+import bunyanMiddleware from 'bunyan-middleware'
import cors from 'cors'
+import express from 'express'
import helmet from 'helmet'
-import bunyanMiddleware from 'bunyan-middleware'
import * as http from 'http'
-import { Unleash } from 'unleash-client'
-import { getRedisClient, getRedisPubSubPair, RedisPubSubReceiver } from '@crowd/redis'
+import os from 'os'
+import { QueryTypes } from 'sequelize'
+
+import { BadRequestError } from '@crowd/common'
+import { getDbConnection } from '@crowd/data-access-layer/src/database'
import { getServiceLogger } from '@crowd/logging'
-import { ApiWebsocketMessage, Edition } from '@crowd/types'
import { getOpensearchClient } from '@crowd/opensearch'
-import { getServiceTracer } from '@crowd/tracing'
-import { API_CONFIG, REDIS_CONFIG, UNLEASH_CONFIG, OPENSEARCH_CONFIG } from '../conf'
+import { RedisPubSubReceiver, getRedisClient, getRedisPubSubPair } from '@crowd/redis'
+import { telemetryExpressMiddleware } from '@crowd/telemetry'
+import { Client as TemporalClient, getTemporalClient } from '@crowd/temporal'
+import { ApiWebsocketMessage } from '@crowd/types'
+
+import SequelizeRepository from '@/database/repositories/sequelizeRepository'
+import { productDatabaseMiddleware } from '@/middlewares/productDbMiddleware'
+
+import { OPENSEARCH_CONFIG, PRODUCT_DB_CONFIG, REDIS_CONFIG, TEMPORAL_CONFIG } from '../conf'
import { authMiddleware } from '../middlewares/authMiddleware'
-import { tenantMiddleware } from '../middlewares/tenantMiddleware'
-import { segmentMiddleware } from '../middlewares/segmentMiddleware'
import { databaseMiddleware } from '../middlewares/databaseMiddleware'
-import { createRateLimiter } from './apiRateLimiter'
-import { languageMiddleware } from '../middlewares/languageMiddleware'
-import authSocial from './auth/authSocial'
-import setupSwaggerUI from './apiDocumentation'
-import { responseHandlerMiddleware } from '../middlewares/responseHandlerMiddleware'
import { errorMiddleware } from '../middlewares/errorMiddleware'
+import { languageMiddleware } from '../middlewares/languageMiddleware'
+import { opensearchMiddleware } from '../middlewares/opensearchMiddleware'
import { passportStrategyMiddleware } from '../middlewares/passportStrategyMiddleware'
import { redisMiddleware } from '../middlewares/redisMiddleware'
+import { responseHandlerMiddleware } from '../middlewares/responseHandlerMiddleware'
+import { segmentMiddleware } from '../middlewares/segmentMiddleware'
+import { tenantMiddleware } from '../middlewares/tenantMiddleware'
+
+import { createRateLimiter } from './apiRateLimiter'
+import authSocial from './auth/authSocial'
+import { publicRouter } from './public'
import WebSockets from './websockets'
-import { opensearchMiddleware } from '../middlewares/opensearchMiddleware'
const serviceLogger = getServiceLogger()
-getServiceTracer()
const app = express()
@@ -36,7 +45,7 @@ const server = http.createServer(app)
setImmediate(async () => {
const redis = await getRedisClient(REDIS_CONFIG, true)
- const opensearch = getOpensearchClient(OPENSEARCH_CONFIG)
+ const opensearch = await getOpensearchClient(OPENSEARCH_CONFIG)
const redisPubSubPair = await getRedisPubSubPair(REDIS_CONFIG)
const userNamespace = await WebSockets.initialize(server)
@@ -63,6 +72,8 @@ setImmediate(async () => {
}
})
+ app.use(telemetryExpressMiddleware('api.request.duration'))
+
// Enables CORS
app.use(cors({ origin: true }))
@@ -77,6 +88,28 @@ setImmediate(async () => {
}),
)
+ app.use((req, res, next) => {
+ // @ts-ignore
+ req.profileSql = req.headers['x-profile-sql'] === 'true'
+ next()
+ })
+
+ app.use((req, res, next) => {
+ res.setHeader('X-Hostname', os.hostname())
+ next()
+ })
+
+ app.use((req, res, next) => {
+ // this middleware fixes the issue with logging and datadog
+ // explained in detail here: https://github.com/CrowdDotDev/crowd.dev/pull/2144
+ // in short: the hostname field in logs breaks how datadog assigns k8s cluster info
+ if (req.log.fields.hostname) {
+ delete req.log.fields.hostname
+ }
+
+ next()
+ })
+
// Initializes and adds the database middleware.
app.use(databaseMiddleware)
@@ -86,42 +119,56 @@ setImmediate(async () => {
// bind opensearch
app.use(opensearchMiddleware(opensearch))
- // Bind unleash to request
- if (UNLEASH_CONFIG.url && API_CONFIG.edition === Edition.CROWD_HOSTED) {
- const unleash = new Unleash({
- url: `${UNLEASH_CONFIG.url}/api`,
- appName: 'crowd-api',
- customHeaders: {
- Authorization: UNLEASH_CONFIG.backendApiKey,
- },
+ // temp check for production
+ if (TEMPORAL_CONFIG.serverUrl) {
+ // Bind temporal to request
+ const temporal = await getTemporalClient(TEMPORAL_CONFIG)
+ app.use((req: any, res, next) => {
+ req.temporal = temporal
+ next()
})
+ }
- unleash.on('error', (err) => {
- serviceLogger.error(err, 'Unleash client error!')
- })
+ // Enables Helmet, a set of tools to
+ // increase security.
+ app.use(helmet())
- let isReady = false
+ const defaultRateLimiter = createRateLimiter({
+ max: 200,
+ windowMs: 60 * 1000,
+ })
- setInterval(async () => {
- if (!isReady) {
- serviceLogger.error('Unleash client is not ready yet, exiting...')
- process.exit(1)
- }
- }, 60 * 1000)
-
- await new Promise((resolve) => {
- unleash.on('ready', () => {
- serviceLogger.info('Unleash client is ready!')
- isReady = true
- resolve()
- })
- })
+ app.use(defaultRateLimiter)
- app.use((req: any, res, next) => {
- req.unleash = unleash
- next()
- })
- }
+ app.use(
+ bodyParser.json({
+ limit: '5mb',
+ }),
+ )
+
+ app.use(bodyParser.urlencoded({ limit: '5mb', extended: true }))
+
+ app.use((err: any, req: any, res: any, next: any) => {
+ if (err.type === 'entity.parse.failed') {
+ next(new BadRequestError('Invalid JSON body'))
+ return
+ }
+ next(err)
+ })
+
+ app.use((req, res, next) => {
+ // @ts-ignore
+ req.userData = {
+ ip: req.ip,
+ userAgent: req.headers ? req.headers['user-agent'] : null,
+ }
+
+ next()
+ })
+
+ // Public API uses its own OAuth2 auth and error flow
+ // Must be mounted before internal endpoints.
+ app.use('/', publicRouter())
// initialize passport strategies
app.use(passportStrategyMiddleware)
@@ -136,36 +183,37 @@ setImmediate(async () => {
// to set the currentUser to the requests
app.use(authMiddleware)
- // Setup the Documentation
- setupSwaggerUI(app)
-
- // Default rate limiter
- const defaultRateLimiter = createRateLimiter({
- max: 200,
- windowMs: 60 * 1000,
- message: 'errors.429',
+ app.use('/health', async (req: any, res) => {
+ try {
+ const seq = SequelizeRepository.getSequelize(req)
+
+ const [osPingRes, redisPingRes, dbPingRes, temporalPingRes] = await Promise.all([
+ // ping opensearch
+ opensearch.ping().then((res) => res.body),
+ // ping redis,
+ redis.ping().then((res) => res === 'PONG'),
+ // ping database
+ seq.query('select 1', { type: QueryTypes.SELECT }).then((rows) => rows.length === 1),
+ // ping temporal
+ req.temporal
+ ? (req.temporal as TemporalClient).workflowService.getSystemInfo({}).then(() => true)
+ : Promise.resolve(true),
+ ])
+
+ if (osPingRes && redisPingRes && dbPingRes && temporalPingRes) {
+ res.sendStatus(200)
+ } else {
+ res.status(500).json({
+ opensearch: osPingRes,
+ redis: redisPingRes,
+ database: dbPingRes,
+ temporal: temporalPingRes,
+ })
+ }
+ } catch (err) {
+ res.status(500).json({ error: err.message, stack: err.stack })
+ }
})
- app.use(defaultRateLimiter)
-
- // Enables Helmet, a set of tools to
- // increase security.
- app.use(helmet())
-
- app.use(
- bodyParser.json({
- limit: '5mb',
- verify(req, res, buf) {
- const url = (req).originalUrl
- if (url.startsWith('/webhooks/stripe') || url.startsWith('/webhooks/sendgrid')) {
- // Stripe and sendgrid webhooks needs the body raw
- // for verifying the webhook with signing secret
- ;(req).rawBody = buf.toString()
- }
- },
- }),
- )
-
- app.use(bodyParser.urlencoded({ limit: '5mb', extended: true }))
// Configure the Entity routes
const routes = express.Router()
@@ -173,49 +221,42 @@ setImmediate(async () => {
// Enable Passport for Social Sign-in
authSocial(app, routes)
- require('./auditLog').default(routes)
+ // Enable product db only if it's configured
+ if (PRODUCT_DB_CONFIG) {
+ const productDbClient = await getDbConnection(PRODUCT_DB_CONFIG)
+ app.use(productDatabaseMiddleware(productDbClient))
+ require('./product').default(routes)
+ }
+
require('./auth').default(routes)
- require('./plan').default(routes)
- require('./tenant').default(routes)
+
+ app.use(tenantMiddleware)
+ app.use(segmentMiddleware)
+
+ require('./auditLog').default(routes)
+ require('./merge-suggestions').default(routes)
require('./user').default(routes)
require('./settings').default(routes)
require('./member').default(routes)
- require('./widget').default(routes)
require('./activity').default(routes)
- require('./tag').default(routes)
- require('./widget').default(routes)
- require('./cubejs').default(routes)
- require('./report').default(routes)
require('./integration').default(routes)
- require('./microservice').default(routes)
- require('./conversation').default(routes)
require('./eagleEyeContent').default(routes)
- require('./automation').default(routes)
- require('./task').default(routes)
- require('./note').default(routes)
require('./organization').default(routes)
- require('./quickstart-guide').default(routes)
require('./slack').default(routes)
require('./segment').default(routes)
- require('./eventTracking').default(routes)
+ require('./systemStatus').default(routes)
require('./customViews').default(routes)
- require('./premium/enrichment').default(routes)
- // Loads the Tenant if the :tenantId param is passed
- routes.param('tenantId', tenantMiddleware)
- routes.param('tenantId', segmentMiddleware)
+ require('./dashboard').default(routes)
+ require('./mergeAction').default(routes)
+ require('./dataQuality').default(routes)
+ require('./collections').default(routes)
+ require('./categories').default(routes)
- app.use('/', routes)
-
- const webhookRoutes = express.Router()
- require('./webhooks').default(webhookRoutes)
-
- app.use('/webhooks', webhookRoutes)
+ await require('./nango').default(routes)
- const io = require('@pm2/io')
+ app.use('/', routes)
app.use(errorMiddleware)
-
- app.use(io.expressErrorHandler())
})
export default server
diff --git a/backend/src/api/integration/helpers/confluenceAuthenticate.ts b/backend/src/api/integration/helpers/confluenceAuthenticate.ts
new file mode 100644
index 0000000000..36df49cb21
--- /dev/null
+++ b/backend/src/api/integration/helpers/confluenceAuthenticate.ts
@@ -0,0 +1,12 @@
+import Permissions from '../../../security/permissions'
+import IntegrationService from '../../../services/integrationService'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
+ const integrationService = new IntegrationService(req)
+ const payload = req.body.id
+ ? await integrationService.updateConfluenceIntegration(req.body)
+ : await integrationService.connectConfluenceIntegration(req.body)
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/helpers/devtoValidators.ts b/backend/src/api/integration/helpers/devtoValidators.ts
index e850da57cd..258accf4d6 100644
--- a/backend/src/api/integration/helpers/devtoValidators.ts
+++ b/backend/src/api/integration/helpers/devtoValidators.ts
@@ -1,8 +1,9 @@
-import Error400 from '../../../errors/Error400'
+import { Error400 } from '@crowd/common'
+
import Permissions from '../../../security/permissions'
+import { checkAPIKey } from '../../../serverless/integrations/usecases/devto/checkAPIKey'
import { getOrganization } from '../../../serverless/integrations/usecases/devto/getOrganization'
import { getUserByUsername } from '../../../serverless/integrations/usecases/devto/getUser'
-import { checkAPIKey } from '../../../serverless/integrations/usecases/devto/checkAPIKey'
import PermissionChecker from '../../../services/user/permissionChecker'
export default async (req, res) => {
diff --git a/backend/src/api/integration/helpers/discourseTestWebhook.ts b/backend/src/api/integration/helpers/discourseTestWebhook.ts
index ca52d73255..19166a97c8 100644
--- a/backend/src/api/integration/helpers/discourseTestWebhook.ts
+++ b/backend/src/api/integration/helpers/discourseTestWebhook.ts
@@ -1,7 +1,7 @@
-import Permissions from '../../../security/permissions'
-import PermissionChecker from '../../../services/user/permissionChecker'
import IncomingWebhookRepository from '../../../database/repositories/incomingWebhookRepository'
import SequelizeRepository from '../../../database/repositories/sequelizeRepository'
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
diff --git a/backend/src/api/integration/helpers/discourseValidator.ts b/backend/src/api/integration/helpers/discourseValidator.ts
index 14e3b1878e..a88935b49f 100644
--- a/backend/src/api/integration/helpers/discourseValidator.ts
+++ b/backend/src/api/integration/helpers/discourseValidator.ts
@@ -1,5 +1,7 @@
import axios from 'axios'
-import Error400 from '../../../errors/Error400'
+
+import { Error400 } from '@crowd/common'
+
import Permissions from '../../../security/permissions'
import PermissionChecker from '../../../services/user/permissionChecker'
diff --git a/backend/src/api/integration/helpers/gerritAuthenticate.ts b/backend/src/api/integration/helpers/gerritAuthenticate.ts
new file mode 100644
index 0000000000..660d95d068
--- /dev/null
+++ b/backend/src/api/integration/helpers/gerritAuthenticate.ts
@@ -0,0 +1,10 @@
+import Permissions from '../../../security/permissions'
+import IntegrationService from '../../../services/integrationService'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
+
+ const payload = await new IntegrationService(req).gerritConnectOrUpdate(req.body)
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/helpers/getIntegrationRepositories.ts b/backend/src/api/integration/helpers/getIntegrationRepositories.ts
new file mode 100644
index 0000000000..75c3c271a0
--- /dev/null
+++ b/backend/src/api/integration/helpers/getIntegrationRepositories.ts
@@ -0,0 +1,14 @@
+import Permissions from '../../../security/permissions'
+import IntegrationService from '../../../services/integrationService'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * GET /integration/:id/repositories
+ * Unified endpoint to get repository mappings for any code platform integration
+ * (github, gitlab, git, gerrit)
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
+ const payload = await new IntegrationService(req).getIntegrationRepositories(req.params.id)
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/helpers/gitAuthenticate.ts b/backend/src/api/integration/helpers/gitAuthenticate.ts
index b53437a284..73176ccd77 100644
--- a/backend/src/api/integration/helpers/gitAuthenticate.ts
+++ b/backend/src/api/integration/helpers/gitAuthenticate.ts
@@ -4,6 +4,11 @@ import PermissionChecker from '../../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
- const payload = await new IntegrationService(req).gitConnectOrUpdate(req.body)
+ const integrationData = {
+ ...req.body,
+ remotes: req.body.remotes?.map((remote) => ({ url: remote, forkedFrom: null })) || [],
+ }
+
+ const payload = await new IntegrationService(req).gitConnectOrUpdate(integrationData)
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/integration/helpers/gitGetRemotes.ts b/backend/src/api/integration/helpers/gitGetRemotes.ts
deleted file mode 100644
index 9318ed6399..0000000000
--- a/backend/src/api/integration/helpers/gitGetRemotes.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Permissions from '../../../security/permissions'
-import IntegrationService from '../../../services/integrationService'
-import PermissionChecker from '../../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
- const payload = await new IntegrationService(req).gitGetRemotes()
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/integration/helpers/githubConnectInstallation.ts b/backend/src/api/integration/helpers/githubConnectInstallation.ts
new file mode 100644
index 0000000000..d7da9b0f43
--- /dev/null
+++ b/backend/src/api/integration/helpers/githubConnectInstallation.ts
@@ -0,0 +1,9 @@
+import Permissions from '../../../security/permissions'
+import IntegrationService from '../../../services/integrationService'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
+ const payload = await new IntegrationService(req).connectGithubInstallation(req.body.installId)
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/helpers/githubGetInstallations.ts b/backend/src/api/integration/helpers/githubGetInstallations.ts
new file mode 100644
index 0000000000..08448c107d
--- /dev/null
+++ b/backend/src/api/integration/helpers/githubGetInstallations.ts
@@ -0,0 +1,9 @@
+import Permissions from '../../../security/permissions'
+import IntegrationService from '../../../services/integrationService'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
+ const payload = await new IntegrationService(req).getGithubInstallations()
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/helpers/githubMapRepos.ts b/backend/src/api/integration/helpers/githubMapRepos.ts
index 7edce4b9d3..3fc55abf78 100644
--- a/backend/src/api/integration/helpers/githubMapRepos.ts
+++ b/backend/src/api/integration/helpers/githubMapRepos.ts
@@ -4,6 +4,10 @@ import PermissionChecker from '../../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
- const payload = await new IntegrationService(req).mapGithubRepos(req.params.id, req.body.mapping)
+ const payload = await new IntegrationService(req).mapGithubRepos(
+ req.params.id,
+ req.body.mapping,
+ true,
+ )
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/integration/helpers/githubMapReposGet.ts b/backend/src/api/integration/helpers/githubMapReposGet.ts
deleted file mode 100644
index a630c64252..0000000000
--- a/backend/src/api/integration/helpers/githubMapReposGet.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Permissions from '../../../security/permissions'
-import IntegrationService from '../../../services/integrationService'
-import PermissionChecker from '../../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
- const payload = await new IntegrationService(req).getGithubRepos(req.params.id)
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/integration/helpers/githubNangoConnect.ts b/backend/src/api/integration/helpers/githubNangoConnect.ts
new file mode 100644
index 0000000000..94d3d44a3b
--- /dev/null
+++ b/backend/src/api/integration/helpers/githubNangoConnect.ts
@@ -0,0 +1,13 @@
+import Permissions from '../../../security/permissions'
+import IntegrationService from '../../../services/integrationService'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
+ const payload = await new IntegrationService(req).githubNangoConnect(
+ req.body.settings,
+ req.body.mapping,
+ req.body.integrationId,
+ )
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/helpers/githubOrgRepos.ts b/backend/src/api/integration/helpers/githubOrgRepos.ts
new file mode 100644
index 0000000000..2f9a1be2e0
--- /dev/null
+++ b/backend/src/api/integration/helpers/githubOrgRepos.ts
@@ -0,0 +1,11 @@
+import { GithubIntegrationService } from '@crowd/common_services'
+
+import Permissions from '@/security/permissions'
+import PermissionChecker from '@/services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.integrationEdit)
+
+ const payload = await GithubIntegrationService.getOrgRepos(req.params.org)
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/helpers/githubSearchOrgs.ts b/backend/src/api/integration/helpers/githubSearchOrgs.ts
new file mode 100644
index 0000000000..a6527bcd2f
--- /dev/null
+++ b/backend/src/api/integration/helpers/githubSearchOrgs.ts
@@ -0,0 +1,15 @@
+import { GithubIntegrationService } from '@crowd/common_services'
+
+import Permissions from '@/security/permissions'
+import PermissionChecker from '@/services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.integrationEdit)
+
+ const payload = await GithubIntegrationService.findOrgs(
+ req.query.query,
+ req.query.limit,
+ req.query.offset,
+ )
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/helpers/githubSearchRepos.ts b/backend/src/api/integration/helpers/githubSearchRepos.ts
new file mode 100644
index 0000000000..f4725b906a
--- /dev/null
+++ b/backend/src/api/integration/helpers/githubSearchRepos.ts
@@ -0,0 +1,15 @@
+import { GithubIntegrationService } from '@crowd/common_services'
+
+import Permissions from '@/security/permissions'
+import PermissionChecker from '@/services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.integrationEdit)
+
+ const payload = await new GithubIntegrationService(req.log).findGithubRepos(
+ req.query.query,
+ req.query.limit,
+ req.query.offset,
+ )
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/helpers/gitlabAuthenticate.ts b/backend/src/api/integration/helpers/gitlabAuthenticate.ts
new file mode 100644
index 0000000000..88c35fc1ac
--- /dev/null
+++ b/backend/src/api/integration/helpers/gitlabAuthenticate.ts
@@ -0,0 +1,93 @@
+import crypto from 'crypto'
+import { Response } from 'express'
+
+import { generateUUIDv4 as uuid } from '@crowd/common'
+
+import { GITLAB_CONFIG } from '../../../conf'
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/// credits to lucia-auth library for these functions
+
+const createUrl = (url: string | URL, urlSearchParams: Record): URL => {
+ const newUrl = new URL(url)
+ for (const [key, value] of Object.entries(urlSearchParams)) {
+ // eslint-disable-next-line no-continue
+ if (!value) continue
+ newUrl.searchParams.set(key, value)
+ }
+ return newUrl
+}
+
+const getRandomValues = (bytes: number): Uint8Array => {
+ const buffer = crypto.randomBytes(bytes)
+ return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength)
+}
+
+const DEFAULT_ALPHABET = 'abcdefghijklmnopqrstuvwxyz1234567890'
+
+export const generateRandomString = (size: number, alphabet = DEFAULT_ALPHABET): string => {
+ // eslint-disable-next-line no-bitwise
+ const mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1
+ // eslint-disable-next-line no-bitwise
+ const step = -~((1.6 * mask * size) / alphabet.length)
+
+ let bytes = getRandomValues(step)
+ let id = ''
+ let index = 0
+
+ while (id.length !== size) {
+ // eslint-disable-next-line no-bitwise
+ id += alphabet[bytes[index] & mask] ?? ''
+ index += 1
+ if (index > bytes.length) {
+ bytes = getRandomValues(step)
+ index = 0
+ }
+ }
+ return id
+}
+
+const encodeBase64 = (data: string | ArrayLike | ArrayBufferLike) => {
+ if (typeof Buffer === 'function') {
+ // node or bun
+ const bufferData = typeof data === 'string' ? data : new Uint8Array(data)
+ return Buffer.from(bufferData).toString('base64')
+ }
+ if (typeof data === 'string') return btoa(data)
+ return btoa(String.fromCharCode(...new Uint8Array(data)))
+}
+
+const encodeBase64Url = (data: string | ArrayLike | ArrayBufferLike) =>
+ encodeBase64(data).replaceAll('=', '').replaceAll('+', '-').replaceAll('/', '_')
+
+/// end credits
+
+export default async (req, res: Response) => {
+ // Checking we have permision to edit the project
+ new PermissionChecker(req).validateHas(Permissions.values.integrationEdit)
+
+ const handle = uuid()
+
+ const callbackUrl = GITLAB_CONFIG.callbackUrl
+
+ const gitlabState = {
+ crowdToken: req.query.crowdToken,
+ tenantId: req.params.tenantId,
+ handle,
+ }
+
+ const scopes = ['api', 'read_api', 'read_user', 'read_repository', 'profile', 'email']
+
+ // Build the authorization URL
+ const authUrl = createUrl('https://gitlab.com/oauth/authorize', {
+ client_id: GITLAB_CONFIG.clientId,
+ response_type: 'code',
+ state: encodeBase64Url(JSON.stringify(gitlabState)),
+ redirect_uri: callbackUrl,
+ scope: scopes.join(' '),
+ })
+
+ // Redirect user to the authorization URL
+ res.redirect(authUrl.toString())
+}
diff --git a/backend/src/api/integration/helpers/gitlabAuthenticateCallback.ts b/backend/src/api/integration/helpers/gitlabAuthenticateCallback.ts
new file mode 100644
index 0000000000..3b350b8c69
--- /dev/null
+++ b/backend/src/api/integration/helpers/gitlabAuthenticateCallback.ts
@@ -0,0 +1,13 @@
+import Permissions from '../../../security/permissions'
+import IntegrationService from '../../../services/integrationService'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.integrationEdit)
+
+ const code = req.query.code
+
+ const integration = await new IntegrationService(req).gitlabConnect(code)
+
+ await req.responseHandler.success(req, res, integration)
+}
diff --git a/backend/src/api/integration/helpers/gitlabMapRepos.ts b/backend/src/api/integration/helpers/gitlabMapRepos.ts
new file mode 100644
index 0000000000..4394d83530
--- /dev/null
+++ b/backend/src/api/integration/helpers/gitlabMapRepos.ts
@@ -0,0 +1,13 @@
+import Permissions from '../../../security/permissions'
+import IntegrationService from '../../../services/integrationService'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
+ const payload = await new IntegrationService(req).mapGitlabRepos(
+ req.params.id,
+ req.body.mapping,
+ req.body.projectIds,
+ )
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/helpers/groupsioGetUserSubscriptions.ts b/backend/src/api/integration/helpers/groupsioGetUserSubscriptions.ts
new file mode 100644
index 0000000000..b533c1228b
--- /dev/null
+++ b/backend/src/api/integration/helpers/groupsioGetUserSubscriptions.ts
@@ -0,0 +1,9 @@
+import Permissions from '../../../security/permissions'
+import IntegrationService from '../../../services/integrationService'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
+ const payload = await new IntegrationService(req).groupsioGetUserSubscriptions(req.body)
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/helpers/hubspotConnect.ts b/backend/src/api/integration/helpers/hubspotConnect.ts
deleted file mode 100644
index 4b6332d3ae..0000000000
--- a/backend/src/api/integration/helpers/hubspotConnect.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Permissions from '../../../security/permissions'
-import IntegrationService from '../../../services/integrationService'
-import PermissionChecker from '../../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.integrationEdit)
- const payload = await new IntegrationService(req).hubspotConnect()
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/integration/helpers/hubspotGetLists.ts b/backend/src/api/integration/helpers/hubspotGetLists.ts
deleted file mode 100644
index 9723f44ef4..0000000000
--- a/backend/src/api/integration/helpers/hubspotGetLists.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Permissions from '../../../security/permissions'
-import IntegrationService from '../../../services/integrationService'
-import PermissionChecker from '../../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.integrationEdit)
- const payload = await new IntegrationService(req).hubspotGetLists()
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/integration/helpers/hubspotGetMappableFields.ts b/backend/src/api/integration/helpers/hubspotGetMappableFields.ts
deleted file mode 100644
index 524f1846b1..0000000000
--- a/backend/src/api/integration/helpers/hubspotGetMappableFields.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Permissions from '../../../security/permissions'
-import IntegrationService from '../../../services/integrationService'
-import PermissionChecker from '../../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
- const payload = await new IntegrationService(req).hubspotGetMappableFields()
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/integration/helpers/hubspotOnboard.ts b/backend/src/api/integration/helpers/hubspotOnboard.ts
deleted file mode 100644
index 68b447238a..0000000000
--- a/backend/src/api/integration/helpers/hubspotOnboard.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Permissions from '../../../security/permissions'
-import IntegrationService from '../../../services/integrationService'
-import PermissionChecker from '../../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
- const payload = await new IntegrationService(req).hubspotOnboard(req.body)
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/integration/helpers/hubspotStopSyncMember.ts b/backend/src/api/integration/helpers/hubspotStopSyncMember.ts
deleted file mode 100644
index 8843e17d55..0000000000
--- a/backend/src/api/integration/helpers/hubspotStopSyncMember.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Permissions from '../../../security/permissions'
-import IntegrationService from '../../../services/integrationService'
-import PermissionChecker from '../../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.integrationEdit)
- const payload = await new IntegrationService(req).hubspotStopSyncMember(req.body)
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/integration/helpers/hubspotStopSyncOrganization.ts b/backend/src/api/integration/helpers/hubspotStopSyncOrganization.ts
deleted file mode 100644
index ef84437137..0000000000
--- a/backend/src/api/integration/helpers/hubspotStopSyncOrganization.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Permissions from '../../../security/permissions'
-import IntegrationService from '../../../services/integrationService'
-import PermissionChecker from '../../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.integrationEdit)
- const payload = await new IntegrationService(req).hubspotStopSyncOrganization(req.body)
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/integration/helpers/hubspotSyncMember.ts b/backend/src/api/integration/helpers/hubspotSyncMember.ts
deleted file mode 100644
index ce9d23fe4b..0000000000
--- a/backend/src/api/integration/helpers/hubspotSyncMember.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Permissions from '../../../security/permissions'
-import IntegrationService from '../../../services/integrationService'
-import PermissionChecker from '../../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.integrationEdit)
- const payload = await new IntegrationService(req).hubspotSyncMember(req.body)
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/integration/helpers/hubspotSyncOrganization.ts b/backend/src/api/integration/helpers/hubspotSyncOrganization.ts
deleted file mode 100644
index f540146516..0000000000
--- a/backend/src/api/integration/helpers/hubspotSyncOrganization.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Permissions from '../../../security/permissions'
-import IntegrationService from '../../../services/integrationService'
-import PermissionChecker from '../../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.integrationEdit)
- const payload = await new IntegrationService(req).hubspotSyncOrganization(req.body)
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/integration/helpers/hubspotUpdateProperties.ts b/backend/src/api/integration/helpers/hubspotUpdateProperties.ts
deleted file mode 100644
index cbd4e92d6a..0000000000
--- a/backend/src/api/integration/helpers/hubspotUpdateProperties.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import Permissions from '../../../security/permissions'
-import IntegrationService from '../../../services/integrationService'
-import PermissionChecker from '../../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
- const payload = await new IntegrationService(req).hubspotUpdateProperties()
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/integration/helpers/jiraConnectOrUpdate.ts b/backend/src/api/integration/helpers/jiraConnectOrUpdate.ts
new file mode 100644
index 0000000000..a4398bb9c2
--- /dev/null
+++ b/backend/src/api/integration/helpers/jiraConnectOrUpdate.ts
@@ -0,0 +1,12 @@
+import Permissions from '../../../security/permissions'
+import IntegrationService from '../../../services/integrationService'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
+ const integrationService = new IntegrationService(req)
+ const payload = req.body.id
+ ? await integrationService.updateJiraIntegration(req.body)
+ : await integrationService.connectJiraIntegration(req.body)
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/helpers/linkedinConnect.ts b/backend/src/api/integration/helpers/linkedinConnect.ts
index 4aeac8aa79..114ad4ea6b 100644
--- a/backend/src/api/integration/helpers/linkedinConnect.ts
+++ b/backend/src/api/integration/helpers/linkedinConnect.ts
@@ -4,6 +4,7 @@ import PermissionChecker from '../../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
- const payload = await new IntegrationService(req).linkedinConnect()
+ const segmentId = req.body.segments[0]
+ const payload = await new IntegrationService(req).linkedinConnect(segmentId)
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/integration/helpers/redditOnboard.ts b/backend/src/api/integration/helpers/redditOnboard.ts
index 5176fc8dcf..25772db5af 100644
--- a/backend/src/api/integration/helpers/redditOnboard.ts
+++ b/backend/src/api/integration/helpers/redditOnboard.ts
@@ -4,6 +4,7 @@ import PermissionChecker from '../../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.tenantEdit)
- const payload = await new IntegrationService(req).redditOnboard(req.body.subreddits)
+ const segmentId = req.body.segments[0]
+ const payload = await new IntegrationService(req).redditOnboard(req.body.subreddits, segmentId)
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/integration/helpers/redditValidator.ts b/backend/src/api/integration/helpers/redditValidator.ts
index 93632482e6..d0980e0f9f 100644
--- a/backend/src/api/integration/helpers/redditValidator.ts
+++ b/backend/src/api/integration/helpers/redditValidator.ts
@@ -1,8 +1,37 @@
import axios from 'axios'
-import Error400 from '../../../errors/Error400'
+
+import { Error400 } from '@crowd/common'
+import { RedisCache, RedisClient } from '@crowd/redis'
+
+import { REDDIT_CONFIG } from '@/conf'
+
import Permissions from '../../../security/permissions'
-import PermissionChecker from '../../../services/user/permissionChecker'
import track from '../../../segment/track'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+const getRedditToken = async (redis: RedisClient, logger: any) => {
+ const cache = new RedisCache('reddit-global-access-token', redis, logger)
+ const token = await cache.get('reddit-token')
+ if (token) {
+ return token
+ }
+ const result = await axios.post(
+ 'https://www.reddit.com/api/v1/access_token',
+ 'grant_type=client_credentials',
+ {
+ auth: {
+ username: REDDIT_CONFIG.clientId,
+ password: REDDIT_CONFIG.clientSecret,
+ },
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ },
+ },
+ )
+ // cache for 30 minutes
+ await cache.set('reddit-token', result.data.access_token, 30 * 60)
+ return result.data.access_token
+}
export default async (req, res) => {
new PermissionChecker(req).validateHasAny([
@@ -11,14 +40,28 @@ export default async (req, res) => {
])
if (req.query.subreddit) {
+ let token: string
try {
- const result = await axios.get(
- `https://www.reddit.com/r/${req.query.subreddit}/new.json?limit=1`,
+ token = await getRedditToken(req.redis, req.log)
+ } catch (e) {
+ req.log.error(e)
+ return req.responseHandler.error(req, res, new Error400(req.language))
+ }
+ try {
+ const result = await axios.post(
+ `https://oauth.reddit.com/api/search_reddit_names`,
+ `query=${req.query.subreddit}&exact=true`,
+ {
+ headers: {
+ ContentType: 'application/x-www-form-urlencoded',
+ Authorization: `Bearer ${token}`,
+ },
+ },
)
if (
result.status === 200 &&
- result.data.data.children &&
- result.data.data.children.length > 0
+ result.data.names &&
+ result.data.names.includes(req.query.subreddit)
) {
track(
'Reddit: subreddit input',
@@ -28,9 +71,20 @@ export default async (req, res) => {
},
{ ...req },
)
- return req.responseHandler.success(req, res, result.data.data.children)
+ return req.responseHandler.success(req, res, true)
}
+ // for other status codes we return error
+ track(
+ 'Reddit: subreddit input',
+ {
+ subreddit: req.query.subreddit,
+ valid: false,
+ },
+ { ...req },
+ )
+ return req.responseHandler.error(req, res, new Error400(req.language))
} catch (e) {
+ req.log.error('Error validating subreddit', e)
track(
'Reddit: subreddit input',
{
@@ -39,6 +93,7 @@ export default async (req, res) => {
},
{ ...req },
)
+ req.log.error(e)
return req.responseHandler.error(req, res, new Error400(req.language))
}
}
@@ -50,5 +105,6 @@ export default async (req, res) => {
},
{ ...req },
)
+ req.log.error('Reddit: subreddit input is empty')
return req.responseHandler.error(req, res, new Error400(req.language))
}
diff --git a/backend/src/api/integration/helpers/slackAuthenticate.ts b/backend/src/api/integration/helpers/slackAuthenticate.ts
index 99982f4497..a5e16e8605 100644
--- a/backend/src/api/integration/helpers/slackAuthenticate.ts
+++ b/backend/src/api/integration/helpers/slackAuthenticate.ts
@@ -1,7 +1,8 @@
import passport from 'passport'
+
+import SequelizeRepository from '../../../database/repositories/sequelizeRepository'
import Permissions from '../../../security/permissions'
import PermissionChecker from '../../../services/user/permissionChecker'
-import SequelizeRepository from '../../../database/repositories/sequelizeRepository'
export default async (req, res, next) => {
// Checking we have permision to edit the project
diff --git a/backend/src/api/integration/helpers/stackOverflowValidator.ts b/backend/src/api/integration/helpers/stackOverflowValidator.ts
index 78c104c6a6..f2a9810bdf 100644
--- a/backend/src/api/integration/helpers/stackOverflowValidator.ts
+++ b/backend/src/api/integration/helpers/stackOverflowValidator.ts
@@ -1,10 +1,12 @@
import axios from 'axios'
-import Error400 from '../../../errors/Error400'
+
+import { Error400 } from '@crowd/common'
+
+import { STACKEXCHANGE_CONFIG } from '../../../conf'
import Permissions from '../../../security/permissions'
-import PermissionChecker from '../../../services/user/permissionChecker'
import track from '../../../segment/track'
import { StackOverflowTagsResponse } from '../../../serverless/integrations/types/stackOverflowTypes'
-import { STACKEXCHANGE_CONFIG } from '../../../conf'
+import PermissionChecker from '../../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHasAny([
diff --git a/backend/src/api/integration/helpers/stackOverflowVolume.ts b/backend/src/api/integration/helpers/stackOverflowVolume.ts
index b3a276131d..fa75ad79d5 100644
--- a/backend/src/api/integration/helpers/stackOverflowVolume.ts
+++ b/backend/src/api/integration/helpers/stackOverflowVolume.ts
@@ -1,8 +1,10 @@
import axios from 'axios'
-import Error400 from '../../../errors/Error400'
+
+import { Error400 } from '@crowd/common'
+
+import { STACKEXCHANGE_CONFIG } from '../../../conf'
import Permissions from '../../../security/permissions'
import PermissionChecker from '../../../services/user/permissionChecker'
-import { STACKEXCHANGE_CONFIG } from '../../../conf'
export default async (req, res) => {
new PermissionChecker(req).validateHasAny([
diff --git a/backend/src/api/integration/helpers/twitterAuthenticate.ts b/backend/src/api/integration/helpers/twitterAuthenticate.ts
index 514b318fb6..fdd7ac8706 100644
--- a/backend/src/api/integration/helpers/twitterAuthenticate.ts
+++ b/backend/src/api/integration/helpers/twitterAuthenticate.ts
@@ -1,12 +1,14 @@
import crypto from 'crypto'
-import { PlatformType } from '@crowd/types'
import { Response } from 'express'
-import { RedisCache } from '@crowd/redis'
+
import { generateUUIDv4 as uuid } from '@crowd/common'
+import { RedisCache } from '@crowd/redis'
+import { PlatformType } from '@crowd/types'
+
import { TWITTER_CONFIG } from '../../../conf'
+import SequelizeRepository from '../../../database/repositories/sequelizeRepository'
import Permissions from '../../../security/permissions'
import PermissionChecker from '../../../services/user/permissionChecker'
-import SequelizeRepository from '../../../database/repositories/sequelizeRepository'
/// credits to lucia-auth library for these functions
diff --git a/backend/src/api/integration/helpers/twitterAuthenticateCallback.ts b/backend/src/api/integration/helpers/twitterAuthenticateCallback.ts
index 86545f3060..60287fd0c6 100644
--- a/backend/src/api/integration/helpers/twitterAuthenticateCallback.ts
+++ b/backend/src/api/integration/helpers/twitterAuthenticateCallback.ts
@@ -1,10 +1,12 @@
-import { RedisCache } from '@crowd/redis'
import axios from 'axios'
-import PermissionChecker from '../../../services/user/permissionChecker'
-import Permissions from '../../../security/permissions'
-import IntegrationService from '../../../services/integrationService'
+
+import { RedisCache } from '@crowd/redis'
+
import { API_CONFIG, TWITTER_CONFIG } from '../../../conf'
import SegmentRepository from '../../../database/repositories/segmentRepository'
+import Permissions from '../../../security/permissions'
+import IntegrationService from '../../../services/integrationService'
+import PermissionChecker from '../../../services/user/permissionChecker'
const errorURL = `${API_CONFIG.frontendUrl}/integrations?twitter-error=true`
diff --git a/backend/src/api/integration/index.ts b/backend/src/api/integration/index.ts
index 70561bf299..5f23e93d68 100644
--- a/backend/src/api/integration/index.ts
+++ b/backend/src/api/integration/index.ts
@@ -1,11 +1,13 @@
import passport from 'passport'
+
+import { DEFAULT_TENANT_ID } from '@crowd/common'
+import { RedisCache } from '@crowd/redis'
+
import { API_CONFIG, SLACK_CONFIG, TWITTER_CONFIG } from '../../conf'
import SegmentRepository from '../../database/repositories/segmentRepository'
import { authMiddleware } from '../../middlewares/authMiddleware'
import { safeWrap } from '../../middlewares/errorMiddleware'
import TenantService from '../../services/tenantService'
-import { FeatureFlag } from '@/types/common'
-import { featureFlagMiddleware } from '@/middlewares/featureFlagMiddleware'
const decodeBase64Url = (data) => {
data = data.replaceAll('-', '+').replaceAll('_', '/')
@@ -16,152 +18,103 @@ const decodeBase64Url = (data) => {
}
export default (app) => {
- app.post(`/tenant/:tenantId/integration/query`, safeWrap(require('./integrationQuery').default))
- app.post(`/tenant/:tenantId/integration`, safeWrap(require('./integrationCreate').default))
- app.put(`/tenant/:tenantId/integration/:id`, safeWrap(require('./integrationUpdate').default))
- app.post(`/tenant/:tenantId/integration/import`, safeWrap(require('./integrationImport').default))
- app.delete(`/tenant/:tenantId/integration`, safeWrap(require('./integrationDestroy').default))
+ app.post(`/integration/query`, safeWrap(require('./integrationQuery').default))
+ app.post(`/integration`, safeWrap(require('./integrationCreate').default))
+ app.put(`/integration/:id`, safeWrap(require('./integrationUpdate').default))
+ app.delete(`/integration`, safeWrap(require('./integrationDestroy').default))
+ app.get(`/integration/autocomplete`, safeWrap(require('./integrationAutocomplete').default))
+ app.get(`/integration/global`, safeWrap(require('./integrationGlobal').default))
+ app.get(`/integration/global/status`, safeWrap(require('./integrationGlobalStatus').default))
+
app.get(
- `/tenant/:tenantId/integration/autocomplete`,
- safeWrap(require('./integrationAutocomplete').default),
+ '/integration/github-installations',
+ safeWrap(require('./helpers/githubGetInstallations').default),
)
- app.get(`/tenant/:tenantId/integration`, safeWrap(require('./integrationList').default))
- app.get(`/tenant/:tenantId/integration/:id`, safeWrap(require('./integrationFind').default))
- app.put(
- `/authenticate/:tenantId/:code`,
- safeWrap(require('./helpers/githubAuthenticate').default),
- )
- app.put(
- `/tenant/:tenantId/integration/:id/github/repos`,
- safeWrap(require('./helpers/githubMapRepos').default),
+ app.post(
+ '/integration/github-connect-installation',
+ safeWrap(require('./helpers/githubConnectInstallation').default),
)
+
+ app.get(`/integration`, safeWrap(require('./integrationList').default))
+ app.get(`/integration/:id`, safeWrap(require('./integrationFind').default))
+
+ // Unified endpoint for all code platform integrations (github, gitlab, git, gerrit)
app.get(
- `/tenant/:tenantId/integration/:id/github/repos`,
- safeWrap(require('./helpers/githubMapReposGet').default),
+ `/integration/:id/repositories`,
+ safeWrap(require('./helpers/getIntegrationRepositories').default),
)
- app.put(
- `/discord-authenticate/:tenantId/:guild_id`,
- safeWrap(require('./helpers/discordAuthenticate').default),
- )
- app.put(`/reddit-onboard/:tenantId`, safeWrap(require('./helpers/redditOnboard').default))
- app.put('/linkedin-connect/:tenantId', safeWrap(require('./helpers/linkedinConnect').default))
- app.post('/linkedin-onboard/:tenantId', safeWrap(require('./helpers/linkedinOnboard').default))
- app.put(`/tenant/:tenantId/git-connect`, safeWrap(require('./helpers/gitAuthenticate').default))
- app.get('/tenant/:tenantId/git', safeWrap(require('./helpers/gitGetRemotes').default))
+
+ app.put(`/authenticate/:code`, safeWrap(require('./helpers/githubAuthenticate').default))
+ app.put(`/integration/:id/github/repos`, safeWrap(require('./helpers/githubMapRepos').default))
+
app.get(
- '/tenant/:tenantId/devto-validate',
- safeWrap(require('./helpers/devtoValidators').default),
+ `/integration/github/search/orgs`,
+ safeWrap(require('./helpers/githubSearchOrgs').default),
)
app.get(
- '/tenant/:tenantId/reddit-validate',
- safeWrap(require('./helpers/redditValidator').default),
- )
- app.post(
- '/tenant/:tenantId/devto-connect',
- safeWrap(require('./helpers/devtoCreateOrUpdate').default),
- )
- app.post(
- '/tenant/:tenantId/hackernews-connect',
- safeWrap(require('./helpers/hackerNewsCreateOrUpdate').default),
- )
-
- app.post(
- '/tenant/:tenantId/stackoverflow-connect',
- safeWrap(require('./helpers/stackOverflowCreateOrUpdate').default),
+ `/integration/github/search/repos`,
+ safeWrap(require('./helpers/githubSearchRepos').default),
)
app.get(
- '/tenant/:tenantId/stackoverflow-validate',
- safeWrap(require('./helpers/stackOverflowValidator').default),
+ `/integration/github/orgs/:org/repos`,
+ safeWrap(require('./helpers/githubOrgRepos').default),
)
- app.get(
- '/tenant/:tenantId/stackoverflow-volume',
- safeWrap(require('./helpers/stackOverflowVolume').default),
+ app.post('/github-nango-connect', safeWrap(require('./helpers/githubNangoConnect').default))
+ app.put(
+ `/discord-authenticate/:guild_id`,
+ safeWrap(require('./helpers/discordAuthenticate').default),
)
+ app.put(`/reddit-onboard`, safeWrap(require('./helpers/redditOnboard').default))
+ app.put('/linkedin-connect', safeWrap(require('./helpers/linkedinConnect').default))
+ app.post('/linkedin-onboard', safeWrap(require('./helpers/linkedinOnboard').default))
- app.post(
- '/tenant/:tenantId/discourse-connect',
- safeWrap(require('./helpers/discourseCreateOrUpdate').default),
- )
+ app.post(`/integration/progress/list`, safeWrap(require('./integrationProgressList').default))
- app.post(
- '/tenant/:tenantId/discourse-validate',
- safeWrap(require('./helpers/discourseValidator').default),
- )
+ app.get(`/integration/progress/:id`, safeWrap(require('./integrationProgress').default))
- app.post(
- '/tenant/:tenantId/discourse-test-webhook',
- safeWrap(require('./helpers/discourseTestWebhook').default),
- )
+ app.get(`/integration/mapped-repos/:id`, safeWrap(require('./integrationMappedRepos').default))
- app.post(
- '/tenant/:tenantId/hubspot-connect',
- featureFlagMiddleware(FeatureFlag.HUBSPOT, 'hubspot.errors.notInPlan'),
- safeWrap(require('./helpers/hubspotConnect').default),
- )
+ // Git
+ app.put(`/git-connect`, safeWrap(require('./helpers/gitAuthenticate').default))
+ app.put(`/confluence-connect`, safeWrap(require('./helpers/confluenceAuthenticate').default))
+ app.put(`/gerrit-connect`, safeWrap(require('./helpers/gerritAuthenticate').default))
+ app.get('/devto-validate', safeWrap(require('./helpers/devtoValidators').default))
+ app.get('/reddit-validate', safeWrap(require('./helpers/redditValidator').default))
+ app.post('/devto-connect', safeWrap(require('./helpers/devtoCreateOrUpdate').default))
+ app.post('/hackernews-connect', safeWrap(require('./helpers/hackerNewsCreateOrUpdate').default))
app.post(
- '/tenant/:tenantId/hubspot-onboard',
- featureFlagMiddleware(FeatureFlag.HUBSPOT, 'hubspot.errors.notInPlan'),
- safeWrap(require('./helpers/hubspotOnboard').default),
+ '/stackoverflow-connect',
+ safeWrap(require('./helpers/stackOverflowCreateOrUpdate').default),
)
+ app.get('/stackoverflow-validate', safeWrap(require('./helpers/stackOverflowValidator').default))
+ app.get('/stackoverflow-volume', safeWrap(require('./helpers/stackOverflowVolume').default))
- app.post(
- '/tenant/:tenantId/hubspot-update-properties',
- featureFlagMiddleware(FeatureFlag.HUBSPOT, 'hubspot.errors.notInPlan'),
- safeWrap(require('./helpers/hubspotUpdateProperties').default),
- )
+ app.post('/discourse-connect', safeWrap(require('./helpers/discourseCreateOrUpdate').default))
- app.get(
- '/tenant/:tenantId/hubspot-mappable-fields',
- featureFlagMiddleware(FeatureFlag.HUBSPOT, 'hubspot.errors.notInPlan'),
- safeWrap(require('./helpers/hubspotGetMappableFields').default),
- )
+ app.post('/discourse-validate', safeWrap(require('./helpers/discourseValidator').default))
- app.get(
- '/tenant/:tenantId/hubspot-get-lists',
- featureFlagMiddleware(FeatureFlag.HUBSPOT, 'hubspot.errors.notInPlan'),
- safeWrap(require('./helpers/hubspotGetLists').default),
- )
+ app.post('/discourse-test-webhook', safeWrap(require('./helpers/discourseTestWebhook').default))
- app.post(
- '/tenant/:tenantId/hubspot-sync-member',
- featureFlagMiddleware(FeatureFlag.HUBSPOT, 'hubspot.errors.notInPlan'),
- safeWrap(require('./helpers/hubspotSyncMember').default),
- )
+ app.post('/groupsio-connect', safeWrap(require('./helpers/groupsioConnectOrUpdate').default))
- app.post(
- '/tenant/:tenantId/hubspot-stop-sync-member',
- featureFlagMiddleware(FeatureFlag.HUBSPOT, 'hubspot.errors.notInPlan'),
- safeWrap(require('./helpers/hubspotStopSyncMember').default),
- )
+ app.post('/groupsio-get-token', safeWrap(require('./helpers/groupsioGetToken').default))
- app.post(
- '/tenant/:tenantId/hubspot-sync-organization',
- featureFlagMiddleware(FeatureFlag.HUBSPOT, 'hubspot.errors.notInPlan'),
- safeWrap(require('./helpers/hubspotSyncOrganization').default),
- )
+ app.post('/groupsio-verify-group', safeWrap(require('./helpers/groupsioVerifyGroup').default))
app.post(
- '/tenant/:tenantId/hubspot-stop-sync-organization',
- featureFlagMiddleware(FeatureFlag.HUBSPOT, 'hubspot.errors.notInPlan'),
- safeWrap(require('./helpers/hubspotStopSyncOrganization').default),
+ '/groupsio-get-user-subscriptions',
+ safeWrap(require('./helpers/groupsioGetUserSubscriptions').default),
)
- app.post(
- '/tenant/:tenantId/groupsio-connect',
- safeWrap(require('./helpers/groupsioConnectOrUpdate').default),
- )
+ app.post('/jira-connect', safeWrap(require('./helpers/jiraConnectOrUpdate').default))
- app.post(
- '/tenant/:tenantId/groupsio-get-token',
- safeWrap(require('./helpers/groupsioGetToken').default),
- )
+ app.get('/gitlab/connect', safeWrap(require('./helpers/gitlabAuthenticate').default))
- app.post(
- '/tenant/:tenantId/groupsio-verify-group',
- safeWrap(require('./helpers/groupsioVerifyGroup').default),
- )
+ app.get('/gitlab/callback', safeWrap(require('./helpers/gitlabAuthenticateCallback').default))
+
+ app.put(`/integration/:id/gitlab/repos`, safeWrap(require('./helpers/gitlabMapRepos').default))
if (TWITTER_CONFIG.clientId) {
/**
@@ -173,14 +126,10 @@ export default (app) => {
* This state is sent using the authenticator options and
* manipulated through twitterStrategy.staticPKCEStore
*/
- app.get(
- '/twitter/:tenantId/connect',
- safeWrap(require('./helpers/twitterAuthenticate').default),
- () => {
- // The request will be redirected for authentication, so this
- // function will not be called.
- },
- )
+ app.get('/twitter/connect', safeWrap(require('./helpers/twitterAuthenticate').default), () => {
+ // The request will be redirected for authentication, so this
+ // function will not be called.
+ })
/**
* OAuth2 callback endpoint. After user successfully
@@ -203,23 +152,31 @@ export default (app) => {
// session: false,
// failureRedirect: `${API_CONFIG.frontendUrl}/integrations?error=true`,
// }),
- (req, _res, next) => {
+ async (req, _res, next) => {
const stateQueryParam = req.query.state
const decodedState = decodeBase64Url(stateQueryParam)
- const stateObject = JSON.parse(decodedState)
- const { crowdToken } = stateObject
+ req.state = JSON.parse(decodedState)
+ next()
+ },
+ (req, _res, next) => {
+ const { crowdToken } = req.state
req.headers.authorization = `Bearer ${crowdToken}`
next()
},
authMiddleware,
async (req, _res, next) => {
- const stateQueryParam = req.query.state
- const decodedState = decodeBase64Url(stateQueryParam)
- const stateObject = JSON.parse(decodedState)
- const { tenantId } = stateObject
+ const tenantId = DEFAULT_TENANT_ID
req.currentTenant = await new TenantService(req).findById(tenantId)
next()
},
+ async (req, _res, next) => {
+ const cache = new RedisCache('twitterPKCE', req.redis, req.log)
+ const state = await cache.get(req.currentUser.id)
+ const { segmentIds } = JSON.parse(state)
+ const segmentRepository = new SegmentRepository(req)
+ req.currentSegments = await segmentRepository.findInIds(segmentIds)
+ next()
+ },
safeWrap(require('./helpers/twitterAuthenticateCallback').default),
)
}
@@ -230,7 +187,7 @@ export default (app) => {
*/
if (SLACK_CONFIG.clientId) {
// path to start the OAuth flow
- app.get('/slack/:tenantId/connect', safeWrap(require('./helpers/slackAuthenticate').default))
+ app.get('/slack/connect', safeWrap(require('./helpers/slackAuthenticate').default))
// OAuth callback url
app.get(
@@ -250,7 +207,7 @@ export default (app) => {
},
authMiddleware,
async (req, _res, next) => {
- const { tenantId } = req.state
+ const tenantId = DEFAULT_TENANT_ID
req.currentTenant = await new TenantService(req).findById(tenantId)
next()
},
diff --git a/backend/src/api/integration/integrationCreate.ts b/backend/src/api/integration/integrationCreate.ts
index e8a2bfbe25..dfe0ce7b6b 100644
--- a/backend/src/api/integration/integrationCreate.ts
+++ b/backend/src/api/integration/integrationCreate.ts
@@ -1,12 +1,10 @@
-import PermissionChecker from '../../services/user/permissionChecker'
import Permissions from '../../security/permissions'
import IntegrationService from '../../services/integrationService'
+import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.integrationCreate)
- new PermissionChecker(req).validateIntegrationsProtectedFields(req.body)
-
const payload = await new IntegrationService(req).create(req.body)
await req.responseHandler.success(req, res, payload)
diff --git a/backend/src/api/integration/integrationFind.ts b/backend/src/api/integration/integrationFind.ts
index d6cc02f2c2..039c82786a 100644
--- a/backend/src/api/integration/integrationFind.ts
+++ b/backend/src/api/integration/integrationFind.ts
@@ -1,6 +1,6 @@
-import PermissionChecker from '../../services/user/permissionChecker'
import Permissions from '../../security/permissions'
import IntegrationService from '../../services/integrationService'
+import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.integrationRead)
diff --git a/backend/src/api/integration/integrationGlobal.ts b/backend/src/api/integration/integrationGlobal.ts
new file mode 100644
index 0000000000..4eae57cee7
--- /dev/null
+++ b/backend/src/api/integration/integrationGlobal.ts
@@ -0,0 +1,10 @@
+import Permissions from '../../security/permissions'
+import IntegrationService from '../../services/integrationService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.integrationRead)
+ const payload = await new IntegrationService(req).findGlobalIntegrations(req.query)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/integrationGlobalStatus.ts b/backend/src/api/integration/integrationGlobalStatus.ts
new file mode 100644
index 0000000000..a135ca34f4
--- /dev/null
+++ b/backend/src/api/integration/integrationGlobalStatus.ts
@@ -0,0 +1,11 @@
+import Permissions from '../../security/permissions'
+import IntegrationService from '../../services/integrationService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.integrationRead)
+
+ const payload = await new IntegrationService(req).findGlobalIntegrationsStatusCount(req.query)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/integrationImport.ts b/backend/src/api/integration/integrationImport.ts
deleted file mode 100644
index 97019f5136..0000000000
--- a/backend/src/api/integration/integrationImport.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import IntegrationService from '../../services/integrationService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.integrationImport)
-
- await new IntegrationService(req).import(req.body, req.body.importHash)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/integration/integrationList.ts b/backend/src/api/integration/integrationList.ts
index 7c9f3b9157..08d0571343 100644
--- a/backend/src/api/integration/integrationList.ts
+++ b/backend/src/api/integration/integrationList.ts
@@ -1,6 +1,6 @@
-import PermissionChecker from '../../services/user/permissionChecker'
import Permissions from '../../security/permissions'
import IntegrationService from '../../services/integrationService'
+import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.integrationRead)
diff --git a/backend/src/api/integration/integrationMappedRepos.ts b/backend/src/api/integration/integrationMappedRepos.ts
new file mode 100644
index 0000000000..5255c5784a
--- /dev/null
+++ b/backend/src/api/integration/integrationMappedRepos.ts
@@ -0,0 +1,11 @@
+import Permissions from '../../security/permissions'
+import IntegrationService from '../../services/integrationService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.integrationRead)
+
+ const payload = await new IntegrationService(req).getIntegrationMappedRepos(req.params.id)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/integrationProgress.ts b/backend/src/api/integration/integrationProgress.ts
new file mode 100644
index 0000000000..d88fa67ab9
--- /dev/null
+++ b/backend/src/api/integration/integrationProgress.ts
@@ -0,0 +1,11 @@
+import Permissions from '../../security/permissions'
+import IntegrationService from '../../services/integrationService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.integrationRead)
+
+ const payload = await new IntegrationService(req).getIntegrationProgress(req.params.id)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/integrationProgressList.ts b/backend/src/api/integration/integrationProgressList.ts
new file mode 100644
index 0000000000..ae7419ffc4
--- /dev/null
+++ b/backend/src/api/integration/integrationProgressList.ts
@@ -0,0 +1,11 @@
+import Permissions from '../../security/permissions'
+import IntegrationService from '../../services/integrationService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.integrationRead)
+
+ const payload = await new IntegrationService(req).getIntegrationProgressList()
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/integration/integrationQuery.ts b/backend/src/api/integration/integrationQuery.ts
index ba78b4b4cf..ac8f8c9bf7 100644
--- a/backend/src/api/integration/integrationQuery.ts
+++ b/backend/src/api/integration/integrationQuery.ts
@@ -23,8 +23,8 @@ export default async (req, res) => {
const payload = await new IntegrationService(req).query(req.body)
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Integrations Advanced Filter', { ...payload }, { ...req })
+ if (req.body?.filter && Object.keys(req.body.filter).length > 0) {
+ track('Integrations Advanced Filter', { ...req.body }, { ...req })
}
await req.responseHandler.success(req, res, payload)
diff --git a/backend/src/api/integration/integrationUpdate.ts b/backend/src/api/integration/integrationUpdate.ts
index 72670d3c20..621aec29fc 100644
--- a/backend/src/api/integration/integrationUpdate.ts
+++ b/backend/src/api/integration/integrationUpdate.ts
@@ -4,7 +4,6 @@ import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.integrationEdit)
- new PermissionChecker(req).validateIntegrationsProtectedFields(req.body)
const payload = await new IntegrationService(req).update(req.params.id, req.body)
diff --git a/backend/src/api/member/affiliation/index.ts b/backend/src/api/member/affiliation/index.ts
new file mode 100644
index 0000000000..0f93a5b477
--- /dev/null
+++ b/backend/src/api/member/affiliation/index.ts
@@ -0,0 +1,17 @@
+import { safeWrap } from '@/middlewares/errorMiddleware'
+
+export default (app) => {
+ // Member Affiliation List
+ app.get(`/member/:memberId/affiliation`, safeWrap(require('./memberAffiliationList').default))
+
+ // Member Affiliation Create Multiple
+ app.patch(
+ `/member/:memberId/affiliation`,
+ safeWrap(require('./memberAffiliationUpdateMultiple').default),
+ )
+
+ app.post(
+ `/member/:memberId/affiliation/override`,
+ safeWrap(require('./memberAffiliationChangeOverride').default),
+ )
+}
diff --git a/backend/src/api/member/affiliation/memberAffiliationChangeOverride.ts b/backend/src/api/member/affiliation/memberAffiliationChangeOverride.ts
new file mode 100644
index 0000000000..114f92e12a
--- /dev/null
+++ b/backend/src/api/member/affiliation/memberAffiliationChangeOverride.ts
@@ -0,0 +1,17 @@
+import MemberAffiliationsService from '@/services/member/memberAffiliationsService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const memberAffiliationsService = new MemberAffiliationsService(req)
+
+ const payload = await memberAffiliationsService.changeAffiliationOverride({
+ ...req.body,
+ memberId: req.params.memberId,
+ })
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/affiliation/memberAffiliationList.ts b/backend/src/api/member/affiliation/memberAffiliationList.ts
new file mode 100644
index 0000000000..37ce9ccfa0
--- /dev/null
+++ b/backend/src/api/member/affiliation/memberAffiliationList.ts
@@ -0,0 +1,27 @@
+import MemberAffiliationsService from '@/services/member/memberAffiliationsService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * GET /member/:memberId/affiliation
+ * @summary List member affiliations
+ * @tag Members
+ * @security Bearer
+ * @description Query member affiliations.
+ * @pathParam {string} memberId - member ID
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.MemberAffiliation
+ * @response 401 - Unauthorized
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberRead)
+
+ const memberAffiliationsService = new MemberAffiliationsService(req)
+
+ const payload = await memberAffiliationsService.list(req.params.memberId)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/affiliation/memberAffiliationUpdateMultiple.ts b/backend/src/api/member/affiliation/memberAffiliationUpdateMultiple.ts
new file mode 100644
index 0000000000..4896b7e593
--- /dev/null
+++ b/backend/src/api/member/affiliation/memberAffiliationUpdateMultiple.ts
@@ -0,0 +1,30 @@
+import MemberAffiliationsService from '@/services/member/memberAffiliationsService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * PUT /member/:memberId/affiliation
+ * @summary Upsert member affiliations
+ * @tag Members
+ * @security Bearer
+ * @description Upsert multiple member affiliations.
+ * @pathParam {string} memberId - member ID
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.MemberAffiliation
+ * @response 401 - Unauthorized
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const memberAffiliationsService = new MemberAffiliationsService(req)
+
+ const payload = await memberAffiliationsService.upsertMultiple(
+ req.params.memberId,
+ req.body.affiliations,
+ )
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/attributes/index.ts b/backend/src/api/member/attributes/index.ts
new file mode 100644
index 0000000000..9c13c6d6e1
--- /dev/null
+++ b/backend/src/api/member/attributes/index.ts
@@ -0,0 +1,9 @@
+import { safeWrap } from '@/middlewares/errorMiddleware'
+
+export default (app) => {
+ // Member Attributes
+ app.get(`/member/:memberId/attributes`, safeWrap(require('./memberAttributesList').default))
+
+ // Member Attributes Update
+ app.patch(`/member/:memberId/attributes`, safeWrap(require('./memberAttributesUpdate').default))
+}
diff --git a/backend/src/api/member/attributes/memberAttributesList.ts b/backend/src/api/member/attributes/memberAttributesList.ts
new file mode 100644
index 0000000000..66b7ec85cc
--- /dev/null
+++ b/backend/src/api/member/attributes/memberAttributesList.ts
@@ -0,0 +1,27 @@
+import MemberAttributesService from '@/services/member/memberAttributesService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * GET /member/:memberId/attributes
+ * @summary Query member attributes
+ * @tag Members
+ * @security Bearer
+ * @description Query member attributes.
+ * @pathParam {string} memberId - member ID
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.Attributes
+ * @response 401 - Unauthorized
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberRead)
+
+ const memberAttributesService = new MemberAttributesService(req)
+
+ const payload = await memberAttributesService.list(req.params.memberId)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/attributes/memberAttributesUpdate.ts b/backend/src/api/member/attributes/memberAttributesUpdate.ts
new file mode 100644
index 0000000000..38f1f5ad6f
--- /dev/null
+++ b/backend/src/api/member/attributes/memberAttributesUpdate.ts
@@ -0,0 +1,38 @@
+import MemberAttributesService from '@/services/member/memberAttributesService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * PATCH /member/:memberId/attributes
+ * @summary Update member attributes
+ * @tag Members
+ * @security Bearer
+ * @description Update member attributes.
+ * @pathParam {string} memberId - member ID
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.Attributes
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const memberAttributesService = new MemberAttributesService(req)
+
+ // defaults to true unless query param is 'false'
+ const manuallyChanged = req.query.manuallyChanged !== 'false'
+
+ // remove segments from body
+ delete req.body.segments
+
+ const payload = await memberAttributesService.update(
+ req.params.memberId,
+ req.body,
+ manuallyChanged,
+ )
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/identity/index.ts b/backend/src/api/member/identity/index.ts
new file mode 100644
index 0000000000..c2019c562f
--- /dev/null
+++ b/backend/src/api/member/identity/index.ts
@@ -0,0 +1,18 @@
+import { safeWrap } from '@/middlewares/errorMiddleware'
+
+export default (app) => {
+ // Member Identity List
+ app.get(`/member/:memberId/identity`, safeWrap(require('./memberIdentityList').default))
+
+ // Member Identity Create
+ app.post(`/member/:memberId/identity`, safeWrap(require('./memberIdentityCreate').default))
+
+ // Member Identity Create Multiple
+ app.put(`/member/:memberId/identity`, safeWrap(require('./memberIdentityCreateMultiple').default))
+
+ // Member Identity Update
+ app.patch(`/member/:memberId/identity/:id`, safeWrap(require('./memberIdentityUpdate').default))
+
+ // Member Identity Delete
+ app.delete(`/member/:memberId/identity/:id`, safeWrap(require('./memberIdentityDelete').default))
+}
diff --git a/backend/src/api/member/identity/memberIdentityCreate.ts b/backend/src/api/member/identity/memberIdentityCreate.ts
new file mode 100644
index 0000000000..374b768575
--- /dev/null
+++ b/backend/src/api/member/identity/memberIdentityCreate.ts
@@ -0,0 +1,27 @@
+import MemberIdentityService from '@/services/member/memberIdentityService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * POST /member/:memberId/identity
+ * @summary Create member identity
+ * @tag Members
+ * @security Bearer
+ * @description Create one member identity.
+ * @pathParam {string} memberId - member ID
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.MemberIdentity
+ * @response 401 - Unauthorized
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const memberIdentityService = new MemberIdentityService(req)
+
+ const payload = await memberIdentityService.create(req.params.memberId, req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/identity/memberIdentityCreateMultiple.ts b/backend/src/api/member/identity/memberIdentityCreateMultiple.ts
new file mode 100644
index 0000000000..1ac2913ada
--- /dev/null
+++ b/backend/src/api/member/identity/memberIdentityCreateMultiple.ts
@@ -0,0 +1,30 @@
+import MemberIdentityService from '@/services/member/memberIdentityService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * PUT /member/:memberId/identity
+ * @summary Create member identities
+ * @tag Members
+ * @security Bearer
+ * @description Create multiple member identity.
+ * @pathParam {string} memberId - member ID
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.MemberIdentity
+ * @response 401 - Unauthorized
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const memberIdentityService = new MemberIdentityService(req)
+
+ const payload = await memberIdentityService.createMultiple(
+ req.params.memberId,
+ req.body.identities,
+ )
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/identity/memberIdentityDelete.ts b/backend/src/api/member/identity/memberIdentityDelete.ts
new file mode 100644
index 0000000000..cb2c81bd1e
--- /dev/null
+++ b/backend/src/api/member/identity/memberIdentityDelete.ts
@@ -0,0 +1,28 @@
+import MemberIdentityService from '@/services/member/memberIdentityService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * DELETE /member/:memberId/identity/:identityId
+ * @summary Remove member identity
+ * @tag Members
+ * @security Bearer
+ * @description Remove member identity.
+ * @pathParam {string} memberId - member ID | {string} identityId - member identity ID
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.MemberIdentity
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const memberIdentityService = new MemberIdentityService(req)
+
+ const payload = await memberIdentityService.delete(req.params.id, req.params.memberId)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/identity/memberIdentityList.ts b/backend/src/api/member/identity/memberIdentityList.ts
new file mode 100644
index 0000000000..b053b8ce77
--- /dev/null
+++ b/backend/src/api/member/identity/memberIdentityList.ts
@@ -0,0 +1,28 @@
+import MemberIdentityService from '@/services/member/memberIdentityService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * GET /member/:memberId/identity
+ * @summary Query member identities
+ * @tag Members
+ * @security Bearer
+ * @description Query member identities.
+ * @pathParam {string} memberId - member ID
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.Member
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberRead)
+
+ const memberIdentityService = new MemberIdentityService(req)
+
+ const payload = await memberIdentityService.list(req.params.memberId)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/identity/memberIdentityUpdate.ts b/backend/src/api/member/identity/memberIdentityUpdate.ts
new file mode 100644
index 0000000000..d39168c1f4
--- /dev/null
+++ b/backend/src/api/member/identity/memberIdentityUpdate.ts
@@ -0,0 +1,28 @@
+import MemberIdentityService from '@/services/member/memberIdentityService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * PATCH /member/:memberId/identity/:identityId
+ * @summary Update member identity
+ * @tag Members
+ * @security Bearer
+ * @description Update member identity.
+ * @pathParam {string} memberId - member ID | {string} identityId - member identity ID
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.MemberIdentity
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const memberIdentityService = new MemberIdentityService(req)
+
+ const payload = await memberIdentityService.update(req.params.id, req.params.memberId, req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/index.ts b/backend/src/api/member/index.ts
index 6b173ffe3b..16d9606b44 100644
--- a/backend/src/api/member/index.ts
+++ b/backend/src/api/member/index.ts
@@ -1,35 +1,32 @@
import { safeWrap } from '../../middlewares/errorMiddleware'
-import { featureFlagMiddleware } from '../../middlewares/featureFlagMiddleware'
-import { FeatureFlag } from '../../types/common'
export default (app) => {
- app.post(`/tenant/:tenantId/member/query`, safeWrap(require('./memberQuery').default))
-
- app.post(
- `/tenant/:tenantId/member/export`,
- featureFlagMiddleware(FeatureFlag.CSV_EXPORT, 'errors.csvExport.planLimitExceeded'),
- safeWrap(require('./memberExport').default),
- )
-
- app.post(`/tenant/:tenantId/member`, safeWrap(require('./memberCreate').default))
- app.put(`/tenant/:tenantId/member/:id`, safeWrap(require('./memberUpdate').default))
- app.post(`/tenant/:tenantId/member/import`, safeWrap(require('./memberImport').default))
- app.delete(`/tenant/:tenantId/member`, safeWrap(require('./memberDestroy').default))
- app.get(
- `/tenant/:tenantId/member/autocomplete`,
- safeWrap(require('./memberAutocomplete').default),
- )
- app.get(
- `/tenant/:tenantId/member/orautocomplete`,
- safeWrap(require('./memberAutocomplete').default),
- )
- app.get(`/tenant/:tenantId/member`, safeWrap(require('./memberList').default))
- app.get(`/tenant/:tenantId/member/active`, safeWrap(require('./memberActiveList').default))
- app.get(`/tenant/:tenantId/member/:id`, safeWrap(require('./memberFind').default))
- app.put(`/tenant/:tenantId/member/:memberId/merge`, safeWrap(require('./memberMerge').default))
- app.put(
- `/tenant/:tenantId/member/:memberId/no-merge`,
- safeWrap(require('./memberNotMerge').default),
- )
- app.patch(`/tenant/:tenantId/member`, safeWrap(require('./memberUpdateBulk').default))
+ app.post(`/member/query`, safeWrap(require('./memberQuery').default))
+
+ app.post(`/member/export`, safeWrap(require('./memberExport').default))
+
+ app.post(`/member`, safeWrap(require('./memberCreate').default))
+ app.put(`/member/:id`, safeWrap(require('./memberUpdate').default))
+ app.delete(`/member`, safeWrap(require('./memberDestroy').default))
+ app.post(`/member/autocomplete`, safeWrap(require('./memberAutocomplete').default))
+ app.get(`/member/bot-suggestions`, safeWrap(require('./memberBotSuggestionsList').default))
+
+ app.get(`/member/:id`, safeWrap(require('./memberFind').default))
+ app.get(`/member/github/:id`, safeWrap(require('./memberFindGithub').default))
+ app.put(`/member/:memberId/merge`, safeWrap(require('./memberMerge').default))
+
+ app.get(`/member/:memberId/can-revert-merge`, safeWrap(require('./memberCanRevertMerge').default))
+
+ app.post(`/member/:memberId/unmerge/preview`, safeWrap(require('./memberUnmergePreview').default))
+ app.post(`/member/:memberId/unmerge`, safeWrap(require('./memberUnmerge').default))
+
+ app.put(`/member/:memberId/no-merge`, safeWrap(require('./memberNotMerge').default))
+ app.patch(`/member`, safeWrap(require('./memberUpdateBulk').default))
+
+ require('./identity').default(app)
+ require('./organization').default(app)
+ require('./attributes').default(app)
+ require('./affiliation').default(app)
+
+ app.post(`/member/:id/data-issue`, safeWrap(require('./memberDataIssueCreate').default))
}
diff --git a/backend/src/api/member/memberActiveList.ts b/backend/src/api/member/memberActiveList.ts
deleted file mode 100644
index 931968f66b..0000000000
--- a/backend/src/api/member/memberActiveList.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import { IActiveMemberFilter } from '../../database/repositories/types/memberTypes'
-import Error400 from '../../errors/Error400'
-import Permissions from '../../security/permissions'
-import MemberService from '../../services/memberService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * GET /tenant/{tenantId}/member/active
- * @summary List active members
- * @tag Members
- * @security Bearer
- * @description List active members. It accepts filters, sorting options and pagination.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @queryParam {string} [filter[platforms]] - Filter by activity platforms (comma separated list without spaces)
- * @queryParam {string} [filter[isTeamMember]] - If true we will return just team members, if false we will return just non-team members, if undefined we will return both.
- * @queryParam {string} [filter[isBot]] - If true we will return just members who are bots, if false we will return just non-bot members, if undefined we will return both.
- * @queryParam {string} [filter[isOrganization]] - If true we will return just members who are organizations (such as linkedin organizations that post), if false we will return just non-organization members, if undefined we will return both.
- * @queryParam {string} [filter[activityTimestampFrom]] - Filter by activity timestamp from (required)
- * @queryParam {string} [filter[activityTimestampTo]] - Filter by activity timestamp to (required)
- * @queryParam {string} [filter[activityIsContribution]] - Filter by activities that are contributions
- * @queryParam {string} [orderBy] - How to sort results. Available values: activityCount_DESC, activityCount_ASC, activeDaysCount_DESC, activeDaysCount_ASC (default activityCount_DESC)
- * @queryParam {number} [offset] - Skip the first n results. Default 0.
- * @queryParam {number} [limit] - Limit the number of results. Default 20.
- * @response 200 - Ok
- * @response 401 - Unauthorized
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.memberRead)
-
- let offset = 0
- if (req.query.offset) {
- offset = parseInt(req.query.offset, 10)
- }
- let limit = 20
- if (req.query.limit) {
- limit = parseInt(req.query.limit, 10)
- }
-
- if (req.query.filter?.activityTimestampFrom === undefined) {
- throw new Error400(req.language, 'errors.members.activeList.activityTimestampFrom')
- }
-
- if (req.query.filter?.activityTimestampTo === undefined) {
- throw new Error400(req.language, 'errors.members.activeList.activityTimestampTo')
- }
-
- const filters: IActiveMemberFilter = {
- platforms:
- req.query.filter?.platforms !== undefined
- ? req.query.filter?.platforms.split(',')
- : undefined,
- isTeamMember:
- req.query.filter?.isTeamMember === undefined
- ? undefined
- : req.query.filter?.isTeamMember === 'true',
- isBot: req.query.filter?.isBot === undefined ? undefined : req.query.filter?.isBot === 'true',
- isOrganization:
- req.query.filter?.isOrganization === undefined
- ? undefined
- : req.query.filter?.isOrganization === 'true',
- activityTimestampFrom: req.query.filter?.activityTimestampFrom,
- activityTimestampTo: req.query.filter?.activityTimestampTo,
- activityIsContribution: req.query.filter?.activityIsContribution === 'true',
- }
-
- const orderBy = req.query.orderBy || 'activityCount_DESC'
-
- const payload = await new MemberService(req).findAndCountActive(
- filters,
- offset,
- limit,
- orderBy,
- req.query.segments,
- )
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/member/memberAutocomplete.ts b/backend/src/api/member/memberAutocomplete.ts
index 859ae2eafa..b334514007 100644
--- a/backend/src/api/member/memberAutocomplete.ts
+++ b/backend/src/api/member/memberAutocomplete.ts
@@ -5,7 +5,7 @@ import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.memberAutocomplete)
- const payload = await new MemberService(req).findAllAutocomplete(req.query.query, req.query.limit)
+ const payload = await new MemberService(req).findAllAutocomplete(req.body)
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/member/memberBotSuggestionsList.ts b/backend/src/api/member/memberBotSuggestionsList.ts
new file mode 100644
index 0000000000..50a582c9d2
--- /dev/null
+++ b/backend/src/api/member/memberBotSuggestionsList.ts
@@ -0,0 +1,25 @@
+import MemberService from '@/services/memberService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * GET /member/bot-suggestions
+ * @summary List member bot suggestions
+ * @tag Members
+ * @security Bearer
+ * @description List member bot suggestions with pagination
+ * @queryParam {number} [offset] - Skip the first n results. Default 0.
+ * @queryParam {number} [limit] - Limit the number of results. Default 20.
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @response 401 - Unauthorized
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberRead)
+
+ const payload = await new MemberService(req).findMembersWithBotSuggestions(req.query)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/memberCanRevertMerge.ts b/backend/src/api/member/memberCanRevertMerge.ts
new file mode 100644
index 0000000000..9b985c4290
--- /dev/null
+++ b/backend/src/api/member/memberCanRevertMerge.ts
@@ -0,0 +1,14 @@
+import Permissions from '../../security/permissions'
+import MemberService from '../../services/memberService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const payload = await new MemberService(req).canRevertMerge(
+ req.params.memberId,
+ req.query.identityId as string,
+ )
+
+ await req.responseHandler.success(req, res, payload, 200)
+}
diff --git a/backend/src/api/member/memberCreate.ts b/backend/src/api/member/memberCreate.ts
index 76d667c634..183b2969a1 100644
--- a/backend/src/api/member/memberCreate.ts
+++ b/backend/src/api/member/memberCreate.ts
@@ -4,12 +4,11 @@ import MemberService from '../../services/memberService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * POST /tenant/{tenantId}/member
+ * POST /member
* @summary Create or update a member
* @tag Members
* @security Bearer
* @description Create or update a member. Existence is checked by platform and username.
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @bodyContent {MemberUpsertInput} application/json
* @response 200 - Ok
* @responseContent {Member} 200.application/json
@@ -23,7 +22,7 @@ export default async (req, res) => {
const payload = await new MemberService(req).upsert(req.body)
- track('Member Manually Created', { ...payload }, { ...req })
+ track('Member Manually Created', { ...req.body }, { ...req })
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/member/memberDataIssueCreate.ts b/backend/src/api/member/memberDataIssueCreate.ts
new file mode 100644
index 0000000000..426315dbd9
--- /dev/null
+++ b/backend/src/api/member/memberDataIssueCreate.ts
@@ -0,0 +1,17 @@
+import { DataIssueEntity } from '@crowd/types'
+
+import DataIssueService from '@/services/dataIssueService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.dataIssueCreate)
+
+ const payload = await new DataIssueService(req).createDataIssue(
+ { ...req.body, entity: DataIssueEntity.PERSON },
+ req.params.id,
+ )
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/memberDestroy.ts b/backend/src/api/member/memberDestroy.ts
index 4f5477a41e..7158b265aa 100644
--- a/backend/src/api/member/memberDestroy.ts
+++ b/backend/src/api/member/memberDestroy.ts
@@ -3,12 +3,11 @@ import MemberService from '../../services/memberService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * DELETE /tenant/{tenantId}/member/{id}
+ * DELETE /member/{id}
* @summary Delete a member
* @tag Members
* @security Bearer
* @description Delete a member given an ID
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @pathParam {string} id - The ID of the member
* @response 200 - Ok
* @response 401 - Unauthorized
diff --git a/backend/src/api/member/memberExport.ts b/backend/src/api/member/memberExport.ts
index 49b04518de..07f1feae9a 100644
--- a/backend/src/api/member/memberExport.ts
+++ b/backend/src/api/member/memberExport.ts
@@ -1,19 +1,17 @@
-import { RedisCache } from '@crowd/redis'
-import { getSecondsTillEndOfMonth } from '../../utils/timing'
+import { generateUUIDv4 } from '@crowd/common'
+import { ITriggerCSVExport, TemporalWorkflowId } from '@crowd/types'
+
import Permissions from '../../security/permissions'
import identifyTenant from '../../segment/identifyTenant'
import track from '../../segment/track'
-import MemberService from '../../services/memberService'
import PermissionChecker from '../../services/user/permissionChecker'
-import { FeatureFlagRedisKey } from '../../types/common'
/**
- * POST /tenant/{tenantId}/member/export
+ * POST /member/export
* @summary Export members as CSV
* @tag Members
* @security Bearer
* @description Export members. It accepts filters, sorting options and pagination.
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @bodyContent {MemberQuery} application/json
* @response 200 - Ok
* @response 401 - Unauthorized
@@ -23,27 +21,30 @@ import { FeatureFlagRedisKey } from '../../types/common'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.memberRead)
- const payload = await new MemberService(req).export(req.body)
-
- const csvCountCache = new RedisCache(FeatureFlagRedisKey.CSV_EXPORT_COUNT, req.redis, req.log)
-
- const csvCount = await csvCountCache.get(req.currentTenant.id)
-
- const secondsRemainingUntilEndOfMonth = getSecondsTillEndOfMonth()
-
- if (!csvCount) {
- await csvCountCache.set(req.currentTenant.id, '0', secondsRemainingUntilEndOfMonth)
- } else {
- await csvCountCache.set(
- req.currentTenant.id,
- (parseInt(csvCount, 10) + 1).toString(),
- secondsRemainingUntilEndOfMonth,
- )
- }
+ await req.temporal.workflow.start('exportMembersToCSV', {
+ taskQueue: 'exports',
+ workflowId: `${TemporalWorkflowId.MEMBERS_CSV_EXPORTS}/${
+ req.currentTenant.id
+ }/${generateUUIDv4()}`,
+ retry: {
+ maximumAttempts: 1,
+ },
+ args: [
+ {
+ tenantId: req.currentTenant.id,
+ segmentIds: req.body.segments,
+ criteria: req.body,
+ sendTo: [req.currentUser.email],
+ } as ITriggerCSVExport,
+ ],
+ searchAttributes: {
+ TenantId: [req.currentTenant.id],
+ },
+ })
identifyTenant(req)
- track('Member CSV Export', {}, { ...req }, req.currentUser.id)
+ track('Member CSV Export', {}, { ...req.body }, req.currentUser.id)
- await req.responseHandler.success(req, res, payload)
+ await req.responseHandler.success(req, res, {})
}
diff --git a/backend/src/api/member/memberFind.ts b/backend/src/api/member/memberFind.ts
index f480ca72d9..d4e38ef6d3 100644
--- a/backend/src/api/member/memberFind.ts
+++ b/backend/src/api/member/memberFind.ts
@@ -3,12 +3,11 @@ import MemberService from '../../services/memberService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * GET /tenant/{tenantId}/member/{id}
+ * GET /member/{id}
* @summary Find a member
* @tag Members
* @security Bearer
* @description Find a single member by ID.
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @pathParam {string} id - The ID of the member
* @response 200 - Ok
* @responseContent {MemberResponse} 200.application/json
@@ -20,7 +19,24 @@ import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.memberRead)
- const payload = await new MemberService(req).findById(req.params.id)
+ const segmentId = req.query.segments?.length > 0 ? req.query.segments[0] : null
+ const includeAllAttributes =
+ req.query.includeAllAttributes === 'true' || req.query.includeAllAttributes === true
+
+ if (!segmentId) {
+ await req.responseHandler.error(req, res, {
+ code: 400,
+ message: 'Segment ID is required',
+ })
+ return
+ }
+
+ const payload = await new MemberService(req).findById(
+ req.params.id,
+ segmentId,
+ req.query.include,
+ includeAllAttributes,
+ )
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/member/memberFindGithub.ts b/backend/src/api/member/memberFindGithub.ts
new file mode 100644
index 0000000000..a355d899df
--- /dev/null
+++ b/backend/src/api/member/memberFindGithub.ts
@@ -0,0 +1,25 @@
+import Permissions from '../../security/permissions'
+import MemberService from '../../services/memberService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * GET /member/{id}
+ * @summary Find a member
+ * @tag Members
+ * @security Bearer
+ * @description Find a single member by ID.
+ * @pathParam {string} id - The ID of the member
+ * @response 200 - Ok
+ * @responseContent {MemberResponse} 200.application/json
+ * @responseExample {MemberFind} 200.application/json.Member
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberRead)
+
+ const payload = await new MemberService(req).findGithub(req.params.id)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/memberImport.ts b/backend/src/api/member/memberImport.ts
deleted file mode 100644
index 67ebfab0b2..0000000000
--- a/backend/src/api/member/memberImport.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Permissions from '../../security/permissions'
-import MemberService from '../../services/memberService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.memberImport)
-
- await new MemberService(req).import(req.body, req.body.importHash)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/member/memberList.ts b/backend/src/api/member/memberList.ts
index 793dcf37e6..153dc9a5b0 100644
--- a/backend/src/api/member/memberList.ts
+++ b/backend/src/api/member/memberList.ts
@@ -4,7 +4,7 @@ import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.memberRead)
- const payload = await new MemberService(req).findAndCountAll(req.query)
+ const payload = await new MemberService(req).query(req.query)
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/member/memberMerge.ts b/backend/src/api/member/memberMerge.ts
index fcc2dc4971..38b7b43562 100644
--- a/backend/src/api/member/memberMerge.ts
+++ b/backend/src/api/member/memberMerge.ts
@@ -1,16 +1,27 @@
+import { CommonMemberService, invalidateMemberQueryCache } from '@crowd/common_services'
+import { optionsQx } from '@crowd/data-access-layer'
+
import Permissions from '../../security/permissions'
import track from '../../segment/track'
-import MemberService from '../../services/memberService'
import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
- const payload = await new MemberService(req).merge(req.params.memberId, req.body.memberToMerge)
+ const { memberId } = req.params
+ const { memberToMerge } = req.body
+
+ const service = new CommonMemberService(optionsQx(req), req.temporal, req.log)
+
+ const payload = await service.merge(memberId, memberToMerge, req)
- track('Merge members', { ...payload }, { ...req })
+ try {
+ await invalidateMemberQueryCache(req.redis, [memberId, memberToMerge])
+ } catch (error) {
+ req.log.warn({ error }, 'Cache invalidation failed after member merge')
+ }
- const status = payload.status || 200
+ track('Merge members', { memberId, memberToMergeId: memberToMerge }, req)
- await req.responseHandler.success(req, res, payload, status)
+ return req.responseHandler.success(req, res, payload, payload.status ?? 200)
}
diff --git a/backend/src/api/member/memberNotMerge.ts b/backend/src/api/member/memberNotMerge.ts
index 46f995dffb..9af450539a 100644
--- a/backend/src/api/member/memberNotMerge.ts
+++ b/backend/src/api/member/memberNotMerge.ts
@@ -10,7 +10,11 @@ export default async (req, res) => {
req.body.memberToNotMerge,
)
- track('Ignore merge members', { ...payload }, { ...req })
+ track(
+ 'Ignore merge members',
+ { memberId: req.params.memberId, memberToNotMergeId: req.body.memberToNotMerge },
+ { ...req },
+ )
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/member/memberOrganizationAutocomplete.ts b/backend/src/api/member/memberOrganizationAutocomplete.ts
deleted file mode 100644
index 859ae2eafa..0000000000
--- a/backend/src/api/member/memberOrganizationAutocomplete.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import MemberService from '../../services/memberService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.memberAutocomplete)
-
- const payload = await new MemberService(req).findAllAutocomplete(req.query.query, req.query.limit)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/member/memberQuery.ts b/backend/src/api/member/memberQuery.ts
index 5c7f690cbf..f7bc8bf51b 100644
--- a/backend/src/api/member/memberQuery.ts
+++ b/backend/src/api/member/memberQuery.ts
@@ -4,12 +4,11 @@ import MemberService from '../../services/memberService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * POST /tenant/{tenantId}/member/query
+ * POST /member/query
* @summary Query members
* @tag Members
* @security Bearer
* @description Query members. It accepts filters, sorting options and pagination.
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @bodyContent {MemberQuery} application/json
* @response 200 - Ok
* @responseContent {MemberList} 200.application/json
@@ -21,16 +20,8 @@ import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.memberRead)
- let payload
- const newVersion = req.headers['x-crowd-api-version'] === '1'
-
const memberService = new MemberService(req)
-
- if (newVersion) {
- payload = await memberService.queryV2(req.body)
- } else {
- payload = await memberService.query(req.body)
- }
+ const payload = await memberService.query(req.body)
if (req.body.filter && Object.keys(req.body.filter).length > 0) {
track('Member Advanced Filter', { ...req.body }, { ...req })
diff --git a/backend/src/api/member/memberUnmerge.ts b/backend/src/api/member/memberUnmerge.ts
new file mode 100644
index 0000000000..55106d7867
--- /dev/null
+++ b/backend/src/api/member/memberUnmerge.ts
@@ -0,0 +1,11 @@
+import Permissions from '../../security/permissions'
+import MemberService from '../../services/memberService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const payload = await new MemberService(req).unmerge(req.params.memberId, req.body)
+
+ return req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/memberUnmergePreview.ts b/backend/src/api/member/memberUnmergePreview.ts
new file mode 100644
index 0000000000..e91d4d11b8
--- /dev/null
+++ b/backend/src/api/member/memberUnmergePreview.ts
@@ -0,0 +1,15 @@
+import Permissions from '../../security/permissions'
+import MemberService from '../../services/memberService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const payload = await new MemberService(req).unmergePreview(
+ req.params.memberId,
+ req.body.identityId,
+ req.body.revertPreviousMerge,
+ )
+
+ await req.responseHandler.success(req, res, payload, 200)
+}
diff --git a/backend/src/api/member/memberUpdate.ts b/backend/src/api/member/memberUpdate.ts
index 174985a92b..5e49c90d5a 100644
--- a/backend/src/api/member/memberUpdate.ts
+++ b/backend/src/api/member/memberUpdate.ts
@@ -1,16 +1,13 @@
-import lodash from 'lodash'
import Permissions from '../../security/permissions'
-import track from '../../segment/track'
import MemberService from '../../services/memberService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * PUT /tenant/{tenantId}/member/{id}
+ * PUT /member/{id}
* @summary Update a member
* @tag Members
* @security Bearer
* @description Update a member
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @pathParam {string} id - The ID of the member
* @bodyContent {MemberUpdateInput} application/json
* @response 200 - Ok
@@ -23,16 +20,13 @@ import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
- const member = await new MemberService(req).findById(req.params.id)
- const payload = await new MemberService(req).update(req.params.id, req.body)
+ const { invalidateCache, ...data } = req.body
- const differentTagIds = lodash.difference(
- payload.tags.map((t) => t.id),
- member.tags.map((t) => t.id),
- )
- if (differentTagIds.length > 0) {
- track('Member Tagged', { id: payload.id, tagIds: [...differentTagIds] }, { ...req })
- }
+ const payload = await new MemberService(req).update(req.params.id, data, {
+ syncToOpensearch: true,
+ manualChange: true,
+ invalidateCache: invalidateCache ?? false,
+ })
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/member/organization/index.ts b/backend/src/api/member/organization/index.ts
new file mode 100644
index 0000000000..1a8723e0c5
--- /dev/null
+++ b/backend/src/api/member/organization/index.ts
@@ -0,0 +1,24 @@
+import { safeWrap } from '@/middlewares/errorMiddleware'
+
+export default (app) => {
+ // Member Organiaztion List
+ app.get(`/member/:memberId/organization`, safeWrap(require('./memberOrganizationList').default))
+
+ // Member Organiaztion Create
+ app.post(
+ `/member/:memberId/organization`,
+ safeWrap(require('./memberOrganizationCreate').default),
+ )
+
+ // Member Organiaztion Update
+ app.patch(
+ `/member/:memberId/organization/:id`,
+ safeWrap(require('./memberOrganizationUpdate').default),
+ )
+
+ // Member Organiaztion Delete
+ app.delete(
+ `/member/:memberId/organization/:id`,
+ safeWrap(require('./memberOrganizationDelete').default),
+ )
+}
diff --git a/backend/src/api/member/organization/memberOrganizationCreate.ts b/backend/src/api/member/organization/memberOrganizationCreate.ts
new file mode 100644
index 0000000000..462e222733
--- /dev/null
+++ b/backend/src/api/member/organization/memberOrganizationCreate.ts
@@ -0,0 +1,26 @@
+import MemberOrganizationsService from '@/services/member/memberOrganizationsService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * POST /member/:memberId/organization
+ * @summary Create member organization
+ * @tag Members
+ * @security Bearer
+ * @description Create one member organization.
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.Organization
+ * @response 401 - Unauthorized
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const memberOrganizationsService = new MemberOrganizationsService(req)
+
+ const payload = await memberOrganizationsService.create(req.params.memberId, req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/organization/memberOrganizationDelete.ts b/backend/src/api/member/organization/memberOrganizationDelete.ts
new file mode 100644
index 0000000000..84a7f0e338
--- /dev/null
+++ b/backend/src/api/member/organization/memberOrganizationDelete.ts
@@ -0,0 +1,28 @@
+import MemberOrganizationsService from '@/services/member/memberOrganizationsService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * DELETE /member/:memberId/organization/:memberOrganizationId
+ * @summary Remove member organization
+ * @tag Members
+ * @security Bearer
+ * @description Remove member organization.
+ * @pathParam {string} memberId - member ID | {string} memberOrganizationId - member organization ID
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.Organization
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const memberOrganizationsService = new MemberOrganizationsService(req)
+
+ const payload = await memberOrganizationsService.delete(req.params.id, req.params.memberId)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/organization/memberOrganizationList.ts b/backend/src/api/member/organization/memberOrganizationList.ts
new file mode 100644
index 0000000000..451a29ed1c
--- /dev/null
+++ b/backend/src/api/member/organization/memberOrganizationList.ts
@@ -0,0 +1,26 @@
+import MemberOrganizationsService from '@/services/member/memberOrganizationsService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * GET /member/:memberId/organization
+ * @summary Query member organizations
+ * @tag Members
+ * @security Bearer
+ * @description Query member organization.
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.Organization
+ * @response 401 - Unauthorized
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberRead)
+
+ const memberOrganizationsService = new MemberOrganizationsService(req)
+
+ const payload = await memberOrganizationsService.list(req.params.memberId)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/member/organization/memberOrganizationUpdate.ts b/backend/src/api/member/organization/memberOrganizationUpdate.ts
new file mode 100644
index 0000000000..117a5a3f10
--- /dev/null
+++ b/backend/src/api/member/organization/memberOrganizationUpdate.ts
@@ -0,0 +1,32 @@
+import MemberOrganizationsService from '@/services/member/memberOrganizationsService'
+
+import Permissions from '../../../security/permissions'
+import PermissionChecker from '../../../services/user/permissionChecker'
+
+/**
+ * PATCH /member/:memberId/organization/:memberOrganizationId
+ * @summary Update member organization
+ * @tag Members
+ * @security Bearer
+ * @description Update member organization.
+ * @pathParam {string} memberId - member ID | {string} memberOrganizationId - member organization ID
+ * @response 200 - Ok
+ * @responseContent {MemberList} 200.application/json
+ * @responseExample {MemberList} 200.application/json.Organization
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
+
+ const memberOrganizationsService = new MemberOrganizationsService(req)
+
+ const payload = await memberOrganizationsService.update(
+ req.params.id,
+ req.params.memberId,
+ req.body,
+ )
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/merge-suggestions/index.ts b/backend/src/api/merge-suggestions/index.ts
new file mode 100644
index 0000000000..d2abce4d40
--- /dev/null
+++ b/backend/src/api/merge-suggestions/index.ts
@@ -0,0 +1,6 @@
+import { safeWrap } from '../../middlewares/errorMiddleware'
+
+export default (app) => {
+ app.post(`/membersToMerge`, safeWrap(require('./membersToMergeList').default))
+ app.post(`/organizationsToMerge`, safeWrap(require('./organizationsToMergeList').default))
+}
diff --git a/backend/src/api/merge-suggestions/membersToMergeList.ts b/backend/src/api/merge-suggestions/membersToMergeList.ts
new file mode 100644
index 0000000000..37bff94915
--- /dev/null
+++ b/backend/src/api/merge-suggestions/membersToMergeList.ts
@@ -0,0 +1,11 @@
+import Permissions from '../../security/permissions'
+import MemberService from '../../services/memberService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.memberRead)
+
+ const payload = await new MemberService(req).findMembersWithMergeSuggestions(req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/merge-suggestions/organizationsToMergeList.ts b/backend/src/api/merge-suggestions/organizationsToMergeList.ts
new file mode 100644
index 0000000000..6d79943185
--- /dev/null
+++ b/backend/src/api/merge-suggestions/organizationsToMergeList.ts
@@ -0,0 +1,11 @@
+import Permissions from '../../security/permissions'
+import OrganizationService from '../../services/organizationService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.organizationRead)
+
+ const payload = await new OrganizationService(req).findOrganizationsWithMergeSuggestions(req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/mergeAction/index.ts b/backend/src/api/mergeAction/index.ts
new file mode 100644
index 0000000000..f322a36151
--- /dev/null
+++ b/backend/src/api/mergeAction/index.ts
@@ -0,0 +1,5 @@
+import { safeWrap } from '../../middlewares/errorMiddleware'
+
+export default (app) => {
+ app.get(`/mergeActions`, safeWrap(require('./mergeActionQuery').default))
+}
diff --git a/backend/src/api/mergeAction/mergeActionQuery.ts b/backend/src/api/mergeAction/mergeActionQuery.ts
new file mode 100644
index 0000000000..6a839f865d
--- /dev/null
+++ b/backend/src/api/mergeAction/mergeActionQuery.ts
@@ -0,0 +1,29 @@
+import MergeActionsService from '@/services/MergeActionsService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * GET /mergeAction
+ * @summary Query mergeActions
+ * @tag MergeActions
+ * @security Bearer
+ * @description Query mergeActions. It accepts filters and pagination.
+ * @queryParam {string} entityId - ID of the entity
+ * @queryParam {string} type - type of the entity (e.g., org or member)
+ * @queryParam {number} [limit] - number of records to return (optional, default to 20)
+ * @queryParam {number} [offset] - number of records to skip (optional, default to 0)
+ * @response 200 - Ok
+ * @responseContent {MergeActionList} 200.application/json
+ * @responseExample {MergeActionList} 200.application/json.MergeAction
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.mergeActionRead)
+
+ const payload = await new MergeActionsService(req).query(req.query)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/microservice/index.ts b/backend/src/api/microservice/index.ts
deleted file mode 100644
index 8adc67ec6b..0000000000
--- a/backend/src/api/microservice/index.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- app.post(`/tenant/:tenantId/microservice`, safeWrap(require('./microserviceCreate').default))
- app.post(`/tenant/:tenantId/microservice/query`, safeWrap(require('./microserviceQuery').default))
- app.put(`/tenant/:tenantId/microservice/:id`, safeWrap(require('./microserviceUpdate').default))
- app.post(
- `/tenant/:tenantId/microservice/import`,
- safeWrap(require('./microserviceImport').default),
- )
- app.delete(`/tenant/:tenantId/microservice`, safeWrap(require('./microserviceDestroy').default))
- app.get(
- `/tenant/:tenantId/microservice/autocomplete`,
- safeWrap(require('./microserviceAutocomplete').default),
- )
- app.get(`/tenant/:tenantId/microservice`, safeWrap(require('./microserviceList').default))
- app.get(`/tenant/:tenantId/microservice/:id`, safeWrap(require('./microserviceFind').default))
-}
diff --git a/backend/src/api/microservice/microserviceAutocomplete.ts b/backend/src/api/microservice/microserviceAutocomplete.ts
deleted file mode 100644
index 34ad935db5..0000000000
--- a/backend/src/api/microservice/microserviceAutocomplete.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import Permissions from '../../security/permissions'
-import MicroserviceService from '../../services/microserviceService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.microserviceAutocomplete)
-
- const payload = await new MicroserviceService(req).findAllAutocomplete(
- req.query.query,
- req.query.limit,
- )
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/microservice/microserviceCreate.ts b/backend/src/api/microservice/microserviceCreate.ts
deleted file mode 100644
index 35b28c69d4..0000000000
--- a/backend/src/api/microservice/microserviceCreate.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Permissions from '../../security/permissions'
-import MicroserviceService from '../../services/microserviceService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- const permissionsChecker = new PermissionChecker(req)
- permissionsChecker.validateHas(Permissions.values.microserviceCreate)
- permissionsChecker.validateMicroservicesProtectedFields(req.body)
-
- const payload = await new MicroserviceService(req).create(req.body)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/microservice/microserviceDestroy.ts b/backend/src/api/microservice/microserviceDestroy.ts
deleted file mode 100644
index aff8ab3f74..0000000000
--- a/backend/src/api/microservice/microserviceDestroy.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import MicroserviceService from '../../services/microserviceService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.microserviceDestroy)
-
- await new MicroserviceService(req).destroyAll(req.query.ids)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/microservice/microserviceFind.ts b/backend/src/api/microservice/microserviceFind.ts
deleted file mode 100644
index c5b3b98ccd..0000000000
--- a/backend/src/api/microservice/microserviceFind.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import MicroserviceService from '../../services/microserviceService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.microserviceRead)
-
- const payload = await new MicroserviceService(req).findById(req.params.id)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/microservice/microserviceImport.ts b/backend/src/api/microservice/microserviceImport.ts
deleted file mode 100644
index 1b7276d731..0000000000
--- a/backend/src/api/microservice/microserviceImport.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Permissions from '../../security/permissions'
-import MicroserviceService from '../../services/microserviceService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.microserviceImport)
-
- await new MicroserviceService(req).import(req.body, req.body.importHash)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/microservice/microserviceList.ts b/backend/src/api/microservice/microserviceList.ts
deleted file mode 100644
index 9bcf0600bb..0000000000
--- a/backend/src/api/microservice/microserviceList.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import MicroserviceService from '../../services/microserviceService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.microserviceRead)
-
- const payload = await new MicroserviceService(req).findAndCountAll(req.query)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/microservice/microserviceQuery.ts b/backend/src/api/microservice/microserviceQuery.ts
deleted file mode 100644
index 84f41cd3d6..0000000000
--- a/backend/src/api/microservice/microserviceQuery.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import MicroserviceService from '../../services/microserviceService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-// /**
-// * POST /tenant/{tenantId}/microservice
-// * @summary Create or update an microservice
-// * @tag Activities
-// * @security Bearer
-// * @description Create or update an microservice. Existence is checked by sourceId and tenantId.
-// * @pathParam {string} tenantId - Your workspace/tenant ID
-// * @bodyContent {MicroserviceUpsertInput} application/json
-// * @response 200 - Ok
-// * @responseContent {Microservice} 200.application/json
-// * @responseExample {MicroserviceUpsert} 200.application/json.Microservice
-// * @response 401 - Unauthorized
-// * @response 404 - Not found
-// * @response 429 - Too many requests
-// */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.microserviceRead)
-
- const payload = await new MicroserviceService(req).query(req.body)
-
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Microservices Advanced Filter', { ...payload }, { ...req })
- }
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/microservice/microserviceUpdate.ts b/backend/src/api/microservice/microserviceUpdate.ts
deleted file mode 100644
index 9b9aa030d3..0000000000
--- a/backend/src/api/microservice/microserviceUpdate.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Permissions from '../../security/permissions'
-import MicroserviceService from '../../services/microserviceService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- const permissionsChecker = new PermissionChecker(req)
- permissionsChecker.validateHas(Permissions.values.microserviceEdit)
- permissionsChecker.validateMicroservicesProtectedFields(req.body)
-
- const payload = await new MicroserviceService(req).update(req.params.id, req.body)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/nango/index.ts b/backend/src/api/nango/index.ts
new file mode 100644
index 0000000000..f5e136fd11
--- /dev/null
+++ b/backend/src/api/nango/index.ts
@@ -0,0 +1,16 @@
+import { NANGO_CLOUD_CONFIG, getNangoCloudSessionToken, initNangoCloudClient } from '@crowd/nango'
+
+import { safeWrap } from '@/middlewares/errorMiddleware'
+
+export default async (app) => {
+ if (NANGO_CLOUD_CONFIG()) {
+ await initNangoCloudClient()
+ app.get(
+ '/nango/session',
+ safeWrap(async (req, res) => {
+ const data = await getNangoCloudSessionToken()
+ await req.responseHandler.success(req, res, data)
+ }),
+ )
+ }
+}
diff --git a/backend/src/api/note/index.ts b/backend/src/api/note/index.ts
deleted file mode 100644
index f744207e34..0000000000
--- a/backend/src/api/note/index.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- app.post(`/tenant/:tenantId/note/query`, safeWrap(require('./noteQuery').default))
- app.post(`/tenant/:tenantId/note`, safeWrap(require('./noteCreate').default))
- app.put(`/tenant/:tenantId/note/:id`, safeWrap(require('./noteUpdate').default))
- app.post(`/tenant/:tenantId/note/import`, safeWrap(require('./noteImport').default))
- app.delete(`/tenant/:tenantId/note`, safeWrap(require('./noteDestroy').default))
- app.get(`/tenant/:tenantId/note/autocomplete`, safeWrap(require('./noteAutocomplete').default))
- app.get(`/tenant/:tenantId/note`, safeWrap(require('./noteList').default))
- app.get(`/tenant/:tenantId/note/:id`, safeWrap(require('./noteFind').default))
-}
diff --git a/backend/src/api/note/noteAutocomplete.ts b/backend/src/api/note/noteAutocomplete.ts
deleted file mode 100644
index 17ff10de69..0000000000
--- a/backend/src/api/note/noteAutocomplete.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import TaskService from '../../services/taskService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.taskAutocomplete)
-
- const payload = await new TaskService(req).findAllAutocomplete(req.query.query, req.query.limit)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/note/noteCreate.ts b/backend/src/api/note/noteCreate.ts
deleted file mode 100644
index e8b6f214f6..0000000000
--- a/backend/src/api/note/noteCreate.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import Permissions from '../../security/permissions'
-import NoteService from '../../services/noteService'
-import PermissionChecker from '../../services/user/permissionChecker'
-import track from '../../segment/track'
-
-/**
- * POST /tenant/{tenantId}/note
- * @summary Create a note
- * @tag Notes
- * @security Bearer
- * @description Create a note
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @bodyContent {NoteNoId} application/json
- * @response 200 - Ok
- * @responseContent {Note} 200.application/json
- * @responseExample {Note} 200.application/json.Note
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.noteCreate)
-
- const payload = await new NoteService(req).create(req.body)
-
- track('Note Created', { id: payload.id }, { ...req })
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/note/noteDestroy.ts b/backend/src/api/note/noteDestroy.ts
deleted file mode 100644
index 1dbc30aee3..0000000000
--- a/backend/src/api/note/noteDestroy.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import Permissions from '../../security/permissions'
-import NoteService from '../../services/noteService'
-import PermissionChecker from '../../services/user/permissionChecker'
-import track from '../../segment/track'
-
-/**
- * DELETE /tenant/{tenantId}/note/{id}
- * @summary Delete a note
- * @tag Notes
- * @security Bearer
- * @description Delete a note.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the note
- * @response 200 - Ok
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.noteDestroy)
-
- await new NoteService(req).destroyAll(req.query.ids)
-
- const payload = true
-
- track('Note Destroyed', {}, { ...req })
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/note/noteFind.ts b/backend/src/api/note/noteFind.ts
deleted file mode 100644
index f264a53cc7..0000000000
--- a/backend/src/api/note/noteFind.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import Permissions from '../../security/permissions'
-import NoteService from '../../services/noteService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * GET /tenant/{tenantId}/note/{id}
- * @summary Find a note
- * @tag Notes
- * @security Bearer
- * @description Find a note by ID.
- * @pathParam {string} tenantId - Your workspace/tenant ID.
- * @pathParam {string} id - The ID of the note.
- * @response 200 - Ok
- * @responseContent {NoteResponse} 200.application/json
- * @responseExample {Note} 200.application/json.Note
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.noteRead)
-
- const payload = await new NoteService(req).findById(req.params.id)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/note/noteImport.ts b/backend/src/api/note/noteImport.ts
deleted file mode 100644
index 53ce5d5ef6..0000000000
--- a/backend/src/api/note/noteImport.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Permissions from '../../security/permissions'
-import NoteService from '../../services/noteService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.noteImport)
-
- await new NoteService(req).import(req.body, req.body.importHash)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/note/noteList.ts b/backend/src/api/note/noteList.ts
deleted file mode 100644
index 28e6ab40db..0000000000
--- a/backend/src/api/note/noteList.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import NoteService from '../../services/noteService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.noteRead)
-
- const payload = await new NoteService(req).findAndCountAll(req.query)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/note/noteQuery.ts b/backend/src/api/note/noteQuery.ts
deleted file mode 100644
index c55a50ca66..0000000000
--- a/backend/src/api/note/noteQuery.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import NoteService from '../../services/noteService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * POST /tenant/{tenantId}/note/query
- * @summary Query notes
- * @tag Notes
- * @security Bearer
- * @description Query notes. It accepts filters, sorting options and pagination.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @bodyContent {NoteQuery} application/json
- * @response 200 - Ok
- * @responseContent {NoteList} 200.application/json
- * @responseExample {NoteList} 200.application/json.Note
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.noteRead)
-
- const payload = await new NoteService(req).query(req.body)
-
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Notes Advanced Filter', { ...payload }, { ...req })
- }
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/note/noteUpdate.ts b/backend/src/api/note/noteUpdate.ts
deleted file mode 100644
index 1ffe33a9e9..0000000000
--- a/backend/src/api/note/noteUpdate.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import Permissions from '../../security/permissions'
-import NoteService from '../../services/noteService'
-import PermissionChecker from '../../services/user/permissionChecker'
-import track from '../../segment/track'
-
-/**
- * PUT /tenant/{tenantId}/note/{id}
- * @summary Update a note
- * @tag Notes
- * @security Bearer
- * @description Update a note
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the note
- * @bodyContent {NoteInput} application/json
- * @response 200 - Ok
- * @responseContent {Note} 200.application/json
- * @responseExample {Note} 200.application/json.Note
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.noteEdit)
-
- const payload = await new NoteService(req).update(req.params.id, req.body)
-
- track('Note Updated', { id: payload.id }, { ...req })
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/organization/index.ts b/backend/src/api/organization/index.ts
index 9d69c713a9..d923e4b749 100644
--- a/backend/src/api/organization/index.ts
+++ b/backend/src/api/organization/index.ts
@@ -1,28 +1,44 @@
import { safeWrap } from '../../middlewares/errorMiddleware'
export default (app) => {
- app.post(`/tenant/:tenantId/organization`, safeWrap(require('./organizationCreate').default))
- app.post(`/tenant/:tenantId/organization/query`, safeWrap(require('./organizationQuery').default))
- app.put(`/tenant/:tenantId/organization/:id`, safeWrap(require('./organizationUpdate').default))
- app.post(
- `/tenant/:tenantId/organization/import`,
- safeWrap(require('./organizationImport').default),
+ app.post(`/organization`, safeWrap(require('./organizationCreate').default))
+ app.post(`/organization/query`, safeWrap(require('./organizationQuery').default))
+ app.put(`/organization/:id`, safeWrap(require('./organizationUpdate').default))
+ app.delete(`/organization`, safeWrap(require('./organizationDestroy').default))
+ app.post(`/organization/autocomplete`, safeWrap(require('./organizationAutocomplete').default))
+ app.get(`/organization/:id`, safeWrap(require('./organizationFind').default))
+
+ app.put(`/organization/:organizationId/merge`, safeWrap(require('./organizationMerge').default))
+
+ app.put(
+ `/organization/:organizationId/no-merge`,
+ safeWrap(require('./organizationNotMerge').default),
)
- app.delete(`/tenant/:tenantId/organization`, safeWrap(require('./organizationDestroy').default))
+
app.get(
- `/tenant/:tenantId/organization/autocomplete`,
- safeWrap(require('./organizationAutocomplete').default),
+ `/organization/:organizationId/can-revert-merge`,
+ safeWrap(require('./organizationCanRevertMerge').default),
)
- app.get(`/tenant/:tenantId/organization`, safeWrap(require('./organizationList').default))
- app.get(`/tenant/:tenantId/organization/:id`, safeWrap(require('./organizationFind').default))
- app.put(
- `/tenant/:tenantId/organization/:organizationId/merge`,
- safeWrap(require('./organizationMerge').default),
+ app.post(
+ `/organization/:organizationId/unmerge/preview`,
+ safeWrap(require('./organizationUnmergePreview').default),
)
- app.put(
- `/tenant/:tenantId/organization/:organizationId/no-merge`,
- safeWrap(require('./organizationNotMerge').default),
+ app.post(
+ `/organization/:organizationId/unmerge`,
+ safeWrap(require('./organizationUnmerge').default),
+ )
+
+ app.post(`/organization/export`, safeWrap(require('./organizationExport').default))
+
+ app.post(`/organization/id`, safeWrap(require('./organizationByIds').default))
+
+ // list organizations across all segments
+ app.post(`/organization/list`, safeWrap(require('./organizationList').default))
+
+ app.post(
+ `/organization/:id/data-issue`,
+ safeWrap(require('./organizationDataIssueCreate').default),
)
}
diff --git a/backend/src/api/organization/organizationAutocomplete.ts b/backend/src/api/organization/organizationAutocomplete.ts
index c21cdb612b..5eaa3bc0c1 100644
--- a/backend/src/api/organization/organizationAutocomplete.ts
+++ b/backend/src/api/organization/organizationAutocomplete.ts
@@ -5,10 +5,7 @@ import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.organizationAutocomplete)
- const payload = await new OrganizationService(req).findAllAutocomplete(
- req.query.query,
- req.query.limit,
- )
+ const payload = await new OrganizationService(req).findAllAutocomplete(req.body)
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/organization/organizationByIds.ts b/backend/src/api/organization/organizationByIds.ts
new file mode 100644
index 0000000000..6d53e0eb6c
--- /dev/null
+++ b/backend/src/api/organization/organizationByIds.ts
@@ -0,0 +1,11 @@
+import Permissions from '../../security/permissions'
+import OrganizationService from '../../services/organizationService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.organizationRead)
+
+ const payload = await new OrganizationService(req).findByIds(req.body.ids)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/organization/organizationCanRevertMerge.ts b/backend/src/api/organization/organizationCanRevertMerge.ts
new file mode 100644
index 0000000000..420ecfea5b
--- /dev/null
+++ b/backend/src/api/organization/organizationCanRevertMerge.ts
@@ -0,0 +1,19 @@
+import Permissions from '../../security/permissions'
+import OrganizationService from '../../services/organizationService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.organizationEdit)
+
+ const identity = {
+ ...req.query.identity,
+ verified: req.query?.identity?.verified === 'true',
+ }
+
+ const payload = await new OrganizationService(req).canRevertMerge(
+ req.params.organizationId,
+ identity,
+ )
+
+ await req.responseHandler.success(req, res, payload, 200)
+}
diff --git a/backend/src/api/organization/organizationCreate.ts b/backend/src/api/organization/organizationCreate.ts
index 197ecf42a8..bd20632631 100644
--- a/backend/src/api/organization/organizationCreate.ts
+++ b/backend/src/api/organization/organizationCreate.ts
@@ -4,12 +4,11 @@ import OrganizationService from '../../services/organizationService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * POST /tenant/{tenantId}/organization
+ * POST /organization
* @summary Create a organization
* @tag Organizations
* @security Bearer
* @description Create a organization
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @bodyContent {OrganizationInput} application/json
* @response 200 - Ok
* @responseContent {Organization} 200.application/json
@@ -21,10 +20,9 @@ import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.organizationCreate)
- const enrichP = req.body?.shouldEnrich || false
- const payload = await new OrganizationService(req).createOrUpdate(req.body, enrichP)
+ const payload = await new OrganizationService(req).createOrUpdate(req.body)
- track('Organization Manually Created', { ...payload }, { ...req })
+ track('Organization Manually Created', { ...req.body }, { ...req })
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/organization/organizationDataIssueCreate.ts b/backend/src/api/organization/organizationDataIssueCreate.ts
new file mode 100644
index 0000000000..19d09c1a13
--- /dev/null
+++ b/backend/src/api/organization/organizationDataIssueCreate.ts
@@ -0,0 +1,17 @@
+import { DataIssueEntity } from '@crowd/types'
+
+import DataIssueService from '@/services/dataIssueService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.dataIssueCreate)
+
+ const payload = await new DataIssueService(req).createDataIssue(
+ { ...req.body, entity: DataIssueEntity.ORGANIZATION },
+ req.params.id,
+ )
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/organization/organizationDestroy.ts b/backend/src/api/organization/organizationDestroy.ts
index d9eaad1665..4227a06f25 100644
--- a/backend/src/api/organization/organizationDestroy.ts
+++ b/backend/src/api/organization/organizationDestroy.ts
@@ -3,12 +3,11 @@ import OrganizationService from '../../services/organizationService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * DELETE /tenant/{tenantId}/organization/{id}
+ * DELETE /organization/{id}
* @summary Delete a organization
* @tag Organizations
* @security Bearer
* @description Delete a organization.
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @pathParam {string} id - The ID of the organization
* @response 200 - Ok
* @response 401 - Unauthorized
diff --git a/backend/src/api/organization/organizationExport.ts b/backend/src/api/organization/organizationExport.ts
new file mode 100644
index 0000000000..978299f933
--- /dev/null
+++ b/backend/src/api/organization/organizationExport.ts
@@ -0,0 +1,50 @@
+import { generateUUIDv4 } from '@crowd/common'
+import { ITriggerCSVExport, TemporalWorkflowId } from '@crowd/types'
+
+import Permissions from '../../security/permissions'
+import identifyTenant from '../../segment/identifyTenant'
+import track from '../../segment/track'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+/**
+ * POST /organization/export
+ * @summary Export organizations as CSV
+ * @tag Organizations
+ * @security Bearer
+ * @description Export organizations. It accepts filters, sorting options and pagination.
+ * @bodyContent {OrganizationQuery} application/json
+ * @response 200 - Ok
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.organizationRead)
+
+ await req.temporal.workflow.start('exportOrganizationsToCSV', {
+ taskQueue: 'exports',
+ workflowId: `${TemporalWorkflowId.ORGANIZATIONS_CSV_EXPORTS}/${
+ req.currentTenant.id
+ }/${generateUUIDv4()}`,
+ retry: {
+ maximumAttempts: 1,
+ },
+ args: [
+ {
+ tenantId: req.currentTenant.id,
+ segmentIds: req.body.segments,
+ criteria: req.body,
+ sendTo: [req.currentUser.email],
+ } as ITriggerCSVExport,
+ ],
+ searchAttributes: {
+ TenantId: [req.currentTenant.id],
+ },
+ })
+
+ identifyTenant(req)
+
+ track('Organization CSV Export', {}, { ...req.body }, req.currentUser.id)
+
+ await req.responseHandler.success(req, res, {})
+}
diff --git a/backend/src/api/organization/organizationFind.ts b/backend/src/api/organization/organizationFind.ts
index dfc109b4b4..d4a8dc0bd0 100644
--- a/backend/src/api/organization/organizationFind.ts
+++ b/backend/src/api/organization/organizationFind.ts
@@ -1,16 +1,13 @@
-import isFeatureEnabled from '@/feature-flags/isFeatureEnabled'
import Permissions from '../../security/permissions'
import OrganizationService from '../../services/organizationService'
import PermissionChecker from '../../services/user/permissionChecker'
-import { FeatureFlag } from '@/types/common'
/**
- * GET /tenant/{tenantId}/organization/{id}
+ * GET /organization/{id}
* @summary Find an organization
* @tag Organizations
* @security Bearer
* @description Find an organization by ID.
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @pathParam {string} id - The ID of the organization
* @response 200 - Ok
* @responseContent {OrganizationResponse} 200.application/json
@@ -23,17 +20,6 @@ export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.organizationRead)
const segmentId = req.query.segmentId
- if (!segmentId) {
- const segmentsEnabled = await isFeatureEnabled(FeatureFlag.SEGMENTS, req)
- if (segmentsEnabled) {
- await req.responseHandler.error(req, res, {
- code: 400,
- message: 'Segment ID is required',
- })
- return
- }
- }
-
const payload = await new OrganizationService(req).findById(req.params.id, segmentId)
await req.responseHandler.success(req, res, payload)
diff --git a/backend/src/api/organization/organizationImport.ts b/backend/src/api/organization/organizationImport.ts
deleted file mode 100644
index 766aa89581..0000000000
--- a/backend/src/api/organization/organizationImport.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Permissions from '../../security/permissions'
-import OrganizationService from '../../services/organizationService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.organizationImport)
-
- await new OrganizationService(req).import(req.body.data, req.body.importHash)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/organization/organizationList.ts b/backend/src/api/organization/organizationList.ts
index 163784bb66..839083c29d 100644
--- a/backend/src/api/organization/organizationList.ts
+++ b/backend/src/api/organization/organizationList.ts
@@ -1,11 +1,27 @@
+import OrganizationService from '@/services/organizationService'
+
import Permissions from '../../security/permissions'
-import OrganizationService from '../../services/organizationService'
import PermissionChecker from '../../services/user/permissionChecker'
+/**
+ * POST /organization/list
+ * @summary List organizations across all segments
+ * @tag Organizations
+ * @security Bearer
+ * @description List organizations across all segments. It accepts filters, sorting options and pagination.
+ * @bodyContent {OrganizationQuery} application/json
+ * @response 200 - Ok
+ * @responseContent {OrganizationList} 200.application/json
+ * @responseExample {OrganizationList} 200.application/json.Organization
+ * @response 401 - Unauthorized
+ * @response 404 - Not found
+ * @response 429 - Too many requests
+ */
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.organizationRead)
- const payload = await new OrganizationService(req).findAndCountAll(req.query)
+ const orgService = new OrganizationService(req)
+ const payload = await orgService.listOrganizationsAcrossAllSegments(req.body)
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/organization/organizationMerge.ts b/backend/src/api/organization/organizationMerge.ts
index 040c9deac7..620a4af874 100644
--- a/backend/src/api/organization/organizationMerge.ts
+++ b/backend/src/api/organization/organizationMerge.ts
@@ -1,4 +1,5 @@
import OrganizationService from '@/services/organizationService'
+
import Permissions from '../../security/permissions'
import track from '../../segment/track'
import PermissionChecker from '../../services/user/permissionChecker'
@@ -6,14 +7,19 @@ import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.organizationEdit)
- const payload = await new OrganizationService(req).merge(
- req.params.organizationId,
- req.body.organizationToMerge,
- )
+ const primaryOrgId = req.params.organizationId
+ const secondaryOrgId = req.body.organizationToMerge
+ const segmentId = req.body.segments[0]
+
+ const requestPayload = {
+ primary: primaryOrgId,
+ secondary: secondaryOrgId,
+ segmentId,
+ }
- track('Merge organizations', { ...payload }, { ...req })
+ await new OrganizationService(req).mergeSync(primaryOrgId, secondaryOrgId, segmentId)
- const status = payload.status || 200
+ track('Merge organizations', requestPayload, { ...req })
- await req.responseHandler.success(req, res, payload, status)
+ await req.responseHandler.success(req, res, requestPayload)
}
diff --git a/backend/src/api/organization/organizationNotMerge.ts b/backend/src/api/organization/organizationNotMerge.ts
index facad8025e..fdba37295e 100644
--- a/backend/src/api/organization/organizationNotMerge.ts
+++ b/backend/src/api/organization/organizationNotMerge.ts
@@ -1,4 +1,5 @@
import OrganizationService from '@/services/organizationService'
+
import Permissions from '../../security/permissions'
import track from '../../segment/track'
import PermissionChecker from '../../services/user/permissionChecker'
@@ -10,7 +11,14 @@ export default async (req, res) => {
req.body.organizationToNotMerge,
)
- track('Ignore merge organizations', {}, { ...req })
+ track(
+ 'Ignore merge organizations',
+ {
+ organizationId: req.params.organizationId,
+ organizationToNotMergeId: req.body.organizationToNotMerge,
+ },
+ { ...req },
+ )
await req.responseHandler.success(req, res, { status: 200 })
}
diff --git a/backend/src/api/organization/organizationQuery.ts b/backend/src/api/organization/organizationQuery.ts
index 62914272fc..d1bd52a0f9 100644
--- a/backend/src/api/organization/organizationQuery.ts
+++ b/backend/src/api/organization/organizationQuery.ts
@@ -4,12 +4,11 @@ import OrganizationService from '../../services/organizationService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * POST /tenant/{tenantId}/organization/query
+ * POST /organization/query
* @summary Query organizations
* @tag Organizations
* @security Bearer
* @description Query organizations. It accepts filters, sorting options and pagination.
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @bodyContent {OrganizationQuery} application/json
* @response 200 - Ok
* @responseContent {OrganizationList} 200.application/json
@@ -23,8 +22,8 @@ export default async (req, res) => {
const payload = await new OrganizationService(req).query(req.body)
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Organizations Advanced Filter', { ...payload }, { ...req })
+ if (req.body?.filter && Object.keys(req.body.filter).length > 0) {
+ track('Organizations Advanced Filter', { ...req.body }, { ...req })
}
await req.responseHandler.success(req, res, payload)
diff --git a/backend/src/api/organization/organizationUnmerge.ts b/backend/src/api/organization/organizationUnmerge.ts
new file mode 100644
index 0000000000..b4ca0c6c67
--- /dev/null
+++ b/backend/src/api/organization/organizationUnmerge.ts
@@ -0,0 +1,12 @@
+import OrganizationService from '@/services/organizationService'
+
+import Permissions from '../../security/permissions'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.organizationEdit)
+
+ const payload = await new OrganizationService(req).unmerge(req.params.organizationId, req.body)
+
+ await req.responseHandler.success(req, res, payload, 200)
+}
diff --git a/backend/src/api/organization/organizationUnmergePreview.ts b/backend/src/api/organization/organizationUnmergePreview.ts
new file mode 100644
index 0000000000..bdfe6fc0bb
--- /dev/null
+++ b/backend/src/api/organization/organizationUnmergePreview.ts
@@ -0,0 +1,15 @@
+import Permissions from '../../security/permissions'
+import OrganizationService from '../../services/organizationService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.organizationEdit)
+
+ const payload = await new OrganizationService(req).unmergePreview(
+ req.params.organizationId,
+ req.body.identity,
+ req.body.revertPreviousMerge,
+ )
+
+ await req.responseHandler.success(req, res, payload, 200)
+}
diff --git a/backend/src/api/organization/organizationUpdate.ts b/backend/src/api/organization/organizationUpdate.ts
index 2bfed8211e..290a55cf5d 100644
--- a/backend/src/api/organization/organizationUpdate.ts
+++ b/backend/src/api/organization/organizationUpdate.ts
@@ -3,12 +3,11 @@ import OrganizationService from '../../services/organizationService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * PUT /tenant/{tenantId}/organization/{id}
+ * PUT /organization/{id}
* @summary Update an organization
* @tag Organizations
* @security Bearer
* @description Update a organization
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @pathParam {string} id - The ID of the organization
* @bodyContent {OrganizationInput} application/json
* @response 200 - Ok
@@ -21,7 +20,13 @@ import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.organizationEdit)
- const payload = await new OrganizationService(req).update(req.params.id, req.body, true)
+ const payload = await new OrganizationService(req).update(
+ req.params.id,
+ req.body,
+ true,
+ true,
+ true,
+ )
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/plan/index.ts b/backend/src/api/plan/index.ts
deleted file mode 100644
index 0a7dd01433..0000000000
--- a/backend/src/api/plan/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- app.post(`/plan/stripe/webhook`, safeWrap(require('./stripe/webhook').default))
- app.post(`/tenant/:tenantId/plan/stripe/portal`, safeWrap(require('./stripe/portal').default))
- app.post(`/tenant/:tenantId/plan/stripe/checkout`, safeWrap(require('./stripe/checkout').default))
-}
diff --git a/backend/src/api/plan/stripe/checkout.ts b/backend/src/api/plan/stripe/checkout.ts
deleted file mode 100644
index b4556f375b..0000000000
--- a/backend/src/api/plan/stripe/checkout.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import { PLANS_CONFIG } from '../../../conf'
-import Error400 from '../../../errors/Error400'
-import Error403 from '../../../errors/Error403'
-import Plans from '../../../security/plans'
-import TenantService from '../../../services/tenantService'
-import { tenantSubdomain } from '../../../services/tenantSubdomain'
-
-export default async (req, res) => {
- if (!PLANS_CONFIG.stripeSecretKey) {
- throw new Error400(req.language, 'tenant.stripeNotConfigured')
- }
-
- const stripe = require('stripe')(PLANS_CONFIG.stripeSecretKey)
-
- const { currentTenant } = req
- const { currentUser } = req
-
- if (!currentTenant || !currentUser) {
- throw new Error403(req.language)
- }
-
- if (
- currentTenant.plan !== Plans.values.essential &&
- currentTenant.planStatus !== 'cancel_at_period_end' &&
- currentTenant.planUserId !== currentUser.id
- ) {
- throw new Error403(req.language)
- }
-
- let { planStripeCustomerId } = currentTenant
-
- if (!planStripeCustomerId || currentTenant.planUserId !== currentUser.id) {
- const stripeCustomer = await stripe.customers.create({
- email: currentUser.email,
- metadata: {
- tenantId: currentTenant.id,
- },
- })
-
- planStripeCustomerId = stripeCustomer.id
- }
-
- await new TenantService(req).updatePlanUser(
- currentTenant.id,
- planStripeCustomerId,
- currentUser.id,
- )
-
- const session = await stripe.checkout.sessions.create({
- payment_method_types: ['card'],
- line_items: [
- {
- price: Plans.selectStripePriceIdByPlan(req.body.plan),
- quantity: 1,
- },
- ],
- mode: 'subscription',
- success_url: `${tenantSubdomain.frontendUrl(currentTenant)}/plan`,
- cancel_url: `${tenantSubdomain.frontendUrl(currentTenant)}/plan`,
- customer: planStripeCustomerId,
- })
-
- await req.responseHandler.success(req, res, session)
-}
diff --git a/backend/src/api/plan/stripe/portal.ts b/backend/src/api/plan/stripe/portal.ts
deleted file mode 100644
index bc7ae1a9a9..0000000000
--- a/backend/src/api/plan/stripe/portal.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { PLANS_CONFIG } from '../../../conf'
-import Error400 from '../../../errors/Error400'
-import Error403 from '../../../errors/Error403'
-import Plans from '../../../security/plans'
-import TenantService from '../../../services/tenantService'
-import { tenantSubdomain } from '../../../services/tenantSubdomain'
-
-export default async (req, res) => {
- if (!PLANS_CONFIG.stripeSecretKey) {
- throw new Error400(req.language, 'tenant.stripeNotConfigured')
- }
-
- const stripe = require('stripe')(PLANS_CONFIG.stripeSecretKey)
-
- const { currentTenant } = req
- const { currentUser } = req
-
- if (!currentTenant || !currentUser) {
- throw new Error403(req.language)
- }
-
- if (
- currentTenant.plan !== Plans.values.essential &&
- currentTenant.planStatus !== 'cancel_at_period_end' &&
- currentTenant.planUserId !== currentUser.id
- ) {
- throw new Error403(req.language)
- }
-
- let { planStripeCustomerId } = currentTenant
-
- if (!planStripeCustomerId || currentTenant.planUserId !== currentUser.id) {
- const stripeCustomer = await stripe.customers.create({
- email: currentUser.email,
- metadata: {
- tenantId: currentTenant.id,
- },
- })
-
- planStripeCustomerId = stripeCustomer.id
- }
-
- await new TenantService(req).updatePlanUser(
- currentTenant.id,
- planStripeCustomerId,
- currentUser.id,
- )
-
- const session = await stripe.billingPortal.sessions.create({
- customer: planStripeCustomerId,
- return_url: `${tenantSubdomain.frontendUrl(currentTenant)}/plan`,
- })
-
- await req.responseHandler.success(req, res, session)
-}
diff --git a/backend/src/api/plan/stripe/webhook.ts b/backend/src/api/plan/stripe/webhook.ts
deleted file mode 100644
index 269fa7e2bb..0000000000
--- a/backend/src/api/plan/stripe/webhook.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import lodash from 'lodash'
-import { PLANS_CONFIG } from '../../../conf'
-import Plans from '../../../security/plans'
-import TenantService from '../../../services/tenantService'
-
-export default async (req, res) => {
- const stripe = require('stripe')(PLANS_CONFIG.stripeSecretKey)
-
- const event = stripe.webhooks.constructEvent(
- req.rawBody,
- req.headers['stripe-signature'],
- PLANS_CONFIG.stripWebhookSigningSecret,
- )
-
- if (event.type === 'checkout.session.completed') {
- let data = event.data.object
- data = await stripe.checkout.sessions.retrieve(data.id, { expand: ['line_items'] })
-
- const stripePriceId = lodash.get(data, 'line_items.data[0].price.id')
-
- if (!stripePriceId) {
- throw new Error('line_items.data[0].price.id NULL!')
- }
-
- const plan = Plans.selectPlanByStripePriceId(stripePriceId)
- const planStripeCustomerId = data.customer
-
- await new TenantService(req).updatePlanStatus(planStripeCustomerId, plan, 'active')
- }
-
- if (event.type === 'customer.subscription.updated') {
- const data = event.data.object
-
- const stripePriceId = lodash.get(data, 'items.data[0].price.id')
- const plan = Plans.selectPlanByStripePriceId(stripePriceId)
- const planStripeCustomerId = data.customer
-
- if (Plans.selectPlanStatus(data) === 'canceled') {
- await new TenantService(req).updatePlanToFree(planStripeCustomerId)
- } else {
- await new TenantService(req).updatePlanStatus(
- planStripeCustomerId,
- plan,
- Plans.selectPlanStatus(data),
- )
- }
- }
-
- if (event.type === 'customer.subscription.deleted') {
- const data = event.data.object
-
- const planStripeCustomerId = data.customer
-
- await new TenantService(req).updatePlanToFree(planStripeCustomerId)
- }
-
- await req.responseHandler.success(req, res, {
- received: true,
- })
-}
diff --git a/backend/src/api/premium/enrichment/index.ts b/backend/src/api/premium/enrichment/index.ts
deleted file mode 100644
index 5e3aff7413..0000000000
--- a/backend/src/api/premium/enrichment/index.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { safeWrap } from '../../../middlewares/errorMiddleware'
-import { featureFlagMiddleware } from '../../../middlewares/featureFlagMiddleware'
-import { FeatureFlag } from '../../../types/common'
-
-export default (app) => {
- app.put(
- `/tenant/:tenantId/enrichment/member/bulk`,
- featureFlagMiddleware(FeatureFlag.MEMBER_ENRICHMENT, 'enrichment.errors.planLimitExceeded'),
- safeWrap(require('./memberEnrichBulk').default),
- )
- app.put(
- `/tenant/:tenantId/enrichment/member/:id/`,
- featureFlagMiddleware(FeatureFlag.MEMBER_ENRICHMENT, 'enrichment.errors.planLimitExceeded'),
- safeWrap(require('./memberEnrich').default),
- )
-}
diff --git a/backend/src/api/premium/enrichment/memberEnrich.ts b/backend/src/api/premium/enrichment/memberEnrich.ts
deleted file mode 100644
index afd356bf3f..0000000000
--- a/backend/src/api/premium/enrichment/memberEnrich.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { RedisCache } from '@crowd/redis'
-import { getServiceLogger } from '@crowd/logging'
-import { getSecondsTillEndOfMonth } from '../../../utils/timing'
-import Permissions from '../../../security/permissions'
-import identifyTenant from '../../../segment/identifyTenant'
-import MemberEnrichmentService from '../../../services/premium/enrichment/memberEnrichmentService'
-import PermissionChecker from '../../../services/user/permissionChecker'
-import { FeatureFlagRedisKey } from '../../../types/common'
-import track from '../../../segment/track'
-
-const log = getServiceLogger()
-
-/**
- * PUT /tenant/{tenantId}/enrichment/member/{id}
- * @summary Enrich a member
- * @tag Members
- * @security Bearer
- * @description Enrich a member.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the member
- * @response 200 - Ok
- * @responseContent {MemberResponse} 200.application/json
- * @responseExample {MemberFind} 200.application/json.Member
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
-
- const payload = await new MemberEnrichmentService(req).enrichOne(req.params.id)
-
- track('Single member enrichment', { memberId: req.params.id }, { ...req })
-
- const memberEnrichmentCountCache = new RedisCache(
- FeatureFlagRedisKey.MEMBER_ENRICHMENT_COUNT,
- req.redis,
- req.log,
- )
-
- const memberEnrichmentCount = await memberEnrichmentCountCache.get(req.currentTenant.id)
-
- const secondsRemainingUntilEndOfMonth = getSecondsTillEndOfMonth()
-
- log.info(secondsRemainingUntilEndOfMonth, 'Seconds remaining')
-
- if (!memberEnrichmentCount) {
- await memberEnrichmentCountCache.set(req.currentTenant.id, '0', secondsRemainingUntilEndOfMonth)
- } else {
- await memberEnrichmentCountCache.set(
- req.currentTenant.id,
- (parseInt(memberEnrichmentCount, 10) + 1).toString(),
- secondsRemainingUntilEndOfMonth,
- )
- }
-
- identifyTenant(req)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/premium/enrichment/memberEnrichBulk.ts b/backend/src/api/premium/enrichment/memberEnrichBulk.ts
deleted file mode 100644
index 5afa9c7389..0000000000
--- a/backend/src/api/premium/enrichment/memberEnrichBulk.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import { RedisCache } from '@crowd/redis'
-import { getServiceLogger } from '@crowd/logging'
-import { getSecondsTillEndOfMonth } from '../../../utils/timing'
-import Error403 from '../../../errors/Error403'
-import Permissions from '../../../security/permissions'
-import identifyTenant from '../../../segment/identifyTenant'
-import { sendBulkEnrichMessage } from '../../../serverless/utils/nodeWorkerSQS'
-import PermissionChecker from '../../../services/user/permissionChecker'
-import { FeatureFlag, FeatureFlagRedisKey } from '../../../types/common'
-import track from '../../../segment/track'
-import { PLAN_LIMITS } from '../../../feature-flags/isFeatureEnabled'
-import SequelizeRepository from '../../../database/repositories/sequelizeRepository'
-
-const log = getServiceLogger()
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.memberEdit)
- const membersToEnrich = req.body.members
- const tenant = req.currentTenant.id
- const segmentIds = SequelizeRepository.getSegmentIds(req)
-
- const memberEnrichmentCountCache = new RedisCache(
- FeatureFlagRedisKey.MEMBER_ENRICHMENT_COUNT,
- req.redis,
- req.log,
- )
- const memberEnrichmentCount = await memberEnrichmentCountCache.get(req.currentTenant.id)
-
- log.info(parseInt(memberEnrichmentCount, 10) + membersToEnrich.length, 'Total: ')
-
- // Check if requested enrich count is over limit
- if (
- parseInt(memberEnrichmentCount, 10) + membersToEnrich.length >
- PLAN_LIMITS[req.currentTenant.plan][FeatureFlag.MEMBER_ENRICHMENT]
- ) {
- track(
- `Bulk member enrichment`,
- { count: membersToEnrich.length, memberIds: membersToEnrich, overTheLimit: true },
- { ...req },
- )
-
- await req.responseHandler.error(
- req,
- res,
- new Error403(req.language, 'enrichment.errors.requestedEnrichmentMoreThanLimit'),
- )
- return
- }
-
- track(
- 'Bulk member enrichment',
- { count: membersToEnrich.length, memberIds: membersToEnrich, overTheLimit: false },
- { ...req },
- )
-
- // send the message
- await sendBulkEnrichMessage(tenant, membersToEnrich, segmentIds)
-
- // update enrichment count, we'll also check failed enrichments and deduct these from grand total in bulkEnrichmentWorker
- const secondsRemainingUntilEndOfMonth = getSecondsTillEndOfMonth()
-
- if (!memberEnrichmentCount) {
- await memberEnrichmentCountCache.set(req.currentTenant.id, '0', secondsRemainingUntilEndOfMonth)
- } else {
- await memberEnrichmentCountCache.set(
- req.currentTenant.id,
- (parseInt(memberEnrichmentCount, 10) + membersToEnrich.length).toString(),
- secondsRemainingUntilEndOfMonth,
- )
- }
-
- identifyTenant(req)
-
- await req.responseHandler.success(req, res, membersToEnrich)
-}
diff --git a/backend/src/api/product/index.ts b/backend/src/api/product/index.ts
new file mode 100644
index 0000000000..e9ec8b99de
--- /dev/null
+++ b/backend/src/api/product/index.ts
@@ -0,0 +1,7 @@
+import { safeWrap } from '../../middlewares/errorMiddleware'
+
+export default (app) => {
+ app.post(`/product/event`, safeWrap(require('./productEventCreate').default))
+ app.post(`/product/session`, safeWrap(require('./productSessionCreate').default))
+ app.put(`/product/session/:id`, safeWrap(require('./productSessionUpdate').default))
+}
diff --git a/backend/src/api/product/productEventCreate.ts b/backend/src/api/product/productEventCreate.ts
new file mode 100644
index 0000000000..7ce3189a2c
--- /dev/null
+++ b/backend/src/api/product/productEventCreate.ts
@@ -0,0 +1,15 @@
+import { Error403 } from '@crowd/common'
+
+import ProductAnalyticsService from '@/services/productAnalyticsService'
+
+export default async (req, res) => {
+ if (!req.currentUser || !req.currentUser.id) {
+ throw new Error403(req.language)
+ }
+
+ await new ProductAnalyticsService(req).createEvent(req.body)
+
+ const payload = true
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/product/productSessionCreate.ts b/backend/src/api/product/productSessionCreate.ts
new file mode 100644
index 0000000000..5846fc8973
--- /dev/null
+++ b/backend/src/api/product/productSessionCreate.ts
@@ -0,0 +1,23 @@
+import { Error403 } from '@crowd/common'
+
+import ProductAnalyticsService from '@/services/productAnalyticsService'
+
+export default async (req, res) => {
+ if (!req.currentUser || !req.currentUser.id) {
+ throw new Error403(req.language)
+ }
+
+ // cloudflare headers to get the real ip & country
+ const ipAddress = req.headers['cf-connecting-ip']
+ const country = req.headers['cf-ipcountry']
+
+ req.body = {
+ ...req.body,
+ ipAddress,
+ country,
+ }
+
+ const payload = await new ProductAnalyticsService(req).createSession(req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/product/productSessionUpdate.ts b/backend/src/api/product/productSessionUpdate.ts
new file mode 100644
index 0000000000..4edf15bb45
--- /dev/null
+++ b/backend/src/api/product/productSessionUpdate.ts
@@ -0,0 +1,15 @@
+import { Error403 } from '@crowd/common'
+
+import ProductAnalyticsService from '@/services/productAnalyticsService'
+
+export default async (req, res) => {
+ if (!req.currentUser || !req.currentUser.id) {
+ throw new Error403(req.language)
+ }
+
+ await new ProductAnalyticsService(req).updateSession(req.params.id, req.body)
+
+ const payload = true
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/public/index.ts b/backend/src/api/public/index.ts
new file mode 100644
index 0000000000..dfbcd078cb
--- /dev/null
+++ b/backend/src/api/public/index.ts
@@ -0,0 +1,13 @@
+import { Router } from 'express'
+
+import { errorHandler } from './middlewares/errorHandler'
+import { v1Router } from './v1'
+
+export function publicRouter(): Router {
+ const router = Router()
+
+ router.use('/v1', v1Router())
+ router.use(errorHandler)
+
+ return router
+}
diff --git a/backend/src/api/public/middlewares/errorHandler.ts b/backend/src/api/public/middlewares/errorHandler.ts
new file mode 100644
index 0000000000..56a9882351
--- /dev/null
+++ b/backend/src/api/public/middlewares/errorHandler.ts
@@ -0,0 +1,104 @@
+import type { ErrorRequestHandler, NextFunction, Request, Response } from 'express'
+import {
+ InsufficientScopeError as Auth0InsufficientScopeError,
+ UnauthorizedError as Auth0UnauthorizedError,
+} from 'express-oauth2-jwt-bearer'
+
+import {
+ ConflictError,
+ HttpError,
+ InsufficientScopeError,
+ InternalError,
+ UnauthorizedError,
+} from '@crowd/common'
+import { SlackChannel, SlackPersona, sendSlackNotification } from '@crowd/slack'
+
+/**
+ * Converts errors to structured JSON: `{ error: { code, message } }`.
+ * Defaults to 500 Internal Error for unhandled errors.
+ */
+export const errorHandler: ErrorRequestHandler = (
+ error: any,
+ req: Request,
+ res: Response,
+ _next: NextFunction,
+) => {
+ if (error instanceof ConflictError) {
+ req.log.warn({ context: error.context }, 'Public API conflict')
+ sendSlackNotification(
+ SlackChannel.CDP_LFX_SELF_SERVE_ALERTS,
+ SlackPersona.WARNING_PROPAGATOR,
+ `Public API Conflict 409: ${req.method} ${req.url}`,
+ [
+ {
+ title: 'Request',
+ text: `*Method:* \`${req.method}\`\n*URL:* \`${req.url}\``,
+ },
+ {
+ title: 'Conflict',
+ text: `*Message:* ${error.message}`,
+ },
+ ...(error.context
+ ? [{ title: 'Context', text: `\`\`\`${JSON.stringify(error.context, null, 2)}\`\`\`` }]
+ : []),
+ ],
+ )
+ res.status(error.status).json(error.toJSON())
+ return
+ }
+
+ if (error instanceof HttpError) {
+ res.status(error.status).json(error.toJSON())
+ return
+ }
+
+ if (error instanceof Auth0InsufficientScopeError) {
+ const httpErr = new InsufficientScopeError(error.message || undefined)
+ res.status(httpErr.status).json(httpErr.toJSON())
+ return
+ }
+
+ if (error instanceof Auth0UnauthorizedError) {
+ const httpErr = new UnauthorizedError(error.message || undefined)
+ res.status(httpErr.status).json(httpErr.toJSON())
+ return
+ }
+
+ req.log.error(
+ {
+ error: { name: error?.name, message: error?.message, stack: error?.stack },
+ url: req.url,
+ method: req.method,
+ query: req.query,
+ body: req.body,
+ },
+ 'Unhandled error in public API',
+ )
+
+ sendSlackNotification(
+ SlackChannel.CDP_ALERTS,
+ SlackPersona.ERROR_REPORTER,
+ `Public API Error 500: ${req.method} ${req.url}`,
+ [
+ {
+ title: 'Request',
+ text: `*Method:* \`${req.method}\`\n*URL:* \`${req.url}\``,
+ },
+ {
+ title: 'Error',
+ text: `*Name:* \`${error?.name || 'Unknown'}\`\n*Message:* ${error?.message || 'No message'}`,
+ },
+ ...(error?.stack
+ ? [
+ {
+ title: 'Stack Trace',
+ text: `\`\`\`${error.stack.substring(0, 2700)}\`\`\``,
+ },
+ ]
+ : []),
+ ],
+ )
+
+ const unknownError = new InternalError()
+ res.status(unknownError.status).json(unknownError.toJSON())
+}
diff --git a/backend/src/api/public/middlewares/oauth2Middleware.ts b/backend/src/api/public/middlewares/oauth2Middleware.ts
new file mode 100644
index 0000000000..77ee9d3b6b
--- /dev/null
+++ b/backend/src/api/public/middlewares/oauth2Middleware.ts
@@ -0,0 +1,74 @@
+import type { NextFunction, Request, RequestHandler, Response } from 'express'
+import { auth } from 'express-oauth2-jwt-bearer'
+
+import { UnauthorizedError } from '@crowd/common'
+
+import type { Auth0Configuration } from '@/conf/configTypes'
+import type { Auth0TokenPayload } from '@/types/api'
+
+function resolveIssuer(req: Request): string | undefined {
+ const token = req.headers.authorization?.split(' ')[1]
+ if (!token) return undefined
+ try {
+ const { iss } = JSON.parse(Buffer.from(token.split('.')[1], 'base64url').toString())
+ return typeof iss === 'string' ? iss : undefined
+ } catch {
+ return undefined
+ }
+}
+
+function resolveActor(req: Request, _res: Response, next: NextFunction): void {
+ const payload = (req.auth?.payload ?? {}) as Auth0TokenPayload
+
+ const rawId = payload.sub ?? payload.azp
+
+ if (!rawId) {
+ next(new UnauthorizedError('Token missing caller identity'))
+ return
+ }
+
+ const id = rawId.replace(/@clients$/, '')
+
+ const scopes = typeof payload.scope === 'string' ? payload.scope.split(' ').filter(Boolean) : []
+
+ req.actor = { id, type: 'service', scopes }
+
+ next()
+}
+
+export function oauth2Middleware(config: Auth0Configuration): RequestHandler[] {
+ const issuers = config.issuerBaseURLs
+ .split(',')
+ .map((s) => s.trim())
+ .filter(Boolean)
+
+ if (issuers.length === 0) {
+ throw new Error('No auth0 issuers configured')
+ }
+
+ const handlersByIssuer = new Map(
+ issuers.map((issuerBaseURL) => [
+ issuerBaseURL.replace(/\/$/, ''),
+ auth({ issuerBaseURL, audience: config.audience }),
+ ]),
+ )
+
+ const verifyJwt: RequestHandler = (req, res, next) => {
+ const iss = resolveIssuer(req)
+ if (!iss) {
+ next(new UnauthorizedError('Missing or malformed bearer token'))
+ return
+ }
+
+ const handler = handlersByIssuer.get(iss.replace(/\/$/, ''))
+
+ if (!handler) {
+ next(new UnauthorizedError('Unknown token issuer'))
+ return
+ }
+
+ handler(req, res, next)
+ }
+
+ return [verifyJwt, resolveActor]
+}
diff --git a/backend/src/api/public/middlewares/requireScopes.ts b/backend/src/api/public/middlewares/requireScopes.ts
new file mode 100644
index 0000000000..31bad381c2
--- /dev/null
+++ b/backend/src/api/public/middlewares/requireScopes.ts
@@ -0,0 +1,25 @@
+import type { NextFunction, Request, Response } from 'express'
+
+import { InsufficientScopeError, UnauthorizedError } from '@crowd/common'
+
+import { Scope } from '@/security/scopes'
+
+export const requireScopes =
+ (required: Scope[], mode: 'all' | 'any' = 'all') =>
+ (req: Request, _res: Response, next: NextFunction) => {
+ if (!req.actor) {
+ next(new UnauthorizedError())
+ return
+ }
+
+ const granted = new Set(req.actor.scopes)
+ const hasAccess =
+ mode === 'all' ? required.every((s) => granted.has(s)) : required.some((s) => granted.has(s))
+
+ if (!hasAccess) {
+ next(new InsufficientScopeError())
+ return
+ }
+
+ next()
+ }
diff --git a/backend/src/api/public/middlewares/staticApiKeyMiddleware.ts b/backend/src/api/public/middlewares/staticApiKeyMiddleware.ts
new file mode 100644
index 0000000000..76d928f8a8
--- /dev/null
+++ b/backend/src/api/public/middlewares/staticApiKeyMiddleware.ts
@@ -0,0 +1,48 @@
+import crypto from 'crypto'
+import type { NextFunction, Request, RequestHandler, Response } from 'express'
+
+import { UnauthorizedError } from '@crowd/common'
+import { findApiKeyByHash, optionsQx, touchApiKeyLastUsed } from '@crowd/data-access-layer'
+
+export function staticApiKeyMiddleware(): RequestHandler {
+ return async (req: Request, _res: Response, next: NextFunction): Promise => {
+ try {
+ const authHeader = req.headers.authorization
+
+ if (!authHeader || !authHeader.startsWith('Bearer ')) {
+ next(new UnauthorizedError('Missing or invalid Authorization header'))
+ return
+ }
+
+ const providedKey = authHeader.slice('Bearer '.length)
+ const keyHash = crypto.createHash('sha256').update(providedKey).digest('hex')
+
+ const qx = optionsQx(req)
+ const apiKey = await findApiKeyByHash(qx, keyHash)
+
+ if (!apiKey) {
+ next(new UnauthorizedError('Invalid API key'))
+ return
+ }
+
+ if (apiKey.revokedAt) {
+ next(new UnauthorizedError('API key has been revoked'))
+ return
+ }
+
+ if (apiKey.expiresAt && apiKey.expiresAt < new Date()) {
+ next(new UnauthorizedError('API key has expired'))
+ return
+ }
+
+ // fire and forget — don't block the request
+ touchApiKeyLastUsed(qx, apiKey.id).catch(() => {})
+
+ req.actor = { id: apiKey.name, type: 'service', scopes: apiKey.scopes }
+
+ next()
+ } catch (err) {
+ next(err)
+ }
+ }
+}
diff --git a/backend/src/api/public/openapi.yaml b/backend/src/api/public/openapi.yaml
new file mode 100644
index 0000000000..0a3089ca9a
--- /dev/null
+++ b/backend/src/api/public/openapi.yaml
@@ -0,0 +1,1617 @@
+openapi: 3.1.0
+info:
+ title: CDP Public API
+ version: 1.0.0
+ license:
+ name: Apache-2.0
+ url: https://www.apache.org/licenses/LICENSE-2.0
+ description: >
+ Public REST API for the Community Data Platform (CDP). Provides transactional
+ endpoints for identity verification, work experience management, project
+ affiliations, and contributor lookup.
+
+
+ Two authentication methods are supported depending on the endpoint:
+
+ - **OAuth 2.0 Bearer (Auth0)** — used by LFX One for member, organization,
+ and affiliation management endpoints.
+
+ - **Static API Key** — bearer token with scopes managed in the CDP database.
+
+servers:
+ - url: https://cm.lfx.dev/api/v1
+ description: Production
+ - url: https://lf-staging.crowd.dev/api/v1
+ description: Staging
+
+security: []
+
+tags:
+ - name: Members
+ description: Resolve member profiles by identity.
+ - name: Member Identities
+ description: Manage and verify member identities across platforms.
+ - name: Maintainer Roles
+ description: Retrieve maintainer roles for a member.
+ - name: Work Experiences
+ description: Manage and verify member work experiences (organization affiliations).
+ - name: Project Affiliations
+ description: View and override per-project affiliation data for a member.
+ - name: Organizations
+ description: Look up and create organizations.
+ - name: Affiliations
+ description: Bulk contributor affiliation lookups by GitHub handle.
+
+paths:
+ # ──────────────────────────────────────────────
+ # Members
+ # ──────────────────────────────────────────────
+ /members:
+ post:
+ operationId: createMember
+ summary: Create a member profile
+ description: >
+ Create a new member profile in CDP with one or more identities.
+ tags:
+ - Members
+ security:
+ - OAuth2Bearer:
+ - write:members
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - displayName
+ - identities
+ properties:
+ displayName:
+ type: string
+ minLength: 1
+ description: Display name for the member profile.
+ identities:
+ type: array
+ minItems: 1
+ description: Initial identities for the member.
+ items:
+ $ref: '#/components/schemas/MemberIdentityInput'
+ example:
+ displayName: Jane Doe
+ identities:
+ - value: abc123
+ platform: lfid
+ type: username
+ source: lfxOne
+ verified: true
+ verifiedBy: jane@lfx.dev
+ responses:
+ '201':
+ description: Member created successfully.
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - memberId
+ properties:
+ memberId:
+ type: string
+ format: uuid
+ example:
+ memberId: 550e8400-e29b-41d4-a716-446655440000
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '409':
+ description: Identity already exists on another member.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: CONFLICT
+ message: Identity already exists on another member
+
+ /members/resolve:
+ post:
+ operationId: resolveMember
+ summary: Resolve a CDP member profile
+ description: >
+ Resolve memberId from identities. LFX One should always make a first
+ request to this API to retrieve the corresponding memberId from CDP.
+ If a member is found, use it. If not, create a member.
+ tags:
+ - Members
+ security:
+ - OAuth2Bearer:
+ - read:members
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - lfids
+ properties:
+ lfids:
+ type: array
+ description: LFX IDs to search for.
+ minItems: 1
+ items:
+ type: string
+ minLength: 1
+ emails:
+ type: array
+ description: Optional email addresses to include in the lookup.
+ items:
+ type: string
+ format: email
+ example:
+ lfids:
+ - abc123
+ emails:
+ - user@example.com
+ responses:
+ '200':
+ description: Member resolved successfully.
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - memberId
+ properties:
+ memberId:
+ type: string
+ format: uuid
+ example:
+ memberId: 550e8400-e29b-41d4-a716-446655440000
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ description: Profile not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: NOT_FOUND
+ message: Member not found
+ '409':
+ description: Multiple member profiles matched.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: CONFLICT
+ message: Multiple member profiles matched
+
+ # ──────────────────────────────────────────────
+ # Member Identities
+ # ──────────────────────────────────────────────
+ /members/{memberId}/identities:
+ get:
+ operationId: getMemberIdentities
+ summary: List member identities
+ description: Retrieve all identities for a member profile.
+ tags:
+ - Member Identities
+ security:
+ - OAuth2Bearer:
+ - read:member-identities
+ parameters:
+ - $ref: '#/components/parameters/MemberId'
+ responses:
+ '200':
+ description: Identities retrieved successfully.
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - identities
+ properties:
+ identities:
+ type: array
+ items:
+ $ref: '#/components/schemas/MemberIdentity'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/MemberNotFound'
+
+ post:
+ operationId: createMemberIdentity
+ summary: Add a new identity
+ description: >
+ Add a new identity to a member profile. Returns 409 if the identity
+ already exists on this member or is verified on another member.
+ tags:
+ - Member Identities
+ security:
+ - OAuth2Bearer:
+ - write:member-identities
+ parameters:
+ - $ref: '#/components/parameters/MemberId'
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - value
+ - platform
+ - type
+ - source
+ - verified
+ properties:
+ value:
+ type: string
+ minLength: 1
+ description: Identity value (e.g. username, email address).
+ platform:
+ type: string
+ minLength: 1
+ description: Platform name (e.g. github, linkedin).
+ type:
+ type: string
+ enum:
+ - username
+ - email
+ description: Identity type.
+ source:
+ type: string
+ minLength: 1
+ description: Source system that created this identity.
+ verified:
+ type: boolean
+ description: Whether the identity is verified.
+ verifiedBy:
+ type: string
+ description: Required when `verified` is true. Identifier of who verified.
+ example:
+ value: johndoe
+ platform: github
+ type: username
+ source: lfxOne
+ verified: true
+ verifiedBy: admin@lfx.dev
+ responses:
+ '201':
+ description: Identity created.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MemberIdentity'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/MemberNotFound'
+ '409':
+ description: Identity already exists on another member.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: CONFLICT
+ message: Identity already exists on another member
+
+ /members/{memberId}/identities/{identityId}:
+ patch:
+ operationId: verifyMemberIdentity
+ summary: Verify or reject an identity
+ description: >
+ Set an identity as verified or rejected. When rejected (`verified: false`),
+ the identity is either soft-deleted (no linked activities) or unmerged to
+ a new profile (has linked activities).
+ tags:
+ - Member Identities
+ security:
+ - OAuth2Bearer:
+ - write:member-identities
+ parameters:
+ - $ref: '#/components/parameters/MemberId'
+ - name: identityId
+ in: path
+ required: true
+ description: UUID of the identity to verify or reject.
+ schema:
+ type: string
+ format: uuid
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - verified
+ - verifiedBy
+ properties:
+ verified:
+ type: boolean
+ description: >
+ `true` to verify the identity, `false` to reject it.
+ verifiedBy:
+ type: string
+ description: Identifier of who performed the verification.
+ example:
+ verified: true
+ verifiedBy: admin@lfx.dev
+ responses:
+ '200':
+ description: >
+ Identity updated. Returned when verifying, or when rejecting an
+ identity that has linked activities (triggers unmerge).
+ content:
+ application/json:
+ schema:
+ allOf:
+ - $ref: '#/components/schemas/MemberIdentity'
+ - type: object
+ properties:
+ unmergedToMemberId:
+ type: string
+ format: uuid
+ description: >
+ Present only when rejection triggered an unmerge. The
+ new member profile ID that the identity was moved to.
+ '204':
+ description: >
+ Identity rejected and deleted (no linked activities). No response body.
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ description: Member or identity not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ '409':
+ description: Identity already exists on another member.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: CONFLICT
+ message: Identity already exists on another member
+
+ # ──────────────────────────────────────────────
+ # Maintainer Roles
+ # ──────────────────────────────────────────────
+ /members/{memberId}/maintainer-roles:
+ get:
+ operationId: getMemberMaintainerRoles
+ summary: List maintainer roles
+ description: Retrieve all maintainer roles for a member across projects.
+ tags:
+ - Maintainer Roles
+ security:
+ - OAuth2Bearer:
+ - read:maintainer-roles
+ parameters:
+ - $ref: '#/components/parameters/MemberId'
+ responses:
+ '200':
+ description: Maintainer roles retrieved successfully.
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - maintainerRoles
+ properties:
+ maintainerRoles:
+ type: array
+ items:
+ $ref: '#/components/schemas/MaintainerRole'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/MemberNotFound'
+
+ # ──────────────────────────────────────────────
+ # Work Experiences
+ # ──────────────────────────────────────────────
+ /members/{memberId}/work-experiences:
+ get:
+ operationId: getMemberWorkExperiences
+ summary: List work experiences
+ description: Retrieve all work experiences for a member.
+ tags:
+ - Work Experiences
+ security:
+ - OAuth2Bearer:
+ - read:work-experiences
+ parameters:
+ - $ref: '#/components/parameters/MemberId'
+ responses:
+ '200':
+ description: Work experiences retrieved successfully.
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - memberId
+ - workExperiences
+ properties:
+ memberId:
+ type: string
+ format: uuid
+ workExperiences:
+ type: array
+ items:
+ $ref: '#/components/schemas/WorkExperience'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/MemberNotFound'
+
+ post:
+ operationId: createMemberWorkExperience
+ summary: Add a work experience
+ description: >
+ Add a new work experience to a member profile. Returns 409 if a work
+ experience with the same dates already exists.
+ tags:
+ - Work Experiences
+ security:
+ - OAuth2Bearer:
+ - write:work-experiences
+ parameters:
+ - $ref: '#/components/parameters/MemberId'
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WorkExperienceInput'
+ example:
+ organizationId: 550e8400-e29b-41d4-a716-446655440000
+ jobTitle: Senior Engineer
+ verified: true
+ verifiedBy: admin@lfx.dev
+ source: lfxOne
+ startDate: '2020-01-01T00:00:00.000Z'
+ endDate: null
+ responses:
+ '201':
+ description: Work experience created.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WorkExperience'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/MemberNotFound'
+ '409':
+ description: A work experience with the same dates already exists.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: CONFLICT
+ message: A work experience with the same dates already exists
+
+ /members/{memberId}/work-experiences/{workExperienceId}:
+ put:
+ operationId: updateMemberWorkExperience
+ summary: Update a work experience
+ description: Replace all fields of an existing work experience.
+ tags:
+ - Work Experiences
+ security:
+ - OAuth2Bearer:
+ - write:work-experiences
+ parameters:
+ - $ref: '#/components/parameters/MemberId'
+ - $ref: '#/components/parameters/WorkExperienceId'
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WorkExperienceInput'
+ responses:
+ '200':
+ description: Work experience updated.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WorkExperience'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ description: Member or work experience not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+
+ patch:
+ operationId: verifyMemberWorkExperience
+ summary: Verify or reject a work experience
+ description: >
+ Set a work experience as verified or rejected. When rejected
+ (`verified: false`), the work experience is soft-deleted and
+ affiliations are recalculated.
+ tags:
+ - Work Experiences
+ security:
+ - OAuth2Bearer:
+ - write:work-experiences
+ parameters:
+ - $ref: '#/components/parameters/MemberId'
+ - $ref: '#/components/parameters/WorkExperienceId'
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - verified
+ - verifiedBy
+ properties:
+ verified:
+ type: boolean
+ description: >
+ `true` to verify, `false` to reject (soft-delete).
+ verifiedBy:
+ type: string
+ description: Identifier of who performed the verification.
+ example:
+ verified: true
+ verifiedBy: admin@lfx.dev
+ responses:
+ '200':
+ description: Work experience updated.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WorkExperience'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ description: Member or work experience not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+
+ delete:
+ operationId: deleteMemberWorkExperience
+ summary: Delete a work experience
+ description: >
+ Soft-delete a work experience from a member profile. Affiliations are
+ automatically recalculated.
+ tags:
+ - Work Experiences
+ security:
+ - OAuth2Bearer:
+ - write:work-experiences
+ parameters:
+ - $ref: '#/components/parameters/MemberId'
+ - $ref: '#/components/parameters/WorkExperienceId'
+ responses:
+ '204':
+ description: Work experience deleted. No response body.
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ description: Member or work experience not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+
+ # ──────────────────────────────────────────────
+ # Project Affiliations
+ # ──────────────────────────────────────────────
+ /members/{memberId}/project-affiliations:
+ get:
+ operationId: getMemberProjectAffiliations
+ summary: List project affiliations
+ description: >
+ Retrieve per-project affiliation data for a member, including maintainer
+ roles and resolved affiliations. Affiliations come from project-level
+ overrides when available, otherwise from work experiences.
+ tags:
+ - Project Affiliations
+ security:
+ - OAuth2Bearer:
+ - read:project-affiliations
+ parameters:
+ - $ref: '#/components/parameters/MemberId'
+ responses:
+ '200':
+ description: Project affiliations retrieved successfully.
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - projectAffiliations
+ properties:
+ projectAffiliations:
+ type: array
+ items:
+ $ref: '#/components/schemas/ProjectAffiliation'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ $ref: '#/components/responses/MemberNotFound'
+
+ /members/{memberId}/project-affiliations/{projectId}:
+ patch:
+ operationId: patchMemberProjectAffiliation
+ summary: Override project affiliations
+ description: >
+ Replace all project-level affiliation overrides for a member on a
+ specific project. Pass an empty `affiliations` array to clear overrides
+ (falling back to work experience-based affiliations).
+ tags:
+ - Project Affiliations
+ security:
+ - OAuth2Bearer:
+ - write:project-affiliations
+ parameters:
+ - $ref: '#/components/parameters/MemberId'
+ - name: projectId
+ in: path
+ required: true
+ description: UUID of the project (segment ID).
+ schema:
+ type: string
+ format: uuid
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - affiliations
+ properties:
+ affiliations:
+ type: array
+ description: >
+ Affiliation overrides. Pass an empty array to clear.
+ items:
+ type: object
+ required:
+ - organizationId
+ - dateStart
+ properties:
+ organizationId:
+ type: string
+ format: uuid
+ dateStart:
+ type: string
+ format: date-time
+ description: Start date of the affiliation period.
+ dateEnd:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ description: End date, or null if currently active.
+ verifiedBy:
+ type: string
+ maxLength: 255
+ description: Required when `affiliations` is non-empty.
+ example:
+ affiliations:
+ - organizationId: 550e8400-e29b-41d4-a716-446655440000
+ dateStart: '2020-01-01T00:00:00.000Z'
+ dateEnd: null
+ verifiedBy: admin@lfx.dev
+ responses:
+ '200':
+ description: Project affiliations updated.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ProjectAffiliation'
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ description: Member or project not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+
+ # ──────────────────────────────────────────────
+ # Organizations
+ # ──────────────────────────────────────────────
+ /organizations:
+ get:
+ operationId: getOrganization
+ summary: Look up an organization by domain
+ description: Find a verified organization by its primary domain.
+ tags:
+ - Organizations
+ security:
+ - OAuth2Bearer:
+ - read:organizations
+ parameters:
+ - name: domain
+ in: query
+ required: true
+ description: Primary domain of the organization.
+ schema:
+ type: string
+ minLength: 1
+ example: linuxfoundation.org
+ responses:
+ '200':
+ description: Organization found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Organization'
+ example:
+ id: 550e8400-e29b-41d4-a716-446655440000
+ name: Linux Foundation
+ logo: https://example.com/logo.png
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ description: No verified organization found for the given domain.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: NOT_FOUND
+ message: Organization not found
+
+ post:
+ operationId: createOrganization
+ summary: Create an organization
+ description: >
+ Create a new organization with a verified primary domain. If an
+ organization with the same domain already exists, it returns the
+ existing one.
+ tags:
+ - Organizations
+ security:
+ - OAuth2Bearer:
+ - write:organizations
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - name
+ - domain
+ - source
+ - logo
+ properties:
+ name:
+ type: string
+ minLength: 1
+ description: Display name of the organization.
+ domain:
+ type: string
+ minLength: 1
+ description: Primary domain of the organization.
+ source:
+ type: string
+ minLength: 1
+ description: Source system creating the organization.
+ logo:
+ type: string
+ format: uri
+ description: URL of the organization's logo.
+ example:
+ name: Acme Corp
+ domain: acme.com
+ source: lfxOne
+ logo: https://example.com/logo.png
+ responses:
+ '201':
+ description: Organization created (or existing one returned).
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - id
+ - name
+ properties:
+ id:
+ type: string
+ format: uuid
+ name:
+ type: string
+ example:
+ id: 550e8400-e29b-41d4-a716-446655440000
+ name: Acme Corp
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+
+ # ──────────────────────────────────────────────
+ # Affiliations (Static API Key)
+ # ──────────────────────────────────────────────
+ /affiliations:
+ post:
+ operationId: getBulkAffiliations
+ summary: Bulk contributor lookup
+ description: >
+ Look up affiliation data for up to 100 GitHub handles in a single
+ request. Handles that have no matching LFX profile are returned in the
+ `notFound` array.
+ tags:
+ - Affiliations
+ security:
+ - StaticApiKey: []
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - githubHandles
+ properties:
+ githubHandles:
+ type: array
+ description: >
+ List of GitHub login handles to look up (case-insensitive).
+ minItems: 1
+ maxItems: 100
+ items:
+ type: string
+ minLength: 1
+ example:
+ githubHandles:
+ - torvalds
+ - gvanrossum
+ parameters:
+ - name: page
+ in: query
+ description: Page number (1-based).
+ schema:
+ type: integer
+ minimum: 1
+ default: 1
+ - name: pageSize
+ in: query
+ description: Number of contributors to return per page.
+ schema:
+ type: integer
+ minimum: 1
+ maximum: 100
+ default: 20
+ responses:
+ '200':
+ description: Affiliations resolved successfully.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BulkAffiliationsResponse'
+ example:
+ total: 2
+ totalFound: 2
+ page: 1
+ pageSize: 20
+ contributorsInPage: 2
+ contributors:
+ - githubHandle: torvalds
+ name: Linus Torvalds
+ emails:
+ - torvalds@linux-foundation.org
+ affiliations:
+ - organization: Linux Foundation
+ startDate: '2007-01-01T00:00:00.000Z'
+ endDate: null
+ notFound: []
+ '400':
+ $ref: '#/components/responses/BadRequest'
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '429':
+ $ref: '#/components/responses/TooManyRequests'
+
+ /affiliations/{githubHandle}:
+ get:
+ operationId: getAffiliationByHandle
+ summary: Single contributor lookup
+ description: >
+ Look up affiliation data for one developer by GitHub handle. Useful for
+ debugging and ad-hoc queries.
+ tags:
+ - Affiliations
+ security:
+ - StaticApiKey: []
+ parameters:
+ - name: githubHandle
+ in: path
+ required: true
+ description: GitHub login handle (case-insensitive).
+ schema:
+ type: string
+ minLength: 1
+ example: torvalds
+ responses:
+ '200':
+ description: Developer found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Contributor'
+ example:
+ githubHandle: torvalds
+ name: Linus Torvalds
+ emails:
+ - torvalds@linux-foundation.org
+ affiliations:
+ - organization: Linux Foundation
+ startDate: '2007-01-01T00:00:00.000Z'
+ endDate: null
+ '401':
+ $ref: '#/components/responses/Unauthorized'
+ '403':
+ $ref: '#/components/responses/Forbidden'
+ '404':
+ description: No LFX profile found for the given GitHub handle.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: NOT_FOUND
+ message: "No LFX profile found for GitHub login 'nonexistent-user'."
+ '429':
+ $ref: '#/components/responses/TooManyRequests'
+
+components:
+ securitySchemes:
+ OAuth2Bearer:
+ type: oauth2
+ description: >
+ OAuth 2.0 client credentials flow via Auth0. The consuming service
+ obtains a JWT using its client ID and secret, then passes it as
+ `Authorization: Bearer `
+ flows:
+ clientCredentials:
+ tokenUrl: https://linuxfoundation.auth0.com/oauth/token
+ scopes:
+ read:members: Read member profiles
+ write:members: Create member profiles
+ read:member-identities: Read member identities
+ write:member-identities: Create and verify member identities
+ read:maintainer-roles: Read maintainer roles
+ read:work-experiences: Read work experiences
+ write:work-experiences: Create, update, verify, and delete work experiences
+ read:project-affiliations: Read project affiliations
+ write:project-affiliations: Override project affiliations
+ read:organizations: Look up organizations
+ write:organizations: Create organizations
+ StaticApiKey:
+ type: http
+ scheme: bearer
+ description: >
+ Static API key — pass as `Authorization: Bearer `. Keys are
+ managed in the CDP database with SHA-256 hashing, expiration, and
+ revocation support.
+
+ parameters:
+ MemberId:
+ name: memberId
+ in: path
+ required: true
+ description: UUID of the member.
+ schema:
+ type: string
+ format: uuid
+ WorkExperienceId:
+ name: workExperienceId
+ in: path
+ required: true
+ description: UUID of the work experience.
+ schema:
+ type: string
+ format: uuid
+
+ schemas:
+ MemberIdentityInput:
+ type: object
+ required:
+ - value
+ - platform
+ - type
+ - source
+ - verified
+ properties:
+ value:
+ type: string
+ minLength: 1
+ description: Identity value (e.g. username, email address).
+ platform:
+ type: string
+ minLength: 1
+ description: Platform name (e.g. github, lfid).
+ type:
+ type: string
+ enum:
+ - username
+ - email
+ description: Identity type.
+ source:
+ type: string
+ minLength: 1
+ description: Source system that created this identity.
+ verified:
+ type: boolean
+ description: Whether the identity is verified.
+ verifiedBy:
+ type: string
+ description: Required when `verified` is true. Identifier of who verified.
+
+ MemberIdentity:
+ type: object
+ required:
+ - id
+ - value
+ - platform
+ - type
+ - verified
+ - verifiedBy
+ - source
+ - createdAt
+ - updatedAt
+ properties:
+ id:
+ type: string
+ format: uuid
+ value:
+ type: string
+ description: Identity value (username or email).
+ platform:
+ type: string
+ description: Platform name (e.g. github, linkedin, lfid).
+ type:
+ type: string
+ enum:
+ - username
+ - email
+ description: Identity type.
+ verified:
+ type: boolean
+ verifiedBy:
+ type:
+ - string
+ - 'null'
+ description: Identifier of who verified this identity, or null.
+ source:
+ type:
+ - string
+ - 'null'
+ description: Source system that created this identity.
+ createdAt:
+ type: string
+ format: date-time
+ updatedAt:
+ type: string
+ format: date-time
+
+ MaintainerRole:
+ type: object
+ required:
+ - id
+ - memberId
+ - segmentId
+ - role
+ - url
+ - repoType
+ properties:
+ id:
+ type: string
+ format: uuid
+ memberId:
+ type: string
+ format: uuid
+ segmentId:
+ type: string
+ format: uuid
+ dateStart:
+ type:
+ - string
+ - 'null'
+ format: date
+ description: Start date of the maintainer role.
+ dateEnd:
+ type:
+ - string
+ - 'null'
+ format: date
+ description: End date of the maintainer role, or null if current.
+ url:
+ type: string
+ description: Repository URL.
+ repoType:
+ type: string
+ enum:
+ - github
+ - gitlab
+ - git
+ - gerrit
+ description: Repository platform type.
+ role:
+ type: string
+ description: Role name (e.g. maintainer, committer).
+ maintainerFile:
+ type:
+ - string
+ - 'null'
+ description: Path to the maintainer file in the repository, if applicable.
+
+ WorkExperience:
+ type: object
+ required:
+ - id
+ - organizationId
+ - organizationName
+ - jobTitle
+ - verified
+ - verifiedBy
+ - source
+ - startDate
+ - endDate
+ - createdAt
+ - updatedAt
+ properties:
+ id:
+ type: string
+ format: uuid
+ organizationId:
+ type: string
+ format: uuid
+ organizationName:
+ type:
+ - string
+ - 'null'
+ description: Display name of the organization.
+ organizationLogo:
+ type:
+ - string
+ - 'null'
+ description: URL of the organization logo.
+ jobTitle:
+ type:
+ - string
+ - 'null'
+ verified:
+ type: boolean
+ verifiedBy:
+ type:
+ - string
+ - 'null'
+ source:
+ type:
+ - string
+ - 'null'
+ description: Source system that created this work experience.
+ startDate:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ endDate:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ description: End date, or null if currently active.
+ createdAt:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ updatedAt:
+ type:
+ - string
+ - 'null'
+ format: date-time
+
+ WorkExperienceInput:
+ type: object
+ required:
+ - organizationId
+ - jobTitle
+ - verified
+ - verifiedBy
+ - source
+ - startDate
+ properties:
+ organizationId:
+ type: string
+ format: uuid
+ jobTitle:
+ type: string
+ description: Job title at the organization.
+ verified:
+ type: boolean
+ verifiedBy:
+ type: string
+ description: Identifier of who verified this work experience.
+ source:
+ type: string
+ description: Source system (e.g. lfxOne).
+ startDate:
+ type: string
+ format: date-time
+ description: Start date of the work experience.
+ endDate:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ description: End date, or null if currently active.
+
+ ProjectAffiliation:
+ type: object
+ required:
+ - id
+ - projectSlug
+ - projectName
+ - projectLogo
+ - contributionCount
+ - roles
+ - affiliations
+ properties:
+ id:
+ type: string
+ format: uuid
+ description: Segment (project) ID.
+ projectSlug:
+ type: string
+ projectName:
+ type: string
+ projectLogo:
+ type:
+ - string
+ - 'null'
+ contributionCount:
+ type: integer
+ description: Total number of contributions in this project.
+ roles:
+ type: array
+ items:
+ $ref: '#/components/schemas/ProjectRole'
+ affiliations:
+ type: array
+ items:
+ $ref: '#/components/schemas/ProjectAffiliationEntry'
+
+ ProjectRole:
+ type: object
+ required:
+ - id
+ - role
+ - startDate
+ - endDate
+ - repoUrl
+ - repoFileUrl
+ properties:
+ id:
+ type: string
+ format: uuid
+ role:
+ type: string
+ startDate:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ endDate:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ repoUrl:
+ type:
+ - string
+ - 'null'
+ repoFileUrl:
+ type:
+ - string
+ - 'null'
+
+ ProjectAffiliationEntry:
+ type: object
+ required:
+ - id
+ - organizationId
+ - organizationName
+ - organizationLogo
+ - verified
+ - verifiedBy
+ - startDate
+ - endDate
+ - type
+ properties:
+ id:
+ type: string
+ format: uuid
+ organizationId:
+ type: string
+ format: uuid
+ organizationName:
+ type: string
+ organizationLogo:
+ type:
+ - string
+ - 'null'
+ verified:
+ type: boolean
+ verifiedBy:
+ type:
+ - string
+ - 'null'
+ startDate:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ endDate:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ type:
+ type: string
+ enum:
+ - project
+ - work-history
+ description: >
+ `project` — manually overridden at the project level.
+ `work-history` — derived from work experiences.
+ source:
+ type:
+ - string
+ - 'null'
+ description: Present only for `work-history` type affiliations.
+
+ AffiliationPeriod:
+ type: object
+ required:
+ - organization
+ - startDate
+ - endDate
+ properties:
+ organization:
+ type: string
+ description: Name of the organization.
+ startDate:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ description: Start date of the affiliation period.
+ endDate:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ description: End date, or null if currently active.
+
+ Contributor:
+ type: object
+ required:
+ - githubHandle
+ - name
+ - emails
+ - affiliations
+ properties:
+ githubHandle:
+ type: string
+ description: Verified GitHub login handle.
+ name:
+ type:
+ - string
+ - 'null'
+ description: Display name from the LFX profile.
+ emails:
+ type: array
+ description: Verified email addresses linked to the profile.
+ items:
+ type: string
+ format: email
+ affiliations:
+ type: array
+ description: Resolved affiliation periods, most recent first.
+ items:
+ $ref: '#/components/schemas/AffiliationPeriod'
+
+ BulkAffiliationsResponse:
+ type: object
+ required:
+ - total
+ - totalFound
+ - page
+ - pageSize
+ - contributorsInPage
+ - contributors
+ - notFound
+ properties:
+ total:
+ type: integer
+ description: Total number of handles submitted in the request.
+ totalFound:
+ type: integer
+ description: Number of handles that matched an LFX profile.
+ page:
+ type: integer
+ description: Current page number.
+ pageSize:
+ type: integer
+ description: Maximum contributors per page.
+ contributorsInPage:
+ type: integer
+ description: Number of contributors returned in this page.
+ contributors:
+ type: array
+ items:
+ $ref: '#/components/schemas/Contributor'
+ notFound:
+ type: array
+ description: Handles from the request with no matching LFX profile.
+ items:
+ type: string
+
+ Organization:
+ type: object
+ required:
+ - id
+ - name
+ properties:
+ id:
+ type: string
+ format: uuid
+ name:
+ type: string
+ description: Display name of the organization.
+ logo:
+ type: string
+ description: URL of the organization logo. Only present if available.
+
+ HttpError:
+ type: object
+ required:
+ - error
+ properties:
+ error:
+ type: object
+ required:
+ - code
+ - message
+ properties:
+ code:
+ type: string
+ description: Machine-readable error code.
+ message:
+ type: string
+ description: Human-readable error description.
+
+ responses:
+ BadRequest:
+ description: Invalid request body or query parameters.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: BAD_REQUEST
+ message: Validation failed
+
+ Unauthorized:
+ description: Missing or invalid authentication credentials.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: UNAUTHORIZED
+ message: Invalid or missing authentication
+
+ Forbidden:
+ description: Authentication valid but insufficient scopes.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: INSUFFICIENT_SCOPE
+ message: Insufficient scope for this operation
+
+ MemberNotFound:
+ description: No member found with the given ID.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: NOT_FOUND
+ message: Member not found
+
+ TooManyRequests:
+ description: Rate limit exceeded (60 requests per 60 seconds).
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HttpError'
+ example:
+ error:
+ code: RATE_LIMITED
+ message: Too many requests, please try again later
diff --git a/backend/src/api/public/v1/affiliations/getAffiliationByHandle.ts b/backend/src/api/public/v1/affiliations/getAffiliationByHandle.ts
new file mode 100644
index 0000000000..3273149efb
--- /dev/null
+++ b/backend/src/api/public/v1/affiliations/getAffiliationByHandle.ts
@@ -0,0 +1,36 @@
+import type { Request, Response } from 'express'
+
+import { NotFoundError } from '@crowd/common'
+import {
+ findMembersByGithubHandles,
+ findVerifiedEmailsByMemberIds,
+ optionsQx,
+ resolveAffiliationsByMemberIds,
+} from '@crowd/data-access-layer'
+
+import { ok } from '@/utils/api'
+
+export async function getAffiliationByHandle(req: Request, res: Response): Promise {
+ const handle = req.params.githubHandle.toLowerCase()
+ const qx = optionsQx(req)
+
+ const members = await findMembersByGithubHandles(qx, [handle])
+ if (members.length === 0) {
+ throw new NotFoundError(`No LFX profile found for GitHub login '${req.params.githubHandle}'.`)
+ }
+
+ const member = members[0]
+ const memberIds = [member.memberId]
+
+ const [emailRows, affiliationsByMember] = await Promise.all([
+ findVerifiedEmailsByMemberIds(qx, memberIds),
+ resolveAffiliationsByMemberIds(qx, memberIds),
+ ])
+
+ ok(res, {
+ githubHandle: member.githubHandle,
+ name: member.displayName,
+ emails: emailRows.map((r) => r.email),
+ affiliations: affiliationsByMember.get(member.memberId) ?? [],
+ })
+}
diff --git a/backend/src/api/public/v1/affiliations/getAffiliations.ts b/backend/src/api/public/v1/affiliations/getAffiliations.ts
new file mode 100644
index 0000000000..9179081a13
--- /dev/null
+++ b/backend/src/api/public/v1/affiliations/getAffiliations.ts
@@ -0,0 +1,89 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import {
+ findMembersByGithubHandles,
+ findVerifiedEmailsByMemberIds,
+ optionsQx,
+ resolveAffiliationsByMemberIds,
+} from '@crowd/data-access-layer'
+
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+const MAX_HANDLES = 100
+const DEFAULT_PAGE_SIZE = 20
+
+const bodySchema = z.object({
+ githubHandles: z
+ .array(z.string().trim().min(1).toLowerCase())
+ .min(1)
+ .max(MAX_HANDLES, `Maximum ${MAX_HANDLES} handles per request`),
+})
+
+const querySchema = z.object({
+ page: z.coerce.number().int().min(1).default(1),
+ pageSize: z.coerce.number().int().min(1).max(MAX_HANDLES).default(DEFAULT_PAGE_SIZE),
+})
+
+export async function getAffiliations(req: Request, res: Response): Promise {
+ const { githubHandles } = validateOrThrow(bodySchema, req.body)
+ const { page, pageSize } = validateOrThrow(querySchema, req.query)
+ const qx = optionsQx(req)
+
+ const offset = (page - 1) * pageSize
+
+ // Step 1: find all verified members across all handles
+ const allMemberRows = await findMembersByGithubHandles(qx, githubHandles)
+
+ const foundHandles = new Set(allMemberRows.map((r) => r.githubHandle.toLowerCase()))
+ const notFound = githubHandles.filter((h) => !foundHandles.has(h))
+
+ const pageMemberRows = allMemberRows.slice(offset, offset + pageSize)
+
+ if (pageMemberRows.length === 0) {
+ ok(res, {
+ total: githubHandles.length,
+ totalFound: allMemberRows.length,
+ page,
+ pageSize,
+ contributorsInPage: 0,
+ contributors: [],
+ notFound,
+ })
+ return
+ }
+
+ const memberIds = pageMemberRows.map((r) => r.memberId)
+
+ // Step 2: fetch verified emails for current page
+ const emailRows = await findVerifiedEmailsByMemberIds(qx, memberIds)
+
+ const emailsByMember = new Map()
+ for (const row of emailRows) {
+ const list = emailsByMember.get(row.memberId) ?? []
+ list.push(row.email)
+ emailsByMember.set(row.memberId, list)
+ }
+
+ // Step 3: resolve affiliations for current page only
+ const affiliationsByMember = await resolveAffiliationsByMemberIds(qx, memberIds)
+
+ // Step 4: build response
+ const contributors = pageMemberRows.map((member) => ({
+ githubHandle: member.githubHandle,
+ name: member.displayName,
+ emails: emailsByMember.get(member.memberId) ?? [],
+ affiliations: affiliationsByMember.get(member.memberId) ?? [],
+ }))
+
+ ok(res, {
+ total: githubHandles.length,
+ totalFound: allMemberRows.length,
+ page,
+ pageSize,
+ contributorsInPage: contributors.length,
+ contributors,
+ notFound,
+ })
+}
diff --git a/backend/src/api/public/v1/affiliations/index.ts b/backend/src/api/public/v1/affiliations/index.ts
new file mode 100644
index 0000000000..5f2fc9355e
--- /dev/null
+++ b/backend/src/api/public/v1/affiliations/index.ts
@@ -0,0 +1,26 @@
+import { Router } from 'express'
+
+import { createRateLimiter } from '@/api/apiRateLimiter'
+import { requireScopes } from '@/api/public/middlewares/requireScopes'
+import { safeWrap } from '@/middlewares/errorMiddleware'
+import { SCOPES } from '@/security/scopes'
+
+import { getAffiliationByHandle } from './getAffiliationByHandle'
+import { getAffiliations } from './getAffiliations'
+
+const rateLimiter = createRateLimiter({ max: 60, windowMs: 60 * 1000 })
+
+export function memberOrganizationAffiliationsRouter(): Router {
+ const router = Router()
+
+ router.use(rateLimiter)
+
+ router.post('/', requireScopes([SCOPES.READ_AFFILIATIONS]), safeWrap(getAffiliations))
+ router.get(
+ '/:githubHandle',
+ requireScopes([SCOPES.READ_AFFILIATIONS]),
+ safeWrap(getAffiliationByHandle),
+ )
+
+ return router
+}
diff --git a/backend/src/api/public/v1/akrites/index.ts b/backend/src/api/public/v1/akrites/index.ts
new file mode 100644
index 0000000000..00eee5aba0
--- /dev/null
+++ b/backend/src/api/public/v1/akrites/index.ts
@@ -0,0 +1,122 @@
+import { Router } from 'express'
+
+import { createRateLimiter } from '@/api/apiRateLimiter'
+import { requireScopes } from '@/api/public/middlewares/requireScopes'
+import { safeWrap } from '@/middlewares/errorMiddleware'
+import { SCOPES } from '@/security/scopes'
+
+import { activityFeedHandler } from '../ossprey/activityFeed'
+import { metricsHandler } from '../ossprey/metrics'
+import { packageListHandler } from '../ossprey/packageList'
+import { packageScatterHandler } from '../ossprey/packageScatter'
+import { batchGetStewardship } from '../packages/batchGetStewardship'
+import { getPackage } from '../packages/getPackage'
+import { getPackageAdvisories } from '../packages/getPackageAdvisories'
+import { getPackageHistory } from '../packages/getPackageHistory'
+import { getPackagesMetrics } from '../packages/getPackagesMetrics'
+import { assignStewardHandler } from '../stewardships/assignSteward'
+import { escalateHandler } from '../stewardships/escalate'
+import { getMyActivityHandler } from '../stewardships/getMyActivity'
+import { getMyPackagesHandler } from '../stewardships/getMyPackages'
+import { openStewardship } from '../stewardships/openStewardship'
+import { updateStatusHandler } from '../stewardships/updateStatus'
+
+const rateLimiter = createRateLimiter({ max: 60, windowMs: 60 * 1000 })
+
+export function akritesRouter(): Router {
+ const router = Router()
+
+ router.get(
+ '/metrics',
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(metricsHandler),
+ )
+ // /packages/scatter registered before router.use('/packages', ...) so Express evaluates this
+ // explicit route first; without this ordering the sub-router would receive the request first
+ // and call next() on no match, adding unnecessary overhead.
+ router.get(
+ '/packages/scatter',
+ rateLimiter,
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(packageScatterHandler),
+ )
+ router.get(
+ '/packages',
+ rateLimiter,
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(packageListHandler),
+ )
+ router.get(
+ '/activity',
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(activityFeedHandler),
+ )
+
+ // --- packages ---
+ router.post(
+ /^\/packages:batch-stewardship\/?$/,
+ rateLimiter,
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(batchGetStewardship),
+ )
+ const packagesSubRouter = Router()
+ packagesSubRouter.use(rateLimiter)
+ packagesSubRouter.get(
+ '/metrics',
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(getPackagesMetrics),
+ )
+ packagesSubRouter.get(
+ '/detail',
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(getPackage),
+ )
+ packagesSubRouter.get(
+ '/advisories',
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(getPackageAdvisories),
+ )
+ packagesSubRouter.get(
+ '/history',
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(getPackageHistory),
+ )
+ router.use('/packages', packagesSubRouter)
+
+ // --- stewardships ---
+ const stewardshipsSubRouter = Router()
+ stewardshipsSubRouter.use(rateLimiter)
+ stewardshipsSubRouter.get(
+ '/me/packages',
+ requireScopes([SCOPES.READ_STEWARDSHIPS]),
+ safeWrap(getMyPackagesHandler),
+ )
+ stewardshipsSubRouter.get(
+ '/me/activity',
+ requireScopes([SCOPES.READ_STEWARDSHIPS]),
+ safeWrap(getMyActivityHandler),
+ )
+ stewardshipsSubRouter.post(
+ '/open',
+ requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
+ safeWrap(openStewardship),
+ )
+ stewardshipsSubRouter.post(
+ '/:id/assign',
+ requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
+ safeWrap(assignStewardHandler),
+ )
+ stewardshipsSubRouter.post(
+ '/:id/escalate',
+ requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
+ safeWrap(escalateHandler),
+ )
+ stewardshipsSubRouter.patch(
+ '/:id/status',
+ requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
+ safeWrap(updateStatusHandler),
+ )
+ router.use('/stewardships', stewardshipsSubRouter)
+
+ return router
+}
diff --git a/backend/src/api/public/v1/akrites/openapi.yaml b/backend/src/api/public/v1/akrites/openapi.yaml
new file mode 100644
index 0000000000..e202292b7e
--- /dev/null
+++ b/backend/src/api/public/v1/akrites/openapi.yaml
@@ -0,0 +1,1671 @@
+openapi: 3.1.0
+info:
+ title: CDP Public API — Akrites
+ version: 1.0.0
+ description: >
+ Unified namespace for OSSPREY dashboard read endpoints and stewardship write
+ actions. All routes require an OAuth 2.0 bearer token (Auth0 M2M or user session).
+
+
+ **Rate limits:** packages and stewardships sub-groups each have an independent
+ 60 requests/min per-IP bucket.
+
+servers:
+ - url: https://cm.lfx.dev/api/v1
+ description: Production
+ - url: https://lf-staging.crowd.dev/api/v1
+ description: Staging
+
+security:
+ - BearerAuth: []
+
+tags:
+ - name: Dashboard
+ description: KPI bar metrics and activity feed.
+ - name: Packages
+ description: Package list, scatter plot, detail, and batch stewardship lookup.
+ - name: Stewardships
+ description: Open, assign, escalate, and update stewardship status.
+
+components:
+ securitySchemes:
+ BearerAuth:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+
+ schemas:
+ # ── Shared primitives ──────────────────────────────────────────────────────
+
+ Error:
+ type: object
+ required: [error]
+ properties:
+ error:
+ type: object
+ required: [code, message]
+ properties:
+ code:
+ type: string
+ example: VALIDATION_ERROR
+ message:
+ type: string
+ example: Invalid query parameter.
+
+ HealthBand:
+ type: string
+ enum: [healthy, fair, concerning, critical]
+ description: >
+ Derived from `scorecardScore`:
+ `null or < 3.0` → critical · `< 5.0` → concerning · `< 7.0` → fair · `≥ 7.0` → healthy
+
+ StewardshipStatus:
+ type: string
+ enum:
+ - unassigned
+ - open
+ - assessing
+ - active
+ - needs_attention
+ - escalated
+ - blocked
+ - inactive
+
+ EscalationResolutionPath:
+ type: string
+ enum:
+ - right_of_first_refusal
+ - replace_the_dependency
+ - find_vendor_for_lts
+ - consortium_adopts_maintainership
+ - compensating_controls_monitor
+ - namespace_takeover
+
+ InactiveReason:
+ type: string
+ enum:
+ - quarterly_cadence_missed
+ - stepped_down
+ - no_longer_critical
+
+ Steward:
+ type: object
+ required: [userId, role, assignedAt]
+ properties:
+ userId:
+ type: string
+ description: Auth0 sub of the assigned steward.
+ example: auth0|abc123
+ role:
+ type: string
+ enum: [lead, co_steward]
+ assignedAt:
+ type: string
+ format: date-time
+
+ StewardshipRecord:
+ type: object
+ required: [id, packageId, status, origin, version, createdAt, updatedAt]
+ properties:
+ id:
+ type: string
+ packageId:
+ type: string
+ status:
+ $ref: '#/components/schemas/StewardshipStatus'
+ origin:
+ type: string
+ version:
+ type: integer
+ openedAt:
+ type: string
+ format: date-time
+ nullable: true
+ lastStatusAt:
+ type: string
+ format: date-time
+ nullable: true
+ inactiveReason:
+ $ref: '#/components/schemas/InactiveReason'
+ nullable: true
+ resolutionPath:
+ $ref: '#/components/schemas/EscalationResolutionPath'
+ nullable: true
+ statusNote:
+ type: string
+ nullable: true
+ createdAt:
+ type: string
+ format: date-time
+ updatedAt:
+ type: string
+ format: date-time
+
+ StewardEntry:
+ type: object
+ required: [id, stewardshipId, userId, role, assignedAt]
+ properties:
+ id:
+ type: string
+ stewardshipId:
+ type: string
+ userId:
+ type: string
+ name:
+ type: string
+ nullable: true
+ role:
+ type: string
+ enum: [lead, co_steward]
+ assignedAt:
+ type: string
+ format: date-time
+ assignedBy:
+ type: string
+ nullable: true
+
+ # ── Dashboard schemas ──────────────────────────────────────────────────────
+
+ OsspreyMetrics:
+ type: object
+ required:
+ - criticalPackages
+ - coveragePercent
+ - coverageTrend
+ - activeStewards
+ - unassignedCritical
+ - needsAttention
+ - escalated
+ properties:
+ criticalPackages:
+ type: integer
+ description: Total number of packages marked as critical (is_critical = true).
+ coveragePercent:
+ type: number
+ format: float
+ description: Percentage of critical packages with an active stewardship (assessing, active, or needs_attention).
+ coverageTrend:
+ type: number
+ format: float
+ nullable: true
+ description: Coverage delta vs. previous period. Currently always null (requires snapshot mechanism).
+ activeStewards:
+ type: integer
+ description: Distinct stewards assigned to a non-inactive stewardship.
+ unassignedCritical:
+ type: integer
+ description: Critical packages with no stewardship or status = unassigned.
+ needsAttention:
+ type: integer
+ description: Critical packages whose stewardship status is needs_attention.
+ escalated:
+ type: integer
+ description: Critical packages whose stewardship status is escalated.
+
+ ActivityEntry:
+ type: object
+ required:
+ - id
+ - stewardshipId
+ - packagePurl
+ - packageName
+ - packageEcosystem
+ - actorUserId
+ - actorName
+ - actorType
+ - activityType
+ - stewardshipStatus
+ - createdAt
+ properties:
+ id:
+ type: string
+ stewardshipId:
+ type: string
+ packagePurl:
+ type: string
+ packageName:
+ type: string
+ packageEcosystem:
+ type: string
+ actorUserId:
+ type: string
+ nullable: true
+ actorName:
+ type: string
+ nullable: true
+ description: Display name (currently same as actorUserId; resolution from members table is pending).
+ actorType:
+ type: string
+ example: user
+ activityType:
+ type: string
+ example: status_change
+ content:
+ type: string
+ nullable: true
+ metadata:
+ type: object
+ nullable: true
+ additionalProperties: true
+ stewardshipStatus:
+ $ref: '#/components/schemas/StewardshipStatus'
+ createdAt:
+ type: string
+ format: date-time
+
+ # ── Package schemas ────────────────────────────────────────────────────────
+
+ PackageListRow:
+ type: object
+ required:
+ - purl
+ - name
+ - ecosystem
+ - openVulns
+ - maintainerCount
+ - healthBand
+ - stewards
+ properties:
+ purl:
+ type: string
+ example: pkg:npm/%40angular/core@17.0.0
+ name:
+ type: string
+ ecosystem:
+ type: string
+ criticalityScore:
+ type: number
+ format: float
+ nullable: true
+ stewardshipId:
+ type: string
+ nullable: true
+ stewardshipStatus:
+ $ref: '#/components/schemas/StewardshipStatus'
+ nullable: true
+ openVulns:
+ type: integer
+ maxVulnSeverity:
+ type: string
+ enum: [critical, high, medium, low]
+ nullable: true
+ maintainerCount:
+ type: integer
+ scorecardScore:
+ type: number
+ format: float
+ nullable: true
+ healthBand:
+ $ref: '#/components/schemas/HealthBand'
+ latestReleaseAt:
+ type: string
+ format: date-time
+ nullable: true
+ lastActivity:
+ type: object
+ nullable: true
+ required: [type, content, at]
+ properties:
+ type:
+ type: string
+ content:
+ type: string
+ nullable: true
+ at:
+ type: string
+ format: date-time
+ stewards:
+ type: array
+ items:
+ $ref: '#/components/schemas/StewardEntry'
+
+ StatusCounts:
+ type: object
+ description: Count of packages per stewardship status (used to drive filter pill badges).
+ required:
+ [all, unassigned, open, assessing, active, needs_attention, escalated, blocked, inactive]
+ properties:
+ all:
+ type: integer
+ description: Total count across all statuses (matches total from the package list without status filter).
+ unassigned:
+ type: integer
+ open:
+ type: integer
+ assessing:
+ type: integer
+ active:
+ type: integer
+ needs_attention:
+ type: integer
+ escalated:
+ type: integer
+ blocked:
+ type: integer
+ inactive:
+ type: integer
+ example:
+ all: 95
+ unassigned: 42
+ open: 5
+ assessing: 12
+ active: 30
+ needs_attention: 3
+ escalated: 1
+ blocked: 0
+ inactive: 2
+
+ ScatterPoint:
+ type: object
+ required:
+ - purl
+ - name
+ - criticalityScore
+ - healthScore
+ - healthBand
+ - openVulns
+ - advisoryCount
+ properties:
+ purl:
+ type: string
+ name:
+ type: string
+ criticalityScore:
+ type: integer
+ description: Impact score scaled to 0–100.
+ healthScore:
+ type: integer
+ description: OpenSSF Scorecard score scaled to 0–100.
+ healthBand:
+ $ref: '#/components/schemas/HealthBand'
+ stewardshipStatus:
+ $ref: '#/components/schemas/StewardshipStatus'
+ nullable: true
+ stewardshipId:
+ type: string
+ nullable: true
+ openVulns:
+ type: integer
+ advisoryCount:
+ type: integer
+
+ PackageMetrics:
+ type: object
+ required: [criticalPackages]
+ properties:
+ criticalPackages:
+ type: integer
+ description: Total packages marked as critical (is_critical = true).
+
+ Advisory:
+ type: object
+ required: [osvId, severity, resolution]
+ properties:
+ osvId:
+ type: string
+ example: GHSA-xxxx-xxxx-xxxx
+ severity:
+ type: string
+ enum: [critical, high, medium, low]
+ nullable: true
+ resolution:
+ type: string
+ nullable: true
+
+ PackageHistoryEvent:
+ type: object
+ required: [id, actorType, activityType, createdAt]
+ properties:
+ id:
+ type: string
+ actorUserId:
+ type: string
+ nullable: true
+ actorType:
+ type: string
+ example: user
+ activityType:
+ type: string
+ example: state_changed
+ content:
+ type: string
+ nullable: true
+ metadata:
+ type: object
+ nullable: true
+ additionalProperties: true
+ createdAt:
+ type: string
+ format: date-time
+
+ PackageDetail:
+ type: object
+ required:
+ [purl, name, ecosystem, general, assessment, security, provenance, stewardship, history]
+ properties:
+ purl:
+ type: string
+ name:
+ type: string
+ ecosystem:
+ type: string
+ latestVersion:
+ type: string
+ nullable: true
+ general:
+ type: object
+ properties:
+ healthScore:
+ type: integer
+ nullable: true
+ description: OpenSSF Scorecard score scaled to 0–100 (scorecardScore × 10, rounded).
+ healthBand:
+ $ref: '#/components/schemas/HealthBand'
+ impact:
+ type: object
+ properties:
+ impactScore:
+ type: integer
+ nullable: true
+ description: Criticality score scaled to 0–100.
+ downloadsLastMonth:
+ type: string
+ nullable: true
+ description: Raw download count string from the registry.
+ dependentPackages:
+ type: integer
+ nullable: true
+ dependentRepos:
+ type: integer
+ nullable: true
+ transitiveReach:
+ type: integer
+ nullable: true
+ riskSignals:
+ type: object
+ properties:
+ lifecycle:
+ type: string
+ nullable: true
+ maintainerBusFactor:
+ type: integer
+ nullable: true
+ lastRelease:
+ type: string
+ format: date-time
+ nullable: true
+ hasSecurityFile:
+ type: boolean
+ nullable: true
+ hasSecurityPolicy:
+ type: boolean
+ nullable: true
+ description: repos.security_policy_enabled
+ branchProtectionEnabled:
+ type: boolean
+ nullable: true
+ description: repos.branch_protection_enabled
+ openSSFScorecard:
+ type: number
+ format: float
+ nullable: true
+ assessment:
+ nullable: true
+ description: Reserved for future stewardship assessment fields (G1).
+ security:
+ type: object
+ properties:
+ securityContacts:
+ type: array
+ nullable: true
+ items:
+ type: string
+ advisories:
+ type: array
+ items:
+ $ref: '#/components/schemas/Advisory'
+ cvd:
+ type: object
+ properties:
+ isPvrEnabled:
+ type: boolean
+ nullable: true
+ tier0Steward:
+ type: string
+ nullable: true
+ criticalVulnerabilityFlag:
+ type: boolean
+ nullable: true
+ provenance:
+ type: object
+ properties:
+ repositoryMapping:
+ type: object
+ properties:
+ declaredRepo:
+ type: string
+ nullable: true
+ mappingConfidence:
+ type: number
+ format: float
+ nullable: true
+ mappingLabel:
+ type: string
+ enum: [High, Medium, Low]
+ nullable: true
+ lastCommitAt:
+ type: string
+ format: date-time
+ nullable: true
+ supplyChainIntegrity:
+ type: object
+ properties:
+ buildProvenance:
+ type: string
+ nullable: true
+ description: Not yet ingested.
+ signedReleases:
+ type: string
+ nullable: true
+ description: Not yet ingested.
+ stewardship:
+ type: object
+ properties:
+ id:
+ type: string
+ nullable: true
+ status:
+ $ref: '#/components/schemas/StewardshipStatus'
+ origin:
+ type: string
+ nullable: true
+ version:
+ type: integer
+ nullable: true
+ openedAt:
+ type: string
+ format: date-time
+ nullable: true
+ lastStatusAt:
+ type: string
+ format: date-time
+ nullable: true
+ resolutionPath:
+ $ref: '#/components/schemas/EscalationResolutionPath'
+ nullable: true
+ statusNote:
+ type: string
+ nullable: true
+ stewards:
+ type: array
+ nullable: true
+ items:
+ $ref: '#/components/schemas/StewardEntry'
+ lastActivityAt:
+ type: string
+ format: date-time
+ nullable: true
+ history:
+ nullable: true
+ description: Always null in /detail — full history available at GET /packages/history.
+
+ PackageStewardshipSummary:
+ type: object
+ description: Slim stewardship summary returned per-purl by the batch endpoint.
+ nullable: true
+ required: [name, ecosystem]
+ properties:
+ name:
+ type: string
+ ecosystem:
+ type: string
+ lifecycle:
+ type: string
+ enum: [active, stable, declining, abandoned]
+ nullable: true
+ health:
+ type: number
+ format: float
+ nullable: true
+ impact:
+ type: integer
+ nullable: true
+ description: Criticality score scaled to 0–100.
+ openVulns:
+ type: object
+ nullable: true
+ properties:
+ low:
+ type: integer
+ medium:
+ type: integer
+ high:
+ type: integer
+ critical:
+ type: integer
+ stewardship:
+ $ref: '#/components/schemas/StewardshipStatus'
+ nullable: true
+ stewards:
+ type: array
+ nullable: true
+ items:
+ $ref: '#/components/schemas/Steward'
+ lastActivityAt:
+ type: string
+ format: date-time
+ nullable: true
+ lastActivityDescription:
+ type: string
+ nullable: true
+
+ # ── Pagination wrapper ─────────────────────────────────────────────────────
+
+ PaginationMeta:
+ type: object
+ required: [total, page, pageSize]
+ properties:
+ total:
+ type: integer
+ page:
+ type: integer
+ pageSize:
+ type: integer
+
+paths:
+ # ── Dashboard ──────────────────────────────────────────────────────────────
+
+ /akrites/metrics:
+ get:
+ operationId: getAkritesMetrics
+ summary: Get KPI bar metrics
+ description: >
+ Returns aggregate counts that power the global KPI bar on the OSSPREY
+ dashboard (total packages, coverage %, active stewards, unassigned
+ critical, needs-attention, escalated).
+ tags:
+ - Dashboard
+ responses:
+ '200':
+ description: Metrics snapshot.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/OsspreyMetrics'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /akrites/activity:
+ get:
+ operationId: getAkritesActivity
+ summary: Get stewardship activity feed
+ description: >
+ Returns a paginated, reverse-chronological list of stewardship activity
+ events across all packages (status changes, assignments, escalations, etc.).
+ tags:
+ - Dashboard
+ parameters:
+ - name: page
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ default: 1
+ - name: pageSize
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ maximum: 100
+ default: 25
+ responses:
+ '200':
+ description: Paginated activity feed.
+ content:
+ application/json:
+ schema:
+ allOf:
+ - $ref: '#/components/schemas/PaginationMeta'
+ - type: object
+ required: [rows]
+ properties:
+ rows:
+ type: array
+ items:
+ $ref: '#/components/schemas/ActivityEntry'
+ '400':
+ description: Validation error.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ # ── Packages (ossprey-derived read endpoints) ──────────────────────────────
+
+ /akrites/packages:
+ get:
+ operationId: listAkritesPackages
+ summary: List packages with stewardship data
+ description: >
+ Paginated list of critical packages enriched with stewardship status,
+ vulnerability counts, health band, and the latest stewardship activity.
+ Supports rich filtering and sorting.
+ tags:
+ - Packages
+ parameters:
+ - name: page
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ default: 1
+ - name: pageSize
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ maximum: 250
+ default: 25
+ - name: ecosystem
+ in: query
+ schema:
+ type: string
+ - name: lifecycle
+ in: query
+ schema:
+ type: string
+ enum: [active, stable, declining, abandoned]
+ - name: name
+ in: query
+ description: Substring match on package name.
+ schema:
+ type: string
+ - name: status
+ in: query
+ schema:
+ $ref: '#/components/schemas/StewardshipStatus'
+ - name: healthBand
+ in: query
+ schema:
+ $ref: '#/components/schemas/HealthBand'
+ - name: vulnSeverity
+ in: query
+ description: >
+ Filter by highest open vulnerability severity present on the package.
+ `none` returns packages with zero vulnerabilities; `any` disables the filter.
+ schema:
+ type: string
+ enum: [any, high, critical, none]
+ - name: staleOnly
+ in: query
+ schema:
+ type: boolean
+ default: false
+ - name: unstewardedOnly
+ in: query
+ schema:
+ type: boolean
+ default: false
+ - name: busFactor1Only
+ in: query
+ description: Return only packages whose maintainer count is 1.
+ schema:
+ type: boolean
+ default: false
+ - name: sortBy
+ in: query
+ schema:
+ type: string
+ enum: [name, risk, impact, openVulns, health]
+ default: risk
+ - name: sortDir
+ in: query
+ schema:
+ type: string
+ enum: [asc, desc]
+ default: desc
+ responses:
+ '200':
+ description: Paginated package list.
+ content:
+ application/json:
+ schema:
+ allOf:
+ - $ref: '#/components/schemas/PaginationMeta'
+ - type: object
+ required: [rows, statusCounts]
+ properties:
+ rows:
+ type: array
+ items:
+ $ref: '#/components/schemas/PackageListRow'
+ statusCounts:
+ $ref: '#/components/schemas/StatusCounts'
+ '400':
+ description: Validation error.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /akrites/packages/scatter:
+ get:
+ operationId: getAkritesPackagesScatter
+ summary: Get risk matrix scatter data
+ description: >
+ Returns all critical packages as scatter-plot points with impact score
+ (x-axis) and health score (y-axis). No pagination — the full dataset is
+ returned.
+ tags:
+ - Packages
+ responses:
+ '200':
+ description: Scatter plot dataset.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [points, total]
+ properties:
+ points:
+ type: array
+ items:
+ $ref: '#/components/schemas/ScatterPoint'
+ total:
+ type: integer
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /akrites/packages/metrics:
+ get:
+ operationId: getAkritesPackagesMetrics
+ summary: Get package count metrics
+ description: >
+ Returns total and critical package counts. Lighter alternative to
+ `/akrites/metrics` when only package-level counts are needed.
+ tags:
+ - Packages
+ responses:
+ '200':
+ description: Package count metrics.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PackageMetrics'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /akrites/packages/detail:
+ get:
+ operationId: getAkritesPackageDetail
+ summary: Get package detail
+ description: >
+ Returns the full detail view for a single package identified by its
+ PURL, including risk signals, security advisories, repository provenance,
+ and current stewardship state.
+ tags:
+ - Packages
+ parameters:
+ - name: purl
+ in: query
+ required: true
+ description: >
+ Package URL (PURL) — must start with `pkg:`.
+ Version qualifiers are normalised server-side.
+ schema:
+ type: string
+ example: pkg:npm/%40angular/core@17.0.0
+ responses:
+ '200':
+ description: Package detail.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PackageDetail'
+ '400':
+ description: Validation error (malformed purl).
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '404':
+ description: Package not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /akrites/packages/advisories:
+ get:
+ operationId: getAkritesPackageAdvisories
+ summary: Get advisories for a package
+ description: >
+ Returns all open security advisories for a single package identified by
+ PURL. Intended for lazy-loading the Security tab in the package detail drawer.
+ tags:
+ - Packages
+ parameters:
+ - name: purl
+ in: query
+ required: true
+ description: Package URL (PURL) — must start with `pkg:`.
+ schema:
+ type: string
+ example: pkg:npm/%40angular/core@17.0.0
+ responses:
+ '200':
+ description: Advisory list.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [advisories, total]
+ properties:
+ advisories:
+ type: array
+ items:
+ $ref: '#/components/schemas/Advisory'
+ total:
+ type: integer
+ '400':
+ description: Validation error (malformed purl).
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '404':
+ description: Package not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /akrites/packages/history:
+ get:
+ operationId: getAkritesPackageHistory
+ summary: Get stewardship history for a package
+ description: >
+ Returns the full activity log for the stewardship associated with the
+ given PURL, ordered newest-first. Returns an empty list if no stewardship
+ exists. Intended for lazy-loading the History tab in the package detail drawer.
+ tags:
+ - Packages
+ parameters:
+ - name: purl
+ in: query
+ required: true
+ description: Package URL (PURL) — must start with `pkg:`.
+ schema:
+ type: string
+ example: pkg:npm/%40angular/core@17.0.0
+ responses:
+ '200':
+ description: Stewardship activity history.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [events, total]
+ properties:
+ events:
+ type: array
+ items:
+ $ref: '#/components/schemas/PackageHistoryEvent'
+ total:
+ type: integer
+ '400':
+ description: Validation error (malformed purl).
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '404':
+ description: Package not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /akrites/packages:batch-stewardship:
+ post:
+ operationId: batchGetStewardship
+ summary: Batch stewardship lookup by PURL
+ description: >
+ Given up to 100 PURLs, returns a map of `purl → stewardship summary`
+ for each. Missing packages are returned as `null`. Useful for enriching
+ external package listings with CDP stewardship state.
+ tags:
+ - Packages
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [purls]
+ properties:
+ purls:
+ type: array
+ minItems: 1
+ maxItems: 100
+ items:
+ type: string
+ description: Must start with `pkg:`.
+ example: pkg:npm/%40angular/core@17.0.0
+ responses:
+ '200':
+ description: Per-purl stewardship map.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [packages]
+ properties:
+ packages:
+ type: object
+ description: >
+ Keys are the original PURLs from the request.
+ Values are null when the package is not found in CDP.
+ additionalProperties:
+ oneOf:
+ - $ref: '#/components/schemas/PackageStewardshipSummary'
+ - type: 'null'
+ '400':
+ description: Validation error.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ # ── Stewardships ───────────────────────────────────────────────────────────
+
+ /akrites/stewardships/me/packages:
+ get:
+ operationId: getMyPackages
+ summary: List packages stewarded by the authenticated user
+ description: >
+ Returns a paginated list of packages where the authenticated user
+ (`req.actor.id`) is an active steward (`lead` or `co_steward`).
+ Includes package metadata, health, open vulnerabilities, last activity,
+ and the user's role and stewardship status.
+ The `meta.statusCounts` object always reflects counts across **all**
+ of the user's stewardships, regardless of the active `status` filter,
+ so the tab bar can render all buckets at once.
+ tags:
+ - Stewardships
+ parameters:
+ - name: page
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ default: 1
+ - name: pageSize
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ maximum: 100
+ default: 25
+ - name: status
+ in: query
+ description: Filter by stewardship status.
+ schema:
+ type: string
+ enum: [assessing, active, needs_attention, escalated, blocked]
+ - name: search
+ in: query
+ description: Case-insensitive substring match on package name or PURL.
+ schema:
+ type: string
+ - name: ecosystem
+ in: query
+ schema:
+ type: string
+ enum: [npm, maven, pypi, go, cargo]
+ - name: healthBand
+ in: query
+ schema:
+ type: string
+ enum: [healthy, fair, concerning, critical]
+ - name: vulnSeverity
+ in: query
+ description: Filter to packages with at least one vulnerability of this severity or worse.
+ schema:
+ type: string
+ enum: [high, critical]
+ - name: sortBy
+ in: query
+ schema:
+ type: string
+ enum: [risk, health, vulns, name, last_activity]
+ default: risk
+ - name: sortDir
+ in: query
+ schema:
+ type: string
+ enum: [asc, desc]
+ default: desc
+ responses:
+ '200':
+ description: Paginated list of the user's stewarded packages.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [data, meta]
+ properties:
+ data:
+ type: array
+ items:
+ type: object
+ required:
+ - purl
+ - name
+ - ecosystem
+ - openVulns
+ - stewardshipId
+ - stewardshipStatus
+ - myRole
+ properties:
+ purl:
+ type: string
+ example: pkg:npm/minimist
+ name:
+ type: string
+ example: minimist
+ ecosystem:
+ type: string
+ example: npm
+ lifecycle:
+ type: string
+ nullable: true
+ example: abandoned
+ healthScore:
+ type: integer
+ minimum: 0
+ maximum: 100
+ nullable: true
+ description: Scorecard score scaled to 0–100.
+ healthBand:
+ type: string
+ enum: [healthy, fair, concerning, critical]
+ openVulns:
+ type: integer
+ example: 2
+ vulnSeverity:
+ type: string
+ enum: [critical, high, medium, low]
+ nullable: true
+ description: Worst open vulnerability severity.
+ lastActivityDescription:
+ type: string
+ nullable: true
+ example: Escalated for intervention
+ lastActivityAt:
+ type: string
+ format: date-time
+ nullable: true
+ stewardshipId:
+ type: string
+ example: '42'
+ stewardshipStatus:
+ type: string
+ enum: [assessing, active, needs_attention, escalated, blocked]
+ myRole:
+ type: string
+ enum: [lead, co_steward]
+ meta:
+ type: object
+ required: [total, page, pageSize, statusCounts]
+ properties:
+ total:
+ type: integer
+ page:
+ type: integer
+ pageSize:
+ type: integer
+ statusCounts:
+ type: object
+ required: [assessing, active, needs_attention, escalated, blocked]
+ properties:
+ assessing:
+ type: integer
+ active:
+ type: integer
+ needs_attention:
+ type: integer
+ escalated:
+ type: integer
+ blocked:
+ type: integer
+ '400':
+ description: Validation error.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /akrites/stewardships/me/activity:
+ get:
+ operationId: getMyActivity
+ summary: Latest activity feed for the authenticated user's stewardships
+ description: >
+ Returns the most recent stewardship activity events scoped to packages
+ where the authenticated user is an active steward. Results are
+ **deduplicated by stewardship** — only the single most recent event per
+ package is returned — and sorted newest-first.
+ Designed to power the "Latest activity" strip on the My Stewardships
+ page. Default `pageSize` is 3 (one card per attention-needed status);
+ increase for a "load more" experience.
+ tags:
+ - Stewardships
+ parameters:
+ - name: page
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ default: 1
+ - name: pageSize
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ maximum: 100
+ default: 3
+ - name: status
+ in: query
+ description: >
+ Comma-separated list of stewardship statuses to filter.
+ Example: `needs_attention,blocked,escalated,assessing`
+ schema:
+ type: string
+ responses:
+ '200':
+ description: Deduplicated activity feed for the user's stewardships.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [data, meta]
+ properties:
+ data:
+ type: array
+ items:
+ type: object
+ required:
+ - stewardshipId
+ - packageName
+ - purl
+ - packageEcosystem
+ - stewardshipStatus
+ - activityType
+ - createdAt
+ properties:
+ stewardshipId:
+ type: string
+ example: '42'
+ packageName:
+ type: string
+ example: jackson-databind
+ purl:
+ type: string
+ example: pkg:maven/com.fasterxml.jackson.core/jackson-databind
+ packageEcosystem:
+ type: string
+ example: maven
+ stewardshipStatus:
+ type: string
+ enum:
+ [
+ assessing,
+ active,
+ needs_attention,
+ escalated,
+ blocked,
+ unassigned,
+ open,
+ inactive,
+ ]
+ activityType:
+ type: string
+ example: advisory_detected
+ description:
+ type: string
+ nullable: true
+ example: New security advisory detected
+ createdAt:
+ type: string
+ format: date-time
+ suggestedAction:
+ type: string
+ nullable: true
+ description: Label for the primary CTA button on the activity card.
+ example: Review & respond
+ meta:
+ type: object
+ required: [total, page, pageSize]
+ properties:
+ total:
+ type: integer
+ page:
+ type: integer
+ pageSize:
+ type: integer
+ '400':
+ description: Validation error.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /akrites/stewardships/open:
+ post:
+ operationId: openStewardship
+ summary: Open a stewardship for a package
+ description: >
+ Creates a new stewardship record for the package identified by the given
+ PURL, setting its status to `open`. The authenticated user is recorded
+ as the actor who opened it.
+ tags:
+ - Stewardships
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [purl]
+ properties:
+ purl:
+ type: string
+ description: Must start with `pkg:`.
+ example: pkg:npm/%40angular/core@17.0.0
+ responses:
+ '200':
+ description: Stewardship opened.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [stewardship]
+ properties:
+ stewardship:
+ $ref: '#/components/schemas/StewardshipRecord'
+ '400':
+ description: Validation error.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '404':
+ description: Package not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /akrites/stewardships/{id}/assign:
+ post:
+ operationId: assignSteward
+ summary: Assign a steward to a stewardship
+ description: >
+ Assigns a user as a steward (lead or co-steward) for the given
+ stewardship. Optionally transitions the stewardship status to
+ `assessing` in the same operation.
+ tags:
+ - Stewardships
+ parameters:
+ - name: id
+ in: path
+ required: true
+ schema:
+ type: integer
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [userId, role]
+ properties:
+ userId:
+ type: string
+ description: Auth0 sub of the user to assign.
+ example: auth0|abc123
+ role:
+ type: string
+ enum: [lead, co_steward]
+ note:
+ type: string
+ minLength: 1
+ description: Optional note stored in the steward_added activity metadata.
+ moveToAssessing:
+ type: boolean
+ default: false
+ description: >
+ When true, automatically transitions stewardship status to
+ `assessing` after assignment.
+ responses:
+ '200':
+ description: Steward assigned.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [stewardship, stewards]
+ properties:
+ stewardship:
+ $ref: '#/components/schemas/StewardshipRecord'
+ stewards:
+ type: array
+ items:
+ $ref: '#/components/schemas/StewardEntry'
+ '400':
+ description: Validation error.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '404':
+ description: Stewardship not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /akrites/stewardships/{id}/escalate:
+ post:
+ operationId: escalateStewardship
+ summary: Escalate a stewardship
+ description: >
+ Transitions the stewardship to `escalated` status and records the chosen
+ resolution path. Optionally attaches a free-text note.
+ tags:
+ - Stewardships
+ parameters:
+ - name: id
+ in: path
+ required: true
+ schema:
+ type: integer
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [resolutionPath]
+ properties:
+ resolutionPath:
+ $ref: '#/components/schemas/EscalationResolutionPath'
+ notes:
+ type: string
+ minLength: 1
+ responses:
+ '200':
+ description: Stewardship escalated.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [stewardship]
+ properties:
+ stewardship:
+ $ref: '#/components/schemas/StewardshipRecord'
+ '400':
+ description: Validation error.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '404':
+ description: Stewardship not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /akrites/stewardships/{id}/status:
+ patch:
+ operationId: updateStewardshipStatus
+ summary: Update stewardship status
+ description: >
+ Updates the stewardship status. Valid target statuses are:
+ `assessing`, `active`, `needs_attention`, `blocked`, `inactive`.
+ When setting `inactive`, `inactiveReason` is required.
+ tags:
+ - Stewardships
+ parameters:
+ - name: id
+ in: path
+ required: true
+ schema:
+ type: integer
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [status]
+ properties:
+ status:
+ type: string
+ enum: [assessing, active, needs_attention, blocked, inactive]
+ inactiveReason:
+ $ref: '#/components/schemas/InactiveReason'
+ description: Required when status is `inactive`.
+ notes:
+ type: string
+ minLength: 1
+ responses:
+ '200':
+ description: Stewardship status updated.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [stewardship]
+ properties:
+ stewardship:
+ $ref: '#/components/schemas/StewardshipRecord'
+ '400':
+ description: >
+ Validation error. Also returned when `status` is `inactive` but
+ `inactiveReason` is missing.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '404':
+ description: Stewardship not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
diff --git a/backend/src/api/public/v1/index.ts b/backend/src/api/public/v1/index.ts
new file mode 100644
index 0000000000..1dd4501886
--- /dev/null
+++ b/backend/src/api/public/v1/index.ts
@@ -0,0 +1,51 @@
+import { Router } from 'express'
+
+import { NotFoundError } from '@crowd/common'
+
+import { createRateLimiter } from '@/api/apiRateLimiter'
+import { safeWrap } from '@/middlewares/errorMiddleware'
+import { SCOPES } from '@/security/scopes'
+
+import { AUTH0_CONFIG } from '../../../conf'
+import { oauth2Middleware } from '../middlewares/oauth2Middleware'
+import { requireScopes } from '../middlewares/requireScopes'
+import { staticApiKeyMiddleware } from '../middlewares/staticApiKeyMiddleware'
+
+import { memberOrganizationAffiliationsRouter } from './affiliations'
+import { akritesRouter } from './akrites'
+import { membersRouter } from './members'
+import { organizationsRouter } from './organizations'
+import { osspreyRouter } from './ossprey'
+import { packagesRouter } from './packages'
+import { batchGetStewardship } from './packages/batchGetStewardship'
+import { stewardshipsRouter } from './stewardships'
+
+const packagesRateLimiter = createRateLimiter({ max: 60, windowMs: 60 * 1000 })
+
+export function v1Router(): Router {
+ const router = Router()
+
+ router.use('/members', oauth2Middleware(AUTH0_CONFIG), membersRouter())
+ router.use('/organizations', oauth2Middleware(AUTH0_CONFIG), organizationsRouter())
+ router.use('/affiliations', staticApiKeyMiddleware(), memberOrganizationAffiliationsRouter())
+
+ // TODO[deprecate]: /packages, /stewardships, /ossprey are superseded by /akrites — remove once consumers have migrated
+ router.post(
+ /^\/packages:batch-stewardship\/?$/,
+ oauth2Middleware(AUTH0_CONFIG),
+ packagesRateLimiter,
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(batchGetStewardship),
+ )
+ router.use('/packages', oauth2Middleware(AUTH0_CONFIG), packagesRouter())
+ router.use('/stewardships', oauth2Middleware(AUTH0_CONFIG), stewardshipsRouter())
+ router.use('/ossprey', oauth2Middleware(AUTH0_CONFIG), osspreyRouter())
+
+ router.use('/akrites', oauth2Middleware(AUTH0_CONFIG), akritesRouter())
+
+ router.use(() => {
+ throw new NotFoundError()
+ })
+
+ return router
+}
diff --git a/backend/src/api/public/v1/members/createMember.ts b/backend/src/api/public/v1/members/createMember.ts
new file mode 100644
index 0000000000..075be732ee
--- /dev/null
+++ b/backend/src/api/public/v1/members/createMember.ts
@@ -0,0 +1,92 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { captureApiChange, memberCreateAction, memberEditIdentitiesAction } from '@crowd/audit-logs'
+import { getProperDisplayName } from '@crowd/common'
+import {
+ insertManyMemberIdentities,
+ createMember as insertMember,
+ optionsQx,
+} from '@crowd/data-access-layer'
+import { MemberIdentityType } from '@crowd/types'
+
+import { created } from '@/utils/api'
+import { rethrowDbConflict } from '@/utils/err'
+import { validateOrThrow } from '@/utils/validation'
+
+const bodySchema = z.object({
+ displayName: z.string().trim().min(1),
+ identities: z
+ .array(
+ z
+ .object({
+ value: z.string().min(1),
+ platform: z.string().min(1),
+ type: z.enum(MemberIdentityType),
+ source: z.string().min(1),
+ verified: z.boolean(),
+ verifiedBy: z.string().optional(),
+ })
+ .refine((data) => !data.verified || data.verifiedBy, {
+ message: 'verifiedBy is required when verified is true',
+ path: ['verifiedBy'],
+ }),
+ )
+ .min(1),
+})
+
+export async function createMember(req: Request, res: Response): Promise {
+ const { displayName, identities } = validateOrThrow(bodySchema, req.body)
+ const qx = optionsQx(req)
+
+ const normalizedDisplayName = getProperDisplayName(displayName)
+
+ const { dbMember, dbIdentities } = await qx.tx(async (tx) => {
+ try {
+ const dbMember = await insertMember(tx, {
+ displayName: normalizedDisplayName,
+ joinedAt: new Date().toISOString(),
+ attributes: {},
+ reach: {},
+ // OpenSearch sync only keeps members that either have activities or have manuallyCreated set.
+ manuallyCreated: true,
+ })
+
+ const dbIdentities = await insertManyMemberIdentities(
+ tx,
+ identities.map((identity) => ({
+ ...identity,
+ memberId: dbMember.id,
+ value: identity.value.trim().toLowerCase(),
+ })),
+ true,
+ true,
+ )
+
+ return { dbMember, dbIdentities }
+ } catch (error) {
+ return rethrowDbConflict(error)
+ }
+ })
+
+ await captureApiChange(
+ req,
+ memberCreateAction(dbMember.id, async (captureNewState) => {
+ captureNewState({
+ memberId: dbMember.id,
+ displayName: dbMember.displayName,
+ manuallyCreated: true,
+ })
+ }),
+ )
+
+ await captureApiChange(
+ req,
+ memberEditIdentitiesAction(dbMember.id, async (captureOldState, captureNewState) => {
+ captureOldState({})
+ captureNewState(dbIdentities)
+ }),
+ )
+
+ created(res, { memberId: dbMember.id })
+}
diff --git a/backend/src/api/public/v1/members/identities/createMemberIdentity.ts b/backend/src/api/public/v1/members/identities/createMemberIdentity.ts
new file mode 100644
index 0000000000..5d20ee7398
--- /dev/null
+++ b/backend/src/api/public/v1/members/identities/createMemberIdentity.ts
@@ -0,0 +1,133 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { captureApiChange, memberEditIdentitiesAction } from '@crowd/audit-logs'
+import { NotFoundError } from '@crowd/common'
+import {
+ MemberField,
+ findMemberById,
+ findMemberIdentitiesByValue,
+ createMemberIdentity as insertMemberIdentity,
+ optionsQx,
+ touchMemberUpdatedAt,
+ updateMemberIdentity,
+} from '@crowd/data-access-layer'
+import { IMemberIdentity, MemberIdentityType } from '@crowd/types'
+
+import { created, ok } from '@/utils/api'
+import { rethrowDbConflict } from '@/utils/err'
+import { validateOrThrow } from '@/utils/validation'
+
+const paramsSchema = z.object({
+ memberId: z.uuid(),
+})
+
+const bodySchema = z
+ .object({
+ value: z.string().min(1),
+ platform: z.string().min(1),
+ type: z.enum(MemberIdentityType),
+ source: z.string().min(1),
+ verified: z.boolean(),
+ verifiedBy: z.string().optional(),
+ })
+ .refine((data) => !data.verified || data.verifiedBy, {
+ message: 'verifiedBy is required when verified is true',
+ path: ['verifiedBy'],
+ })
+
+export async function createMemberIdentity(req: Request, res: Response): Promise {
+ const { memberId } = validateOrThrow(paramsSchema, req.params)
+ const data = validateOrThrow(bodySchema, req.body)
+
+ const qx = optionsQx(req)
+ const member = await findMemberById(qx, memberId, [MemberField.ID])
+ if (!member) {
+ throw new NotFoundError('Member not found')
+ }
+
+ // The data-sink writes identity values as trimmed lowercase, so normalize here
+ // to keep idempotency checks reliable against existing rows.
+ const normalizedValue = data.value.trim().toLowerCase()
+
+ let result!: IMemberIdentity
+ let alreadyExisted = false
+
+ await captureApiChange(
+ req,
+ memberEditIdentitiesAction(memberId, async (captureOldState, captureNewState) => {
+ captureOldState({})
+
+ await qx.tx(async (tx) => {
+ const existing = await findMemberIdentitiesByValue(tx, memberId, normalizedValue, {
+ type: data.type,
+ })
+ const exactMatch = existing.find((i) => i.platform === data.platform)
+
+ try {
+ if (exactMatch) {
+ alreadyExisted = true
+ result = exactMatch
+ } else {
+ result = await insertMemberIdentity(
+ tx,
+ {
+ memberId,
+ platform: data.platform,
+ value: normalizedValue,
+ type: data.type,
+ source: data.source,
+ verified: data.verified,
+ verifiedBy: data.verifiedBy,
+ },
+ true,
+ true,
+ )
+ }
+
+ // A verified identity confirms the same value for this member, so keep same-value
+ // identities in sync instead of leaving stale unverified duplicates behind.
+ if (data.verified && existing.length > 0) {
+ const updatedResults: IMemberIdentity[] = []
+ for (const identity of existing) {
+ const updated = await updateMemberIdentity(tx, memberId, identity.id, {
+ verified: true,
+ verifiedBy: data.verifiedBy,
+ })
+ if (updated) updatedResults.push(updated)
+ }
+
+ if (alreadyExisted) {
+ result = updatedResults.find((r) => r.id === exactMatch.id) ?? result
+ }
+ }
+ } catch (error) {
+ const ctx = { platform: data.platform, value: normalizedValue, type: data.type }
+ rethrowDbConflict(error, ctx)
+ }
+
+ await touchMemberUpdatedAt(tx, memberId)
+ })
+
+ captureNewState(result)
+ }),
+ )
+
+ const response = {
+ id: result.id,
+ value: result.value,
+ platform: result.platform,
+ type: result.type,
+ verified: result.verified,
+ verifiedBy: result.verifiedBy ?? null,
+ source: result.source ?? null,
+ createdAt: result.createdAt,
+ updatedAt: result.updatedAt,
+ }
+
+ if (alreadyExisted) {
+ ok(res, response)
+ } else {
+ created(res, response)
+ }
+}
diff --git a/backend/src/api/public/v1/members/identities/getMemberIdentities.ts b/backend/src/api/public/v1/members/identities/getMemberIdentities.ts
new file mode 100644
index 0000000000..aa94fb7204
--- /dev/null
+++ b/backend/src/api/public/v1/members/identities/getMemberIdentities.ts
@@ -0,0 +1,44 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { NotFoundError } from '@crowd/common'
+import {
+ MemberField,
+ fetchMemberIdentities,
+ findMemberById,
+ optionsQx,
+} from '@crowd/data-access-layer'
+
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+const paramsSchema = z.object({
+ memberId: z.uuid(),
+})
+
+export async function getMemberIdentities(req: Request, res: Response): Promise {
+ const { memberId } = validateOrThrow(paramsSchema, req.params)
+ const qx = optionsQx(req)
+
+ const member = await findMemberById(qx, memberId, [MemberField.ID])
+
+ if (!member) throw new NotFoundError('Member not found')
+
+ const rawIdentities = await fetchMemberIdentities(qx, memberId)
+
+ const identities = rawIdentities.map(
+ ({ id, value, platform, type, verified, verifiedBy, source, createdAt, updatedAt }) => ({
+ id,
+ value,
+ platform,
+ type,
+ verified,
+ verifiedBy: verifiedBy ?? null,
+ source,
+ createdAt,
+ updatedAt,
+ }),
+ )
+
+ ok(res, { identities })
+}
diff --git a/backend/src/api/public/v1/members/identities/verifyMemberIdentity.ts b/backend/src/api/public/v1/members/identities/verifyMemberIdentity.ts
new file mode 100644
index 0000000000..a7f940b7c6
--- /dev/null
+++ b/backend/src/api/public/v1/members/identities/verifyMemberIdentity.ts
@@ -0,0 +1,204 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import {
+ captureApiChange,
+ memberUnmergeAction,
+ memberVerifyIdentityAction,
+} from '@crowd/audit-logs'
+import { InternalError, NotFoundError } from '@crowd/common'
+import {
+ invalidateMemberQueryCache,
+ prepareMemberUnmerge,
+ startMemberUnmergeWorkflow,
+ unmergeMember,
+} from '@crowd/common_services'
+import {
+ MemberField,
+ deleteMemberIdentity,
+ findMemberById,
+ findMemberIdentityById,
+ optionsQx,
+ queryActivityRelations,
+ updateMemberIdentity,
+} from '@crowd/data-access-layer'
+import { SlackChannel, SlackPersona, sendSlackNotification } from '@crowd/slack'
+import {
+ IMemberIdentity,
+ IMemberUnmergePreviewResult,
+ IUnmergePreviewResult,
+ MemberUnmergeResult,
+} from '@crowd/types'
+
+import { noContent, ok } from '@/utils/api'
+import { rethrowDbConflict } from '@/utils/err'
+import { validateOrThrow } from '@/utils/validation'
+
+const paramsSchema = z.object({
+ memberId: z.uuid(),
+ identityId: z.uuid(),
+})
+
+const bodySchema = z.object({
+ verified: z.boolean(),
+ verifiedBy: z.string(),
+})
+
+type MemberUnmergeContext = {
+ preview: IUnmergePreviewResult
+ result: MemberUnmergeResult
+}
+
+function toReturn(identity: IMemberIdentity) {
+ return {
+ id: identity.id,
+ value: identity.value,
+ platform: identity.platform,
+ type: identity.type,
+ verified: identity.verified,
+ verifiedBy: identity.verifiedBy ?? null,
+ source: identity.source,
+ createdAt: identity.createdAt,
+ updatedAt: identity.updatedAt,
+ }
+}
+
+export async function verifyMemberIdentity(req: Request, res: Response): Promise {
+ const { memberId, identityId } = validateOrThrow(paramsSchema, req.params)
+ const { verified, verifiedBy } = validateOrThrow(bodySchema, req.body)
+ const qx = optionsQx(req)
+
+ const member = await findMemberById(qx, memberId, [MemberField.ID])
+
+ if (!member) {
+ throw new NotFoundError('Member not found')
+ }
+
+ const identity = await findMemberIdentityById(qx, memberId, identityId)
+
+ if (!identity) throw new NotFoundError('Member identity not found')
+
+ let unmerge: MemberUnmergeContext | undefined
+ let updatedIdentity: IMemberIdentity | undefined
+
+ await captureApiChange(
+ req,
+ memberVerifyIdentityAction(memberId, async (captureOldState, captureNewState) => {
+ captureOldState(identity)
+
+ await qx.tx(async (tx) => {
+ try {
+ updatedIdentity = await updateMemberIdentity(tx, memberId, identityId, {
+ verified,
+ verifiedBy,
+ })
+ } catch (error) {
+ if (verified) {
+ const ctx = { platform: identity.platform, value: identity.value, type: identity.type }
+ rethrowDbConflict(error, ctx)
+ }
+
+ throw error
+ }
+
+ if (!updatedIdentity) {
+ throw new InternalError('Failed to update member identity')
+ }
+
+ if (!verified) {
+ const { count } = await queryActivityRelations(tx, {
+ filter: {
+ and: [
+ {
+ memberId: { eq: memberId },
+ username: { eq: identity.value },
+ platform: { eq: identity.platform },
+ },
+ ],
+ },
+ limit: 1,
+ countOnly: true,
+ })
+
+ if (count === 0) {
+ await deleteMemberIdentity(tx, memberId, identityId)
+ } else {
+ const preview = await prepareMemberUnmerge(tx, memberId, identityId, false)
+ const result = await unmergeMember(tx, memberId, preview, req.actor.id)
+ unmerge = { preview, result }
+ }
+ }
+ })
+
+ captureNewState(updatedIdentity)
+ }),
+ )
+
+ if (unmerge) {
+ const { preview, result } = unmerge
+
+ try {
+ await captureApiChange(
+ req,
+ memberUnmergeAction(memberId, async (captureOldState, captureNewState) => {
+ captureOldState({ primary: preview.primary })
+ captureNewState({
+ primary: result.primary,
+ secondary: result.secondary,
+ })
+ }),
+ )
+ } catch (error) {
+ req.log.warn({ error }, 'Audit log capture failed after identity unmerge')
+ sendSlackNotification(
+ SlackChannel.CDP_ALERTS,
+ SlackPersona.ERROR_REPORTER,
+ `Audit log capture failed after identity unmerge: member ${memberId}`,
+ [{ title: 'Error', text: `\`${error?.message || error}\`` }],
+ )
+ }
+
+ try {
+ await invalidateMemberQueryCache(req.redis, [result.primary.id, result.secondary.id], true)
+ } catch (error) {
+ req.log.warn({ error }, 'Cache invalidation failed after identity unmerge')
+ }
+
+ try {
+ await startMemberUnmergeWorkflow(req.temporal, {
+ primaryId: result.primary.id,
+ secondaryId: result.secondary.id,
+ movedIdentities: result.movedIdentities,
+ primaryDisplayName: result.primary.displayName,
+ secondaryDisplayName: result.secondary.displayName,
+ actorId: req.actor.id,
+ })
+ } catch (error) {
+ req.log.warn({ error }, 'Failed to start unmerge workflow after identity unmerge')
+ sendSlackNotification(
+ SlackChannel.CDP_ALERTS,
+ SlackPersona.ERROR_REPORTER,
+ `Failed to start unmerge workflow after identity unmerge: member ${memberId}`,
+ [
+ {
+ title: 'Context',
+ text: `*Primary:* \`${result.primary.id}\`\n*Secondary:* \`${result.secondary.id}\``,
+ },
+ { title: 'Error', text: `\`${error?.message || error}\`` },
+ ],
+ )
+ }
+ }
+
+ // If verified = false and no activities (deleted): 204 No Content
+ if (!verified && !unmerge) {
+ noContent(res)
+ return
+ }
+
+ // If verified = false and has activities (unmerge): 200 OK + unmergedToMemberId
+ ok(res, {
+ ...toReturn(updatedIdentity),
+ ...(unmerge && { unmergedToMemberId: unmerge.result.secondary.id }),
+ })
+}
diff --git a/backend/src/api/public/v1/members/index.ts b/backend/src/api/public/v1/members/index.ts
new file mode 100644
index 0000000000..12eab8e837
--- /dev/null
+++ b/backend/src/api/public/v1/members/index.ts
@@ -0,0 +1,95 @@
+import { Router } from 'express'
+
+import { requireScopes } from '@/api/public/middlewares/requireScopes'
+import { safeWrap } from '@/middlewares/errorMiddleware'
+import { SCOPES } from '@/security/scopes'
+
+import { createMember } from './createMember'
+import { createMemberIdentity } from './identities/createMemberIdentity'
+import { getMemberIdentities } from './identities/getMemberIdentities'
+import { verifyMemberIdentity } from './identities/verifyMemberIdentity'
+import { getMemberMaintainerRoles } from './maintainer-roles/getMemberMaintainerRoles'
+import { getProjectAffiliations } from './project-affiliations/getProjectAffiliations'
+import { patchProjectAffiliation } from './project-affiliations/patchProjectAffiliation'
+import { resolveMemberByIdentities } from './resolveMember'
+import { createMemberWorkExperience } from './work-experiences/createMemberWorkExperience'
+import { deleteMemberWorkExperience } from './work-experiences/deleteMemberWorkExperience'
+import { getMemberWorkExperiences } from './work-experiences/getMemberWorkExperiences'
+import { updateMemberWorkExperience } from './work-experiences/updateMemberWorkExperience'
+import { verifyMemberWorkExperience } from './work-experiences/verifyMemberWorkExperience'
+
+export function membersRouter(): Router {
+ const router = Router()
+
+ router.post('/', requireScopes([SCOPES.WRITE_MEMBERS]), safeWrap(createMember))
+
+ router.post('/resolve', requireScopes([SCOPES.READ_MEMBERS]), safeWrap(resolveMemberByIdentities))
+
+ router.get(
+ '/:memberId/identities',
+ requireScopes([SCOPES.READ_MEMBER_IDENTITIES]),
+ safeWrap(getMemberIdentities),
+ )
+
+ router.post(
+ '/:memberId/identities',
+ requireScopes([SCOPES.WRITE_MEMBER_IDENTITIES]),
+ safeWrap(createMemberIdentity),
+ )
+
+ router.patch(
+ '/:memberId/identities/:identityId',
+ requireScopes([SCOPES.WRITE_MEMBER_IDENTITIES]),
+ safeWrap(verifyMemberIdentity),
+ )
+
+ router.get(
+ '/:memberId/maintainer-roles',
+ requireScopes([SCOPES.READ_MAINTAINER_ROLES]),
+ safeWrap(getMemberMaintainerRoles),
+ )
+
+ router.get(
+ '/:memberId/project-affiliations',
+ requireScopes([SCOPES.READ_PROJECT_AFFILIATIONS]),
+ safeWrap(getProjectAffiliations),
+ )
+
+ router.patch(
+ '/:memberId/project-affiliations/:projectId',
+ requireScopes([SCOPES.WRITE_PROJECT_AFFILIATIONS]),
+ safeWrap(patchProjectAffiliation),
+ )
+
+ router.post(
+ '/:memberId/work-experiences',
+ requireScopes([SCOPES.WRITE_WORK_EXPERIENCES]),
+ safeWrap(createMemberWorkExperience),
+ )
+
+ router.get(
+ '/:memberId/work-experiences',
+ requireScopes([SCOPES.READ_WORK_EXPERIENCES]),
+ safeWrap(getMemberWorkExperiences),
+ )
+
+ router.put(
+ '/:memberId/work-experiences/:workExperienceId',
+ requireScopes([SCOPES.WRITE_WORK_EXPERIENCES]),
+ safeWrap(updateMemberWorkExperience),
+ )
+
+ router.patch(
+ '/:memberId/work-experiences/:workExperienceId',
+ requireScopes([SCOPES.WRITE_WORK_EXPERIENCES]),
+ safeWrap(verifyMemberWorkExperience),
+ )
+
+ router.delete(
+ '/:memberId/work-experiences/:workExperienceId',
+ requireScopes([SCOPES.WRITE_WORK_EXPERIENCES]),
+ safeWrap(deleteMemberWorkExperience),
+ )
+
+ return router
+}
diff --git a/backend/src/api/public/v1/members/maintainer-roles/getMemberMaintainerRoles.ts b/backend/src/api/public/v1/members/maintainer-roles/getMemberMaintainerRoles.ts
new file mode 100644
index 0000000000..b24dfec61c
--- /dev/null
+++ b/backend/src/api/public/v1/members/maintainer-roles/getMemberMaintainerRoles.ts
@@ -0,0 +1,32 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { NotFoundError } from '@crowd/common'
+import {
+ MemberField,
+ findMaintainerRoles,
+ findMemberById,
+ optionsQx,
+} from '@crowd/data-access-layer'
+
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+const paramsSchema = z.object({
+ memberId: z.uuid(),
+})
+
+export async function getMemberMaintainerRoles(req: Request, res: Response): Promise {
+ const { memberId } = validateOrThrow(paramsSchema, req.params)
+ const qx = optionsQx(req)
+
+ const member = await findMemberById(qx, memberId, [MemberField.ID])
+
+ if (!member) {
+ throw new NotFoundError('Member not found')
+ }
+
+ const maintainerRoles = await findMaintainerRoles(qx, [memberId])
+
+ ok(res, { maintainerRoles })
+}
diff --git a/backend/src/api/public/v1/members/project-affiliations/getProjectAffiliations.ts b/backend/src/api/public/v1/members/project-affiliations/getProjectAffiliations.ts
new file mode 100644
index 0000000000..db3e18de43
--- /dev/null
+++ b/backend/src/api/public/v1/members/project-affiliations/getProjectAffiliations.ts
@@ -0,0 +1,86 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { NotFoundError } from '@crowd/common'
+import {
+ MemberField,
+ fetchMemberProjectSegments,
+ fetchMemberSegmentAffiliationsWithOrg,
+ fetchMemberWorkExperienceAffiliations,
+ findMaintainerRoles,
+ findMemberById,
+ optionsQx,
+} from '@crowd/data-access-layer'
+
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+import { mapSegmentAffiliation, mapWorkExperienceAffiliation } from './mappers'
+
+const paramsSchema = z.object({
+ memberId: z.uuid(),
+})
+
+export async function getProjectAffiliations(req: Request, res: Response): Promise {
+ const { memberId } = validateOrThrow(paramsSchema, req.params)
+ const qx = optionsQx(req)
+
+ const member = await findMemberById(qx, memberId, [MemberField.ID])
+
+ if (!member) {
+ throw new NotFoundError('Member not found')
+ }
+
+ const [projectSegments, maintainerRoles, segmentAffiliations, workExperiences] =
+ await Promise.all([
+ fetchMemberProjectSegments(qx, memberId),
+ findMaintainerRoles(qx, [memberId]),
+ fetchMemberSegmentAffiliationsWithOrg(qx, memberId),
+ fetchMemberWorkExperienceAffiliations(qx, memberId),
+ ])
+
+ // Group maintainer roles by segmentId
+ const rolesBySegment = new Map()
+ for (const role of maintainerRoles) {
+ const existing = rolesBySegment.get(role.segmentId) ?? []
+ existing.push(role)
+ rolesBySegment.set(role.segmentId, existing)
+ }
+
+ // Group segment affiliations by segmentId
+ const affiliationsBySegment = new Map()
+ for (const aff of segmentAffiliations) {
+ const existing = affiliationsBySegment.get(aff.segmentId) ?? []
+ existing.push(aff)
+ affiliationsBySegment.set(aff.segmentId, existing)
+ }
+
+ const projectAffiliations = projectSegments.map((segment) => {
+ const roles = (rolesBySegment.get(segment.id) ?? []).map((r) => ({
+ id: r.id,
+ role: r.role,
+ startDate: r.dateStart ?? null,
+ endDate: r.dateEnd ?? null,
+ repoUrl: r.url ?? null,
+ repoFileUrl: r.maintainerFile ?? null,
+ }))
+
+ // Use segment affiliations if they exist for this project, otherwise fall back to work experiences
+ const segmentAffs = affiliationsBySegment.get(segment.id)
+ const affiliations = segmentAffs
+ ? segmentAffs.map(mapSegmentAffiliation)
+ : workExperiences.map(mapWorkExperienceAffiliation)
+
+ return {
+ id: segment.id,
+ projectSlug: segment.slug,
+ projectName: segment.name,
+ projectLogo: segment.projectLogo ?? null,
+ contributionCount: Number(segment.activityCount),
+ roles,
+ affiliations,
+ }
+ })
+
+ ok(res, { projectAffiliations })
+}
diff --git a/backend/src/api/public/v1/members/project-affiliations/mappers.ts b/backend/src/api/public/v1/members/project-affiliations/mappers.ts
new file mode 100644
index 0000000000..2c5da22964
--- /dev/null
+++ b/backend/src/api/public/v1/members/project-affiliations/mappers.ts
@@ -0,0 +1,40 @@
+import type {
+ ISegmentAffiliationWithOrg,
+ IWorkExperienceAffiliation,
+} from '@crowd/data-access-layer'
+
+export const AFFILIATION_TYPE = {
+ PROJECT: 'project',
+ WORK_HISTORY: 'work-history',
+} as const
+
+export type AffiliationType = (typeof AFFILIATION_TYPE)[keyof typeof AFFILIATION_TYPE]
+
+export function mapSegmentAffiliation(a: ISegmentAffiliationWithOrg) {
+ return {
+ id: a.id,
+ organizationId: a.organizationId,
+ organizationName: a.organizationName,
+ organizationLogo: a.organizationLogo ?? null,
+ verified: a.verified,
+ verifiedBy: a.verifiedBy ?? null,
+ startDate: a.dateStart ?? null,
+ endDate: a.dateEnd ?? null,
+ type: AFFILIATION_TYPE.PROJECT,
+ }
+}
+
+export function mapWorkExperienceAffiliation(a: IWorkExperienceAffiliation) {
+ return {
+ id: a.id,
+ organizationId: a.organizationId,
+ organizationName: a.organizationName,
+ organizationLogo: a.organizationLogo ?? null,
+ verified: a.verified ?? false,
+ verifiedBy: a.verifiedBy ?? null,
+ source: a.source ?? null,
+ startDate: a.dateStart ?? null,
+ endDate: a.dateEnd ?? null,
+ type: AFFILIATION_TYPE.WORK_HISTORY,
+ }
+}
diff --git a/backend/src/api/public/v1/members/project-affiliations/patchProjectAffiliation.ts b/backend/src/api/public/v1/members/project-affiliations/patchProjectAffiliation.ts
new file mode 100644
index 0000000000..fe516a38e9
--- /dev/null
+++ b/backend/src/api/public/v1/members/project-affiliations/patchProjectAffiliation.ts
@@ -0,0 +1,132 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { captureApiChange, memberEditAffiliationsAction } from '@crowd/audit-logs'
+import { NotFoundError } from '@crowd/common'
+import { signalMemberUpdate } from '@crowd/common_services'
+import {
+ MemberField,
+ fetchMemberProjectSegments,
+ fetchMemberSegmentAffiliationsForProject,
+ findMaintainerRoles,
+ findMemberById,
+ insertMemberSegmentAffiliations,
+ optionsQx,
+} from '@crowd/data-access-layer'
+import type { ISegmentAffiliationWithOrg } from '@crowd/data-access-layer'
+import { deleteMemberSegmentAffiliations } from '@crowd/data-access-layer/src/member_segment_affiliations'
+
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+import { mapSegmentAffiliation } from './mappers'
+
+const paramsSchema = z.object({
+ memberId: z.uuid(),
+ projectId: z.uuid(),
+})
+
+const bodySchema = z
+ .object({
+ affiliations: z.array(
+ z
+ .object({
+ organizationId: z.uuid(),
+ dateStart: z.coerce.date(),
+ dateEnd: z.coerce.date().nullable().optional(),
+ })
+ .refine((a) => a.dateEnd == null || a.dateEnd >= a.dateStart, {
+ message: 'dateEnd must be greater than or equal to dateStart',
+ }),
+ ),
+ verifiedBy: z.string().max(255).optional(),
+ })
+ .refine((b) => b.affiliations.length === 0 || b.verifiedBy != null, {
+ message: 'verifiedBy is required when affiliations is non-empty',
+ path: ['verifiedBy'],
+ })
+
+export async function patchProjectAffiliation(req: Request, res: Response): Promise {
+ const { memberId, projectId } = validateOrThrow(paramsSchema, req.params)
+ const { affiliations, verifiedBy } = validateOrThrow(bodySchema, req.body)
+
+ const qx = optionsQx(req)
+
+ const member = await findMemberById(qx, memberId, [MemberField.ID])
+ if (!member) {
+ throw new NotFoundError('Member not found')
+ }
+
+ const [segment] = await fetchMemberProjectSegments(qx, memberId, projectId)
+ if (!segment) {
+ throw new NotFoundError('Project not found')
+ }
+
+ const existingAffiliations = await fetchMemberSegmentAffiliationsForProject(
+ qx,
+ memberId,
+ projectId,
+ )
+
+ let updatedAffiliations: ISegmentAffiliationWithOrg[] = []
+
+ await captureApiChange(
+ req,
+ memberEditAffiliationsAction(memberId, async (captureOldState, captureNewState) => {
+ captureOldState(existingAffiliations)
+
+ const oldOrgIds = existingAffiliations.map((a) => a.organizationId)
+ const newOrgIds = affiliations.map((a) => a.organizationId)
+ const orgIdsToRecalculate = [...new Set([...oldOrgIds, ...newOrgIds])]
+
+ await qx.tx(async (tx) => {
+ await deleteMemberSegmentAffiliations(tx, { memberId, segmentId: projectId })
+
+ if (affiliations.length > 0) {
+ await insertMemberSegmentAffiliations(
+ tx,
+ memberId,
+ projectId,
+ affiliations.map((a) => ({
+ organizationId: a.organizationId,
+ dateStart: a.dateStart.toISOString(),
+ dateEnd: a.dateEnd?.toISOString() ?? null,
+ verifiedBy: verifiedBy!,
+ })),
+ )
+ }
+ })
+
+ // Signal after commit so the workflow sees persisted changes
+ await signalMemberUpdate(req.temporal, memberId, {
+ memberOrganizationIds: orgIdsToRecalculate,
+ })
+
+ updatedAffiliations = await fetchMemberSegmentAffiliationsForProject(qx, memberId, projectId)
+ captureNewState(updatedAffiliations)
+ }),
+ )
+
+ const maintainerRoles = await findMaintainerRoles(qx, [memberId])
+
+ const roles = maintainerRoles
+ .filter((r) => r.segmentId === projectId)
+ .map((r) => ({
+ id: r.id,
+ role: r.role,
+ startDate: r.dateStart ?? null,
+ endDate: r.dateEnd ?? null,
+ repoUrl: r.url ?? null,
+ repoFileUrl: r.maintainerFile ?? null,
+ }))
+
+ ok(res, {
+ id: segment.id,
+ projectSlug: segment.slug,
+ projectName: segment.name,
+ projectLogo: segment.projectLogo ?? null,
+ contributionCount: Number(segment.activityCount),
+ roles,
+ affiliations: updatedAffiliations.map(mapSegmentAffiliation),
+ })
+}
diff --git a/backend/src/api/public/v1/members/resolveMember.ts b/backend/src/api/public/v1/members/resolveMember.ts
new file mode 100644
index 0000000000..0d9f654f4e
--- /dev/null
+++ b/backend/src/api/public/v1/members/resolveMember.ts
@@ -0,0 +1,46 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { ConflictError, NotFoundError } from '@crowd/common'
+import { findMemberIdsByIdentities, optionsQx } from '@crowd/data-access-layer'
+import { IMemberIdentity, MemberIdentityType, PlatformType } from '@crowd/types'
+
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+const bodySchema = z.object({
+ lfids: z.array(z.string().trim()).min(1, 'At least one lfid is required'),
+ emails: z.array(z.email()).optional(),
+})
+
+export async function resolveMemberByIdentities(req: Request, res: Response): Promise {
+ const { lfids, emails } = validateOrThrow(bodySchema, req.body)
+
+ const qx = optionsQx(req)
+
+ const identities: Partial[] = [
+ ...lfids.map((lfid) => ({
+ platform: PlatformType.LFID,
+ type: MemberIdentityType.USERNAME,
+ value: lfid,
+ verified: true,
+ })),
+ ...(emails?.map((email) => ({
+ type: MemberIdentityType.EMAIL,
+ value: email,
+ verified: true,
+ })) ?? []),
+ ]
+
+ const memberIds = await findMemberIdsByIdentities(qx, identities)
+
+ if (memberIds.length === 0) {
+ throw new NotFoundError('Member not found')
+ } else if (memberIds.length > 1) {
+ throw new ConflictError('Multiple member profiles matched', { memberIds })
+ }
+
+ const memberId = memberIds[0]
+
+ ok(res, { memberId })
+}
diff --git a/backend/src/api/public/v1/members/work-experiences/createMemberWorkExperience.ts b/backend/src/api/public/v1/members/work-experiences/createMemberWorkExperience.ts
new file mode 100644
index 0000000000..86c8d7e8c7
--- /dev/null
+++ b/backend/src/api/public/v1/members/work-experiences/createMemberWorkExperience.ts
@@ -0,0 +1,132 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { captureApiChange, memberEditOrganizationsAction } from '@crowd/audit-logs'
+import {
+ BadRequestError,
+ ConflictError,
+ NotFoundError,
+ sanitizeMemberOrganizationDateRange,
+} from '@crowd/common'
+import { signalMemberUpdate } from '@crowd/common_services'
+import {
+ MemberField,
+ changeMemberOrganizationAffiliationOverrides,
+ cleanSoftDeletedMemberOrganization,
+ createMemberOrganization,
+ fetchManyMemberOrgsWithOrgData,
+ fetchManyOrganizationAffiliationPolicies,
+ findMemberById,
+ optionsQx,
+} from '@crowd/data-access-layer'
+import { deleteMemberSegmentAffiliations } from '@crowd/data-access-layer/src/member_segment_affiliations'
+import type {
+ IMemberOrganization,
+ IMemberRoleWithOrganization,
+ MemberOrganizationDateRange,
+} from '@crowd/types'
+
+import { created } from '@/utils/api'
+import { toMemberWorkExperience } from '@/utils/mapper'
+import { validateOrThrow } from '@/utils/validation'
+
+const paramsSchema = z.object({
+ memberId: z.uuid(),
+})
+
+const bodySchema = z.object({
+ organizationId: z.uuid(),
+ jobTitle: z.string(),
+ verified: z.boolean(),
+ verifiedBy: z.string(),
+ source: z.string(),
+ startDate: z.coerce.date(),
+ endDate: z.coerce.date().nullable().optional(),
+})
+
+export async function createMemberWorkExperience(req: Request, res: Response): Promise {
+ const { memberId } = validateOrThrow(paramsSchema, req.params)
+ const data = validateOrThrow(bodySchema, req.body)
+
+ const qx = optionsQx(req)
+
+ const member = await findMemberById(qx, memberId, [MemberField.ID])
+
+ if (!member) {
+ throw new NotFoundError('Member not found')
+ }
+
+ let createdMo: IMemberRoleWithOrganization | undefined
+
+ await captureApiChange(
+ req,
+ memberEditOrganizationsAction(memberId, async (captureOldState, captureNewState) => {
+ captureOldState({})
+
+ let dates: MemberOrganizationDateRange
+
+ try {
+ dates = sanitizeMemberOrganizationDateRange(data.startDate, data.endDate, true)
+ } catch (error) {
+ throw new BadRequestError('Invalid work experience date range')
+ }
+
+ const memberOrgData: IMemberOrganization = {
+ memberId,
+ organizationId: data.organizationId,
+ title: data.jobTitle,
+ dateStart: dates.dateStart,
+ dateEnd: dates.dateEnd,
+ source: data.source,
+ verified: data.verified,
+ verifiedBy: data.verifiedBy,
+ }
+
+ let newMemberOrgId: string | undefined
+
+ await qx.tx(async (tx) => {
+ await cleanSoftDeletedMemberOrganization(tx, memberId, data.organizationId, memberOrgData)
+
+ newMemberOrgId = await createMemberOrganization(tx, memberId, memberOrgData)
+
+ if (!newMemberOrgId) {
+ throw new ConflictError('A work experience with the same dates already exists')
+ }
+
+ const orgAffiliationPolicyById = await fetchManyOrganizationAffiliationPolicies(tx, [
+ data.organizationId,
+ ])
+
+ if (newMemberOrgId && orgAffiliationPolicyById.get(data.organizationId)) {
+ await changeMemberOrganizationAffiliationOverrides(tx, [
+ {
+ memberId,
+ memberOrganizationId: newMemberOrgId,
+ allowAffiliation: false,
+ },
+ ])
+ await deleteMemberSegmentAffiliations(tx, {
+ memberId,
+ organizationId: data.organizationId,
+ })
+ }
+ })
+
+ // Signal after commit so the workflow sees persisted changes
+ await signalMemberUpdate(req.temporal, memberId, {
+ memberOrganizationIds: [data.organizationId],
+ })
+
+ const orgsMap = await fetchManyMemberOrgsWithOrgData(qx, [memberId])
+ createdMo = (orgsMap.get(memberId) ?? []).find((mo) => mo.id === newMemberOrgId)
+
+ captureNewState(createdMo ?? null)
+ }),
+ )
+
+ if (!createdMo) {
+ throw new NotFoundError('Work experience not found after creation')
+ }
+
+ created(res, toMemberWorkExperience(createdMo))
+}
diff --git a/backend/src/api/public/v1/members/work-experiences/deleteMemberWorkExperience.ts b/backend/src/api/public/v1/members/work-experiences/deleteMemberWorkExperience.ts
new file mode 100644
index 0000000000..80784bff0b
--- /dev/null
+++ b/backend/src/api/public/v1/members/work-experiences/deleteMemberWorkExperience.ts
@@ -0,0 +1,71 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { captureApiChange, memberEditOrganizationsAction } from '@crowd/audit-logs'
+import { NotFoundError } from '@crowd/common'
+import { signalMemberUpdate } from '@crowd/common_services'
+import {
+ MemberField,
+ deleteMemberOrganizations,
+ fetchMemberOrganizations,
+ findMemberById,
+ optionsQx,
+} from '@crowd/data-access-layer'
+
+import { noContent } from '@/utils/api'
+import { getOverlappingEmailDomainMemberOrganizations } from '@/utils/mapper'
+import { validateOrThrow } from '@/utils/validation'
+
+const paramsSchema = z.object({
+ memberId: z.uuid(),
+ workExperienceId: z.uuid(),
+})
+
+export async function deleteMemberWorkExperience(req: Request, res: Response): Promise {
+ const { memberId, workExperienceId } = validateOrThrow(paramsSchema, req.params)
+
+ const qx = optionsQx(req)
+
+ const member = await findMemberById(qx, memberId, [MemberField.ID])
+
+ if (!member) {
+ throw new NotFoundError('Member not found')
+ }
+
+ const memberOrgs = await fetchMemberOrganizations(qx, memberId)
+ const memberOrg = memberOrgs.find((mo) => mo.id === workExperienceId)
+
+ if (!memberOrg) {
+ throw new NotFoundError('Work experience not found')
+ }
+
+ const overlappingEmailDomainRows = getOverlappingEmailDomainMemberOrganizations(
+ memberOrgs,
+ memberOrg,
+ )
+
+ const memberOrgIdsToDelete = [
+ workExperienceId,
+ ...overlappingEmailDomainRows.flatMap((row) => (row.id ? [row.id] : [])),
+ ]
+
+ // Delete hidden grouped rows with the visible row so read responses stay consistent
+ await captureApiChange(
+ req,
+ memberEditOrganizationsAction(memberId, async (captureOldState, captureNewState) => {
+ captureOldState(memberOrg)
+
+ await qx.tx(async (tx) => {
+ await deleteMemberOrganizations(tx, memberId, memberOrgIdsToDelete)
+ })
+
+ // Signal after commit so the workflow sees persisted changes
+ await signalMemberUpdate(req.temporal, memberId, {
+ memberOrganizationIds: [memberOrg.organizationId],
+ })
+
+ captureNewState(null)
+ }),
+ )
+ noContent(res)
+}
diff --git a/backend/src/api/public/v1/members/work-experiences/getMemberWorkExperiences.ts b/backend/src/api/public/v1/members/work-experiences/getMemberWorkExperiences.ts
new file mode 100644
index 0000000000..c253f49f3b
--- /dev/null
+++ b/backend/src/api/public/v1/members/work-experiences/getMemberWorkExperiences.ts
@@ -0,0 +1,36 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { NotFoundError } from '@crowd/common'
+import {
+ MemberField,
+ fetchManyMemberOrgsWithOrgData,
+ findMemberById,
+ optionsQx,
+} from '@crowd/data-access-layer'
+
+import { ok } from '@/utils/api'
+import { groupMemberOrganizations, toMemberWorkExperience } from '@/utils/mapper'
+import { validateOrThrow } from '@/utils/validation'
+
+const paramsSchema = z.object({
+ memberId: z.uuid(),
+})
+
+export async function getMemberWorkExperiences(req: Request, res: Response): Promise {
+ const { memberId } = validateOrThrow(paramsSchema, req.params)
+ const qx = optionsQx(req)
+
+ const member = await findMemberById(qx, memberId, [MemberField.ID])
+
+ if (!member) {
+ throw new NotFoundError('Member not found')
+ }
+
+ const orgsMap = await fetchManyMemberOrgsWithOrgData(qx, [memberId])
+ const workExperiences = groupMemberOrganizations(orgsMap.get(memberId) ?? []).map(
+ toMemberWorkExperience,
+ )
+
+ ok(res, { memberId, workExperiences })
+}
diff --git a/backend/src/api/public/v1/members/work-experiences/updateMemberWorkExperience.ts b/backend/src/api/public/v1/members/work-experiences/updateMemberWorkExperience.ts
new file mode 100644
index 0000000000..b0e04ebb05
--- /dev/null
+++ b/backend/src/api/public/v1/members/work-experiences/updateMemberWorkExperience.ts
@@ -0,0 +1,139 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { captureApiChange, memberEditOrganizationsAction } from '@crowd/audit-logs'
+import { BadRequestError, NotFoundError, sanitizeMemberOrganizationDateRange } from '@crowd/common'
+import { signalMemberUpdate } from '@crowd/common_services'
+import {
+ MemberField,
+ cleanSoftDeletedMemberOrganization,
+ fetchManyMemberOrgsWithOrgData,
+ fetchMemberOrganizations,
+ findMemberById,
+ optionsQx,
+ updateMemberOrganization,
+} from '@crowd/data-access-layer'
+import type { MemberOrganizationDateRange, MemberOrganizationUpdate } from '@crowd/types'
+
+import { ok } from '@/utils/api'
+import {
+ getOverlappingEmailDomainMemberOrganizations,
+ groupMemberOrganizations,
+ toMemberWorkExperience,
+} from '@/utils/mapper'
+import { validateOrThrow } from '@/utils/validation'
+
+const paramsSchema = z.object({
+ memberId: z.uuid(),
+ workExperienceId: z.uuid(),
+})
+
+const bodySchema = z.object({
+ organizationId: z.uuid(),
+ jobTitle: z.string(),
+ verified: z.boolean(),
+ verifiedBy: z.string(),
+ source: z.string(),
+ startDate: z.coerce.date(),
+ endDate: z.coerce.date().nullable().optional(),
+})
+
+export async function updateMemberWorkExperience(req: Request, res: Response): Promise {
+ const { memberId, workExperienceId } = validateOrThrow(paramsSchema, req.params)
+ const data = validateOrThrow(bodySchema, req.body)
+
+ const qx = optionsQx(req)
+
+ const member = await findMemberById(qx, memberId, [MemberField.ID])
+
+ if (!member) {
+ throw new NotFoundError('Member not found')
+ }
+
+ const memberOrgs = await fetchMemberOrganizations(qx, memberId)
+ const existing = memberOrgs.find((mo) => mo.id === workExperienceId)
+
+ if (!existing) {
+ throw new NotFoundError('Work experience not found')
+ }
+
+ let dates: MemberOrganizationDateRange
+
+ try {
+ dates = sanitizeMemberOrganizationDateRange(data.startDate, data.endDate, true)
+ } catch (error) {
+ throw new BadRequestError('Invalid work experience date range')
+ }
+
+ const update: MemberOrganizationUpdate = {
+ organizationId: data.organizationId,
+ title: data.jobTitle,
+ verified: data.verified,
+ verifiedBy: data.verifiedBy,
+ source: data.source,
+ dateStart: dates.dateStart,
+ dateEnd: dates.dateEnd,
+ }
+
+ let updated: ReturnType | undefined
+
+ await captureApiChange(
+ req,
+ memberEditOrganizationsAction(memberId, async (captureOldState, captureNewState) => {
+ captureOldState(existing)
+
+ await qx.tx(async (tx) => {
+ await cleanSoftDeletedMemberOrganization(tx, memberId, data.organizationId, update)
+ await updateMemberOrganization(tx, memberId, workExperienceId, update)
+
+ const overlapBasis = { ...existing, ...update }
+
+ const overlappingEmailDomainRows = getOverlappingEmailDomainMemberOrganizations(
+ memberOrgs,
+ overlapBasis,
+ )
+
+ const groupedUpdate: MemberOrganizationUpdate = {}
+
+ // Keep grouped rows aligned for shared display fields; dates stay on the edited row
+ if (data.jobTitle !== undefined) {
+ groupedUpdate.title = data.jobTitle
+ }
+ if (data.verified !== undefined) {
+ groupedUpdate.verified = data.verified
+ }
+ if (data.verifiedBy !== undefined) {
+ groupedUpdate.verifiedBy = data.verifiedBy
+ }
+
+ if (overlappingEmailDomainRows.length > 0 && Object.keys(groupedUpdate).length > 0) {
+ for (const overlappingRow of overlappingEmailDomainRows.filter(
+ (row): row is typeof row & { id: string } => !!row.id,
+ )) {
+ await updateMemberOrganization(tx, memberId, overlappingRow.id, groupedUpdate)
+ }
+ }
+ })
+
+ // Signal after commit so the workflow sees persisted changes
+ await signalMemberUpdate(req.temporal, memberId, {
+ memberOrganizationIds: [data.organizationId],
+ })
+
+ const orgsMap = await fetchManyMemberOrgsWithOrgData(qx, [memberId])
+
+ const updatedMo = groupMemberOrganizations(orgsMap.get(memberId) ?? []).find(
+ (mo) => mo.id === workExperienceId,
+ )
+
+ if (!updatedMo) {
+ throw new NotFoundError('Work experience not found')
+ }
+
+ captureNewState(updatedMo)
+ updated = toMemberWorkExperience(updatedMo)
+ }),
+ )
+
+ ok(res, updated)
+}
diff --git a/backend/src/api/public/v1/members/work-experiences/verifyMemberWorkExperience.ts b/backend/src/api/public/v1/members/work-experiences/verifyMemberWorkExperience.ts
new file mode 100644
index 0000000000..a4fb2b3a95
--- /dev/null
+++ b/backend/src/api/public/v1/members/work-experiences/verifyMemberWorkExperience.ts
@@ -0,0 +1,115 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { captureApiChange, memberVerifyWorkExperienceAction } from '@crowd/audit-logs'
+import { NotFoundError } from '@crowd/common'
+import { signalMemberUpdate } from '@crowd/common_services'
+import {
+ MemberField,
+ deleteMemberOrganizations,
+ fetchManyMemberOrgsWithOrgData,
+ fetchMemberOrganizations,
+ findMemberById,
+ optionsQx,
+ updateMemberOrganization,
+} from '@crowd/data-access-layer'
+import { IMemberOrganization, IMemberRoleWithOrganization } from '@crowd/types'
+
+import { ok } from '@/utils/api'
+import {
+ getOverlappingEmailDomainMemberOrganizations,
+ groupMemberOrganizations,
+ toMemberWorkExperience,
+} from '@/utils/mapper'
+import { validateOrThrow } from '@/utils/validation'
+
+const paramsSchema = z.object({
+ memberId: z.uuid(),
+ workExperienceId: z.uuid(),
+})
+
+const bodySchema = z.object({
+ verified: z.boolean(),
+ verifiedBy: z.string(),
+})
+
+export async function verifyMemberWorkExperience(req: Request, res: Response): Promise {
+ const { memberId, workExperienceId } = validateOrThrow(paramsSchema, req.params)
+ const { verified, verifiedBy } = validateOrThrow(bodySchema, req.body)
+
+ const qx = optionsQx(req)
+
+ const member = await findMemberById(qx, memberId, [MemberField.ID])
+
+ if (!member) {
+ throw new NotFoundError('Member not found')
+ }
+
+ const memberOrgs = await fetchMemberOrganizations(qx, memberId)
+ const memberOrg = memberOrgs.find((mo) => mo.id === workExperienceId)
+
+ if (!memberOrg) {
+ throw new NotFoundError('Work experience not found')
+ }
+
+ const overlappingEmailDomainRows = getOverlappingEmailDomainMemberOrganizations(
+ memberOrgs,
+ memberOrg,
+ )
+
+ const memberOrgIdsToDelete = [
+ workExperienceId,
+ ...overlappingEmailDomainRows.flatMap((row) => (row.id ? [row.id] : [])),
+ ]
+
+ const verifiedUpdate = { verified, verifiedBy }
+
+ let updatedMemberOrg: IMemberOrganization | undefined
+
+ await captureApiChange(
+ req,
+ memberVerifyWorkExperienceAction(memberId, async (captureOldState, captureNewState) => {
+ captureOldState(memberOrg)
+
+ await qx.tx(async (tx) => {
+ if (verified) {
+ // Verification status belongs to the grouped work experience, not just the visible row
+ updatedMemberOrg = await updateMemberOrganization(
+ tx,
+ memberId,
+ workExperienceId,
+ verifiedUpdate,
+ )
+
+ for (const overlappingRow of overlappingEmailDomainRows.filter(
+ (row): row is typeof row & { id: string } => !!row.id,
+ )) {
+ await updateMemberOrganization(tx, memberId, overlappingRow.id, verifiedUpdate)
+ }
+ } else {
+ // Unverifying removes the grouped work experience from both visible and hidden rows
+ await deleteMemberOrganizations(tx, memberId, memberOrgIdsToDelete, true)
+ }
+ })
+
+ // Signal after commit so the workflow sees persisted changes
+ if (!verified) {
+ await signalMemberUpdate(req.temporal, memberId, {
+ memberOrganizationIds: [memberOrg.organizationId],
+ })
+ }
+
+ captureNewState(updatedMemberOrg ?? { ...memberOrg, verified, verifiedBy })
+ }),
+ )
+
+ const orgsMap = await fetchManyMemberOrgsWithOrgData(qx, [memberId])
+
+ const responseMo: IMemberRoleWithOrganization =
+ groupMemberOrganizations(orgsMap.get(memberId) ?? []).find(
+ (mo) => mo.id === workExperienceId,
+ ) ??
+ ({ ...memberOrg, ...updatedMemberOrg, verified, verifiedBy } as IMemberRoleWithOrganization)
+
+ ok(res, toMemberWorkExperience(responseMo))
+}
diff --git a/backend/src/api/public/v1/organizations/createOrganization.ts b/backend/src/api/public/v1/organizations/createOrganization.ts
new file mode 100644
index 0000000000..d8f47714a1
--- /dev/null
+++ b/backend/src/api/public/v1/organizations/createOrganization.ts
@@ -0,0 +1,65 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { captureApiChange, organizationCreateAction } from '@crowd/audit-logs'
+import { InternalError } from '@crowd/common'
+import { findOrCreateOrganization, optionsQx } from '@crowd/data-access-layer'
+import { OrganizationAttributeSource, OrganizationIdentityType } from '@crowd/types'
+
+import { created } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+const bodySchema = z.object({
+ name: z.string().trim().min(1),
+ domain: z.string().trim().min(1),
+ source: z.string().trim().min(1),
+ logo: z.string().trim().min(1).optional(),
+})
+
+export async function createOrganization(req: Request, res: Response): Promise {
+ const { name, domain, source, logo } = validateOrThrow(bodySchema, req.body)
+
+ const qx = optionsQx(req)
+
+ let organizationId: string | undefined
+
+ await qx.tx(async (tx) => {
+ const orgSource = OrganizationAttributeSource.LFX_SERVE
+
+ organizationId = await findOrCreateOrganization(tx, orgSource, {
+ displayName: name,
+ logo,
+ identities: [
+ {
+ value: domain,
+ type: OrganizationIdentityType.PRIMARY_DOMAIN,
+ verified: true,
+ platform: orgSource,
+ source,
+ },
+ ],
+ })
+
+ if (!organizationId) {
+ throw new InternalError('Failed to create organization')
+ }
+
+ await captureApiChange(
+ req,
+ organizationCreateAction(organizationId, async (captureState) => {
+ captureState({
+ id: organizationId,
+ displayName: name,
+ identities: [
+ {
+ value: domain,
+ type: OrganizationIdentityType.PRIMARY_DOMAIN,
+ },
+ ],
+ })
+ }),
+ )
+ })
+
+ created(res, { id: organizationId, name, logo })
+}
diff --git a/backend/src/api/public/v1/organizations/getOrganization.ts b/backend/src/api/public/v1/organizations/getOrganization.ts
new file mode 100644
index 0000000000..5f4afccb45
--- /dev/null
+++ b/backend/src/api/public/v1/organizations/getOrganization.ts
@@ -0,0 +1,57 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { NotFoundError, normalizeHostname } from '@crowd/common'
+import {
+ OrgIdentityField,
+ OrganizationField,
+ findOrgAttributes,
+ findOrgById,
+ optionsQx,
+ queryOrgIdentities,
+} from '@crowd/data-access-layer'
+import { OrganizationIdentityType } from '@crowd/types'
+
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+const querySchema = z.object({
+ domain: z.string().trim().min(1),
+})
+
+export async function getOrganization(req: Request, res: Response): Promise {
+ const { domain } = validateOrThrow(querySchema, req.query)
+
+ const qx = optionsQx(req)
+
+ const results = await queryOrgIdentities(qx, {
+ fields: [OrgIdentityField.ORGANIZATION_ID],
+ filter: {
+ and: [
+ { value: { eq: normalizeHostname(domain, false) } },
+ { type: { eq: OrganizationIdentityType.PRIMARY_DOMAIN } },
+ { verified: { eq: true } },
+ ],
+ },
+ })
+
+ const organizationId = results[0]?.organizationId
+
+ if (!organizationId) {
+ throw new NotFoundError('Organization not found')
+ }
+
+ const org = await findOrgById(qx, organizationId, [
+ OrganizationField.ID,
+ OrganizationField.DISPLAY_NAME,
+ ])
+
+ const attributes = await findOrgAttributes(qx, organizationId)
+ const logo = attributes.find((a) => a.name === 'logo')?.value
+
+ ok(res, {
+ id: org.id,
+ name: org.displayName,
+ ...(logo ? { logo } : {}),
+ })
+}
diff --git a/backend/src/api/public/v1/organizations/index.ts b/backend/src/api/public/v1/organizations/index.ts
new file mode 100644
index 0000000000..e15ee83e30
--- /dev/null
+++ b/backend/src/api/public/v1/organizations/index.ts
@@ -0,0 +1,18 @@
+import { Router } from 'express'
+
+import { safeWrap } from '@/middlewares/errorMiddleware'
+import { SCOPES } from '@/security/scopes'
+
+import { requireScopes } from '../../middlewares/requireScopes'
+
+import { createOrganization } from './createOrganization'
+import { getOrganization } from './getOrganization'
+
+export function organizationsRouter(): Router {
+ const router = Router()
+
+ router.get('/', requireScopes([SCOPES.READ_ORGANIZATIONS]), safeWrap(getOrganization))
+ router.post('/', requireScopes([SCOPES.WRITE_ORGANIZATIONS]), safeWrap(createOrganization))
+
+ return router
+}
diff --git a/backend/src/api/public/v1/ossprey/activityFeed.ts b/backend/src/api/public/v1/ossprey/activityFeed.ts
new file mode 100644
index 0000000000..d87185227e
--- /dev/null
+++ b/backend/src/api/public/v1/ossprey/activityFeed.ts
@@ -0,0 +1,41 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { listStewardshipActivity } from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+const querySchema = z.object({
+ page: z.coerce.number().int().min(1).default(1),
+ pageSize: z.coerce.number().int().min(1).max(100).default(25),
+})
+
+export async function activityFeedHandler(req: Request, res: Response): Promise {
+ const { page, pageSize } = validateOrThrow(querySchema, req.query)
+
+ const qx = await getPackagesQx()
+ const { rows, total } = await listStewardshipActivity(qx, { page, pageSize })
+
+ ok(res, {
+ rows: rows.map((r) => ({
+ id: r.id,
+ stewardshipId: r.stewardshipId,
+ packagePurl: r.packagePurl,
+ packageName: r.packageName,
+ packageEcosystem: r.packageEcosystem,
+ actorUserId: r.actorUserId,
+ actorName: r.actorUserId, // TODO: resolve display name from crowd.dev users/members table by actorUserId
+ actorType: r.actorType,
+ activityType: r.activityType,
+ content: r.content,
+ metadata: r.metadata,
+ stewardshipStatus: r.stewardshipStatus,
+ createdAt: r.createdAt,
+ })),
+ total,
+ page,
+ pageSize,
+ })
+}
diff --git a/backend/src/api/public/v1/ossprey/index.ts b/backend/src/api/public/v1/ossprey/index.ts
new file mode 100644
index 0000000000..3e718ab520
--- /dev/null
+++ b/backend/src/api/public/v1/ossprey/index.ts
@@ -0,0 +1,40 @@
+import { Router } from 'express'
+
+import { requireScopes } from '@/api/public/middlewares/requireScopes'
+import { safeWrap } from '@/middlewares/errorMiddleware'
+import { SCOPES } from '@/security/scopes'
+
+import { activityFeedHandler } from './activityFeed'
+import { metricsHandler } from './metrics'
+import { packageListHandler } from './packageList'
+import { packageScatterHandler } from './packageScatter'
+
+// TODO[deprecate]: superseded by /v1/akrites — ossprey endpoints are now at /v1/akrites/metrics,
+// /v1/akrites/packages, /v1/akrites/packages/scatter, /v1/akrites/activity — remove once consumers have migrated
+export function osspreyRouter(): Router {
+ const router = Router()
+
+ router.get(
+ '/metrics',
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(metricsHandler),
+ )
+ // /packages/scatter must be registered before /packages to avoid Express treating 'scatter' as a path param
+ router.get(
+ '/packages/scatter',
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(packageScatterHandler),
+ )
+ router.get(
+ '/packages',
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(packageListHandler),
+ )
+ router.get(
+ '/activity',
+ requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'),
+ safeWrap(activityFeedHandler),
+ )
+
+ return router
+}
diff --git a/backend/src/api/public/v1/ossprey/metrics.ts b/backend/src/api/public/v1/ossprey/metrics.ts
new file mode 100644
index 0000000000..6b0aa4a429
--- /dev/null
+++ b/backend/src/api/public/v1/ossprey/metrics.ts
@@ -0,0 +1,12 @@
+import type { Request, Response } from 'express'
+
+import { getOsspreyMetrics } from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+
+export async function metricsHandler(req: Request, res: Response): Promise {
+ const qx = await getPackagesQx()
+ const metrics = await getOsspreyMetrics(qx)
+ ok(res, metrics)
+}
diff --git a/backend/src/api/public/v1/ossprey/openapi.yaml b/backend/src/api/public/v1/ossprey/openapi.yaml
new file mode 100644
index 0000000000..808532bfb2
--- /dev/null
+++ b/backend/src/api/public/v1/ossprey/openapi.yaml
@@ -0,0 +1,733 @@
+openapi: 3.1.0
+info:
+ title: CDP Public API — OSSPREY Admin Dashboard V2
+ version: 1.0.0
+ description: >
+ Read endpoints for the OSSPREY Admin Dashboard V2.
+
+
+ **Authentication:** OAuth 2.0 bearer token (Auth0 M2M or user session).
+
+
+ **V2 scope:** These endpoints cover the four dashboard tabs (Overview, Queue,
+ Triage Board, Risk Matrix) and the global KPI bar.
+ Package Detail Drawer and write actions are deferred to the next milestone.
+
+servers:
+ - url: https://cm.lfx.dev/api/v1
+ description: Production
+ - url: https://lf-staging.crowd.dev/api/v1
+ description: Staging
+
+tags:
+ - name: Dashboard
+ description: KPI metrics and activity feed (Overview tab).
+ - name: Packages
+ description: Package list and scatter plot (Queue, Triage Board, Risk Matrix tabs).
+
+components:
+ securitySchemes:
+ BearerAuth:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+
+ schemas:
+ Error:
+ type: object
+ required: [error]
+ properties:
+ error:
+ type: object
+ required: [code, message]
+ properties:
+ code:
+ type: string
+ example: VALIDATION_ERROR
+ message:
+ type: string
+ example: Invalid query parameter.
+
+ HealthBand:
+ type: string
+ enum: [healthy, fair, concerning, critical]
+ description: >
+ Server-derived from `scorecardScore` thresholds:
+ `null or < 3.0` → critical · `< 5.0` → concerning · `< 7.0` → fair · `≥ 7.0` → healthy
+
+ StewardshipStatus:
+ type: string
+ enum:
+ - unassigned
+ - open
+ - assessing
+ - active
+ - needs_attention
+ - escalated
+ - blocked
+ - inactive
+
+ Steward:
+ type: object
+ required: [userId, role, assignedAt]
+ properties:
+ userId:
+ type: string
+ description: Auth0 sub of the assigned steward.
+ example: auth0|abc123
+ role:
+ type: string
+ enum: [lead, co_steward]
+ assignedAt:
+ type: string
+ format: date-time
+
+ PackageRow:
+ type: object
+ required:
+ - purl
+ - name
+ - ecosystem
+ - openVulns
+ - maintainerCount
+ - healthBand
+ - stewards
+ properties:
+ purl:
+ type: string
+ example: pkg:npm/lodash@4.17.21
+ name:
+ type: string
+ example: lodash
+ ecosystem:
+ type: string
+ example: npm
+ criticalityScore:
+ type:
+ - number
+ - 'null'
+ description: packages.impact (0–1 float). Multiply × 100 for display score.
+ example: 0.94
+ stewardshipId:
+ type:
+ - string
+ - 'null'
+ example: '4501'
+ stewardshipStatus:
+ oneOf:
+ - $ref: '#/components/schemas/StewardshipStatus'
+ - type: 'null'
+ openVulns:
+ type: integer
+ description: Count of advisory_packages rows for this package.
+ example: 3
+ maxVulnSeverity:
+ type:
+ - string
+ - 'null'
+ enum: [critical, high, medium, low]
+ description: Worst advisory severity. Null if no advisories.
+ maintainerCount:
+ type: integer
+ description: Count of package_maintainers rows. Bus factor proxy.
+ example: 2
+ scorecardScore:
+ type:
+ - number
+ - 'null'
+ description: OpenSSF Scorecard score (0–10). Null if no repo mapped.
+ example: 5.2
+ healthBand:
+ $ref: '#/components/schemas/HealthBand'
+ latestReleaseAt:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ description: Used by the frontend to derive the stale flag (≥ 18 months).
+ lastActivity:
+ description: Most recent stewardship activity for this package. Null if none.
+ oneOf:
+ - type: object
+ required: [type, at]
+ properties:
+ type:
+ type:
+ - string
+ - 'null'
+ example: state_changed
+ content:
+ type:
+ - string
+ - 'null'
+ example: Moved to active stewardship
+ at:
+ type: string
+ format: date-time
+ - type: 'null'
+ stewards:
+ type: array
+ description: Active stewards (deleted_at IS NULL). Empty array if none.
+ items:
+ $ref: '#/components/schemas/Steward'
+
+ StatusCounts:
+ type: object
+ description: Per-status package counts for the tab bar. Computed without the active status filter.
+ required:
+ - all
+ - unassigned
+ - open
+ - assessing
+ - active
+ - needs_attention
+ - escalated
+ - blocked
+ - inactive
+ properties:
+ all:
+ type: integer
+ unassigned:
+ type: integer
+ open:
+ type: integer
+ assessing:
+ type: integer
+ active:
+ type: integer
+ needs_attention:
+ type: integer
+ escalated:
+ type: integer
+ blocked:
+ type: integer
+ inactive:
+ type: integer
+
+ ScatterPoint:
+ type: object
+ required:
+ - purl
+ - name
+ - criticalityScore
+ - healthScore
+ - healthBand
+ - openVulns
+ - advisoryCount
+ properties:
+ purl:
+ type: string
+ example: pkg:npm/lodash@4.17.21
+ name:
+ type: string
+ example: lodash
+ criticalityScore:
+ type: integer
+ description: ROUND(p.impact × 100). Y-axis position (0–100).
+ example: 94
+ healthScore:
+ type: integer
+ description: ROUND(scorecard_score × 10). X-axis position (0–100). 0 if no repo.
+ example: 52
+ healthBand:
+ $ref: '#/components/schemas/HealthBand'
+ stewardshipStatus:
+ oneOf:
+ - $ref: '#/components/schemas/StewardshipStatus'
+ - type: 'null'
+ stewardshipId:
+ type:
+ - string
+ - 'null'
+ example: '4501'
+ openVulns:
+ type: integer
+ example: 3
+ advisoryCount:
+ type: integer
+ description: Alias of openVulns — explicit field for tooltip display.
+ example: 3
+
+ ActivityFeedItem:
+ type: object
+ required:
+ - id
+ - stewardshipId
+ - packagePurl
+ - packageName
+ - packageEcosystem
+ - actorType
+ - activityType
+ - stewardshipStatus
+ - createdAt
+ properties:
+ id:
+ type: string
+ example: '9182736'
+ stewardshipId:
+ type: string
+ example: '4501'
+ packagePurl:
+ type: string
+ example: pkg:npm/minimist@1.2.6
+ packageName:
+ type: string
+ example: minimist
+ packageEcosystem:
+ type: string
+ example: npm
+ actorUserId:
+ type:
+ - string
+ - 'null'
+ description: Auth0 sub. Null for system events.
+ example: auth0|abc123
+ actorName:
+ type:
+ - string
+ - 'null'
+ description: >
+ Display name of the actor. Currently returns actorUserId as a
+ placeholder — will be resolved to a display name once the
+ cross-DB users join is implemented.
+ example: auth0|abc123
+ actorType:
+ type: string
+ enum: [user, system]
+ activityType:
+ type: string
+ enum:
+ - state_changed
+ - steward_added
+ - steward_removed
+ - escalation
+ - escalation_resolved
+ - assessment_started
+ - assessment_completed
+ - assessment_flagged
+ - spot_check
+ - note_added
+ example: escalation
+ content:
+ type:
+ - string
+ - 'null'
+ example: 'Escalated with resolution path: right_of_first_refusal'
+ metadata:
+ type:
+ - object
+ - 'null'
+ additionalProperties: true
+ stewardshipStatus:
+ $ref: '#/components/schemas/StewardshipStatus'
+ createdAt:
+ type: string
+ format: date-time
+
+# ──────────────────────────────────────────────────────────────────────────────
+# Paths
+# ──────────────────────────────────────────────────────────────────────────────
+paths:
+ /ossprey/metrics:
+ get:
+ operationId: getOsspreyMetrics
+ summary: Global KPI bar metrics
+ description: >
+ Returns the seven aggregate metrics shown in the sticky KPI bar across all
+ four dashboard tabs. Fetch once on page load; refresh after any write action.
+ tags:
+ - Dashboard
+ security:
+ - BearerAuth: []
+ responses:
+ '200':
+ description: KPI metrics.
+ content:
+ application/json:
+ schema:
+ type: object
+ required:
+ - totalPackages
+ - criticalPackages
+ - coveragePercent
+ - activeStewards
+ - unassignedCritical
+ - needsAttention
+ - escalated
+ properties:
+ totalPackages:
+ type: integer
+ description: Total critical packages (is_critical = true).
+ example: 1842
+ criticalPackages:
+ type: integer
+ description: Critical packages with at least one critical-severity advisory.
+ example: 312
+ coveragePercent:
+ type: number
+ format: float
+ description: >
+ Percentage of critical packages with status in
+ (assessing, active, needs_attention). One decimal place.
+ example: 33.2
+ coverageTrend:
+ type:
+ - number
+ - 'null'
+ description: >
+ Percentage-point change vs. previous month. Null until
+ snapshot mechanism is implemented.
+ example: null
+ activeStewards:
+ type: integer
+ description: >
+ COUNT(DISTINCT user_id) from stewardship_stewards where
+ deleted_at IS NULL and stewardship status != inactive.
+ example: 42
+ unassignedCritical:
+ type: integer
+ description: Critical packages with no stewardship row or status = unassigned.
+ example: 1230
+ needsAttention:
+ type: integer
+ description: Critical packages with status = needs_attention.
+ example: 47
+ escalated:
+ type: integer
+ description: Critical packages with status = escalated.
+ example: 8
+ example:
+ totalPackages: 1842
+ criticalPackages: 312
+ coveragePercent: 33.2
+ coverageTrend: null
+ activeStewards: 42
+ unassignedCritical: 1230
+ needsAttention: 47
+ escalated: 8
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /ossprey/activity:
+ get:
+ operationId: listStewardshipActivity
+ summary: Paginated stewardship activity feed
+ description: >
+ Returns recent stewardship events across all packages, ordered by most
+ recent first. Used to populate the activity feed on the Overview tab.
+ The frontend groups items by day using `createdAt`.
+ tags:
+ - Dashboard
+ security:
+ - BearerAuth: []
+ parameters:
+ - name: page
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ default: 1
+ - name: pageSize
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ maximum: 100
+ default: 25
+ responses:
+ '200':
+ description: Paginated activity feed.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [rows, total, page, pageSize]
+ properties:
+ rows:
+ type: array
+ items:
+ $ref: '#/components/schemas/ActivityFeedItem'
+ total:
+ type: integer
+ example: 142
+ page:
+ type: integer
+ example: 1
+ pageSize:
+ type: integer
+ example: 25
+ example:
+ rows:
+ - id: '9182736'
+ stewardshipId: '4501'
+ packagePurl: pkg:maven/org.slf4j/slf4j-api
+ packageName: slf4j-api
+ packageEcosystem: maven
+ actorUserId: auth0|mock-user-alice
+ actorType: user
+ activityType: state_changed
+ content: Assessment complete, moving to active
+ metadata:
+ from: assessing
+ to: active
+ stewardshipStatus: active
+ createdAt: '2026-06-14T10:23:00Z'
+ total: 11
+ page: 1
+ pageSize: 25
+ '400':
+ description: Validation error.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /ossprey/packages:
+ get:
+ operationId: listOsspreyPackages
+ summary: Filtered paginated package list
+ description: >
+ Returns a paginated, filtered, sorted list of critical packages with their
+ stewardship state and risk signals.
+
+
+ Used by three tabs:
+
+ - **Queue tab** — full table with all filters
+
+ - **Triage Board** — one request per status column, fired in parallel
+ (`?status=X&pageSize=50`)
+
+ - **Summary panel** — click-through navigates to Queue with pre-filled filter
+
+
+ The response always includes `statusCounts` — per-status counts computed
+ without the active `status` filter, used to drive the tab bar badge numbers.
+ tags:
+ - Packages
+ security:
+ - BearerAuth: []
+ parameters:
+ - name: page
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ default: 1
+ - name: pageSize
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ maximum: 250
+ default: 25
+ - name: name
+ in: query
+ description: Case-insensitive substring search on package name.
+ schema:
+ type: string
+ - name: ecosystem
+ in: query
+ description: Filter by package ecosystem. Not validated server-side — any ecosystem stored in the DB is accepted.
+ schema:
+ type: string
+ - name: lifecycle
+ in: query
+ schema:
+ type: string
+ enum: [active, stable, declining, abandoned]
+ - name: status
+ in: query
+ description: >
+ Filter by stewardship status. `unassigned` includes packages with
+ no stewardship row (s.id IS NULL).
+ schema:
+ $ref: '#/components/schemas/StewardshipStatus'
+ - name: healthBand
+ in: query
+ schema:
+ $ref: '#/components/schemas/HealthBand'
+ - name: vulnSeverity
+ in: query
+ description: >
+ `any` = at least one open advisory · `high` = worst rank ≥ HIGH ·
+ `critical` = worst rank = CRITICAL · `none` = zero advisories.
+ schema:
+ type: string
+ enum: [any, high, critical, none]
+ - name: staleOnly
+ in: query
+ description: Return only packages with no release in ≥ 18 months.
+ schema:
+ type: boolean
+ default: false
+ - name: unstewardedOnly
+ in: query
+ description: Return only packages with status = unassigned or no stewardship row.
+ schema:
+ type: boolean
+ default: false
+ - name: busFactor1Only
+ in: query
+ description: Return only packages with exactly one maintainer.
+ schema:
+ type: boolean
+ default: false
+ - name: sortBy
+ in: query
+ schema:
+ type: string
+ enum: [risk, name, impact, openVulns, health]
+ default: risk
+ - name: sortDir
+ in: query
+ schema:
+ type: string
+ enum: [asc, desc]
+ default: desc
+ responses:
+ '200':
+ description: Paginated package list.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [rows, total, page, pageSize, statusCounts]
+ properties:
+ rows:
+ type: array
+ items:
+ $ref: '#/components/schemas/PackageRow'
+ total:
+ type: integer
+ example: 1842
+ page:
+ type: integer
+ example: 1
+ pageSize:
+ type: integer
+ example: 25
+ statusCounts:
+ $ref: '#/components/schemas/StatusCounts'
+ example:
+ rows:
+ - purl: pkg:maven/org.slf4j/slf4j-api
+ name: slf4j-api
+ ecosystem: maven
+ criticalityScore: 0.998
+ stewardshipId: '101'
+ stewardshipStatus: active
+ openVulns: 0
+ maxVulnSeverity: null
+ maintainerCount: 2
+ scorecardScore: 7.5
+ healthBand: healthy
+ latestReleaseAt: '2026-04-10T00:00:00Z'
+ lastActivity:
+ type: state_changed
+ content: Assessment complete, moving to active
+ at: '2026-06-01T10:00:00Z'
+ stewards:
+ - userId: auth0|mock-user-alice
+ role: lead
+ assignedAt: '2026-01-15T09:00:00Z'
+ total: 9
+ page: 1
+ pageSize: 25
+ statusCounts:
+ all: 9
+ unassigned: 1
+ open: 1
+ assessing: 1
+ active: 2
+ needs_attention: 1
+ escalated: 1
+ blocked: 1
+ inactive: 1
+ '400':
+ description: Validation error.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /ossprey/packages/scatter:
+ get:
+ operationId: getOsspreyPackagesScatter
+ summary: Scatter plot data for the Risk Matrix tab
+ description: >
+ Returns all packages where `is_critical = true AND has_critical_vulnerability = true`
+ as lightweight data points for the health-vs-impact scatter plot.
+ No pagination — this filter set is expected to stay around 2 000 packages.
+ Ordered by `impact DESC`.
+
+
+ Dot color is determined by `stewardshipStatus`. Legend checkboxes toggle
+ visibility client-side — no additional API calls needed.
+ tags:
+ - Packages
+ security:
+ - BearerAuth: []
+ responses:
+ '200':
+ description: Scatter plot data points.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [points, total]
+ properties:
+ points:
+ type: array
+ items:
+ $ref: '#/components/schemas/ScatterPoint'
+ total:
+ type: integer
+ description: >
+ Count of packages matching the filter
+ (is_critical = true AND has_critical_vulnerability = true).
+ Equals points.length — no separate count query.
+ example: 2000
+ example:
+ points:
+ - purl: pkg:maven/org.slf4j/slf4j-api
+ name: slf4j-api
+ criticalityScore: 100
+ healthScore: 75
+ healthBand: healthy
+ stewardshipStatus: active
+ stewardshipId: '101'
+ openVulns: 0
+ advisoryCount: 0
+ - purl: pkg:maven/com.fasterxml.jackson.core/jackson-databind
+ name: jackson-databind
+ criticalityScore: 99
+ healthScore: 0
+ healthBand: critical
+ stewardshipStatus: needs_attention
+ stewardshipId: '102'
+ openVulns: 2
+ advisoryCount: 2
+ total: 2000
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
diff --git a/backend/src/api/public/v1/ossprey/packageList.ts b/backend/src/api/public/v1/ossprey/packageList.ts
new file mode 100644
index 0000000000..fdfa82c94a
--- /dev/null
+++ b/backend/src/api/public/v1/ossprey/packageList.ts
@@ -0,0 +1,102 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import {
+ computeHealthBand,
+ getPackageStatusCounts,
+ listPackagesForApi,
+ translateActivityContent,
+} from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+import { purlFilterSchema } from '../packages/purl'
+
+const MAX_PAGE_SIZE = 250
+
+const boolParam = z.preprocess((v) => v === 'true', z.boolean()).default(false)
+
+const querySchema = z.object({
+ page: z.coerce.number().int().min(1).default(1),
+ pageSize: z.coerce.number().int().min(1).max(MAX_PAGE_SIZE).default(25),
+ ecosystem: z.string().trim().optional(),
+ lifecycle: z.enum(['active', 'stable', 'declining', 'abandoned']).optional(),
+ name: z.string().trim().optional(),
+ purl: purlFilterSchema,
+ status: z
+ .enum([
+ 'unassigned',
+ 'open',
+ 'assessing',
+ 'active',
+ 'needs_attention',
+ 'escalated',
+ 'blocked',
+ 'inactive',
+ ])
+ .optional(),
+ healthBand: z.enum(['healthy', 'fair', 'concerning', 'critical']).optional(),
+ vulnSeverity: z.enum(['any', 'high', 'critical', 'none']).optional(),
+ staleOnly: boolParam,
+ unstewardedOnly: boolParam,
+ busFactor1Only: boolParam,
+ sortBy: z.enum(['name', 'risk', 'impact', 'openVulns', 'health']).default('risk'),
+ sortDir: z.enum(['asc', 'desc']).default('desc'),
+})
+
+export async function packageListHandler(req: Request, res: Response): Promise {
+ const params = validateOrThrow(querySchema, req.query)
+
+ const filterOpts = {
+ ecosystem: params.ecosystem,
+ lifecycle: params.lifecycle,
+ name: params.name,
+ purl: params.purl,
+ healthBand: params.healthBand,
+ vulnSeverity: params.vulnSeverity,
+ staleOnly: params.staleOnly,
+ unstewardedOnly: params.unstewardedOnly,
+ busFactor1Only: params.busFactor1Only,
+ }
+
+ const qx = await getPackagesQx()
+ const [{ rows, total }, statusCounts] = await Promise.all([
+ listPackagesForApi(qx, { ...params, includeStewards: true, includeLastActivity: true }),
+ getPackageStatusCounts(qx, filterOpts),
+ ])
+
+ ok(res, {
+ rows: rows.map((r) => ({
+ purl: r.purl,
+ name: r.name,
+ ecosystem: r.ecosystem,
+ criticalityScore: r.criticalityScore,
+ stewardshipId: r.stewardshipId ?? null,
+ stewardshipStatus: r.stewardshipStatus ?? null,
+ openVulns: r.openVulns,
+ maxVulnSeverity: r.maxVulnSeverity ?? null,
+ maintainerCount: r.maintainerCount,
+ scorecardScore: r.scorecardScore,
+ healthBand: computeHealthBand(r.scorecardScore != null ? Number(r.scorecardScore) : null),
+ latestReleaseAt: r.latestReleaseAt ? r.latestReleaseAt.toISOString() : null,
+ lastActivity: r.lastActivityAt
+ ? {
+ type: r.lastActivityType,
+ content: translateActivityContent(
+ r.lastActivityContent ?? null,
+ r.lastActivityType,
+ r.lastActivityMetadata,
+ ),
+ at: r.lastActivityAt.toISOString(),
+ }
+ : null,
+ stewards: r.stewards ?? [],
+ })),
+ total,
+ page: params.page,
+ pageSize: params.pageSize,
+ statusCounts,
+ })
+}
diff --git a/backend/src/api/public/v1/ossprey/packageScatter.ts b/backend/src/api/public/v1/ossprey/packageScatter.ts
new file mode 100644
index 0000000000..62e4f7ee83
--- /dev/null
+++ b/backend/src/api/public/v1/ossprey/packageScatter.ts
@@ -0,0 +1,35 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { listPackagesForScatter } from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+import { STEWARDSHIP_STATUS_VALUES } from '../packages/types'
+
+const statusEnum = z.enum(STEWARDSHIP_STATUS_VALUES)
+
+function normalizeToArray(v: unknown): unknown[] | undefined {
+ if (v === undefined) return undefined
+ if (Array.isArray(v)) return v
+ if (typeof v === 'string' && v.includes(','))
+ return v
+ .split(',')
+ .map((s) => s.trim())
+ .filter(Boolean)
+ return [v]
+}
+
+const scatterQuerySchema = z.object({
+ status: z.preprocess(normalizeToArray, z.array(statusEnum).min(1)).optional(),
+ ecosystem: z.string().min(1).optional(),
+})
+
+export async function packageScatterHandler(req: Request, res: Response): Promise {
+ const { status, ecosystem } = validateOrThrow(scatterQuerySchema, req.query)
+ const qx = await getPackagesQx()
+ const points = await listPackagesForScatter(qx, { status, ecosystem })
+ ok(res, { points, total: points.length })
+}
diff --git a/backend/src/api/public/v1/packages/batchGetStewardship.ts b/backend/src/api/public/v1/packages/batchGetStewardship.ts
new file mode 100644
index 0000000000..42fecbb258
--- /dev/null
+++ b/backend/src/api/public/v1/packages/batchGetStewardship.ts
@@ -0,0 +1,62 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { getPackagesByStewardshipPurls } from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+import { normalizePurl } from './purl'
+import type { StewardshipSummary } from './types'
+
+const MAX_PURLS = 100
+
+const bodySchema = z.object({
+ purls: z
+ .array(
+ z
+ .string()
+ .trim()
+ .min(1)
+ .refine((v) => v.startsWith('pkg:'), { message: 'each purl must start with pkg:' }),
+ )
+ .min(1)
+ .max(MAX_PURLS, `Maximum ${MAX_PURLS} purls per request`),
+})
+
+export async function batchGetStewardship(req: Request, res: Response): Promise {
+ const { purls: rawPurls } = validateOrThrow(bodySchema, req.body)
+ // Normalize after parsing (not in the schema) so rawPurls keeps the client's
+ // original form — used as the response key so clients can look up their input.
+ const normalizedPurls = rawPurls.map(normalizePurl)
+
+ const qx = await getPackagesQx()
+ const rows = await getPackagesByStewardshipPurls(qx, normalizedPurls)
+
+ const byPurl = new Map(rows.map((r) => [r.purl, r]))
+
+ const packages: Record = {}
+ for (let i = 0; i < rawPurls.length; i++) {
+ const row = byPurl.get(normalizedPurls[i])
+ if (!row) {
+ packages[rawPurls[i]] = null
+ } else {
+ packages[rawPurls[i]] = {
+ name: row.name,
+ ecosystem: row.ecosystem,
+ lifecycle: null,
+ health: null,
+ impact:
+ row.criticalityScore != null ? Math.round(Number(row.criticalityScore) * 100) : null,
+ openVulns: null,
+ stewardship: (row.stewardshipStatus ?? 'unassigned') as StewardshipSummary['stewardship'],
+ stewards: null,
+ lastActivityAt: null,
+ lastActivityDescription: null,
+ }
+ }
+ }
+
+ ok(res, { packages })
+}
diff --git a/backend/src/api/public/v1/packages/getPackage.ts b/backend/src/api/public/v1/packages/getPackage.ts
new file mode 100644
index 0000000000..75f6f50fab
--- /dev/null
+++ b/backend/src/api/public/v1/packages/getPackage.ts
@@ -0,0 +1,110 @@
+import type { Request, Response } from 'express'
+
+import { NotFoundError } from '@crowd/common'
+import {
+ computeHealthBand,
+ getAdvisoriesByPackageId,
+ getPackageDetailByPurl,
+ getStewardshipSummary,
+} from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+import { purlQuerySchema } from './purl'
+import type { StewardshipStatus } from './types'
+
+function repoMappingLabel(confidence: number | null): 'High' | 'Medium' | 'Low' | null {
+ if (confidence === null) return null
+ if (confidence >= 0.8) return 'High'
+ if (confidence >= 0.5) return 'Medium'
+ return 'Low'
+}
+
+export async function getPackage(req: Request, res: Response): Promise {
+ const { purl } = validateOrThrow(purlQuerySchema, req.query)
+
+ const qx = await getPackagesQx()
+ const pkg = await getPackageDetailByPurl(qx, purl)
+
+ if (!pkg) {
+ throw new NotFoundError()
+ }
+
+ const [advisories, stewardshipSummary] = await Promise.all([
+ getAdvisoriesByPackageId(qx, pkg.id),
+ pkg.stewardshipId ? getStewardshipSummary(qx, Number(pkg.stewardshipId)) : null,
+ ])
+
+ const scorecardScore = pkg.scorecardScore != null ? Number(pkg.scorecardScore) : null
+ const mappingConfidence =
+ pkg.repoMappingConfidence != null ? Number(pkg.repoMappingConfidence) : null
+
+ ok(res, {
+ purl: pkg.purl,
+ name: pkg.name,
+ ecosystem: pkg.ecosystem,
+ latestVersion: pkg.latestVersion ?? null,
+ general: {
+ healthScore: scorecardScore !== null ? Math.round(scorecardScore * 10) : null,
+ healthBand: computeHealthBand(scorecardScore),
+ impact: {
+ impactScore:
+ pkg.criticalityScore != null ? Math.round(Number(pkg.criticalityScore) * 100) : null,
+ downloadsLastMonth: pkg.downloadsLast30d ?? null,
+ dependentPackages: pkg.dependentPackagesCount ?? null,
+ dependentRepos: pkg.dependentReposCount ?? null,
+ transitiveReach: pkg.transitiveReach,
+ },
+ riskSignals: {
+ lifecycle: null,
+ maintainerBusFactor: pkg.maintainerCount,
+ lastRelease: pkg.latestReleaseAt ? pkg.latestReleaseAt.toISOString() : null,
+ hasSecurityFile: pkg.hasSecurityFile,
+ hasSecurityPolicy: pkg.hasSecurityPolicy,
+ branchProtectionEnabled: pkg.branchProtectionEnabled,
+ openSSFScorecard: scorecardScore,
+ },
+ },
+ assessment: null,
+ security: {
+ securityContacts: null,
+ advisories: advisories.map((a) => ({
+ osvId: a.osvId,
+ severity: a.severity,
+ resolution: a.resolution,
+ })),
+ cvd: {
+ isPvrEnabled: null,
+ tier0Steward: null,
+ criticalVulnerabilityFlag: pkg.hasCriticalVulnerability,
+ },
+ },
+ provenance: {
+ repositoryMapping: {
+ declaredRepo: pkg.repoUrl ?? pkg.repositoryUrl ?? pkg.declaredRepositoryUrl ?? null,
+ mappingConfidence,
+ mappingLabel: repoMappingLabel(mappingConfidence),
+ lastCommitAt: pkg.repoLastCommitAt ? pkg.repoLastCommitAt.toISOString() : null,
+ },
+ supplyChainIntegrity: {
+ buildProvenance: null,
+ signedReleases: null,
+ },
+ },
+ stewardship: {
+ id: pkg.stewardshipId ?? null,
+ status: (pkg.stewardshipStatus ?? 'unassigned') as StewardshipStatus,
+ origin: pkg.stewardshipOrigin ?? null,
+ version: pkg.stewardshipVersion ?? null,
+ openedAt: pkg.stewardshipOpenedAt ? pkg.stewardshipOpenedAt.toISOString() : null,
+ lastStatusAt: pkg.stewardshipLastStatusAt ? pkg.stewardshipLastStatusAt.toISOString() : null,
+ resolutionPath: pkg.stewardshipResolutionPath ?? null,
+ statusNote: pkg.stewardshipStatusNote ?? null,
+ stewards: stewardshipSummary?.stewards ?? null,
+ lastActivityAt: stewardshipSummary?.lastActivityAt ?? null,
+ },
+ history: null,
+ })
+}
diff --git a/backend/src/api/public/v1/packages/getPackageAdvisories.ts b/backend/src/api/public/v1/packages/getPackageAdvisories.ts
new file mode 100644
index 0000000000..f5a8a55965
--- /dev/null
+++ b/backend/src/api/public/v1/packages/getPackageAdvisories.ts
@@ -0,0 +1,32 @@
+import type { Request, Response } from 'express'
+
+import { NotFoundError } from '@crowd/common'
+import { getAdvisoriesByPackageId, getPackageDetailByPurl } from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+import { purlQuerySchema } from './purl'
+
+export async function getPackageAdvisories(req: Request, res: Response): Promise {
+ const { purl } = validateOrThrow(purlQuerySchema, req.query)
+
+ const qx = await getPackagesQx()
+ const pkg = await getPackageDetailByPurl(qx, purl)
+
+ if (!pkg) {
+ throw new NotFoundError()
+ }
+
+ const advisories = await getAdvisoriesByPackageId(qx, pkg.id)
+
+ ok(res, {
+ advisories: advisories.map((a) => ({
+ osvId: a.osvId,
+ severity: a.severity,
+ resolution: a.resolution,
+ })),
+ total: advisories.length,
+ })
+}
diff --git a/backend/src/api/public/v1/packages/getPackageHistory.ts b/backend/src/api/public/v1/packages/getPackageHistory.ts
new file mode 100644
index 0000000000..cb3322d921
--- /dev/null
+++ b/backend/src/api/public/v1/packages/getPackageHistory.ts
@@ -0,0 +1,30 @@
+import type { Request, Response } from 'express'
+
+import { NotFoundError } from '@crowd/common'
+import { getPackageDetailByPurl, listPackageHistory } from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+import { purlQuerySchema } from './purl'
+
+export async function getPackageHistory(req: Request, res: Response): Promise {
+ const { purl } = validateOrThrow(purlQuerySchema, req.query)
+
+ const qx = await getPackagesQx()
+ const pkg = await getPackageDetailByPurl(qx, purl)
+
+ if (!pkg) {
+ throw new NotFoundError()
+ }
+
+ if (!pkg.stewardshipId) {
+ ok(res, { events: [], total: 0 })
+ return
+ }
+
+ const events = await listPackageHistory(qx, pkg.stewardshipId)
+
+ ok(res, { events, total: events.length })
+}
diff --git a/backend/src/api/public/v1/packages/getPackagesMetrics.ts b/backend/src/api/public/v1/packages/getPackagesMetrics.ts
new file mode 100644
index 0000000000..df1b3e5595
--- /dev/null
+++ b/backend/src/api/public/v1/packages/getPackagesMetrics.ts
@@ -0,0 +1,12 @@
+import type { Request, Response } from 'express'
+
+import { getPackageMetrics } from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+
+export async function getPackagesMetrics(req: Request, res: Response): Promise {
+ const qx = await getPackagesQx()
+ const metrics = await getPackageMetrics(qx)
+ ok(res, metrics)
+}
diff --git a/backend/src/api/public/v1/packages/index.ts b/backend/src/api/public/v1/packages/index.ts
new file mode 100644
index 0000000000..14f55f424e
--- /dev/null
+++ b/backend/src/api/public/v1/packages/index.ts
@@ -0,0 +1,30 @@
+import { Router } from 'express'
+
+import { createRateLimiter } from '@/api/apiRateLimiter'
+import { requireScopes } from '@/api/public/middlewares/requireScopes'
+import { safeWrap } from '@/middlewares/errorMiddleware'
+import { SCOPES } from '@/security/scopes'
+
+import { getPackage } from './getPackage'
+import { getPackagesMetrics } from './getPackagesMetrics'
+import { listPackages } from './listPackages'
+
+const rateLimiter = createRateLimiter({ max: 60, windowMs: 60 * 1000 })
+
+// TODO[deprecate]: /packages/metrics and /packages/detail are superseded by /v1/akrites/packages/metrics
+// and /v1/akrites/packages/detail — remove once consumers have migrated.
+// NOTE: GET /packages (listPackages) is intentionally NOT replicated in /v1/akrites because it has a
+// different response shape from GET /v1/akrites/packages (ossprey packageListHandler). Before removing,
+// verify no consumer calls GET /v1/packages — if unused, delete listPackages and this route entirely.
+export function packagesRouter(): Router {
+ const router = Router()
+
+ router.use(rateLimiter)
+ router.use(requireScopes([SCOPES.READ_PACKAGES, SCOPES.READ_STEWARDSHIPS], 'all'))
+
+ router.get('/', safeWrap(listPackages))
+ router.get('/metrics', safeWrap(getPackagesMetrics))
+ router.get('/detail', safeWrap(getPackage))
+
+ return router
+}
diff --git a/backend/src/api/public/v1/packages/listPackages.ts b/backend/src/api/public/v1/packages/listPackages.ts
new file mode 100644
index 0000000000..fc738aef95
--- /dev/null
+++ b/backend/src/api/public/v1/packages/listPackages.ts
@@ -0,0 +1,109 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { getPackageStatusCounts, listPackagesForApi } from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+import { purlFilterSchema } from './purl'
+import { STEWARDSHIP_STATUS_VALUES, type StewardshipStatus } from './types'
+
+const DEFAULT_PAGE_SIZE = 20
+const MAX_PAGE_SIZE = 100
+
+const booleanQueryParam = z.preprocess((v) => v === 'true', z.boolean()).default(false)
+
+const lifecycleValues = ['active', 'stable', 'declining', 'abandoned'] as const
+const healthBandValues = ['healthy', 'fair', 'concerning', 'critical'] as const
+const vulnSeverityValues = ['any', 'high', 'critical', 'none'] as const
+
+const querySchema = z.object({
+ page: z.coerce.number().int().min(1).default(1),
+ pageSize: z.coerce.number().int().min(1).max(MAX_PAGE_SIZE).default(DEFAULT_PAGE_SIZE),
+ ecosystem: z.string().trim().optional(),
+ lifecycle: z.enum(lifecycleValues).optional(),
+ name: z.string().trim().optional(),
+ purl: purlFilterSchema,
+ status: z.enum(STEWARDSHIP_STATUS_VALUES).optional(),
+ healthBand: z.enum(healthBandValues).optional(),
+ vulnSeverity: z.enum(vulnSeverityValues).optional(),
+ busFactor1Only: booleanQueryParam,
+ staleOnly: booleanQueryParam,
+ unstewardedOnly: booleanQueryParam,
+ sortBy: z.enum(['name', 'health', 'impact', 'openVulns', 'risk']).default('name'),
+ sortDir: z.enum(['asc', 'desc']).default('asc'),
+})
+
+export async function listPackages(req: Request, res: Response): Promise {
+ const {
+ page,
+ pageSize,
+ ecosystem,
+ lifecycle,
+ name,
+ purl,
+ status,
+ healthBand,
+ vulnSeverity,
+ busFactor1Only,
+ staleOnly,
+ unstewardedOnly,
+ sortBy,
+ sortDir,
+ } = validateOrThrow(querySchema, req.query)
+
+ const filterOpts = {
+ ecosystem,
+ lifecycle,
+ name,
+ purl,
+ healthBand,
+ vulnSeverity,
+ staleOnly,
+ unstewardedOnly,
+ busFactor1Only,
+ }
+
+ const qx = await getPackagesQx()
+ const [{ rows, total }, statusCounts] = await Promise.all([
+ listPackagesForApi(qx, { page, pageSize, status, sortBy, sortDir, ...filterOpts }),
+ getPackageStatusCounts(qx, filterOpts),
+ ])
+
+ const packages = rows.map((r) => ({
+ purl: r.purl,
+ name: r.name,
+ ecosystem: r.ecosystem,
+ health: r.scorecardScore != null ? Math.round(Number(r.scorecardScore) * 10) : null,
+ impact: r.criticalityScore != null ? Math.round(Number(r.criticalityScore) * 100) : null,
+ lifecycle: null,
+ maintainerBusFactor: r.maintainerCount,
+ openVulns: r.openVulns,
+ stewardshipId: r.stewardshipId ?? null,
+ stewardship: (r.stewardshipStatus ?? 'unassigned') as StewardshipStatus,
+ stewards: null,
+ }))
+
+ ok(res, {
+ page,
+ pageSize,
+ total,
+ statusCounts,
+ filters: {
+ ecosystem: ecosystem ?? null,
+ lifecycle: lifecycle ?? null,
+ name: name ?? null,
+ purl: purl ?? null,
+ status: status ?? null,
+ healthBand: healthBand ?? null,
+ vulnSeverity: vulnSeverity ?? null,
+ busFactor1Only,
+ staleOnly,
+ unstewardedOnly,
+ },
+ sort: { by: sortBy, dir: sortDir },
+ packages,
+ })
+}
diff --git a/backend/src/api/public/v1/packages/mockData.ts b/backend/src/api/public/v1/packages/mockData.ts
new file mode 100644
index 0000000000..3b78a2b5ae
--- /dev/null
+++ b/backend/src/api/public/v1/packages/mockData.ts
@@ -0,0 +1,261 @@
+import type { Lifecycle, OpenVulns, SeverityLevel, Steward, StewardshipStatus } from './types'
+
+export interface MockPackageListItem {
+ purl: string
+ name: string
+ ecosystem: string
+ health: number
+ impact: number
+ lifecycle: Lifecycle
+ maintainerBusFactor: number
+ openVulns: OpenVulns
+ stewardship: StewardshipStatus | null
+ stewards: Steward[] | null
+}
+
+export interface MockPackageDetail {
+ purl: string
+ name: string
+ ecosystem: string
+ general: {
+ healthScore: {
+ maintainerHealth: number
+ securitySupplyChain: number
+ developmentActivity: number
+ total: number
+ }
+ impact: {
+ impactScore: number
+ downloadsLastMonth: number | null
+ dependentPackages: number
+ dependentRepos: number
+ transitiveReach: string
+ }
+ riskSignals: {
+ lifecycle: Lifecycle
+ maintainerBusFactor: number
+ lastRelease: string
+ hasSecurityFile: null
+ openSSFScorecard: number
+ }
+ }
+ assessment: Record
+ security: {
+ securityContacts: null
+ advisories: Array<{
+ osvId: string
+ severity: SeverityLevel
+ resolution: null
+ }>
+ cvd: {
+ isPvrEnabled: null
+ hasSecurityPolicyEnabled: null
+ tier0Steward: null
+ criticalVulnerabilityFlag: boolean
+ }
+ }
+ provenance: {
+ repositoryMapping: { declaredRepo: string; mappingConfidence: number; lastCommitAt: string }
+ supplyChainIntegrity: { buildProvenance: null; signedReleases: null }
+ }
+ stewardship: {
+ status: StewardshipStatus
+ stewards: Steward[] | null
+ lastActivityAt: string | null
+ }
+ history: Record
+}
+
+export const MOCK_PACKAGES: MockPackageListItem[] = [
+ {
+ purl: 'pkg:npm/lodash@4.17.21',
+ name: 'lodash',
+ ecosystem: 'npm',
+ health: 18,
+ impact: 71,
+ lifecycle: 'declining',
+ maintainerBusFactor: 1,
+ openVulns: { low: 0, medium: 0, high: 1, critical: 0 },
+ stewardship: 'unassigned',
+ stewards: null,
+ },
+ {
+ purl: 'pkg:maven/org.apache.commons/commons-lang3@3.12.0',
+ name: 'commons-lang3',
+ ecosystem: 'maven',
+ health: 62,
+ impact: 88,
+ lifecycle: 'stable',
+ maintainerBusFactor: 3,
+ openVulns: { low: 0, medium: 0, high: 0, critical: 0 },
+ stewardship: 'unassigned',
+ stewards: null,
+ },
+ {
+ purl: 'pkg:npm/minimist@1.2.6',
+ name: 'minimist',
+ ecosystem: 'npm',
+ health: 12,
+ impact: 95,
+ lifecycle: 'abandoned',
+ maintainerBusFactor: 1,
+ openVulns: { low: 0, medium: 1, high: 0, critical: 1 },
+ stewardship: 'unassigned',
+ stewards: null,
+ },
+]
+
+export const MOCK_DETAILS: Record = {
+ 'pkg:npm/lodash@4.17.21': {
+ purl: 'pkg:npm/lodash@4.17.21',
+ name: 'lodash',
+ ecosystem: 'npm',
+ general: {
+ healthScore: {
+ maintainerHealth: 4,
+ securitySupplyChain: 8,
+ developmentActivity: 6,
+ total: 18,
+ },
+ impact: {
+ impactScore: 71,
+ downloadsLastMonth: 52142891,
+ dependentPackages: 142312,
+ dependentRepos: 39104,
+ transitiveReach: 'Top 0.4%',
+ },
+ riskSignals: {
+ lifecycle: 'declining',
+ maintainerBusFactor: 1,
+ lastRelease: '2021-02-20T00:00:00Z',
+ hasSecurityFile: null,
+ openSSFScorecard: 5.2,
+ },
+ },
+ assessment: {},
+ security: {
+ securityContacts: null,
+ advisories: [{ osvId: 'CVE-2021-44906', severity: 'high', resolution: null }],
+ cvd: {
+ isPvrEnabled: null,
+ hasSecurityPolicyEnabled: null,
+ tier0Steward: null,
+ criticalVulnerabilityFlag: false,
+ },
+ },
+ provenance: {
+ repositoryMapping: {
+ declaredRepo: 'https://github.com/lodash/lodash',
+ mappingConfidence: 0.98,
+ lastCommitAt: '2024-09-14T00:00:00Z',
+ },
+ supplyChainIntegrity: { buildProvenance: null, signedReleases: null },
+ },
+ stewardship: { status: 'unassigned', stewards: null, lastActivityAt: null },
+ history: {},
+ },
+ 'pkg:maven/org.apache.commons/commons-lang3@3.12.0': {
+ purl: 'pkg:maven/org.apache.commons/commons-lang3@3.12.0',
+ name: 'commons-lang3',
+ ecosystem: 'maven',
+ general: {
+ healthScore: {
+ maintainerHealth: 18,
+ securitySupplyChain: 22,
+ developmentActivity: 22,
+ total: 62,
+ },
+ impact: {
+ impactScore: 88,
+ downloadsLastMonth: null,
+ dependentPackages: 89421,
+ dependentRepos: 21033,
+ transitiveReach: 'Top 1.2%',
+ },
+ riskSignals: {
+ lifecycle: 'stable',
+ maintainerBusFactor: 3,
+ lastRelease: '2022-11-05T00:00:00Z',
+ hasSecurityFile: null,
+ openSSFScorecard: 7.1,
+ },
+ },
+ assessment: {},
+ security: {
+ securityContacts: null,
+ advisories: [],
+ cvd: {
+ isPvrEnabled: null,
+ hasSecurityPolicyEnabled: null,
+ tier0Steward: null,
+ criticalVulnerabilityFlag: false,
+ },
+ },
+ provenance: {
+ repositoryMapping: {
+ declaredRepo: 'https://github.com/apache/commons-lang',
+ mappingConfidence: 0.99,
+ lastCommitAt: '2024-10-01T00:00:00Z',
+ },
+ supplyChainIntegrity: { buildProvenance: null, signedReleases: null },
+ },
+ stewardship: { status: 'unassigned', stewards: null, lastActivityAt: null },
+ history: {},
+ },
+ 'pkg:npm/minimist@1.2.6': {
+ purl: 'pkg:npm/minimist@1.2.6',
+ name: 'minimist',
+ ecosystem: 'npm',
+ general: {
+ healthScore: {
+ maintainerHealth: 2,
+ securitySupplyChain: 4,
+ developmentActivity: 6,
+ total: 12,
+ },
+ impact: {
+ impactScore: 95,
+ downloadsLastMonth: 102381944,
+ dependentPackages: 321042,
+ dependentRepos: 87231,
+ transitiveReach: 'Top 0.1%',
+ },
+ riskSignals: {
+ lifecycle: 'abandoned',
+ maintainerBusFactor: 1,
+ lastRelease: '2022-03-17T00:00:00Z',
+ hasSecurityFile: null,
+ openSSFScorecard: 2.1,
+ },
+ },
+ assessment: {},
+ security: {
+ securityContacts: null,
+ advisories: [
+ { osvId: 'CVE-2021-44906', severity: 'critical', resolution: null },
+ { osvId: 'CVE-2020-7598', severity: 'medium', resolution: null },
+ ],
+ cvd: {
+ isPvrEnabled: null,
+ hasSecurityPolicyEnabled: null,
+ tier0Steward: null,
+ criticalVulnerabilityFlag: true,
+ },
+ },
+ provenance: {
+ repositoryMapping: {
+ declaredRepo: 'https://github.com/minimistjs/minimist',
+ mappingConfidence: 0.97,
+ lastCommitAt: '2022-03-17T00:00:00Z',
+ },
+ supplyChainIntegrity: { buildProvenance: null, signedReleases: null },
+ },
+ stewardship: { status: 'unassigned', stewards: null, lastActivityAt: null },
+ history: {},
+ },
+}
+
+export const MOCK_METRICS = {
+ totalPackages: MOCK_PACKAGES.length,
+ criticalPackages: MOCK_PACKAGES.filter((p) => p.openVulns.critical > 0).length,
+}
diff --git a/backend/src/api/public/v1/packages/openapi.yaml b/backend/src/api/public/v1/packages/openapi.yaml
new file mode 100644
index 0000000000..1a44a83f7e
--- /dev/null
+++ b/backend/src/api/public/v1/packages/openapi.yaml
@@ -0,0 +1,814 @@
+openapi: 3.1.0
+info:
+ title: CDP Public API — Packages & Stewardship
+ version: 1.0.0
+ description: >
+ Read-only endpoints for the OSSPREY Self Serve program.
+
+
+ **Authentication:** OAuth 2.0 M2M bearer token.
+ Package endpoints require `read:packages` or `read:stewardships`.
+ The batch stewardship endpoint requires `read:stewardships` only.
+
+
+ **V1 constraints:** All stewardship rows are `unassigned`.
+ Write endpoints and state transitions are deferred to v2.
+
+servers:
+ - url: https://cm.lfx.dev/api/v1
+ description: Production
+ - url: https://lf-staging.crowd.dev/api/v1
+ description: Staging
+
+tags:
+ - name: Packages
+ description: Package list and detail.
+ - name: Stewardship
+ description: Stewardship state — individual and batch.
+
+components:
+ securitySchemes:
+ M2MBearer:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+
+ schemas:
+ # ── Shared ───────────────────────────────────────────────────────────────────
+
+ Error:
+ type: object
+ required: [error]
+ properties:
+ error:
+ type: object
+ required: [code, message]
+ properties:
+ code:
+ type: string
+ example: NOT_FOUND
+ message:
+ type: string
+ example: Package not found.
+
+ OpenVulns:
+ type: object
+ description: Open vulnerability counts by severity from advisory_packages + advisories.
+ required: [low, medium, high, critical]
+ properties:
+ low:
+ type: integer
+ example: 0
+ medium:
+ type: integer
+ example: 0
+ high:
+ type: integer
+ example: 1
+ critical:
+ type: integer
+ example: 0
+
+ # ── Stewardship ─────────────────────────────────────────────────────────────
+
+ StewardshipStatus:
+ type: string
+ enum:
+ - unassigned
+ - open
+ - assessing
+ - active
+ - needs_attention
+ - escalated
+ - blocked
+ - inactive
+
+ Steward:
+ type: object
+ required: [userId, role, assignedAt]
+ properties:
+ userId:
+ type: string
+ description: Auth0 sub of the assigned steward.
+ example: abc123
+ name:
+ type:
+ - string
+ - 'null'
+ description: Display name of the steward. Null if not available.
+ example: Jonathan R.
+ role:
+ type: string
+ enum: [lead, co_steward]
+ assignedAt:
+ type: string
+ format: date-time
+
+ # Lean shape used in batch response and list items.
+ StewardshipSummary:
+ type: object
+ description: Null if the purl is not found in CDP.
+ required:
+ [name, ecosystem, stewardship, stewards, openVulns, lastActivityAt, lastActivityDescription]
+ properties:
+ name:
+ type: string
+ example: lodash
+ ecosystem:
+ type: string
+ example: npm
+ lifecycle:
+ type:
+ - string
+ - 'null'
+ enum: [active, stable, declining, abandoned, null]
+ health:
+ type:
+ - integer
+ - 'null'
+ example: 52
+ impact:
+ type:
+ - integer
+ - 'null'
+ example: 94
+ openVulns:
+ oneOf:
+ - $ref: '#/components/schemas/OpenVulns'
+ - type: 'null'
+ stewardship:
+ $ref: '#/components/schemas/StewardshipStatus'
+ stewards:
+ description: Assigned stewards or null. Empty in v1.
+ oneOf:
+ - type: array
+ items:
+ $ref: '#/components/schemas/Steward'
+ - type: 'null'
+ lastActivityAt:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ description: Null in v1.
+ lastActivityDescription:
+ type:
+ - string
+ - 'null'
+ description: Null in v1.
+
+ # ── Package list item ────────────────────────────────────────────────────────
+
+ PackageListItem:
+ type: object
+ required: [purl, name, ecosystem]
+ properties:
+ purl:
+ type: string
+ description: Used to call GET /packages/detail?purl= when a row is clicked.
+ example: pkg:npm/lodash
+ name:
+ type: string
+ example: lodash
+ ecosystem:
+ type: string
+ example: npm
+ health:
+ type:
+ - integer
+ - 'null'
+ example: 18
+ impact:
+ type:
+ - integer
+ - 'null'
+ example: 71
+ lifecycle:
+ type:
+ - string
+ - 'null'
+ enum: [active, stable, declining, abandoned, null]
+ maintainerBusFactor:
+ type:
+ - integer
+ - 'null'
+ example: 1
+ openVulns:
+ oneOf:
+ - $ref: '#/components/schemas/OpenVulns'
+ - type: 'null'
+ stewardshipId:
+ type:
+ - string
+ - 'null'
+ description: Stewardship ID. Required to call mutation endpoints (assign/escalate/status). Null if no stewardship row exists.
+ example: '42'
+ stewardship:
+ $ref: '#/components/schemas/StewardshipStatus'
+ stewards:
+ description: Assigned stewards or null.
+ oneOf:
+ - type: array
+ items:
+ $ref: '#/components/schemas/Steward'
+ - type: 'null'
+
+ # ── Package detail ───────────────────────────────────────────────────────────
+
+ Advisory:
+ type: object
+ required: [osvId, severity]
+ properties:
+ osvId:
+ type: string
+ description: GHSA or CVE identifier.
+ example: CVE-2021-44906
+ severity:
+ type: string
+ enum: [critical, high, medium, low]
+ resolution:
+ type:
+ - string
+ - 'null'
+ description: Resolution status. TBD.
+
+ SecurityContact:
+ type: object
+ required: [name]
+ properties:
+ name:
+ type:
+ - string
+ - 'null'
+ email:
+ type:
+ - string
+ - 'null'
+ format: email
+
+ PackageDetail:
+ type: object
+ required: [purl, name, ecosystem, general, assessment, security, provenance, history]
+ properties:
+ purl:
+ type: string
+ example: pkg:npm/lodash
+ name:
+ type: string
+ example: lodash
+ ecosystem:
+ type: string
+ example: npm
+ general:
+ type: object
+ properties:
+ healthScore:
+ type:
+ - object
+ - 'null'
+ properties:
+ maintainerHealth:
+ type:
+ - integer
+ - 'null'
+ example: 4
+ securitySupplyChain:
+ type:
+ - integer
+ - 'null'
+ example: 8
+ developmentActivity:
+ type:
+ - integer
+ - 'null'
+ example: 6
+ total:
+ type:
+ - integer
+ - 'null'
+ example: 18
+ impact:
+ type:
+ - object
+ - 'null'
+ properties:
+ impactScore:
+ type:
+ - integer
+ - 'null'
+ example: 71
+ downloadsLastMonth:
+ type:
+ - integer
+ - 'null'
+ description: Null for Maven (Sonatype data not yet ingested).
+ example: 52142891
+ dependentPackages:
+ type:
+ - integer
+ - 'null'
+ example: 142312
+ dependentRepos:
+ type:
+ - integer
+ - 'null'
+ example: 39104
+ transitiveReach:
+ type:
+ - string
+ - 'null'
+ example: 'Top 0.4%'
+ riskSignals:
+ type:
+ - object
+ - 'null'
+ properties:
+ lifecycle:
+ type:
+ - string
+ - 'null'
+ enum: [active, stable, declining, abandoned, null]
+ maintainerBusFactor:
+ type:
+ - integer
+ - 'null'
+ example: 1
+ lastRelease:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ hasSecurityFile:
+ type:
+ - boolean
+ - 'null'
+ openSSFScorecard:
+ type:
+ - number
+ - 'null'
+ format: float
+ example: 5.2
+ assessment:
+ type: object
+ description: Stewardship assessment data. Empty in v1 — assessment flow deferred to v2.
+ security:
+ type: object
+ properties:
+ securityContacts:
+ type:
+ - array
+ - 'null'
+ items:
+ $ref: '#/components/schemas/SecurityContact'
+ advisories:
+ type: array
+ items:
+ $ref: '#/components/schemas/Advisory'
+ cvd:
+ type: object
+ description: Coordinated Vulnerability Disclosure readiness signals.
+ properties:
+ isPvrEnabled:
+ type:
+ - boolean
+ - 'null'
+ description: Private Vulnerability Reporting enabled. Null in v1.
+ hasSecurityPolicyEnabled:
+ type:
+ - boolean
+ - 'null'
+ description: SECURITY.md present in repo. Null until enricher captures this.
+ tier0Steward:
+ type:
+ - string
+ - 'null'
+ description: Name of the Tier 0 steward if assigned. Null in v1.
+ criticalVulnerabilityFlag:
+ type:
+ - boolean
+ - 'null'
+ description: True if any open advisory has cvss >= 7.0.
+ provenance:
+ type: object
+ properties:
+ repositoryMapping:
+ type:
+ - object
+ - 'null'
+ properties:
+ declaredRepo:
+ type:
+ - string
+ - 'null'
+ format: uri
+ example: https://github.com/lodash/lodash
+ mappingConfidence:
+ type:
+ - number
+ - 'null'
+ format: float
+ example: 0.98
+ lastCommitAt:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ supplyChainIntegrity:
+ type: object
+ description: All fields null in v1 — separate ingestion workstream required.
+ properties:
+ buildProvenance:
+ type:
+ - string
+ - 'null'
+ signedReleases:
+ type:
+ - string
+ - 'null'
+ stewardship:
+ type: object
+ description: Stewardship state.
+ properties:
+ id:
+ type:
+ - string
+ - 'null'
+ description: Stewardship ID. Required to call mutation endpoints (assign/escalate/status).
+ example: '42'
+ status:
+ $ref: '#/components/schemas/StewardshipStatus'
+ stewards:
+ description: Assigned stewards or null.
+ oneOf:
+ - type: array
+ items:
+ $ref: '#/components/schemas/Steward'
+ - type: 'null'
+ lastActivityAt:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ resolutionPath:
+ type:
+ - string
+ - 'null'
+ description: Set on `escalated` status. Null for all other statuses.
+ statusNote:
+ type:
+ - string
+ - 'null'
+ description: Free-text note for the current status.
+ history:
+ type: object
+ description: Package history data. Empty in v1.
+
+ # ── Metrics ──────────────────────────────────────────────────────────────────
+
+ PackagesMetrics:
+ type: object
+ required: [totalPackages, criticalPackages]
+ properties:
+ totalPackages:
+ type: integer
+ example: 0
+ criticalPackages:
+ type: integer
+ example: 0
+
+# ──────────────────────────────────────────────────────────────────────────────
+# Paths
+# ──────────────────────────────────────────────────────────────────────────────
+paths:
+ /packages:
+ get:
+ operationId: listPackages
+ summary: List packages
+ tags:
+ - Packages
+ security:
+ - M2MBearer:
+ - read:packages
+ - read:stewardships
+ parameters:
+ - name: page
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ default: 1
+ - name: pageSize
+ in: query
+ schema:
+ type: integer
+ minimum: 1
+ maximum: 100
+ default: 20
+ - name: ecosystem
+ in: query
+ schema:
+ type: string
+ - name: lifecycle
+ in: query
+ schema:
+ type: string
+ enum: [active, stable, declining, abandoned]
+ - name: busFactor1Only
+ in: query
+ schema:
+ type: boolean
+ default: false
+ description: Return only packages with bus factor = 1.
+ - name: staleOnly
+ in: query
+ schema:
+ type: boolean
+ default: false
+ description: Return only packages with no release in >= 18 months.
+ - name: unstewardedOnly
+ in: query
+ schema:
+ type: boolean
+ default: false
+ description: Return only packages with stewardship = unassigned.
+ - name: sortBy
+ in: query
+ schema:
+ type: string
+ enum: [name, health, impact, openVulns]
+ default: name
+ - name: sortDir
+ in: query
+ schema:
+ type: string
+ enum: [asc, desc]
+ default: asc
+ responses:
+ '200':
+ description: Paginated list of packages.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [page, pageSize, total, filters, sort, packages]
+ properties:
+ page:
+ type: integer
+ pageSize:
+ type: integer
+ total:
+ type: integer
+ filters:
+ type: object
+ properties:
+ ecosystem:
+ type:
+ - string
+ - 'null'
+ lifecycle:
+ type:
+ - string
+ - 'null'
+ busFactor1Only:
+ type: boolean
+ staleOnly:
+ type: boolean
+ unstewardedOnly:
+ type: boolean
+ sort:
+ type: object
+ properties:
+ by:
+ type: string
+ dir:
+ type: string
+ packages:
+ type: array
+ items:
+ $ref: '#/components/schemas/PackageListItem'
+ '400':
+ description: Validation error (e.g. invalid query parameters).
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '403':
+ description: Insufficient scopes.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /packages/metrics:
+ get:
+ operationId: getPackagesMetrics
+ summary: Overview metrics for the list page header
+ tags:
+ - Packages
+ security:
+ - M2MBearer:
+ - read:packages
+ - read:stewardships
+ responses:
+ '200':
+ description: Aggregate package metrics.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PackagesMetrics'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '403':
+ description: Insufficient scopes.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /packages/detail:
+ get:
+ operationId: getPackage
+ summary: Get full package detail
+ description: >
+ Returns data for the drawer's Overview, Security, and Provenance tabs.
+ Pass the canonical purl as a query parameter — no URL-encoding needed.
+ Example: `?purl=pkg:npm/lodash@4.17.21`.
+ tags:
+ - Packages
+ security:
+ - M2MBearer:
+ - read:packages
+ - read:stewardships
+ parameters:
+ - name: purl
+ in: query
+ required: true
+ schema:
+ type: string
+ example: 'pkg:npm/lodash@4.17.21'
+ responses:
+ '200':
+ description: Package found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PackageDetail'
+ example:
+ purl: pkg:npm/lodash
+ name: lodash
+ ecosystem: npm
+ general:
+ healthScore:
+ maintainerHealth: 4
+ securitySupplyChain: 8
+ developmentActivity: 6
+ total: 18
+ impact:
+ impactScore: 71
+ downloadsLastMonth: 52142891
+ dependentPackages: 142312
+ dependentRepos: 39104
+ transitiveReach: 'Top 0.4%'
+ riskSignals:
+ lifecycle: declining
+ maintainerBusFactor: 1
+ lastRelease: '2021-02-20T00:00:00Z'
+ hasSecurityFile: null
+ openSSFScorecard: 5.2
+ assessment: {}
+ security:
+ securityContacts: null
+ advisories:
+ - osvId: CVE-2021-44906
+ severity: high
+ resolution: null
+ cvd:
+ isPvrEnabled: null
+ hasSecurityPolicyEnabled: null
+ tier0Steward: null
+ criticalVulnerabilityFlag: true
+ provenance:
+ repositoryMapping:
+ declaredRepo: https://github.com/lodash/lodash
+ mappingConfidence: 0.98
+ lastCommitAt: '2024-09-14T00:00:00Z'
+ supplyChainIntegrity:
+ buildProvenance: null
+ signedReleases: null
+ stewardship:
+ status: unassigned
+ stewards: null
+ lastActivityAt: null
+ history: {}
+ '404':
+ description: Package not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '403':
+ description: Insufficient scopes.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /packages:batch-stewardship:
+ post:
+ operationId: batchGetStewardship
+ summary: Batch stewardship state for a list of purls
+ description: >
+ Returns lean stewardship state for up to 100 purls in one request.
+ Purls not found in CDP return `null`.
+ tags:
+ - Stewardship
+ security:
+ - M2MBearer:
+ - read:stewardships
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [purls]
+ properties:
+ purls:
+ type: array
+ items:
+ type: string
+ minItems: 1
+ maxItems: 100
+ example:
+ - pkg:npm/lodash
+ - pkg:npm/express
+ - pkg:pypi/requests
+ responses:
+ '200':
+ description: >
+ Stewardship state keyed by purl.
+ Unknown or invalid purls return `null`.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [packages]
+ properties:
+ packages:
+ type: object
+ additionalProperties:
+ oneOf:
+ - $ref: '#/components/schemas/StewardshipSummary'
+ - type: 'null'
+ example:
+ packages:
+ pkg:npm/lodash@4.17.21:
+ name: lodash
+ ecosystem: npm
+ lifecycle: declining
+ health: 18
+ impact: 71
+ openVulns:
+ low: 0
+ medium: 0
+ high: 1
+ critical: 0
+ stewardship: unassigned
+ stewards: null
+ lastActivityAt: null
+ lastActivityDescription: null
+ pkg:pypi/requests: null
+ '400':
+ description: Validation error (e.g. more than 100 purls).
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '403':
+ description: Insufficient scopes.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
diff --git a/backend/src/api/public/v1/packages/purl.ts b/backend/src/api/public/v1/packages/purl.ts
new file mode 100644
index 0000000000..7a043a9ed1
--- /dev/null
+++ b/backend/src/api/public/v1/packages/purl.ts
@@ -0,0 +1,35 @@
+/**
+ * Normalize a PURL for lookup against the packages table.
+ *
+ * The DB stores versionless PURLs with npm scope @ encoded as %40.
+ * Clients may send purls with versions (pkg:npm/lodash@4.17.21) and qualifiers.
+ *
+ * Transform order:
+ * 1. strip ?qualifiers and #subpath — not stored in DB
+ * 2. strip @version suffix — DB stores versionless PURLs
+ * 3. encode @ in namespace/scope (e.g. npm @babel → %40babel)
+ *
+ * The version regex matches @ followed by non-/ non-@ chars at end of string.
+ * This is always the version separator, not an npm scope (pkg:npm/@babel/core
+ * has @babel followed by /core, so it never matches the end-of-string pattern).
+ */
+import { z } from 'zod'
+
+export function normalizePurl(purl: string): string {
+ const withoutQualifiers = purl.replace(/[?#].*$/, '')
+ const withoutVersion = withoutQualifiers.replace(/@[^/@]+$/, '')
+ return withoutVersion.replace(/@/g, '%40')
+}
+
+export const purlFieldSchema = z
+ .string()
+ .trim()
+ .min(1)
+ .refine((v) => v.startsWith('pkg:'), { message: 'purl must start with pkg:' })
+ .transform(normalizePurl)
+
+export const purlQuerySchema = z.object({ purl: purlFieldSchema })
+
+// Loose schema for search filters: normalizes without requiring the pkg: prefix,
+// so partial inputs (e.g. "@babel/core" or "lodash") are accepted.
+export const purlFilterSchema = z.string().trim().transform(normalizePurl).optional()
diff --git a/backend/src/api/public/v1/packages/types.ts b/backend/src/api/public/v1/packages/types.ts
new file mode 100644
index 0000000000..6b4f542af3
--- /dev/null
+++ b/backend/src/api/public/v1/packages/types.ts
@@ -0,0 +1,44 @@
+export const STEWARDSHIP_STATUS_VALUES = [
+ 'unassigned',
+ 'open',
+ 'assessing',
+ 'active',
+ 'needs_attention',
+ 'escalated',
+ 'blocked',
+ 'inactive',
+] as const
+
+export type StewardshipStatus = (typeof STEWARDSHIP_STATUS_VALUES)[number]
+
+export type Lifecycle = 'active' | 'stable' | 'declining' | 'abandoned'
+
+export type SeverityLevel = 'critical' | 'high' | 'medium' | 'low'
+
+export interface OpenVulns {
+ low: number
+ medium: number
+ high: number
+ critical: number
+}
+
+export interface Steward {
+ userId: string
+ username: string | null
+ displayName: string | null
+ role: 'lead' | 'co_steward'
+ assignedAt: string
+}
+
+export interface StewardshipSummary {
+ name: string
+ ecosystem: string
+ lifecycle: Lifecycle | null
+ health: number | null
+ impact: number | null
+ openVulns: OpenVulns | null
+ stewardship: StewardshipStatus | null
+ stewards: Steward[] | null
+ lastActivityAt: string | null
+ lastActivityDescription: string | null
+}
diff --git a/backend/src/api/public/v1/stewardships/assignSteward.ts b/backend/src/api/public/v1/stewardships/assignSteward.ts
new file mode 100644
index 0000000000..e97e984851
--- /dev/null
+++ b/backend/src/api/public/v1/stewardships/assignSteward.ts
@@ -0,0 +1,52 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { NotFoundError } from '@crowd/common'
+import { assignSteward } from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+const paramsSchema = z.object({
+ id: z.coerce.number().int().positive(),
+})
+
+const bodySchema = z
+ .object({
+ userId: z.string().trim().min(1),
+ username: z.string().trim().min(1).optional().nullable(),
+ displayName: z.string().trim().min(1).optional().nullable(),
+ role: z.enum(['lead', 'co_steward']),
+ note: z.string().trim().min(1).optional(),
+ moveToAssessing: z.boolean().optional().default(false),
+ })
+ .refine((d) => (d.username == null) === (d.displayName == null), {
+ message: 'username and displayName must both be provided or both be absent',
+ path: ['displayName'],
+ })
+
+export async function assignStewardHandler(req: Request, res: Response): Promise {
+ const { id } = validateOrThrow(paramsSchema, req.params)
+ const { userId, username, displayName, role, note, moveToAssessing } = validateOrThrow(
+ bodySchema,
+ req.body,
+ )
+
+ const qx = await getPackagesQx()
+ const result = await assignSteward(qx, id, {
+ userId,
+ username,
+ displayName,
+ role,
+ note,
+ assignedBy: req.actor.id,
+ moveToAssessing,
+ })
+
+ if (!result) {
+ throw new NotFoundError(`Stewardship not found: ${id}`)
+ }
+
+ ok(res, { stewardship: result.stewardship, stewards: result.stewards })
+}
diff --git a/backend/src/api/public/v1/stewardships/escalate.ts b/backend/src/api/public/v1/stewardships/escalate.ts
new file mode 100644
index 0000000000..0481a8c414
--- /dev/null
+++ b/backend/src/api/public/v1/stewardships/escalate.ts
@@ -0,0 +1,36 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { NotFoundError } from '@crowd/common'
+import { ESCALATION_RESOLUTION_PATHS, escalateStewardship } from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+const paramsSchema = z.object({
+ id: z.coerce.number().int().positive(),
+})
+
+const bodySchema = z.object({
+ resolutionPath: z.enum(ESCALATION_RESOLUTION_PATHS),
+ notes: z.string().trim().min(1).optional(),
+})
+
+export async function escalateHandler(req: Request, res: Response): Promise {
+ const { id } = validateOrThrow(paramsSchema, req.params)
+ const { resolutionPath, notes } = validateOrThrow(bodySchema, req.body)
+
+ const qx = await getPackagesQx()
+ const stewardship = await escalateStewardship(qx, id, {
+ resolutionPath,
+ notes,
+ actorUserId: req.actor.id,
+ })
+
+ if (!stewardship) {
+ throw new NotFoundError(`Stewardship not found: ${id}`)
+ }
+
+ ok(res, { stewardship })
+}
diff --git a/backend/src/api/public/v1/stewardships/getMyActivity.ts b/backend/src/api/public/v1/stewardships/getMyActivity.ts
new file mode 100644
index 0000000000..723165b23a
--- /dev/null
+++ b/backend/src/api/public/v1/stewardships/getMyActivity.ts
@@ -0,0 +1,75 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { listMyActivity } from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+const VALID_STATUSES = [
+ 'assessing',
+ 'active',
+ 'needs_attention',
+ 'escalated',
+ 'blocked',
+ 'unassigned',
+ 'open',
+ 'inactive',
+] as const
+
+const querySchema = z.object({
+ page: z.coerce.number().int().min(1).default(1),
+ pageSize: z.coerce.number().int().min(1).max(100).default(3),
+ status: z
+ .string()
+ .optional()
+ .transform((v) => {
+ if (!v) return undefined
+ const parts = v
+ .split(',')
+ .map((s) => s.trim())
+ .filter(Boolean)
+ return parts.length > 0 ? parts : undefined
+ })
+ .pipe(z.array(z.enum(VALID_STATUSES)).optional()),
+})
+
+const SUGGESTED_ACTIONS: Record = {
+ needs_attention: 'Review & respond',
+ blocked: 'Resolve blocker',
+ escalated: 'Add escalation context',
+ assessing: 'Continue assessment',
+ active: 'View stewardship',
+}
+
+export async function getMyActivityHandler(req: Request, res: Response): Promise {
+ const params = validateOrThrow(querySchema, req.query)
+
+ const qx = await getPackagesQx()
+ const { rows, total } = await listMyActivity(qx, {
+ userId: req.actor.id,
+ page: params.page,
+ pageSize: params.pageSize,
+ status: params.status,
+ })
+
+ ok(res, {
+ data: rows.map((r) => ({
+ stewardshipId: r.stewardshipId,
+ packageName: r.packageName,
+ purl: r.packagePurl,
+ packageEcosystem: r.packageEcosystem,
+ stewardshipStatus: r.stewardshipStatus,
+ activityType: r.activityType,
+ description: r.content,
+ createdAt: r.createdAt,
+ suggestedAction: SUGGESTED_ACTIONS[r.stewardshipStatus] ?? null,
+ })),
+ meta: {
+ total,
+ page: params.page,
+ pageSize: params.pageSize,
+ },
+ })
+}
diff --git a/backend/src/api/public/v1/stewardships/getMyPackages.ts b/backend/src/api/public/v1/stewardships/getMyPackages.ts
new file mode 100644
index 0000000000..e0512f8cfe
--- /dev/null
+++ b/backend/src/api/public/v1/stewardships/getMyPackages.ts
@@ -0,0 +1,62 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import {
+ computeHealthBand,
+ listMyPackages,
+ translateActivityContent,
+} from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+const querySchema = z.object({
+ page: z.coerce.number().int().min(1).default(1),
+ pageSize: z.coerce.number().int().min(1).max(100).default(25),
+ status: z.enum(['assessing', 'active', 'needs_attention', 'escalated', 'blocked']).optional(),
+ search: z.string().trim().optional(),
+ ecosystem: z.string().trim().optional(),
+ healthBand: z.enum(['healthy', 'fair', 'concerning', 'critical']).optional(),
+ vulnSeverity: z.enum(['high', 'critical']).optional(),
+ sortBy: z.enum(['risk', 'health', 'vulns', 'name', 'last_activity']).default('risk'),
+ sortDir: z.enum(['asc', 'desc']).default('desc'),
+})
+
+export async function getMyPackagesHandler(req: Request, res: Response): Promise {
+ const params = validateOrThrow(querySchema, req.query)
+
+ const qx = await getPackagesQx()
+ const { rows, total, statusCounts } = await listMyPackages(qx, {
+ userId: req.actor.id,
+ ...params,
+ })
+
+ ok(res, {
+ data: rows.map((r) => ({
+ purl: r.purl,
+ name: r.name,
+ ecosystem: r.ecosystem,
+ lifecycle: r.lifecycle,
+ healthScore: r.scorecardScore != null ? Math.round(r.scorecardScore * 10) : null,
+ healthBand: computeHealthBand(r.scorecardScore),
+ openVulns: r.openVulns,
+ vulnSeverity: r.maxVulnSeverity,
+ lastActivityDescription: translateActivityContent(
+ r.lastActivityContent,
+ r.lastActivityType,
+ r.lastActivityMetadata,
+ ),
+ lastActivityAt: r.lastActivityAt ? r.lastActivityAt.toISOString() : null,
+ stewardshipId: r.stewardshipId,
+ stewardshipStatus: r.stewardshipStatus,
+ myRole: r.myRole,
+ })),
+ meta: {
+ total,
+ page: params.page,
+ pageSize: params.pageSize,
+ statusCounts,
+ },
+ })
+}
diff --git a/backend/src/api/public/v1/stewardships/index.ts b/backend/src/api/public/v1/stewardships/index.ts
new file mode 100644
index 0000000000..11fe360f71
--- /dev/null
+++ b/backend/src/api/public/v1/stewardships/index.ts
@@ -0,0 +1,38 @@
+import { Router } from 'express'
+
+import { createRateLimiter } from '@/api/apiRateLimiter'
+import { requireScopes } from '@/api/public/middlewares/requireScopes'
+import { safeWrap } from '@/middlewares/errorMiddleware'
+import { SCOPES } from '@/security/scopes'
+
+import { assignStewardHandler } from './assignSteward'
+import { escalateHandler } from './escalate'
+import { openStewardship } from './openStewardship'
+import { updateStatusHandler } from './updateStatus'
+
+const rateLimiter = createRateLimiter({ max: 60, windowMs: 60 * 1000 })
+
+// TODO[deprecate]: superseded by /v1/akrites/stewardships — remove once consumers have migrated
+export function stewardshipsRouter(): Router {
+ const router = Router()
+
+ router.use(rateLimiter)
+
+ router.post('/', requireScopes([SCOPES.WRITE_STEWARDSHIPS]), safeWrap(openStewardship))
+
+ router.put(
+ '/:id/steward',
+ requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
+ safeWrap(assignStewardHandler),
+ )
+
+ router.put('/:id/escalate', requireScopes([SCOPES.WRITE_STEWARDSHIPS]), safeWrap(escalateHandler))
+
+ router.put(
+ '/:id/status',
+ requireScopes([SCOPES.WRITE_STEWARDSHIPS]),
+ safeWrap(updateStatusHandler),
+ )
+
+ return router
+}
diff --git a/backend/src/api/public/v1/stewardships/openStewardship.ts b/backend/src/api/public/v1/stewardships/openStewardship.ts
new file mode 100644
index 0000000000..18a9828df2
--- /dev/null
+++ b/backend/src/api/public/v1/stewardships/openStewardship.ts
@@ -0,0 +1,28 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { NotFoundError } from '@crowd/common'
+import { openStewardshipByPurl } from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+import { purlFieldSchema } from '../packages/purl'
+
+const bodySchema = z.object({
+ purl: purlFieldSchema,
+})
+
+export async function openStewardship(req: Request, res: Response): Promise {
+ const { purl } = validateOrThrow(bodySchema, req.body)
+
+ const qx = await getPackagesQx()
+ const stewardship = await openStewardshipByPurl(qx, purl, req.actor.id)
+
+ if (!stewardship) {
+ throw new NotFoundError(`Package not found: ${purl}`)
+ }
+
+ ok(res, { stewardship })
+}
diff --git a/backend/src/api/public/v1/stewardships/openapi.yaml b/backend/src/api/public/v1/stewardships/openapi.yaml
new file mode 100644
index 0000000000..bc41892971
--- /dev/null
+++ b/backend/src/api/public/v1/stewardships/openapi.yaml
@@ -0,0 +1,552 @@
+openapi: 3.1.0
+info:
+ title: CDP Public API — Stewardship Admin Actions
+ version: 1.0.0
+ description: >
+ Write endpoints for OSSPREY Program admin stewardship actions.
+
+
+ **Authentication:** OAuth 2.0 M2M bearer token. All endpoints require `write:stewardships`.
+
+
+ **V1 note:** Scope `write:stewardships` is not yet added to the Auth0 staging tenant —
+ scope enforcement is temporarily disabled. See CM-1235.
+
+servers:
+ - url: https://cm.lfx.dev/api/v1
+ description: Production
+ - url: https://lf-staging.crowd.dev/api/v1
+ description: Staging
+
+tags:
+ - name: Stewardship Actions
+ description: Admin-initiated stewardship mutations.
+
+components:
+ securitySchemes:
+ M2MBearer:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+
+ schemas:
+ Error:
+ type: object
+ required: [error]
+ properties:
+ error:
+ type: object
+ required: [code, message]
+ properties:
+ code:
+ type: string
+ example: NOT_FOUND
+ message:
+ type: string
+ example: Stewardship not found.
+
+ StewardshipStatus:
+ type: string
+ enum:
+ - unassigned
+ - open
+ - assessing
+ - active
+ - needs_attention
+ - escalated
+ - blocked
+ - inactive
+
+ StewardshipRecord:
+ type: object
+ required: [id, packageId, status, origin, version, createdAt, updatedAt]
+ properties:
+ id:
+ type: string
+ example: '42'
+ packageId:
+ type: string
+ example: '1234'
+ status:
+ $ref: '#/components/schemas/StewardshipStatus'
+ origin:
+ type: string
+ enum: [auto_imported, self_claimed, assigned, opened_for_claim]
+ version:
+ type: integer
+ example: 1
+ openedAt:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ lastStatusAt:
+ type:
+ - string
+ - 'null'
+ format: date-time
+ inactiveReason:
+ type:
+ - string
+ - 'null'
+ enum:
+ - quarterly_cadence_missed
+ - stepped_down
+ - no_longer_critical
+ - 'null'
+ resolutionPath:
+ description: Set on `escalated` status. Null for all other statuses.
+ oneOf:
+ - $ref: '#/components/schemas/EscalationResolutionPath'
+ - type: 'null'
+ statusNote:
+ type:
+ - string
+ - 'null'
+ description: Free-text note for the current status. Set by escalate or updateStatus. Null on open.
+ example: Contacted maintainer, no response after 30 days.
+ createdAt:
+ type: string
+ format: date-time
+ updatedAt:
+ type: string
+ format: date-time
+
+ StewardRecord:
+ type: object
+ required: [id, stewardshipId, userId, role, assignedAt]
+ properties:
+ id:
+ type: string
+ example: '7'
+ stewardshipId:
+ type: string
+ example: '42'
+ userId:
+ type: string
+ description: Auth0 sub of the assigned steward.
+ example: abc123
+ username:
+ type:
+ - string
+ - 'null'
+ description: LFX username of the steward. Null if not yet stored.
+ example: joanagmaia
+ displayName:
+ type:
+ - string
+ - 'null'
+ description: Full display name of the steward. Null if not yet stored.
+ example: Joana Maia
+ role:
+ type: string
+ enum: [lead, co_steward]
+ assignedAt:
+ type: string
+ format: date-time
+ assignedBy:
+ type:
+ - string
+ - 'null'
+ description: Auth0 sub of the admin who assigned this steward.
+ example: xyz789
+
+ EscalationResolutionPath:
+ type: string
+ enum:
+ - right_of_first_refusal
+ - replace_the_dependency
+ - find_vendor_for_lts
+ - consortium_adopts_maintainership
+ - compensating_controls_monitor
+ - namespace_takeover
+
+paths:
+ /stewardships:
+ post:
+ operationId: openStewardship
+ summary: Open a package for stewardship
+ description: >
+ Transitions the stewardship status to `open`, marking the package as available for claiming.
+ If a stewardship row does not exist yet, one is created.
+ If the stewardship is already `open`, this is a no-op (idempotent).
+ tags:
+ - Stewardship Actions
+ security:
+ - M2MBearer:
+ - write:stewardships
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [purl]
+ properties:
+ purl:
+ type: string
+ description: Package URL (must start with `pkg:`).
+ example: pkg:npm/lodash
+ example:
+ purl: pkg:npm/lodash
+ responses:
+ '200':
+ description: Stewardship opened (or already open).
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [stewardship]
+ properties:
+ stewardship:
+ $ref: '#/components/schemas/StewardshipRecord'
+ example:
+ stewardship:
+ id: '42'
+ packageId: '1234'
+ status: open
+ origin: opened_for_claim
+ version: 1
+ openedAt: '2026-06-15T10:00:00Z'
+ lastStatusAt: '2026-06-15T10:00:00Z'
+ inactiveReason: null
+ createdAt: '2026-06-15T10:00:00Z'
+ updatedAt: '2026-06-15T10:00:00Z'
+ '400':
+ description: Validation error (e.g. missing or invalid purl).
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '403':
+ description: Insufficient scopes.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '404':
+ description: Package not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /stewardships/{id}/steward:
+ put:
+ operationId: assignSteward
+ summary: Assign a steward to a stewardship
+ description: >
+ Assigns a user as a steward with the given role.
+ If the user is already an active steward, the role is updated (soft-delete + re-insert).
+ Returns the unchanged stewardship record and the full active stewards list after the operation.
+ tags:
+ - Stewardship Actions
+ security:
+ - M2MBearer:
+ - write:stewardships
+ parameters:
+ - name: id
+ in: path
+ required: true
+ schema:
+ type: integer
+ description: Stewardship ID.
+ example: 42
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [userId, role]
+ properties:
+ userId:
+ type: string
+ description: Auth0 sub of the user to assign as steward.
+ example: abc123
+ username:
+ type: string
+ description: LFX username of the steward. When provided together with displayName, stored for display purposes.
+ example: joanagmaia
+ displayName:
+ type: string
+ description: Full display name of the steward. When provided together with username, stored for display purposes.
+ example: Joana Maia
+ role:
+ type: string
+ enum: [lead, co_steward]
+ moveToAssessing:
+ type: boolean
+ default: false
+ description: >
+ If true, atomically transitions the stewardship status to `assessing`
+ in the same transaction as the assignment. Use for the "Assign & move to
+ Assessing" action to avoid a second round-trip.
+ example:
+ userId: abc123
+ role: lead
+ moveToAssessing: true
+ responses:
+ '200':
+ description: Steward assigned.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [stewardship, stewards]
+ properties:
+ stewardship:
+ $ref: '#/components/schemas/StewardshipRecord'
+ stewards:
+ type: array
+ items:
+ $ref: '#/components/schemas/StewardRecord'
+ example:
+ stewardship:
+ id: '42'
+ packageId: '1234'
+ status: open
+ origin: opened_for_claim
+ version: 1
+ openedAt: '2026-06-15T10:00:00Z'
+ lastStatusAt: '2026-06-15T10:00:00Z'
+ inactiveReason: null
+ createdAt: '2026-06-15T10:00:00Z'
+ updatedAt: '2026-06-15T10:00:00Z'
+ stewards:
+ - id: '7'
+ stewardshipId: '42'
+ userId: abc123
+ role: lead
+ assignedAt: '2026-06-15T10:05:00Z'
+ assignedBy: xyz789
+ '400':
+ description: Validation error (e.g. invalid role).
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '403':
+ description: Insufficient scopes.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '404':
+ description: Stewardship not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /stewardships/{id}/escalate:
+ put:
+ operationId: escalateStewardship
+ summary: Escalate a stewardship
+ description: >
+ Transitions the stewardship to `escalated` status and logs the chosen resolution path
+ in the activity log. Optional free-text notes can be included.
+ tags:
+ - Stewardship Actions
+ security:
+ - M2MBearer:
+ - write:stewardships
+ parameters:
+ - name: id
+ in: path
+ required: true
+ schema:
+ type: integer
+ description: Stewardship ID.
+ example: 42
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [resolutionPath]
+ properties:
+ resolutionPath:
+ $ref: '#/components/schemas/EscalationResolutionPath'
+ notes:
+ type: string
+ minLength: 1
+ description: Optional free-text notes for the activity log.
+ example: Contacted maintainer, no response after 30 days.
+ example:
+ resolutionPath: right_of_first_refusal
+ notes: Contacted maintainer, no response after 30 days.
+ responses:
+ '200':
+ description: Stewardship escalated.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [stewardship]
+ properties:
+ stewardship:
+ $ref: '#/components/schemas/StewardshipRecord'
+ example:
+ stewardship:
+ id: '42'
+ packageId: '1234'
+ status: escalated
+ origin: opened_for_claim
+ version: 1
+ openedAt: '2026-06-15T10:00:00Z'
+ lastStatusAt: '2026-06-15T11:00:00Z'
+ inactiveReason: null
+ createdAt: '2026-06-15T10:00:00Z'
+ updatedAt: '2026-06-15T11:00:00Z'
+ '400':
+ description: Validation error (e.g. invalid resolutionPath).
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '403':
+ description: Insufficient scopes.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '404':
+ description: Stewardship not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ /stewardships/{id}/status:
+ put:
+ operationId: updateStewardshipStatus
+ summary: Update stewardship status
+ description: >
+ Updates the stewardship status and logs a `state_changed` activity entry.
+ Valid target statuses: `assessing`, `active`, `needs_attention`, `blocked`, `inactive`.
+ When transitioning to `inactive`, `inactiveReason` is required.
+ tags:
+ - Stewardship Actions
+ security:
+ - M2MBearer:
+ - write:stewardships
+ parameters:
+ - name: id
+ in: path
+ required: true
+ schema:
+ type: integer
+ description: Stewardship ID.
+ example: 42
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [status]
+ properties:
+ status:
+ type: string
+ enum:
+ - assessing
+ - active
+ - needs_attention
+ - blocked
+ - inactive
+ inactiveReason:
+ type: string
+ enum:
+ - quarterly_cadence_missed
+ - stepped_down
+ - no_longer_critical
+ description: Required when `status` is `inactive`.
+ notes:
+ type: string
+ minLength: 1
+ description: Optional free-text notes for the activity log.
+ examples:
+ set_active:
+ summary: Transition to active
+ value:
+ status: active
+ set_inactive:
+ summary: Transition to inactive (inactiveReason required)
+ value:
+ status: inactive
+ inactiveReason: stepped_down
+ notes: Steward stepped down voluntarily.
+ set_blocked:
+ summary: Transition to blocked
+ value:
+ status: blocked
+ notes: Waiting on upstream maintainer response.
+ responses:
+ '200':
+ description: Status updated.
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [stewardship]
+ properties:
+ stewardship:
+ $ref: '#/components/schemas/StewardshipRecord'
+ example:
+ stewardship:
+ id: '42'
+ packageId: '1234'
+ status: active
+ origin: opened_for_claim
+ version: 1
+ openedAt: '2026-06-15T10:00:00Z'
+ lastStatusAt: '2026-06-15T12:00:00Z'
+ inactiveReason: null
+ createdAt: '2026-06-15T10:00:00Z'
+ updatedAt: '2026-06-15T12:00:00Z'
+ '400':
+ description: >
+ Validation error.
+ Includes the case where `status` is `inactive` but `inactiveReason` is missing.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '401':
+ description: Missing or invalid bearer token.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '403':
+ description: Insufficient scopes.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '404':
+ description: Stewardship not found.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
diff --git a/backend/src/api/public/v1/stewardships/updateStatus.ts b/backend/src/api/public/v1/stewardships/updateStatus.ts
new file mode 100644
index 0000000000..6ed8a6c08a
--- /dev/null
+++ b/backend/src/api/public/v1/stewardships/updateStatus.ts
@@ -0,0 +1,47 @@
+import type { Request, Response } from 'express'
+import { z } from 'zod'
+
+import { NotFoundError } from '@crowd/common'
+import {
+ INACTIVE_REASONS,
+ STEWARDSHIP_UPDATABLE_STATUSES,
+ updateStewardshipStatus,
+} from '@crowd/data-access-layer'
+
+import { getPackagesQx } from '@/db/packagesDb'
+import { ok } from '@/utils/api'
+import { validateOrThrow } from '@/utils/validation'
+
+const paramsSchema = z.object({
+ id: z.coerce.number().int().positive(),
+})
+
+const bodySchema = z
+ .object({
+ status: z.enum(STEWARDSHIP_UPDATABLE_STATUSES),
+ inactiveReason: z.enum(INACTIVE_REASONS).optional(),
+ notes: z.string().trim().min(1).optional(),
+ })
+ .refine((d) => d.status !== 'inactive' || !!d.inactiveReason, {
+ message: 'inactiveReason is required when status is inactive',
+ path: ['inactiveReason'],
+ })
+
+export async function updateStatusHandler(req: Request, res: Response): Promise {
+ const { id } = validateOrThrow(paramsSchema, req.params)
+ const { status, inactiveReason, notes } = validateOrThrow(bodySchema, req.body)
+
+ const qx = await getPackagesQx()
+ const stewardship = await updateStewardshipStatus(qx, id, {
+ status,
+ inactiveReason,
+ notes,
+ actorUserId: req.actor.id,
+ })
+
+ if (!stewardship) {
+ throw new NotFoundError(`Stewardship not found: ${id}`)
+ }
+
+ ok(res, { stewardship })
+}
diff --git a/backend/src/api/quickstart-guide/index.ts b/backend/src/api/quickstart-guide/index.ts
deleted file mode 100644
index 0dee4144ac..0000000000
--- a/backend/src/api/quickstart-guide/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- app.get(`/tenant/:tenantId/quickstart-guide`, safeWrap(require('./quickstartGuideList').default))
- app.post(
- `/tenant/:tenantId/quickstart-guide/settings`,
- safeWrap(require('./quickstartGuideSettingsUpdate').default),
- )
-}
diff --git a/backend/src/api/quickstart-guide/quickstartGuideList.ts b/backend/src/api/quickstart-guide/quickstartGuideList.ts
deleted file mode 100644
index 28cad5e964..0000000000
--- a/backend/src/api/quickstart-guide/quickstartGuideList.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import QuickstartGuideService from '../../services/quickstartGuideService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.quickstartGuideRead)
-
- const payload = await new QuickstartGuideService(req).find()
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/quickstart-guide/quickstartGuideSettingsUpdate.ts b/backend/src/api/quickstart-guide/quickstartGuideSettingsUpdate.ts
deleted file mode 100644
index 18a527ce65..0000000000
--- a/backend/src/api/quickstart-guide/quickstartGuideSettingsUpdate.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import QuickstartGuideService from '../../services/quickstartGuideService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.quickstartGuideSettingsUpdate)
-
- const payload = await new QuickstartGuideService(req).updateSettings(req.body)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/report/index.ts b/backend/src/api/report/index.ts
deleted file mode 100644
index ca2c05460c..0000000000
--- a/backend/src/api/report/index.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- app.post(`/tenant/:tenantId/report`, safeWrap(require('./reportCreate').default))
- app.post(`/tenant/:tenantId/report/query`, safeWrap(require('./reportQuery').default))
- app.put(`/tenant/:tenantId/report/:id`, safeWrap(require('./reportUpdate').default))
- app.post(`/tenant/:tenantId/report/:id/duplicate`, safeWrap(require('./reportDuplicate').default))
- app.post(`/tenant/:tenantId/report/import`, safeWrap(require('./reportImport').default))
- app.delete(`/tenant/:tenantId/report`, safeWrap(require('./reportDestroy').default))
- app.get(
- `/tenant/:tenantId/report/autocomplete`,
- safeWrap(require('./reportAutocomplete').default),
- )
- app.get(`/tenant/:tenantId/report`, safeWrap(require('./reportList').default))
- app.get(`/tenant/:tenantId/report/:id`, safeWrap(require('./reportFind').default))
-}
diff --git a/backend/src/api/report/reportAutocomplete.ts b/backend/src/api/report/reportAutocomplete.ts
deleted file mode 100644
index abff1f75b6..0000000000
--- a/backend/src/api/report/reportAutocomplete.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import ReportService from '../../services/reportService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.reportAutocomplete)
-
- const payload = await new ReportService(req).findAllAutocomplete(req.query.query, req.query.limit)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/report/reportCreate.ts b/backend/src/api/report/reportCreate.ts
deleted file mode 100644
index 2899236029..0000000000
--- a/backend/src/api/report/reportCreate.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import Error403 from '../../errors/Error403'
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import ReportService from '../../services/reportService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.reportCreate)
-
- if (req.body.isTemplate) {
- await req.responseHandler.error(
- req,
- res,
- new Error403(req.language, 'errors.report.templateReportsCreateNotAllowed'),
- )
- return
- }
-
- const payload = await new ReportService(req).create(req.body)
-
- track(
- 'Report Created',
- { id: payload.id, name: payload.name, public: payload.public },
- { ...req },
- )
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/report/reportDestroy.ts b/backend/src/api/report/reportDestroy.ts
deleted file mode 100644
index c79c53c562..0000000000
--- a/backend/src/api/report/reportDestroy.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import Permissions from '../../security/permissions'
-import ReportService from '../../services/reportService'
-import PermissionChecker from '../../services/user/permissionChecker'
-import track from '../../segment/track'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.reportDestroy)
-
- await new ReportService(req).destroyAll(req.query.ids)
-
- track('Report Deleted', { ids: req.query.ids }, { ...req })
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/report/reportDuplicate.ts b/backend/src/api/report/reportDuplicate.ts
deleted file mode 100644
index 0a31ca2ec8..0000000000
--- a/backend/src/api/report/reportDuplicate.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import ReportService from '../../services/reportService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.reportCreate)
-
- const payload = await new ReportService(req).duplicate(req.params.id)
-
- track(
- 'Report Duplicated',
- { id: payload.id, name: payload.name, public: payload.public },
- { ...req },
- )
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/report/reportFind.ts b/backend/src/api/report/reportFind.ts
deleted file mode 100644
index 22eb258c18..0000000000
--- a/backend/src/api/report/reportFind.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import Permissions from '../../security/permissions'
-import ReportService from '../../services/reportService'
-import PermissionChecker from '../../services/user/permissionChecker'
-import track from '../../segment/track'
-
-export default async (req, res) => {
- const reportService = new ReportService(req)
- const payload = await reportService.findById(req.params.id)
-
- if (!payload.public) {
- new PermissionChecker(req).validateHas(Permissions.values.reportRead)
- }
-
- if (req.currentUser && req.currentUser.id) {
- const viewedBy = new Set(payload.viewedBy).add(req.currentUser.id)
- await reportService.update(payload.id, { viewedBy: Array.from(viewedBy) })
- }
-
- track('Report Viewed', { id: payload.id, name: payload.name, public: payload.public }, { ...req })
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/report/reportImport.ts b/backend/src/api/report/reportImport.ts
deleted file mode 100644
index 8345ca2a28..0000000000
--- a/backend/src/api/report/reportImport.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Permissions from '../../security/permissions'
-import ReportService from '../../services/reportService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.reportImport)
-
- await new ReportService(req).import(req.body, req.body.importHash)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/report/reportList.ts b/backend/src/api/report/reportList.ts
deleted file mode 100644
index 70d5ad5978..0000000000
--- a/backend/src/api/report/reportList.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import ReportService from '../../services/reportService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.reportRead)
-
- const payload = await new ReportService(req).findAndCountAll(req.query)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/report/reportQuery.ts b/backend/src/api/report/reportQuery.ts
deleted file mode 100644
index 90ce69331e..0000000000
--- a/backend/src/api/report/reportQuery.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import ReportService from '../../services/reportService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-// /**
-// * POST /tenant/{tenantId}/report
-// * @summary Create or update an report
-// * @tag Activities
-// * @security Bearer
-// * @description Create or update an report. Existence is checked by sourceId and tenantId.
-// * @pathParam {string} tenantId - Your workspace/tenant ID
-// * @bodyContent {ReportUpsertInput} application/json
-// * @response 200 - Ok
-// * @responseContent {Report} 200.application/json
-// * @responseExample {ReportUpsert} 200.application/json.Report
-// * @response 401 - Unauthorized
-// * @response 404 - Not found
-// * @response 429 - Too many requests
-// */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.reportRead)
-
- const payload = await new ReportService(req).query(req.body)
-
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Reports Advanced Filter', { ...payload }, { ...req })
- }
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/report/reportUpdate.ts b/backend/src/api/report/reportUpdate.ts
deleted file mode 100644
index cd6e88fc2a..0000000000
--- a/backend/src/api/report/reportUpdate.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import Error403 from '../../errors/Error403'
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import ReportService from '../../services/reportService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.reportEdit)
- if (req.body.isTemplate) {
- await req.responseHandler.error(
- req,
- res,
- new Error403(req.language, 'errors.report.templateReportsUpdateNotAllowed'),
- )
- return
- }
-
- const payload = await new ReportService(req).update(req.params.id, req.body)
-
- track(
- 'Report Updated',
- { id: payload.id, name: payload.name, public: payload.public },
- { ...req },
- )
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/segment/index.ts b/backend/src/api/segment/index.ts
index aa797b2f81..a9d0f0b04b 100644
--- a/backend/src/api/segment/index.ts
+++ b/backend/src/api/segment/index.ts
@@ -1,39 +1,28 @@
import { safeWrap } from '../../middlewares/errorMiddleware'
export default (app) => {
- app.post(
- `/tenant/:tenantId/segment/projectGroup`,
- safeWrap(require('./segmentCreateProjectGroup').default),
- )
- app.post(`/tenant/:tenantId/segment/project`, safeWrap(require('./segmentCreateProject').default))
- app.post(
- `/tenant/:tenantId/segment/subproject`,
- safeWrap(require('./segmentCreateSubproject').default),
- )
+ app.post(`/segment/projectGroup`, safeWrap(require('./segmentCreateProjectGroup').default))
+ app.post(`/segment/project`, safeWrap(require('./segmentCreateProject').default))
+ app.post(`/segment/subproject`, safeWrap(require('./segmentCreateSubproject').default))
// query all project groups
- app.post(
- `/tenant/:tenantId/segment/projectGroup/query`,
- safeWrap(require('./segmentProjectGroupQuery').default),
- )
+ app.post(`/segment/projectGroup/query`, safeWrap(require('./segmentProjectGroupQuery').default))
// query all projects
- app.post(
- `/tenant/:tenantId/segment/project/query`,
- safeWrap(require('./segmentProjectQuery').default),
- )
+ app.post(`/segment/project/query`, safeWrap(require('./segmentProjectQuery').default))
// query all subprojects
+ app.post(`/segment/subproject/query`, safeWrap(require('./segmentSubprojectQuery').default))
+
+ // query all subprojects lite
app.post(
- `/tenant/:tenantId/segment/subproject/query`,
- safeWrap(require('./segmentSubprojectQuery').default),
+ `/segment/subproject/query-lite`,
+ safeWrap(require('./segmentSubprojectQueryLite').default),
)
// get segment by id
- app.get(`/tenant/:tenantId/segment/:id`, safeWrap(require('./segmentFind').default))
- app.put(`/tenant/:tenantId/segment/:id`, safeWrap(require('./segmentUpdate').default))
-
- // app.get(`/tenant/:tenantId/segment/projectGroup/:id`, safeWrap(require('./segmentFind').default))
- // app.get(`/tenant/:tenantId/segment/project/:id`, safeWrap(require('./segmentFind').default))
- // app.get(`/tenant/:tenantId/segment/subproject/:id`, safeWrap(require('./segmentFind').default))
+ app.get(`/segment/:segmentId`, safeWrap(require('./segmentFind').default))
+ app.put(`/segment/:segmentId`, safeWrap(require('./segmentUpdate').default))
+ // Multiple ids
+ app.post(`/segment/id`, safeWrap(require('./segmentByIds').default))
}
diff --git a/backend/src/api/segment/segmentByIds.ts b/backend/src/api/segment/segmentByIds.ts
new file mode 100644
index 0000000000..4bdef55c5b
--- /dev/null
+++ b/backend/src/api/segment/segmentByIds.ts
@@ -0,0 +1,12 @@
+import Permissions from '../../security/permissions'
+import SegmentService from '../../services/segmentService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.segmentRead)
+
+ const segmentService = new SegmentService(req)
+ const payload = await segmentService.findByIds(req.body.ids)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/segment/segmentCreateProjectGroup.ts b/backend/src/api/segment/segmentCreateProjectGroup.ts
index 9304dd60e3..d7489347eb 100644
--- a/backend/src/api/segment/segmentCreateProjectGroup.ts
+++ b/backend/src/api/segment/segmentCreateProjectGroup.ts
@@ -3,7 +3,7 @@ import SegmentService from '../../services/segmentService'
import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.segmentCreate)
+ new PermissionChecker(req).validateHas(Permissions.values.projectGroupCreate)
const payload = await new SegmentService(req).createProjectGroup(req.body)
diff --git a/backend/src/api/segment/segmentFind.ts b/backend/src/api/segment/segmentFind.ts
index d9c9c92cea..86dffe1637 100644
--- a/backend/src/api/segment/segmentFind.ts
+++ b/backend/src/api/segment/segmentFind.ts
@@ -6,7 +6,7 @@ export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.segmentRead)
const segmentService = new SegmentService(req)
- const payload = await segmentService.findById(req.params.id)
+ const payload = await segmentService.findById(req.params.segmentId)
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/segment/segmentSubprojectQueryLite.ts b/backend/src/api/segment/segmentSubprojectQueryLite.ts
new file mode 100644
index 0000000000..2de163b34b
--- /dev/null
+++ b/backend/src/api/segment/segmentSubprojectQueryLite.ts
@@ -0,0 +1,11 @@
+import Permissions from '../../security/permissions'
+import SegmentService from '../../services/segmentService'
+import PermissionChecker from '../../services/user/permissionChecker'
+
+export default async (req, res) => {
+ new PermissionChecker(req).validateHas(Permissions.values.segmentRead)
+
+ const payload = await new SegmentService(req).querySubprojectsLite(req.body)
+
+ await req.responseHandler.success(req, res, payload)
+}
diff --git a/backend/src/api/segment/segmentUpdate.ts b/backend/src/api/segment/segmentUpdate.ts
index c97ab87123..a16dd1a9b3 100644
--- a/backend/src/api/segment/segmentUpdate.ts
+++ b/backend/src/api/segment/segmentUpdate.ts
@@ -5,7 +5,7 @@ import PermissionChecker from '../../services/user/permissionChecker'
export default async (req, res) => {
new PermissionChecker(req).validateHas(Permissions.values.segmentEdit)
- const payload = await new SegmentService(req).update(req.params.id, req.body)
+ const payload = await new SegmentService(req).update(req.params.segmentId, req.body)
await req.responseHandler.success(req, res, payload)
}
diff --git a/backend/src/api/settings/activityTypeCreate.ts b/backend/src/api/settings/activityTypeCreate.ts
index 0fb72d0c46..de69d468db 100644
--- a/backend/src/api/settings/activityTypeCreate.ts
+++ b/backend/src/api/settings/activityTypeCreate.ts
@@ -3,12 +3,11 @@ import SegmentService from '../../services/segmentService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * POST /tenant/{tenantId}/settings/activity/types
+ * POST /settings/activity/types
* @summary Create an activity type
* @tag Activities
* @security Bearer
* @description Create a custom activity type
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @bodyContent {ActivityTypesCreateInput} application/json
* @response 200 - Ok
* @responseContent {ActivityTypes} 200.application/json
diff --git a/backend/src/api/settings/activityTypeList.ts b/backend/src/api/settings/activityTypeList.ts
index 74c9a7fc85..b4b26814ec 100644
--- a/backend/src/api/settings/activityTypeList.ts
+++ b/backend/src/api/settings/activityTypeList.ts
@@ -1,12 +1,11 @@
import SegmentService from '../../services/segmentService'
/**
- * GET /tenant/{tenantId}/settings/activity/types
+ * GET /settings/activity/types
* @summary List all activity types
* @tag Activities
* @security Bearer
* @description List all activity types
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @response 200 - Ok
* @responseContent {ActivityTypes} 200.application/json
* @responseExample {ActivityTypes} 200.application/json.ActivityTypes
diff --git a/backend/src/api/settings/activityTypeUpdate.ts b/backend/src/api/settings/activityTypeUpdate.ts
index a52cd26ed1..689a6316d7 100644
--- a/backend/src/api/settings/activityTypeUpdate.ts
+++ b/backend/src/api/settings/activityTypeUpdate.ts
@@ -3,12 +3,11 @@ import SegmentService from '../../services/segmentService'
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * PUT /tenant/{tenantId}/settings/activity/types/{key}
+ * PUT /settings/activity/types/{key}
* @summary Update an activity type
* @tag Activities
* @security Bearer
* @description Update a custom activity type
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @pathParam {string} key - The key of the activity type
* @bodyContent {ActivityTypesUpdateInput} application/json
* @response 200 - Ok
diff --git a/backend/src/api/settings/index.ts b/backend/src/api/settings/index.ts
index 9ea669dbb5..65b137749c 100644
--- a/backend/src/api/settings/index.ts
+++ b/backend/src/api/settings/index.ts
@@ -1,47 +1,20 @@
import { safeWrap } from '../../middlewares/errorMiddleware'
export default (app) => {
- app.put(`/tenant/:tenantId/settings`, safeWrap(require('./settingsSave').default))
- app.get(`/tenant/:tenantId/settings`, safeWrap(require('./settingsFind').default))
+ app.put(`/settings`, safeWrap(require('./settingsSave').default))
+ app.get(`/settings`, safeWrap(require('./settingsFind').default))
- app.get(
- '/tenant/:tenantId/settings/activity/types',
- safeWrap(require('./activityTypeList').default),
- )
+ app.get('/settings/activity/types', safeWrap(require('./activityTypeList').default))
- app.post(
- '/tenant/:tenantId/settings/activity/types',
- safeWrap(require('./activityTypeCreate').default),
- )
+ app.post('/settings/activity/types', safeWrap(require('./activityTypeCreate').default))
- app.put(
- '/tenant/:tenantId/settings/activity/types/:key',
- safeWrap(require('./activityTypeUpdate').default),
- )
+ app.put('/settings/activity/types/:key', safeWrap(require('./activityTypeUpdate').default))
- app.delete(
- '/tenant/:tenantId/settings/activity/types/:key',
- safeWrap(require('./activityTypeDestroy').default),
- )
+ app.delete('/settings/activity/types/:key', safeWrap(require('./activityTypeDestroy').default))
- app.post(
- '/tenant/:tenantId/settings/members/attributes',
- safeWrap(require('./memberAttributeCreate').default),
- )
- app.delete(
- `/tenant/:tenantId/settings/members/attributes`,
- safeWrap(require('./memberAttributeDestroy').default),
- )
- app.put(
- `/tenant/:tenantId/settings/members/attributes/:id`,
- safeWrap(require('./memberAttributeUpdate').default),
- )
- app.get(
- `/tenant/:tenantId/settings/members/attributes`,
- safeWrap(require('./memberAttributeList').default),
- )
- app.get(
- `/tenant/:tenantId/settings/members/attributes/:id`,
- safeWrap(require('./memberAttributeFind').default),
- )
+ app.post('/settings/members/attributes', safeWrap(require('./memberAttributeCreate').default))
+ app.delete(`/settings/members/attributes`, safeWrap(require('./memberAttributeDestroy').default))
+ app.put(`/settings/members/attributes/:id`, safeWrap(require('./memberAttributeUpdate').default))
+ app.get(`/settings/members/attributes`, safeWrap(require('./memberAttributeList').default))
+ app.get(`/settings/members/attributes/:id`, safeWrap(require('./memberAttributeFind').default))
}
diff --git a/backend/src/api/settings/memberAttributeCreate.ts b/backend/src/api/settings/memberAttributeCreate.ts
index 36670f817e..3b55fc5545 100644
--- a/backend/src/api/settings/memberAttributeCreate.ts
+++ b/backend/src/api/settings/memberAttributeCreate.ts
@@ -3,12 +3,11 @@ import MemberAttributeSettingsService from '../../services/memberAttributeSettin
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * POST /tenant/{tenantId}/settings/members/attributes
+ * POST /settings/members/attributes
* @summary Attribute settings: create
* @tag Members
* @security Bearer
* @description Create a members' attribute setting
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @bodyContent {MemberAttributeSettingsCreateInput} application/json
* @response 200 - Ok
* @responseContent {MemberAttributeSettings} 200.application/json
diff --git a/backend/src/api/settings/memberAttributeDestroy.ts b/backend/src/api/settings/memberAttributeDestroy.ts
index 76a3fa8eb7..926385b361 100644
--- a/backend/src/api/settings/memberAttributeDestroy.ts
+++ b/backend/src/api/settings/memberAttributeDestroy.ts
@@ -3,12 +3,11 @@ import MemberAttributeSettingsService from '../../services/memberAttributeSettin
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * DELETE /tenant/{tenantId}/settings/members/attributes
+ * DELETE /settings/members/attributes
* @summary Attribute settings: delete
* @tag Members
* @security Bearer
* @description Delete a members' attribute setting
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @queryParam {string} id - Id to destroy
* @response 200 - Ok
* @response 401 - Unauthorized
diff --git a/backend/src/api/settings/memberAttributeFind.ts b/backend/src/api/settings/memberAttributeFind.ts
index 00982604b9..f33122ff7f 100644
--- a/backend/src/api/settings/memberAttributeFind.ts
+++ b/backend/src/api/settings/memberAttributeFind.ts
@@ -3,12 +3,11 @@ import MemberAttributeSettingsService from '../../services/memberAttributeSettin
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * GET /tenant/{tenantId}/settings/members/attributes/{id}
+ * GET /settings/members/attributes/{id}
* @summary Attributes settings: find
* @tag Members
* @security Bearer
* @description Find a single members' attribute setting by ID
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @pathParam {string} id - The ID of the member attribute's settings
* @response 200 - Ok
* @responseContent {MemberAttributeSettings} 200.application/json
diff --git a/backend/src/api/settings/memberAttributeList.ts b/backend/src/api/settings/memberAttributeList.ts
index 7996937e07..bfb37b8971 100644
--- a/backend/src/api/settings/memberAttributeList.ts
+++ b/backend/src/api/settings/memberAttributeList.ts
@@ -3,12 +3,11 @@ import MemberAttributeSettingsService from '../../services/memberAttributeSettin
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * GET /tenant/{tenantId}/settings/members/attributes
+ * GET /settings/members/attributes
* @summary Attributes settings: list
* @tag Members
* @security Bearer
* @description Get a list of members' attribute settings
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @queryParam {string} [filter[label]] - Filter by label of member attribute settings
* @queryParam {string} [filter[name]] - Filter by name of member attribute settings
* @queryParam {string} [filter[type]] - Filter by type of member attribute settings
diff --git a/backend/src/api/settings/memberAttributeUpdate.ts b/backend/src/api/settings/memberAttributeUpdate.ts
index 37c61372f8..2b39147a82 100644
--- a/backend/src/api/settings/memberAttributeUpdate.ts
+++ b/backend/src/api/settings/memberAttributeUpdate.ts
@@ -3,12 +3,11 @@ import MemberAttributeSettingsService from '../../services/memberAttributeSettin
import PermissionChecker from '../../services/user/permissionChecker'
/**
- * PUT /tenant/{tenantId}/settings/members/attributes/{id}
+ * PUT /settings/members/attributes/{id}
* @summary Attribute settings: update
* @tag Members
* @security Bearer
* @description Update a members' attribute setting
- * @pathParam {string} tenantId - Your workspace/tenant ID
* @pathParam {string} id - The ID of the member attribute settings
* @bodyContent {MemberAttributeSettingsUpdateInput} application/json
* @response 200 - Ok
diff --git a/backend/src/api/systemStatus/index.ts b/backend/src/api/systemStatus/index.ts
new file mode 100644
index 0000000000..1bae32c7c0
--- /dev/null
+++ b/backend/src/api/systemStatus/index.ts
@@ -0,0 +1,5 @@
+import { safeWrap } from '../../middlewares/errorMiddleware'
+
+export default (app) => {
+ app.get(`/system-status`, safeWrap(require('./systemStatus').default))
+}
diff --git a/backend/src/api/systemStatus/systemStatus.ts b/backend/src/api/systemStatus/systemStatus.ts
new file mode 100644
index 0000000000..0ffe64fb13
--- /dev/null
+++ b/backend/src/api/systemStatus/systemStatus.ts
@@ -0,0 +1,9 @@
+import Axios from 'axios'
+
+import { OPEN_STATUS_API_CONFIG } from '../../conf'
+
+export default async (req, res) => {
+ const response = await Axios.get(OPEN_STATUS_API_CONFIG.baseUrl)
+
+ return req.responseHandler.success(req, res, response.data)
+}
diff --git a/backend/src/api/tag/index.ts b/backend/src/api/tag/index.ts
deleted file mode 100644
index 9366f253b8..0000000000
--- a/backend/src/api/tag/index.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- app.post(`/tenant/:tenantId/tag`, safeWrap(require('./tagCreate').default))
- app.post(`/tenant/:tenantId/tag/query`, safeWrap(require('./tagQuery').default))
- app.put(`/tenant/:tenantId/tag/:id`, safeWrap(require('./tagUpdate').default))
- app.post(`/tenant/:tenantId/tag/import`, safeWrap(require('./tagImport').default))
- app.delete(`/tenant/:tenantId/tag`, safeWrap(require('./tagDestroy').default))
- app.get(`/tenant/:tenantId/tag/autocomplete`, safeWrap(require('./tagAutocomplete').default))
- app.get(`/tenant/:tenantId/tag`, safeWrap(require('./tagList').default))
- app.get(`/tenant/:tenantId/tag/:id`, safeWrap(require('./tagFind').default))
-}
diff --git a/backend/src/api/tag/tagAutocomplete.ts b/backend/src/api/tag/tagAutocomplete.ts
deleted file mode 100644
index aae671342b..0000000000
--- a/backend/src/api/tag/tagAutocomplete.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import TagService from '../../services/tagService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tagAutocomplete)
-
- const payload = await new TagService(req).findAllAutocomplete(req.query.query, req.query.limit)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tag/tagCreate.ts b/backend/src/api/tag/tagCreate.ts
deleted file mode 100644
index 5a0aa26741..0000000000
--- a/backend/src/api/tag/tagCreate.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import Permissions from '../../security/permissions'
-import TagService from '../../services/tagService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * POST /tenant/{tenantId}/tag
- * @summary Create a tag
- * @tag Tags
- * @security Bearer
- * @description Create a tag
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @bodyContent {TagNoId} application/json
- * @response 200 - Ok
- * @responseContent {Tag} 200.application/json
- * @responseExample {Tag} 200.application/json.Tag
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tagCreate)
-
- const payload = await new TagService(req).create(req.body)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tag/tagDestroy.ts b/backend/src/api/tag/tagDestroy.ts
deleted file mode 100644
index f21ea895d0..0000000000
--- a/backend/src/api/tag/tagDestroy.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import Permissions from '../../security/permissions'
-import TagService from '../../services/tagService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * DELETE /tenant/{tenantId}/tag/{id}
- * @summary Delete a tag
- * @tag Tags
- * @security Bearer
- * @description Delete a tag.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the tag
- * @response 200 - Ok
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tagDestroy)
-
- await new TagService(req).destroyAll(req.query.ids)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tag/tagFind.ts b/backend/src/api/tag/tagFind.ts
deleted file mode 100644
index 1cfd2bd543..0000000000
--- a/backend/src/api/tag/tagFind.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import Permissions from '../../security/permissions'
-import TagService from '../../services/tagService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * GET /tenant/{tenantId}/tag/{id}
- * @summary Find a tag
- * @tag Tags
- * @security Bearer
- * @description Find a tag by ID
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the tag
- * @response 200 - Ok
- * @responseContent {Tag} 200.application/json
- * @responseExample {Tag} 200.application/json.Tag
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tagRead)
-
- const payload = await new TagService(req).findById(req.params.id)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tag/tagImport.ts b/backend/src/api/tag/tagImport.ts
deleted file mode 100644
index 6dcdf68d03..0000000000
--- a/backend/src/api/tag/tagImport.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Permissions from '../../security/permissions'
-import TagService from '../../services/tagService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tagImport)
-
- await new TagService(req).import(req.body, req.body.importHash)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tag/tagList.ts b/backend/src/api/tag/tagList.ts
deleted file mode 100644
index 81a04238aa..0000000000
--- a/backend/src/api/tag/tagList.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import Permissions from '../../security/permissions'
-import TagService from '../../services/tagService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * GET /tenant/{tenantId}/tag
- * @summary List tags
- * @tag Tags
- * @security Bearer
- * @description Get a list of tags with filtering, sorting and offsetting.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @queryParam {string} [filter[name]] - Filter by the name of the tag.
- * @queryParam {string} [filter[createdAtRange]] - Created at lower bound. If you want a range, send this parameter twice with [min] and [max]. If you send it once it will be interpreted as a lower bound.
- * @queryParam {TagSort} [orderBy] - Sort the results. Default timestamp_DESC.
- * @queryParam {number} [offset] - Skip the first n results. Default 0.
- * @queryParam {number} [limit] - Limit the number of results. Default 50.
- * @response 200 - Ok
- * @responseContent {TagList} 200.application/json
- * @responseExample {TagList} 200.application/json.Tags
- * @response 401 - Unauthorized
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tagRead)
-
- const payload = await new TagService(req).findAndCountAll(req.query)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tag/tagQuery.ts b/backend/src/api/tag/tagQuery.ts
deleted file mode 100644
index ef26cd23a6..0000000000
--- a/backend/src/api/tag/tagQuery.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import TagService from '../../services/tagService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-// /**
-// * POST /tenant/{tenantId}/tag
-// * @summary Create or update an tag
-// * @tag Activities
-// * @security Bearer
-// * @description Create or update an tag. Existence is checked by sourceId and tenantId.
-// * @pathParam {string} tenantId - Your workspace/tenant ID
-// * @bodyContent {TagUpsertInput} application/json
-// * @response 200 - Ok
-// * @responseContent {Tag} 200.application/json
-// * @responseExample {TagUpsert} 200.application/json.Tag
-// * @response 401 - Unauthorized
-// * @response 404 - Not found
-// * @response 429 - Too many requests
-// */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tagRead)
-
- const payload = await new TagService(req).query(req.body)
-
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Tags Advanced Filter', { ...payload }, { ...req })
- }
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tag/tagUpdate.ts b/backend/src/api/tag/tagUpdate.ts
deleted file mode 100644
index 2c5022f38d..0000000000
--- a/backend/src/api/tag/tagUpdate.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import Permissions from '../../security/permissions'
-import TagService from '../../services/tagService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * PUT /tenant/{tenantId}/tag/{id}
- * @summary Update an tag
- * @tag Tags
- * @security Bearer
- * @description Update a tag
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the tag
- * @bodyContent {TagNoId} application/json
- * @response 200 - Ok
- * @responseContent {Tag} 200.application/json
- * @responseExample {Tag} 200.application/json.Tag
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.tagEdit)
-
- const payload = await new TagService(req).update(req.params.id, req.body)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/task/index.ts b/backend/src/api/task/index.ts
deleted file mode 100644
index 45cc7c6b5e..0000000000
--- a/backend/src/api/task/index.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- app.post(`/tenant/:tenantId/task/query`, safeWrap(require('./taskQuery').default))
- app.post(`/tenant/:tenantId/task`, safeWrap(require('./taskCreate').default))
- app.put(`/tenant/:tenantId/task/:id`, safeWrap(require('./taskUpdate').default))
- app.put(`/tenant/:tenantId/task/:id`, safeWrap(require('./taskUpdate').default))
- app.post(`/tenant/:tenantId/task/import`, safeWrap(require('./taskImport').default))
- app.delete(`/tenant/:tenantId/task`, safeWrap(require('./taskDestroy').default))
- app.get(`/tenant/:tenantId/task/autocomplete`, safeWrap(require('./taskAutocomplete').default))
- app.get(`/tenant/:tenantId/task`, safeWrap(require('./taskList').default))
- app.get(`/tenant/:tenantId/task/:id`, safeWrap(require('./taskFind').default))
- app.post(`/tenant/:tenantId/task/batch`, safeWrap(require('./taskBatchOperations').default))
-}
diff --git a/backend/src/api/task/taskAutocomplete.ts b/backend/src/api/task/taskAutocomplete.ts
deleted file mode 100644
index 17ff10de69..0000000000
--- a/backend/src/api/task/taskAutocomplete.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import TaskService from '../../services/taskService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.taskAutocomplete)
-
- const payload = await new TaskService(req).findAllAutocomplete(req.query.query, req.query.limit)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/task/taskBatchOperations.ts b/backend/src/api/task/taskBatchOperations.ts
deleted file mode 100644
index 0f8f33b5d3..0000000000
--- a/backend/src/api/task/taskBatchOperations.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import PermissionChecker from '../../services/user/permissionChecker'
-import Permissions from '../../security/permissions'
-import TaskService from '../../services/taskService'
-import Error400 from '../../errors/Error400'
-
-/**
- * POST /tenant/{tenantId}/task/batch
- * @summary Make batch operations on tasks
- * @tag Tasks
- * @security Bearer
- * @description Make batch operations on tasks
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @bodyContent {TaskBatchInput} application/json
- * @response 200 - Ok
- * @responseContent {TaskFindAndUpdateAll} 200.application/json
- * @responseExample {TaskFindAndUpdateAll} 200.application/json.Task
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.taskBatch)
-
- let payload
- switch (req.body.operation) {
- case 'findAndUpdateAll':
- payload = await new TaskService(req).findAndUpdateAll(req.body.payload)
- break
- case 'findAndDeleteAll':
- payload = await new TaskService(req).findAndDeleteAll(req.body.payload)
- break
- default:
- throw new Error400('en', 'tasks.errors.unknownBatchOperation', req.body.operation)
- }
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/task/taskCreate.ts b/backend/src/api/task/taskCreate.ts
deleted file mode 100644
index c5680cabc7..0000000000
--- a/backend/src/api/task/taskCreate.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import Permissions from '../../security/permissions'
-import TaskService from '../../services/taskService'
-import PermissionChecker from '../../services/user/permissionChecker'
-import track from '../../segment/track'
-
-/**
- * POST /tenant/{tenantId}/task
- * @summary Create a task
- * @tag Tasks
- * @security Bearer
- * @description Create a task
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @bodyContent {TaskInput} application/json
- * @response 200 - Ok
- * @responseContent {Task} 200.application/json
- * @responseExample {Task} 200.application/json.Task
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.taskCreate)
-
- const payload = await new TaskService(req).create(req.body)
-
- track(
- 'Task Created',
- { id: payload.id, dueDate: payload.dueDate, members: payload.members },
- { ...req },
- )
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/task/taskDestroy.ts b/backend/src/api/task/taskDestroy.ts
deleted file mode 100644
index 67be2d58dd..0000000000
--- a/backend/src/api/task/taskDestroy.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import Permissions from '../../security/permissions'
-import TaskService from '../../services/taskService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * DELETE /tenant/{tenantId}/task/{id}
- * @summary Delete a task
- * @tag Tasks
- * @security Bearer
- * @description Delete a task.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the task
- * @response 200 - Ok
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.taskDestroy)
-
- await new TaskService(req).destroyAll(req.query.ids)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/task/taskFind.ts b/backend/src/api/task/taskFind.ts
deleted file mode 100644
index b66012d739..0000000000
--- a/backend/src/api/task/taskFind.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import Permissions from '../../security/permissions'
-import TaskService from '../../services/taskService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * GET /tenant/{tenantId}/task/{id}
- * @summary Find a task
- * @tag Tasks
- * @security Bearer
- * @description Find a task by ID
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the task
- * @response 200 - Ok
- * @responseContent {TaskResponse} 200.application/json
- * @responseExample {Task} 200.application/json.Task
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.taskRead)
-
- const payload = await new TaskService(req).findById(req.params.id)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/task/taskImport.ts b/backend/src/api/task/taskImport.ts
deleted file mode 100644
index b2b9ec5f18..0000000000
--- a/backend/src/api/task/taskImport.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Permissions from '../../security/permissions'
-import TaskService from '../../services/taskService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.taskImport)
-
- await new TaskService(req).import(req.body, req.body.importHash)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/task/taskList.ts b/backend/src/api/task/taskList.ts
deleted file mode 100644
index 95daf332cf..0000000000
--- a/backend/src/api/task/taskList.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import TaskService from '../../services/taskService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.taskRead)
-
- const payload = await new TaskService(req).findAndCountAll(req.query)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/task/taskQuery.ts b/backend/src/api/task/taskQuery.ts
deleted file mode 100644
index 41d6f25e79..0000000000
--- a/backend/src/api/task/taskQuery.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import TaskService from '../../services/taskService'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-/**
- * POST /tenant/{tenantId}/task/query
- * @summary Query tasks
- * @tag Tasks
- * @security Bearer
- * @description Query tasks. It accepts filters, sorting options and pagination.
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @bodyContent {TaskQuery} application/json
- * @response 200 - Ok
- * @responseContent {TaskList} 200.application/json
- * @responseExample {TaskList} 200.application/json.Task
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.taskRead)
-
- const payload = await new TaskService(req).query(req.body)
-
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Tasks Advanced Filter', { ...payload }, { ...req })
- }
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/task/taskUpdate.ts b/backend/src/api/task/taskUpdate.ts
deleted file mode 100644
index 8422122e47..0000000000
--- a/backend/src/api/task/taskUpdate.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import Permissions from '../../security/permissions'
-import TaskService from '../../services/taskService'
-import PermissionChecker from '../../services/user/permissionChecker'
-import track from '../../segment/track'
-
-/**
- * PUT /tenant/{tenantId}/task/{id}
- * @summary Update an task
- * @tag Tasks
- * @security Bearer
- * @description Update a task
- * @pathParam {string} tenantId - Your workspace/tenant ID
- * @pathParam {string} id - The ID of the task
- * @bodyContent {TaskInput} application/json
- * @response 200 - Ok
- * @responseContent {Task} 200.application/json
- * @responseExample {Task} 200.application/json.Task
- * @response 401 - Unauthorized
- * @response 404 - Not found
- * @response 429 - Too many requests
- */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.taskEdit)
-
- const taskBeforeUpdate = await new TaskService(req).findById(req.params.id)
- const payload = await new TaskService(req).update(req.params.id, req.body)
-
- if (taskBeforeUpdate.type === 'suggested') {
- track(
- 'Task Created (from suggestion)',
- { id: payload.id, dueDate: payload.dueDate, members: payload.members },
- { ...req },
- )
- }
- if (taskBeforeUpdate.status === 'in-progress' && payload.status === 'done') {
- track(
- 'Task Completed',
- {
- id: payload.id,
- dueDate: payload.dueDate,
- members: payload.members,
- status: payload.status,
- },
- { ...req },
- )
- } else {
- track(
- 'Task Updated',
- {
- id: payload.id,
- dueDate: payload.dueDate,
- members: payload.members,
- status: payload.status,
- },
- { ...req },
- )
- }
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tenant/index.ts b/backend/src/api/tenant/index.ts
deleted file mode 100644
index acee2917f8..0000000000
--- a/backend/src/api/tenant/index.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- app.post(
- `/tenant/invitation/:token/accept`,
- safeWrap(require('./tenantInvitationAccept').default),
- )
- app.delete(
- `/tenant/invitation/:token/decline`,
- safeWrap(require('./tenantInvitationDecline').default),
- )
- app.post(`/tenant`, safeWrap(require('./tenantCreate').default))
- app.put(`/tenant/:id`, safeWrap(require('./tenantUpdate').default))
- app.delete(`/tenant`, safeWrap(require('./tenantDestroy').default))
- app.get(`/tenant`, safeWrap(require('./tenantList').default))
- app.get(`/tenant/url`, safeWrap(require('./tenantFind').default))
- app.get(`/tenant/:id`, safeWrap(require('./tenantFind').default))
- app.get(`/tenant/:tenantId/membersToMerge`, safeWrap(require('./tenantMembersToMerge').default))
- app.get(
- `/tenant/:tenantId/organizationsToMerge`,
- safeWrap(require('./tenantOrganizationsToMerge').default),
- )
- app.post(`/tenant/:tenantId/sampleData`, safeWrap(require('./tenantGenerateSampleData').default))
- app.delete(`/tenant/:tenantId/sampleData`, safeWrap(require('./tenantDeleteSampleData').default))
-}
diff --git a/backend/src/api/tenant/tenantCreate.ts b/backend/src/api/tenant/tenantCreate.ts
deleted file mode 100644
index 4cc6ed6317..0000000000
--- a/backend/src/api/tenant/tenantCreate.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import Error403 from '../../errors/Error403'
-import identifyTenant from '../../segment/identifyTenant'
-import telemetryTrack from '../../segment/telemetryTrack'
-import track from '../../segment/track'
-import TenantService from '../../services/tenantService'
-
-export default async (req, res) => {
- if (!req.currentUser || !req.currentUser.id) {
- throw new Error403(req.language)
- }
-
- const payload = await new TenantService(req).create(req.body)
-
- track(
- 'Tenant Created',
- {
- id: payload.id,
- name: payload.name,
- onboard: !!payload.onboard,
- },
- { ...req },
- )
- identifyTenant({ ...req, currentTenant: payload })
-
- telemetryTrack('Tenant created', {}, { ...req })
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tenant/tenantDeleteSampleData.ts b/backend/src/api/tenant/tenantDeleteSampleData.ts
deleted file mode 100644
index 9067fb1941..0000000000
--- a/backend/src/api/tenant/tenantDeleteSampleData.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import Error403 from '../../errors/Error403'
-import { i18n } from '../../i18n'
-import track from '../../segment/track'
-import SampleDataService from '../../services/sampleDataService'
-import Permissions from '../../security/permissions'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- if (!req.currentUser || !req.currentUser.id) {
- throw new Error403(req.language)
- }
-
- new PermissionChecker(req).validateHas(Permissions.values.memberDestroy)
-
- await new SampleDataService(req).deleteSampleData()
-
- track('Delete sample data', {}, { ...req })
-
- req.responseHandler.success(req, res, {
- message: i18n(req.language, 'tenant.sampleDataDeletionCompleted'),
- })
-}
diff --git a/backend/src/api/tenant/tenantDestroy.ts b/backend/src/api/tenant/tenantDestroy.ts
deleted file mode 100644
index 1b14f34083..0000000000
--- a/backend/src/api/tenant/tenantDestroy.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import Error403 from '../../errors/Error403'
-import TenantService from '../../services/tenantService'
-
-export default async (req, res) => {
- if (!req.currentUser || !req.currentUser.id) {
- throw new Error403(req.language)
- }
-
- // In the case of the Tenant, specific permissions like tenantDestroy and tenantEdit are
- // checked inside the service
- await new TenantService(req).destroyAll(req.query.ids)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tenant/tenantFind.ts b/backend/src/api/tenant/tenantFind.ts
deleted file mode 100644
index 6f27d6c1b2..0000000000
--- a/backend/src/api/tenant/tenantFind.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import identifyTenant from '../../segment/identifyTenant'
-import TenantService from '../../services/tenantService'
-import Error404 from '../../errors/Error404'
-
-export default async (req, res) => {
- let payload
-
- if (req.params.id) {
- payload = await new TenantService(req).findById(req.params.id)
- } else {
- payload = await new TenantService(req).findByUrl(req.query.url)
- }
-
- if (payload) {
- if (req.currentUser) {
- identifyTenant({ ...req, currentTenant: payload })
- }
-
- await req.responseHandler.success(req, res, payload)
- } else {
- throw new Error404()
- }
-}
diff --git a/backend/src/api/tenant/tenantGenerateSampleData.ts b/backend/src/api/tenant/tenantGenerateSampleData.ts
deleted file mode 100644
index 623998a251..0000000000
--- a/backend/src/api/tenant/tenantGenerateSampleData.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import Error403 from '../../errors/Error403'
-import { i18n } from '../../i18n'
-import SampleDataService from '../../services/sampleDataService'
-import track from '../../segment/track'
-import Permissions from '../../security/permissions'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-const fs = require('fs')
-const path = require('path')
-
-export default async (req, res) => {
- if (!req.currentUser || !req.currentUser.id) {
- throw new Error403(req.language)
- }
-
- new PermissionChecker(req).validateHas(Permissions.values.memberCreate)
-
- const sampleMembersActivities = JSON.parse(
- fs.readFileSync(
- path.resolve(__dirname, '../../database/initializers/sample-data.json'),
- 'utf8',
- ),
- )
-
- track('Generate sample data', {}, { ...req })
-
- await req.responseHandler.success(req, res, {
- message: i18n(req.language, 'tenant.sampleDataCreationStarted'),
- })
-
- await new SampleDataService(req).generateSampleData(sampleMembersActivities)
-}
diff --git a/backend/src/api/tenant/tenantInvitationAccept.ts b/backend/src/api/tenant/tenantInvitationAccept.ts
deleted file mode 100644
index 5e6c428378..0000000000
--- a/backend/src/api/tenant/tenantInvitationAccept.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import Error403 from '../../errors/Error403'
-import TenantService from '../../services/tenantService'
-
-export default async (req, res) => {
- if (!req.currentUser || !req.currentUser.id) {
- throw new Error403(req.language)
- }
-
- const payload = await new TenantService(req).acceptInvitation(
- req.params.token,
- Boolean(req.body.forceAcceptOtherEmail),
- )
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tenant/tenantInvitationDecline.ts b/backend/src/api/tenant/tenantInvitationDecline.ts
deleted file mode 100644
index d2d808a314..0000000000
--- a/backend/src/api/tenant/tenantInvitationDecline.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import Error403 from '../../errors/Error403'
-import TenantService from '../../services/tenantService'
-
-export default async (req, res) => {
- if (!req.currentUser || !req.currentUser.id) {
- throw new Error403(req.language)
- }
-
- const payload = await new TenantService(req).declineInvitation(req.params.token)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tenant/tenantList.ts b/backend/src/api/tenant/tenantList.ts
deleted file mode 100644
index 3b886311dd..0000000000
--- a/backend/src/api/tenant/tenantList.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import Error403 from '../../errors/Error403'
-import TenantService from '../../services/tenantService'
-
-export default async (req, res) => {
- if (!req.currentUser || !req.currentUser.id) {
- throw new Error403(req.language)
- }
-
- const payload = await new TenantService(req).findAndCountAll(req.query)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tenant/tenantMembersToMerge.ts b/backend/src/api/tenant/tenantMembersToMerge.ts
deleted file mode 100644
index afc3934091..0000000000
--- a/backend/src/api/tenant/tenantMembersToMerge.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import Error403 from '../../errors/Error403'
-import TenantService from '../../services/tenantService'
-
-export default async (req, res) => {
- if (!req.currentUser || !req.currentUser.id) {
- throw new Error403(req.language)
- }
-
- const payload = await new TenantService(req).findMembersToMerge(req.query)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tenant/tenantOrganizationsToMerge.ts b/backend/src/api/tenant/tenantOrganizationsToMerge.ts
deleted file mode 100644
index fa5498ca1d..0000000000
--- a/backend/src/api/tenant/tenantOrganizationsToMerge.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import Error403 from '../../errors/Error403'
-import TenantService from '../../services/tenantService'
-
-export default async (req, res) => {
- if (!req.currentUser || !req.currentUser.id) {
- throw new Error403(req.language)
- }
-
- const payload = await new TenantService(req).findOrganizationsToMerge(req.query)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/tenant/tenantUpdate.ts b/backend/src/api/tenant/tenantUpdate.ts
deleted file mode 100644
index 1f09fd3749..0000000000
--- a/backend/src/api/tenant/tenantUpdate.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import Error403 from '../../errors/Error403'
-import TenantService from '../../services/tenantService'
-
-export default async (req, res) => {
- if (!req.currentUser || !req.currentUser.id) {
- throw new Error403(req.language)
- }
-
- // In the case of the Tenant, specific permissions like tenantDestroy and tenantEdit are
- // checked inside the service
- const payload = await new TenantService(req).update(req.params.id, req.body)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/user/index.ts b/backend/src/api/user/index.ts
index c21a3639cb..8fbb9a948d 100644
--- a/backend/src/api/user/index.ts
+++ b/backend/src/api/user/index.ts
@@ -1,11 +1,7 @@
import { safeWrap } from '../../middlewares/errorMiddleware'
export default (app) => {
- app.post(`/tenant/:tenantId/user`, safeWrap(require('./userCreate').default))
- app.put(`/tenant/:tenantId/user`, safeWrap(require('./userEdit').default))
- app.post(`/tenant/:tenantId/user/import`, safeWrap(require('./userImport').default))
- app.delete(`/tenant/:tenantId/user`, safeWrap(require('./userDestroy').default))
- app.get(`/tenant/:tenantId/user`, safeWrap(require('./userList').default))
- app.get(`/tenant/:tenantId/user/autocomplete`, safeWrap(require('./userAutocomplete').default))
- app.get(`/tenant/:tenantId/user/:id`, safeWrap(require('./userFind').default))
+ app.get(`/user`, safeWrap(require('./userList').default))
+ app.get(`/user/autocomplete`, safeWrap(require('./userAutocomplete').default))
+ app.get(`/user/:id`, safeWrap(require('./userFind').default))
}
diff --git a/backend/src/api/user/userCreate.ts b/backend/src/api/user/userCreate.ts
deleted file mode 100644
index 4a8bf84f56..0000000000
--- a/backend/src/api/user/userCreate.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import UserCreator from '../../services/user/userCreator'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.userCreate)
-
- const creator = new UserCreator(req)
-
- const payload = await creator.execute(req.body)
-
- track('User Invited', { ...req.body }, { ...req })
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/user/userDestroy.ts b/backend/src/api/user/userDestroy.ts
deleted file mode 100644
index eb65ef0527..0000000000
--- a/backend/src/api/user/userDestroy.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import Permissions from '../../security/permissions'
-import UserDestroyer from '../../services/user/userDestroyer'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.userDestroy)
-
- const remover = new UserDestroyer(req)
-
- await remover.destroyAll(req.query)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/user/userEdit.ts b/backend/src/api/user/userEdit.ts
deleted file mode 100644
index ae8bd20c24..0000000000
--- a/backend/src/api/user/userEdit.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import Permissions from '../../security/permissions'
-import UserEditor from '../../services/user/userEditor'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.userEdit)
-
- const editor = new UserEditor(req)
-
- await editor.update(req.body)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/user/userImport.ts b/backend/src/api/user/userImport.ts
deleted file mode 100644
index 2b3ee8ed54..0000000000
--- a/backend/src/api/user/userImport.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Permissions from '../../security/permissions'
-import UserImporter from '../../services/user/userImporter'
-import PermissionChecker from '../../services/user/permissionChecker'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.userImport)
-
- await new UserImporter(req).import(req.body, req.body.importHash)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/webhooks/discourse.ts b/backend/src/api/webhooks/discourse.ts
deleted file mode 100644
index 0ba0b71dfb..0000000000
--- a/backend/src/api/webhooks/discourse.ts
+++ /dev/null
@@ -1,101 +0,0 @@
-import { PlatformType } from '@crowd/types'
-import IntegrationRepository from '../../database/repositories/integrationRepository'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import IncomingWebhookRepository from '../../database/repositories/incomingWebhookRepository'
-import { WebhookType } from '../../types/webhooks'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerProcessWebhookMessage } from '../../types/mq/nodeWorkerProcessWebhookMessage'
-import { verifyWebhookSignature } from '../../utils/crypto'
-
-export default async (req, res) => {
- const signature = req.headers['x-discourse-event-signature']
- const eventId = req.headers['x-discourse-event-id']
- const eventType = req.headers['x-discourse-event-type']
- const event = req.headers['x-discourse-event']
- const data = req.body
-
- let integration
-
- try {
- integration = await IntegrationRepository.findActiveIntegrationByPlatform(
- PlatformType.DISCOURSE,
- req.params.tenantId,
- )
- } catch (error) {
- req.log.error({ error }, 'Internal error when verifying Discourse webhook')
- await req.responseHandler.success(
- req,
- res,
- 'Internal error when verifying Discourse webhook',
- 200,
- )
- return
- }
-
- if (integration) {
- try {
- if (!signature) {
- req.log.error({ signature }, 'Discourse Webhook signature header missing!')
- await req.responseHandler.success(
- req,
- res,
- 'Discourse Webhook signature header missing!',
- 200,
- )
- return
- }
-
- if (
- !verifyWebhookSignature(JSON.stringify(data), integration.settings.webhookSecret, signature)
- ) {
- req.log.error({ signature }, 'Discourse Webhook signature verification failed!')
- await req.responseHandler.success(
- req,
- res,
- 'Discourse Webhook signature verification failed!',
- 200,
- )
- return
- }
- } catch (error) {
- req.log.error({ signature, error }, 'Internal error when verifying discourse webhook')
- await req.responseHandler.success(
- req,
- res,
- 'Internal error when verifying discourse webhook',
- 200,
- )
- return
- }
-
- req.log.info({ integrationId: integration.id }, 'Incoming Discourse Webhook!')
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
- const repo = new IncomingWebhookRepository(options)
-
- const result = await repo.create({
- tenantId: integration.tenantId,
- integrationId: integration.id,
- type: WebhookType.DISCOURSE,
- payload: {
- signature,
- eventId,
- eventType,
- event,
- data,
- },
- })
-
- await sendNodeWorkerMessage(
- integration.tenantId,
- new NodeWorkerProcessWebhookMessage(integration.tenantId, result.id),
- )
-
- await req.responseHandler.success(req, res, {}, 204)
- } else {
- req.log.error(
- { tenantId: req?.params?.tenantId },
- 'No integration found for incoming Discourse Webhook!',
- )
- await req.responseHandler.success(req, res, {}, 200)
- }
-}
diff --git a/backend/src/api/webhooks/github.ts b/backend/src/api/webhooks/github.ts
deleted file mode 100644
index 0fb00425b1..0000000000
--- a/backend/src/api/webhooks/github.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import { PlatformType } from '@crowd/types'
-import IntegrationRepository from '../../database/repositories/integrationRepository'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import IncomingWebhookRepository from '../../database/repositories/incomingWebhookRepository'
-import { WebhookType } from '../../types/webhooks'
-import { getIntegrationStreamWorkerEmitter } from '@/serverless/utils/serviceSQS'
-
-export default async (req, res) => {
- const signature = req.headers['x-hub-signature']
- const event = req.headers['x-github-event']
- const data = req.body
-
- const identifier = data.installation.id.toString()
- const integration = (await IntegrationRepository.findByIdentifier(
- identifier,
- PlatformType.GITHUB,
- )) as any
-
- if (integration) {
- req.log.info({ integrationId: integration.id }, 'Incoming GitHub Webhook!')
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
- const repo = new IncomingWebhookRepository(options)
-
- const result = await repo.create({
- tenantId: integration.tenantId,
- integrationId: integration.id,
- type: WebhookType.GITHUB,
- payload: {
- signature,
- event,
- data,
- },
- })
-
- const streamEmitter = await getIntegrationStreamWorkerEmitter()
-
- await streamEmitter.triggerWebhookProcessing(
- integration.tenantId,
- integration.platform,
- result.id,
- )
-
- await req.responseHandler.success(req, res, {}, 204)
- } else {
- req.log.error({ identifier }, 'No integration found for incoming GitHub Webhook!')
- await req.responseHandler.success(req, res, {}, 200)
- }
-}
diff --git a/backend/src/api/webhooks/index.ts b/backend/src/api/webhooks/index.ts
deleted file mode 100644
index 46bc282433..0000000000
--- a/backend/src/api/webhooks/index.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- // app.post(`/github`, safeWrap(require('./github').default))
- app.post(`/stripe`, safeWrap(require('./stripe').default))
- app.post(`/sendgrid`, safeWrap(require('./sendgrid').default))
- app.post(`/discourse/:tenantId`, safeWrap(require('./discourse').default))
-}
diff --git a/backend/src/api/webhooks/sendgrid.ts b/backend/src/api/webhooks/sendgrid.ts
deleted file mode 100644
index 3c06690bcd..0000000000
--- a/backend/src/api/webhooks/sendgrid.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import sendgridWebhookWorker from '../../serverless/integrations/workers/sendgridWebhookWorker'
-
-export default async (req, res) => {
- const out = await sendgridWebhookWorker(req)
- let status = 200
- if (out.status === 204) {
- status = 204
- }
- await req.responseHandler.success(req, res, out, status)
-}
diff --git a/backend/src/api/webhooks/stripe.ts b/backend/src/api/webhooks/stripe.ts
deleted file mode 100644
index dbce9b44c0..0000000000
--- a/backend/src/api/webhooks/stripe.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import stripeWebhookWorker from '../../serverless/integrations/workers/stripeWebhookWorker'
-
-export default async (req, res) => {
- const out = await stripeWebhookWorker(req)
- let status = 200
- if (out.status === 204) {
- status = 204
- }
- await req.responseHandler.success(req, res, out, status)
-}
diff --git a/backend/src/api/websockets/index.ts b/backend/src/api/websockets/index.ts
index 00cfcc4316..a047aaa640 100644
--- a/backend/src/api/websockets/index.ts
+++ b/backend/src/api/websockets/index.ts
@@ -1,6 +1,8 @@
-import { Server as SocketServer } from 'socket.io'
import { Server } from 'http'
+import { Server as SocketServer } from 'socket.io'
+
import { Logger, getServiceChildLogger } from '@crowd/logging'
+
import WebSocketNamespace from './namespace'
import { IAuthenticatedSocket } from './types'
diff --git a/backend/src/api/websockets/namespace.ts b/backend/src/api/websockets/namespace.ts
index 1cbd334d5c..4e0e2e5ac1 100644
--- a/backend/src/api/websockets/namespace.ts
+++ b/backend/src/api/websockets/namespace.ts
@@ -1,10 +1,13 @@
-import { Logger, getServiceChildLogger } from '@crowd/logging'
import { NextFunction } from 'express'
import { Namespace, Server } from 'socket.io'
+
+import { Logger, getServiceChildLogger } from '@crowd/logging'
+
import { databaseInit } from '../../database/databaseConnection'
import SequelizeRepository from '../../database/repositories/sequelizeRepository'
import TenantUserRepository from '../../database/repositories/tenantUserRepository'
import AuthService from '../../services/auth/authService'
+
import { IAuthenticatedSocket, ISocket, ISocketHandler } from './types'
const logger = getServiceChildLogger('websockets/namespaces')
diff --git a/backend/src/api/websockets/types.ts b/backend/src/api/websockets/types.ts
index 14433692ac..b28ebebf20 100644
--- a/backend/src/api/websockets/types.ts
+++ b/backend/src/api/websockets/types.ts
@@ -1,5 +1,5 @@
-import { Socket } from 'socket.io'
import { NextFunction } from 'express'
+import { Socket } from 'socket.io'
export interface ISocket extends Socket {
database: any
diff --git a/backend/src/api/widget/index.ts b/backend/src/api/widget/index.ts
deleted file mode 100644
index 1d89edee0f..0000000000
--- a/backend/src/api/widget/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { safeWrap } from '../../middlewares/errorMiddleware'
-
-export default (app) => {
- app.post(`/tenant/:tenantId/widget`, safeWrap(require('./widgetCreate').default))
- app.post(`/tenant/:tenantId/widget/query`, safeWrap(require('./widgetQuery').default))
- app.put(`/tenant/:tenantId/widget/:id`, safeWrap(require('./widgetUpdate').default))
- app.post(`/tenant/:tenantId/widget/import`, safeWrap(require('./widgetImport').default))
- app.delete(`/tenant/:tenantId/widget`, safeWrap(require('./widgetDestroy').default))
- app.get(
- `/tenant/:tenantId/widget/autocomplete`,
- safeWrap(require('./widgetAutocomplete').default),
- )
- app.get(`/tenant/:tenantId/widget`, safeWrap(require('./widgetList').default))
- app.get(`/tenant/:tenantId/widget/:id`, safeWrap(require('./widgetFind').default))
-}
diff --git a/backend/src/api/widget/widgetAutocomplete.ts b/backend/src/api/widget/widgetAutocomplete.ts
deleted file mode 100644
index 51491914f3..0000000000
--- a/backend/src/api/widget/widgetAutocomplete.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import PermissionChecker from '../../services/user/permissionChecker'
-import WidgetService from '../../services/widgetService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.widgetAutocomplete)
-
- const payload = await new WidgetService(req).findAllAutocomplete(req.query.query, req.query.limit)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/widget/widgetCreate.ts b/backend/src/api/widget/widgetCreate.ts
deleted file mode 100644
index b1f81d2c5b..0000000000
--- a/backend/src/api/widget/widgetCreate.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import PermissionChecker from '../../services/user/permissionChecker'
-import WidgetService from '../../services/widgetService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.widgetCreate)
-
- const payload = await new WidgetService(req).create(req.body)
-
- track(
- 'Widget Created',
- {
- id: payload.id,
- reportId: payload.report ? payload.report.id : undefined,
- },
- { ...req },
- )
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/widget/widgetDestroy.ts b/backend/src/api/widget/widgetDestroy.ts
deleted file mode 100644
index 162a26ac6e..0000000000
--- a/backend/src/api/widget/widgetDestroy.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import Permissions from '../../security/permissions'
-import PermissionChecker from '../../services/user/permissionChecker'
-import WidgetService from '../../services/widgetService'
-import track from '../../segment/track'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.widgetDestroy)
-
- await new WidgetService(req).destroyAll(req.query.ids)
-
- const payload = true
-
- track('Widget Deleted', { ids: req.query.ids }, { ...req })
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/widget/widgetFind.ts b/backend/src/api/widget/widgetFind.ts
deleted file mode 100644
index 2486f1e94e..0000000000
--- a/backend/src/api/widget/widgetFind.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import PermissionChecker from '../../services/user/permissionChecker'
-import WidgetService from '../../services/widgetService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.widgetRead)
-
- const payload = await new WidgetService(req).findById(req.params.id)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/widget/widgetImport.ts b/backend/src/api/widget/widgetImport.ts
deleted file mode 100644
index e138930116..0000000000
--- a/backend/src/api/widget/widgetImport.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import Permissions from '../../security/permissions'
-import PermissionChecker from '../../services/user/permissionChecker'
-import WidgetService from '../../services/widgetService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.widgetImport)
-
- await new WidgetService(req).import(req.body, req.body.importHash)
-
- const payload = true
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/widget/widgetList.ts b/backend/src/api/widget/widgetList.ts
deleted file mode 100644
index 0223c655d4..0000000000
--- a/backend/src/api/widget/widgetList.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import Permissions from '../../security/permissions'
-import PermissionChecker from '../../services/user/permissionChecker'
-import WidgetService from '../../services/widgetService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.widgetRead)
-
- const payload = await new WidgetService(req).findAndCountAll(req.query)
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/widget/widgetQuery.ts b/backend/src/api/widget/widgetQuery.ts
deleted file mode 100644
index d65334bd45..0000000000
--- a/backend/src/api/widget/widgetQuery.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import PermissionChecker from '../../services/user/permissionChecker'
-import WidgetService from '../../services/widgetService'
-
-// /**
-// * POST /tenant/{tenantId}/widget
-// * @summary Create or update an widget
-// * @tag Activities
-// * @security Bearer
-// * @description Create or update an widget. Existence is checked by sourceId and tenantId.
-// * @pathParam {string} tenantId - Your workspace/tenant ID
-// * @bodyContent {WidgetUpsertInput} application/json
-// * @response 200 - Ok
-// * @responseContent {Widget} 200.application/json
-// * @responseExample {WidgetUpsert} 200.application/json.Widget
-// * @response 401 - Unauthorized
-// * @response 404 - Not found
-// * @response 429 - Too many requests
-// */
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.widgetRead)
-
- const payload = await new WidgetService(req).query(req.body)
-
- if (req.query.filter && Object.keys(req.query.filter).length > 0) {
- track('Widgets Advanced Filter', { ...payload }, { ...req })
- }
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/api/widget/widgetUpdate.ts b/backend/src/api/widget/widgetUpdate.ts
deleted file mode 100644
index 823efc07e5..0000000000
--- a/backend/src/api/widget/widgetUpdate.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import Permissions from '../../security/permissions'
-import track from '../../segment/track'
-import PermissionChecker from '../../services/user/permissionChecker'
-import WidgetService from '../../services/widgetService'
-
-export default async (req, res) => {
- new PermissionChecker(req).validateHas(Permissions.values.widgetEdit)
-
- const payload = await new WidgetService(req).update(req.params.id, req.body)
-
- track(
- 'Widget Updated',
- {
- id: payload.id,
- reportId: payload.report ? payload.report.id : undefined,
- },
- { ...req },
- )
-
- await req.responseHandler.success(req, res, payload)
-}
diff --git a/backend/src/bin/api.ts b/backend/src/bin/api.ts
index 94c3362c38..0e116d6c1b 100644
--- a/backend/src/bin/api.ts
+++ b/backend/src/bin/api.ts
@@ -1,5 +1,6 @@
-import { getServiceLogger } from '@crowd/logging'
import { timeout } from '@crowd/common'
+import { getServiceLogger } from '@crowd/logging'
+
import server from '../api'
import { API_CONFIG } from '../conf'
diff --git a/backend/src/bin/discord-ws.ts b/backend/src/bin/discord-ws.ts
deleted file mode 100644
index 997e670e3c..0000000000
--- a/backend/src/bin/discord-ws.ts
+++ /dev/null
@@ -1,274 +0,0 @@
-import { Client, Events, GatewayIntentBits, MessageType } from 'discord.js'
-import moment from 'moment'
-import { processPaginated, timeout } from '@crowd/common'
-import { RedisCache, getRedisClient } from '@crowd/redis'
-import { getChildLogger, getServiceLogger } from '@crowd/logging'
-import { PlatformType } from '@crowd/types'
-import { SpanStatusCode, getServiceTracer } from '@crowd/tracing'
-import { DISCORD_CONFIG, REDIS_CONFIG } from '../conf'
-import SequelizeRepository from '../database/repositories/sequelizeRepository'
-import IntegrationRepository from '../database/repositories/integrationRepository'
-import IncomingWebhookRepository from '../database/repositories/incomingWebhookRepository'
-import { DiscordWebsocketEvent, DiscordWebsocketPayload, WebhookType } from '../types/webhooks'
-import {
- getIntegrationRunWorkerEmitter,
- getIntegrationStreamWorkerEmitter,
-} from '@/serverless/utils/serviceSQS'
-
-const tracer = getServiceTracer()
-const log = getServiceLogger()
-
-async function executeIfNotExists(
- key: string,
- cache: RedisCache,
- fn: () => Promise,
- delayMilliseconds?: number,
-) {
- if (delayMilliseconds) {
- await timeout(delayMilliseconds)
- }
-
- const exists = await cache.get(key)
- if (!exists) {
- await fn()
- await cache.set(key, '1', 2 * 60 * 60)
- }
-}
-
-async function spawnClient(
- name: string,
- token: string,
- cache: RedisCache,
- delayMilliseconds?: number,
-) {
- const logger = getChildLogger('discord-ws', log, { clientName: name })
-
- const repoOptions = await SequelizeRepository.getDefaultIRepositoryOptions()
- const repo = new IncomingWebhookRepository(repoOptions)
-
- const processPayload = async (
- event: DiscordWebsocketEvent,
- data: any,
- guildId: string,
- ): Promise => {
- const payload: DiscordWebsocketPayload = {
- event,
- data,
- }
-
- logger.info({ payload }, 'Processing Discord WS Message!')
-
- await tracer.startActiveSpan('ProcessDiscordWSMessage', async (span) => {
- try {
- const integration = (await IntegrationRepository.findByIdentifier(
- guildId,
- PlatformType.DISCORD,
- )) as any
-
- const result = await repo.create({
- tenantId: integration.tenantId,
- integrationId: integration.id,
- type: WebhookType.DISCORD,
- payload,
- })
-
- const streamEmitter = await getIntegrationStreamWorkerEmitter()
-
- await streamEmitter.triggerWebhookProcessing(
- integration.tenantId,
- integration.platform,
- result.id,
- )
- span.setStatus({
- code: SpanStatusCode.OK,
- })
- } catch (err) {
- if (err.code === 404) {
- logger.warn({ guildId }, 'No integration found for incoming Discord WS Message!')
- } else {
- span.setStatus({
- code: SpanStatusCode.ERROR,
- message: err,
- })
- logger.error(
- err,
- {
- discordPayload: JSON.stringify(payload),
- guildId,
- },
- 'Error processing Discord WS Message!',
- )
- }
- } finally {
- span.end()
- }
- })
- }
-
- const client = new Client({
- intents: [
- GatewayIntentBits.Guilds,
- GatewayIntentBits.GuildMembers,
- GatewayIntentBits.GuildMessages,
- GatewayIntentBits.GuildMessageReactions,
- GatewayIntentBits.DirectMessages,
- GatewayIntentBits.DirectMessageReactions,
- GatewayIntentBits.MessageContent,
- ],
- })
-
- // listen to client events
- client.on(Events.ClientReady, () => {
- logger.info('Discord WS client is ready!')
- })
-
- client.on(Events.Error, (err) => {
- logger.error(err, 'Discord WS client error! Exiting...')
- process.exit(1)
- })
-
- client.on(Events.Debug, (message) => {
- logger.debug({ debugMsg: message }, 'Discord WS client debug message!')
- })
-
- client.on(Events.Warn, (message) => {
- logger.warn({ warning: message }, 'Discord WS client warning!')
- })
-
- // listen to discord events
- client.on(Events.GuildMemberAdd, async (m) => {
- const member = m as any
- await executeIfNotExists(
- `member-${member.userId}`,
- cache,
- async () => {
- logger.debug(
- {
- member: member.displayName,
- guildId: member.guildId ?? member.guild.id,
- userId: member.userId,
- },
- 'Member joined guild!',
- )
- await processPayload(
- DiscordWebsocketEvent.MEMBER_ADDED,
- member,
- member.guildId ?? member.guild.id,
- )
- },
- delayMilliseconds,
- )
- })
-
- client.on(Events.MessageCreate, async (message) => {
- if (message.type === MessageType.Default || message.type === MessageType.Reply) {
- await executeIfNotExists(
- `msg-${message.id}`,
- cache,
- async () => {
- logger.debug(
- {
- guildId: message.guildId,
- channelId: message.channelId,
- message: message.cleanContent,
- authorId: message.author,
- },
- 'Message created!',
- )
- await processPayload(DiscordWebsocketEvent.MESSAGE_CREATED, message, message.guildId)
- },
- delayMilliseconds,
- )
- }
- })
-
- client.on(Events.MessageUpdate, async (oldMessage, newMessage) => {
- if (newMessage.type === MessageType.Default && newMessage.editedTimestamp) {
- await executeIfNotExists(
- `msg-modified-${newMessage.id}-${newMessage.editedTimestamp}`,
- cache,
- async () => {
- logger.debug(
- {
- guildId: newMessage.guildId,
- channelId: newMessage.channelId,
- oldMessageId: oldMessage.id,
- newMessage: newMessage.cleanContent,
- authorId: newMessage.author,
- },
- 'Message updated!',
- )
- await processPayload(
- DiscordWebsocketEvent.MESSAGE_UPDATED,
- {
- message: newMessage,
- oldMessage,
- },
- newMessage.guildId,
- )
- },
- delayMilliseconds,
- )
- }
- })
-
- await client.login(token)
- logger.info('Discord WS client logged in!')
-}
-
-setImmediate(async () => {
- // we are saving heartbeat timestamps in redis every 2 seconds
- // on boot if we detect that there has been a downtime we should trigger discord integration checks
- // so we don't miss anything
- const redis = await getRedisClient(REDIS_CONFIG, true)
- const cache = new RedisCache('discord-ws', redis, log)
-
- const lastHeartbeat = await cache.get('heartbeat')
- let triggerCheck = false
- if (!lastHeartbeat) {
- log.info('No heartbeat found, triggering check!')
- triggerCheck = true
- } else {
- const diff = moment().diff(lastHeartbeat, 'seconds')
- // if we do rolling update deploys (kubernetes default)
- // we might catch a heartbeat without the need to trigger a check
- if (diff > 5) {
- log.warn('Heartbeat is stale, triggering check!')
- triggerCheck = true
- }
- }
-
- if (triggerCheck) {
- const emitter = await getIntegrationRunWorkerEmitter()
-
- await processPaginated(
- async (page) => IntegrationRepository.findAllActive(PlatformType.DISCORD, page, 10),
- async (integrations) => {
- log.warn(`Found ${integrations.length} integrations to trigger check for!`)
- for (const integration of integrations) {
- await emitter.triggerIntegrationRun(
- integration.tenantId,
- integration.platform,
- integration.id,
- false,
- )
- }
- },
- )
- }
-
- await spawnClient(
- 'first-app',
- DISCORD_CONFIG.token,
- cache,
- DISCORD_CONFIG.token2 ? 1000 : undefined,
- )
-
- if (DISCORD_CONFIG.token2) {
- await spawnClient('second-app', DISCORD_CONFIG.token2, cache)
- }
-
- setInterval(async () => {
- await cache.set('heartbeat', new Date().toISOString())
- }, 2 * 1000)
-})
diff --git a/backend/src/bin/job-generator.ts b/backend/src/bin/job-generator.ts
index a16c78af0a..c5c4c333fc 100644
--- a/backend/src/bin/job-generator.ts
+++ b/backend/src/bin/job-generator.ts
@@ -1,32 +1,29 @@
import { CronJob } from 'cron'
+import fs from 'fs'
+import path from 'path'
+import { QueryTypes, Sequelize } from 'sequelize'
+
import { getServiceLogger } from '@crowd/logging'
-import { SpanStatusCode, getServiceTracer } from '@crowd/tracing'
+import { RedisClient, getRedisClient } from '@crowd/redis'
+
+import { databaseInit } from '@/database/databaseConnection'
+
+import { REDIS_CONFIG } from '../conf'
+
import jobs from './jobs'
-const tracer = getServiceTracer()
const log = getServiceLogger()
for (const job of jobs) {
const cronJob = new CronJob(
job.cronTime,
async () => {
- await tracer.startActiveSpan(`ProcessingJob:${job.name}`, async (span) => {
- log.info({ job: job.name }, 'Triggering job.')
- try {
- await job.onTrigger(log)
- span.setStatus({
- code: SpanStatusCode.OK,
- })
- } catch (err) {
- span.setStatus({
- code: SpanStatusCode.ERROR,
- message: err,
- })
- log.error(err, { job: job.name }, 'Error while executing a job!')
- } finally {
- span.end()
- }
- })
+ log.info({ job: job.name }, 'Triggering job.')
+ try {
+ await job.onTrigger(log)
+ } catch (err) {
+ log.error(err, { job: job.name }, 'Error while executing a job!')
+ }
},
null,
true,
@@ -36,3 +33,39 @@ for (const job of jobs) {
log.info({ job: job.name }, 'Scheduled a job.')
}
}
+
+const liveFilePath = path.join(__dirname, 'tmp/job-generator-live.tmp')
+const readyFilePath = path.join(__dirname, 'tmp/job-generator-ready.tmp')
+
+let seq: Sequelize
+let redis: RedisClient
+const initRedisSeq = async () => {
+ if (!seq) {
+ seq = (await databaseInit()).sequelize as Sequelize
+ }
+
+ if (!redis) {
+ redis = await getRedisClient(REDIS_CONFIG, true)
+ }
+}
+
+setInterval(async () => {
+ try {
+ await initRedisSeq()
+ log.debug('Checking liveness and readiness for job generator.')
+ const [redisPingRes, dbPingRes] = await Promise.all([
+ // ping redis,
+ redis.ping().then((res) => res === 'PONG'),
+ // ping database
+ seq.query('select 1', { type: QueryTypes.SELECT }).then((rows) => rows.length === 1),
+ ])
+ if (redisPingRes && dbPingRes) {
+ await Promise.all([
+ fs.promises.open(liveFilePath, 'a').then((file) => file.close()),
+ fs.promises.open(readyFilePath, 'a').then((file) => file.close()),
+ ])
+ }
+ } catch (err) {
+ log.error(`Error checking liveness and readiness for job generator: ${err}`)
+ }
+}, 5000)
diff --git a/backend/src/bin/jobs/autoImportGroupsioGroups.ts b/backend/src/bin/jobs/autoImportGroupsioGroups.ts
new file mode 100644
index 0000000000..e977a0f53b
--- /dev/null
+++ b/backend/src/bin/jobs/autoImportGroupsioGroups.ts
@@ -0,0 +1,90 @@
+import cronGenerator from 'cron-time-generator'
+
+import { getServiceChildLogger } from '@crowd/logging'
+
+import { getUserSubscriptions } from '@/serverless/integrations/usecases/groupsio/getUserSubscriptions'
+
+import SequelizeRepository from '../../database/repositories/sequelizeRepository'
+import { CrowdJob } from '../../types/jobTypes'
+
+const log = getServiceChildLogger('autoImportGroupsioGroupsCronJob')
+
+interface SetttingsObj {
+ email: string
+ token: string
+ groups: Array<{
+ id: number
+ name: string
+ slug: string
+ groupAddedOn?: Date
+ }>
+ autoImports?: {
+ mainGroup: string
+ isAllowed: boolean
+ }[]
+ password: string
+ tokenError: string
+ tokenExpiry: string
+ updateMemberAttributes: boolean
+}
+
+const job: CrowdJob = {
+ name: 'Auto Import Groups IO Groups',
+ // every 2 days
+ cronTime: cronGenerator.every(2).days(),
+ onTrigger: async () => {
+ log.info('Checking for new groups to auto import.')
+ const dbOptions = await SequelizeRepository.getDefaultIRepositoryOptions()
+
+ const integrations = await dbOptions.database.sequelize.query(
+ `select id, settings from integrations
+ where platform = 'groupsio'
+ and "deletedAt" is null
+ `,
+ )
+
+ log.info(`Found ${integrations[0].length} integrations to check for auto imports.`)
+
+ for (const integration of integrations[0]) {
+ const settings = integration.settings as SetttingsObj
+ if (settings.autoImports) {
+ const allGroups = await getUserSubscriptions(settings.token)
+ log.info(`Found ${allGroups.length} available groups in users's account.`)
+ const existingGroupIds = new Set(settings.groups.map((group) => group.id))
+
+ for (const autoImport of settings.autoImports) {
+ if (autoImport.isAllowed) {
+ const newGroups = allGroups.filter(
+ (group) =>
+ !existingGroupIds.has(group.id) &&
+ group.group_name.startsWith(autoImport.mainGroup),
+ )
+
+ for (const newGroup of newGroups) {
+ log.info(`Adding new group ${newGroup.nice_group_name} to auto-import.`)
+ settings.groups.push({
+ id: newGroup.id,
+ name: newGroup.nice_group_name,
+ slug: newGroup.group_name,
+ groupAddedOn: new Date(),
+ })
+ }
+
+ if (newGroups.length > 0) {
+ log.info(
+ `Added ${newGroups.length} new groups for auto-import in integration ${integration.id}`,
+ )
+ } else {
+ log.info(`No new groups found for auto-import in integration ${integration.id}.`)
+ }
+ }
+ }
+
+ // Update the integration settings in the database
+ await dbOptions.database.integration.update({ settings }, { where: { id: integration.id } })
+ }
+ }
+ },
+}
+
+export default job
diff --git a/backend/src/bin/jobs/checkSqsQueues.ts b/backend/src/bin/jobs/checkSqsQueues.ts
deleted file mode 100644
index 9ee66b1870..0000000000
--- a/backend/src/bin/jobs/checkSqsQueues.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import cronGenerator from 'cron-time-generator'
-import { sendSlackAlert } from '../../utils/slack'
-import { SQS_CONFIG } from '../../conf'
-import { sqs } from '../../services/aws'
-import { CrowdJob } from '../../types/jobTypes'
-
-interface IQueueCount {
- lastCount: number
- increaseCount: number
-}
-
-const queues = [SQS_CONFIG.nodejsWorkerQueue, SQS_CONFIG.pythonWorkerQueue]
-
-const messageCounts: Map = new Map()
-
-const job: CrowdJob = {
- name: 'Check SQS Queues',
- cronTime: cronGenerator.every(10).minutes(),
- onTrigger: async () => {
- for (const queue of queues) {
- const result = await sqs
- .getQueueAttributes({
- QueueUrl: queue,
- AttributeNames: ['ApproximateNumberOfMessages'],
- })
- .promise()
-
- if (result.Attributes) {
- const value = parseInt(result.Attributes.ApproximateNumberOfMessages, 10)
- if (messageCounts.has(queue)) {
- const previousValue = messageCounts.get(queue)
- if (previousValue.lastCount < value) {
- if (previousValue.increaseCount > 2) {
- await sendSlackAlert(
- `*Warning*: Queue ${queue} messages have *increasted #${previousValue.increaseCount} times* - last increase was *from ${previousValue.lastCount} to ${value}*!`,
- )
- }
-
- messageCounts.set(queue, {
- lastCount: value,
- increaseCount: previousValue.increaseCount + 1,
- })
- } else {
- messageCounts.set(queue, {
- lastCount: value,
- increaseCount: 0,
- })
- }
- } else {
- messageCounts.set(queue, {
- lastCount: value,
- increaseCount: value > 0 ? 1 : 0,
- })
- }
- }
- }
- },
-}
-
-export default job
diff --git a/backend/src/bin/jobs/checkStuckIntegrationRuns.ts b/backend/src/bin/jobs/checkStuckIntegrationRuns.ts
index 3c859c29ec..54c36e1661 100644
--- a/backend/src/bin/jobs/checkStuckIntegrationRuns.ts
+++ b/backend/src/bin/jobs/checkStuckIntegrationRuns.ts
@@ -1,20 +1,17 @@
-import { processPaginated } from '@crowd/common'
-import { Logger, getChildLogger, getServiceChildLogger } from '@crowd/logging'
import cronGenerator from 'cron-time-generator'
import moment from 'moment'
+
+import { Logger, getChildLogger, getServiceChildLogger } from '@crowd/logging'
import { IntegrationRunState } from '@crowd/types'
+
import { INTEGRATION_PROCESSING_CONFIG } from '../../conf'
-import IncomingWebhookRepository from '../../database/repositories/incomingWebhookRepository'
import IntegrationRepository from '../../database/repositories/integrationRepository'
import IntegrationRunRepository from '../../database/repositories/integrationRunRepository'
import IntegrationStreamRepository from '../../database/repositories/integrationStreamRepository'
import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
import { IntegrationRun } from '../../types/integrationRunTypes'
import { IntegrationStreamState } from '../../types/integrationStreamTypes'
import { CrowdJob } from '../../types/jobTypes'
-import { NodeWorkerProcessWebhookMessage } from '../../types/mq/nodeWorkerProcessWebhookMessage'
-import { WebhookProcessor } from '../../serverless/integrations/services/webhookProcessor'
const log = getServiceChildLogger('checkStuckIntegrationRuns')
@@ -221,32 +218,6 @@ export const checkRuns = async (): Promise => {
}
}
-export const checkStuckWebhooks = async (): Promise => {
- const dbOptions = await SequelizeRepository.getDefaultIRepositoryOptions()
- const repo = new IncomingWebhookRepository(dbOptions)
-
- // update retryable error state webhooks to pending state
- let errorWebhooks = await repo.findError(1, 20, WebhookProcessor.MAX_RETRY_LIMIT)
-
- while (errorWebhooks.length > 0) {
- await repo.markAllPending(errorWebhooks.map((w) => w.id))
- errorWebhooks = await repo.findError(1, 20, WebhookProcessor.MAX_RETRY_LIMIT)
- }
-
- await processPaginated(
- async (page) => repo.findPending(page, 20),
- async (webhooks) => {
- for (const webhook of webhooks) {
- log.warn({ id: webhook.id }, 'Found stuck webhook! Restarting it!')
- await sendNodeWorkerMessage(
- webhook.tenantId,
- new NodeWorkerProcessWebhookMessage(webhook.tenantId, webhook.id),
- )
- }
- },
- )
-}
-
const job: CrowdJob = {
name: 'Detect & Fix Stuck Integration Runs',
cronTime: cronGenerator.every(90).minutes(),
@@ -254,7 +225,7 @@ const job: CrowdJob = {
if (!running) {
running = true
try {
- await Promise.all([checkRuns(), checkStuckIntegrations(), checkStuckWebhooks()])
+ await Promise.all([checkRuns(), checkStuckIntegrations()])
} finally {
running = false
}
diff --git a/backend/src/bin/jobs/cleanUp.ts b/backend/src/bin/jobs/cleanUp.ts
index cac6cf2021..38b2a6e8df 100644
--- a/backend/src/bin/jobs/cleanUp.ts
+++ b/backend/src/bin/jobs/cleanUp.ts
@@ -1,9 +1,9 @@
import { getServiceChildLogger } from '@crowd/logging'
+
import IncomingWebhookRepository from '../../database/repositories/incomingWebhookRepository'
import IntegrationRunRepository from '../../database/repositories/integrationRunRepository'
import SequelizeRepository from '../../database/repositories/sequelizeRepository'
import { CrowdJob } from '../../types/jobTypes'
-import AuditLogRepository from '../../database/repositories/auditLogRepository'
const MAX_MONTHS_TO_KEEP = 3
@@ -39,13 +39,6 @@ export const cleanUpOldWebhooks = async () => {
await repo.cleanUpOldWebhooks(MAX_MONTHS_TO_KEEP)
}
-export const cleanUpOldAuditLogs = async () => {
- const dbOptions = await SequelizeRepository.getDefaultIRepositoryOptions()
-
- log.info(`Cleaning up audit logs that are older than 1 month!`)
- await AuditLogRepository.cleanUpOldAuditLogs(1, dbOptions)
-}
-
const job: CrowdJob = {
name: 'Clean up old data',
// run once every week on Sunday at 1AM
diff --git a/backend/src/bin/jobs/downgradeExpiredPlans.ts b/backend/src/bin/jobs/downgradeExpiredPlans.ts
deleted file mode 100644
index cf2058175a..0000000000
--- a/backend/src/bin/jobs/downgradeExpiredPlans.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { getServiceChildLogger } from '@crowd/logging'
-import cronGenerator from 'cron-time-generator'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import Plans from '../../security/plans'
-import { CrowdJob } from '../../types/jobTypes'
-
-const log = getServiceChildLogger('downgradeExpiredPlansCronJob')
-
-const job: CrowdJob = {
- name: 'Downgrade Expired Trial Plans',
- // every day
- cronTime: cronGenerator.every(1).days(),
- onTrigger: async () => {
- log.info('Downgrading expired trial plans.')
- const dbOptions = await SequelizeRepository.getDefaultIRepositoryOptions()
-
- const expiredTrialTenants = await dbOptions.database.sequelize.query(
- `select t.id, t.name from tenants t
- where t."isTrialPlan" and t."trialEndsAt" < now()`,
- )
-
- for (const tenant of expiredTrialTenants[0]) {
- await dbOptions.database.tenant.update(
- { isTrialPlan: false, trialEndsAt: null, plan: Plans.values.essential },
- { returning: true, raw: true, where: { id: tenant.id } },
- )
- }
-
- log.info('Downgrading expired non-trial plans')
- const expiredNonTrialTenants = await dbOptions.database.sequelize.query(
- `select t.id, t.name from tenants t
- where (t.plan = ${Plans.values.growth} or t.plan = ${Plans.values.eagleEye} or t.plan = ${Plans.values.scale}) and t."planSubscriptionEndsAt" is not null and t."planSubscriptionEndsAt" + interval '3 days' < now()`,
- )
-
- for (const tenant of expiredNonTrialTenants[0]) {
- await dbOptions.database.tenant.update(
- { plan: Plans.values.essential },
- { returning: true, raw: true, where: { id: tenant.id } },
- )
- }
- },
-}
-
-export default job
diff --git a/backend/src/bin/jobs/eagleEyeEmailDigestTicks.ts b/backend/src/bin/jobs/eagleEyeEmailDigestTicks.ts
deleted file mode 100644
index b7af547801..0000000000
--- a/backend/src/bin/jobs/eagleEyeEmailDigestTicks.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import { Op } from 'sequelize'
-import moment from 'moment'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import { CrowdJob } from '../../types/jobTypes'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerMessageType } from '../../serverless/types/workerTypes'
-import { NodeWorkerMessageBase } from '../../types/mq/nodeWorkerMessageBase'
-
-const job: CrowdJob = {
- name: 'Eagle Eye Email Digest Ticker',
- // every half hour
- cronTime: '*/30 * * * *',
- onTrigger: async () => {
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
- const tenantUsers = (
- await options.database.tenantUser.findAll({
- where: {
- [Op.and]: [
- {
- 'settings.eagleEye.emailDigestActive': {
- [Op.ne]: null,
- },
- },
- {
- 'settings.eagleEye.emailDigestActive': {
- [Op.eq]: true,
- },
- },
- ],
- },
- })
- ).filter(
- (tenantUser) =>
- tenantUser.settings.eagleEye &&
- tenantUser.settings.eagleEye.emailDigestActive &&
- moment() > moment(tenantUser.settings.eagleEye.emailDigest.nextEmailAt),
- )
-
- for (const tenantUser of tenantUsers) {
- await sendNodeWorkerMessage(tenantUser.tenantId, {
- type: NodeWorkerMessageType.NODE_MICROSERVICE,
- user: tenantUser.userId,
- tenant: tenantUser.tenantId,
- service: 'eagle-eye-email-digest',
- } as NodeWorkerMessageBase)
- }
- },
-}
-
-export default job
diff --git a/backend/src/bin/jobs/index.ts b/backend/src/bin/jobs/index.ts
index f0b41bf638..df42e775e2 100644
--- a/backend/src/bin/jobs/index.ts
+++ b/backend/src/bin/jobs/index.ts
@@ -1,40 +1,21 @@
import { CrowdJob } from '../../types/jobTypes'
-import integrationTicks from './integrationTicks'
-import weeklyAnalyticsEmailsCoordinator from './weeklyAnalyticsEmailsCoordinator'
-import memberScoreCoordinator from './memberScoreCoordinator'
-import checkSqsQueues from './checkSqsQueues'
-import refreshMaterializedViews from './refreshMaterializedViews'
-import refreshMaterializedViewsForCube from './refreshMaterializedViewsForCube'
-import downgradeExpiredPlans from './downgradeExpiredPlans'
-import eagleEyeEmailDigestTicks from './eagleEyeEmailDigestTicks'
-import integrationDataChecker from './integrationDataChecker'
-import mergeSuggestions from './mergeSuggestions'
-import refreshSampleData from './refreshSampleData'
-import cleanUp from './cleanUp'
-import checkStuckIntegrationRuns from './checkStuckIntegrationRuns'
-import enrichOrganizations from './organizationEnricher'
-import { WEEKLY_EMAILS_CONFIG } from '../../conf'
-const EMAILS_ENABLED = WEEKLY_EMAILS_CONFIG.enabled === 'true'
+import autoImportGroups from './autoImportGroupsioGroups'
+import checkStuckIntegrationRuns from './checkStuckIntegrationRuns'
+import cleanUp from './cleanUp'
+import integrationTicks from './integrationTicks'
+import refreshGithubRepoSettingsJob from './refreshGithubRepoSettings'
+import refreshGitlabToken from './refreshGitlabToken'
+import refreshGroupsioToken from './refreshGroupsioToken'
const jobs: CrowdJob[] = [
integrationTicks,
- memberScoreCoordinator,
- checkSqsQueues,
- refreshMaterializedViews,
- refreshMaterializedViewsForCube,
- downgradeExpiredPlans,
- eagleEyeEmailDigestTicks,
- integrationDataChecker,
- mergeSuggestions,
- refreshSampleData,
cleanUp,
checkStuckIntegrationRuns,
- enrichOrganizations,
+ refreshGroupsioToken,
+ refreshGitlabToken,
+ refreshGithubRepoSettingsJob,
+ autoImportGroups,
]
-if (EMAILS_ENABLED) {
- jobs.push(weeklyAnalyticsEmailsCoordinator)
-}
-
export default jobs
diff --git a/backend/src/bin/jobs/integrationDataChecker.ts b/backend/src/bin/jobs/integrationDataChecker.ts
deleted file mode 100644
index 8568b2e1fe..0000000000
--- a/backend/src/bin/jobs/integrationDataChecker.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import { CrowdJob } from '../../types/jobTypes'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerMessageType } from '../../serverless/types/workerTypes'
-import { NodeWorkerMessageBase } from '../../types/mq/nodeWorkerMessageBase'
-
-const job: CrowdJob = {
- name: 'Integration Data Checker',
- // every hour on weekdays
- cronTime: '0 * * * 1-5',
- onTrigger: async () => {
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
-
- const integrations = await options.database.integration.findAll({
- where: {
- status: 'done',
- },
- })
-
- for (const integration of integrations) {
- await sendNodeWorkerMessage(integration.id, {
- tenantId: integration.tenantId,
- type: NodeWorkerMessageType.NODE_MICROSERVICE,
- integrationId: integration.id,
- service: 'integration-data-checker',
- } as NodeWorkerMessageBase)
- }
- },
-}
-
-export default job
diff --git a/backend/src/bin/jobs/integrationTicks.ts b/backend/src/bin/jobs/integrationTicks.ts
index cdae0e306b..daa5f197e2 100644
--- a/backend/src/bin/jobs/integrationTicks.ts
+++ b/backend/src/bin/jobs/integrationTicks.ts
@@ -1,5 +1,7 @@
import cronGenerator from 'cron-time-generator'
+
import { getServiceLogger } from '@crowd/logging'
+
import SequelizeRepository from '../../database/repositories/sequelizeRepository'
import { IntegrationProcessor } from '../../serverless/integrations/services/integrationProcessor'
import { IServiceOptions } from '../../services/IServiceOptions'
diff --git a/backend/src/bin/jobs/memberScoreCoordinator.ts b/backend/src/bin/jobs/memberScoreCoordinator.ts
deleted file mode 100644
index 85f5c60497..0000000000
--- a/backend/src/bin/jobs/memberScoreCoordinator.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import cronGenerator from 'cron-time-generator'
-import { CrowdJob } from '../../types/jobTypes'
-import { sendPythonWorkerMessage } from '../../serverless/utils/pythonWorkerSQS'
-import { PythonWorkerMessageType } from '../../serverless/types/workerTypes'
-
-const job: CrowdJob = {
- name: 'Member Score Coordinator',
- cronTime: cronGenerator.every(90).minutes(),
- onTrigger: async () => {
- await sendPythonWorkerMessage('global', {
- type: PythonWorkerMessageType.MEMBERS_SCORE,
- })
- },
-}
-
-export default job
diff --git a/backend/src/bin/jobs/mergeSuggestions.ts b/backend/src/bin/jobs/mergeSuggestions.ts
deleted file mode 100644
index 8cbc69b1cf..0000000000
--- a/backend/src/bin/jobs/mergeSuggestions.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import cronGenerator from 'cron-time-generator'
-import { timeout } from '@crowd/common'
-import TenantService from '../../services/tenantService'
-import { CrowdJob } from '../../types/jobTypes'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerMessageType } from '../../serverless/types/workerTypes'
-import { NodeWorkerMessageBase } from '../../types/mq/nodeWorkerMessageBase'
-
-const job: CrowdJob = {
- name: 'Merge suggestions',
- // every 12 hours
- cronTime: cronGenerator.every(12).hours(),
- onTrigger: async () => {
- const tenants = await TenantService._findAndCountAllForEveryUser({})
- for (const tenant of tenants.rows) {
- await sendNodeWorkerMessage(tenant.id, {
- type: NodeWorkerMessageType.NODE_MICROSERVICE,
- tenant: tenant.id,
- service: 'merge-suggestions',
- } as NodeWorkerMessageBase)
-
- await timeout(300)
- }
- },
-}
-
-export default job
diff --git a/backend/src/bin/jobs/organizationEnricher.ts b/backend/src/bin/jobs/organizationEnricher.ts
deleted file mode 100644
index 4d0eb48ffa..0000000000
--- a/backend/src/bin/jobs/organizationEnricher.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import cronGenerator from 'cron-time-generator'
-import { getServiceLogger } from '@crowd/logging'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import { CrowdJob } from '../../types/jobTypes'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerMessageBase } from '../../types/mq/nodeWorkerMessageBase'
-import { NodeWorkerMessageType } from '../../serverless/types/workerTypes'
-import TenantRepository from '../../database/repositories/tenantRepository'
-
-const job: CrowdJob = {
- name: 'organization enricher',
- cronTime: cronGenerator.everyDay(),
- onTrigger: sendWorkerMessage,
-}
-
-async function sendWorkerMessage() {
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
- const log = getServiceLogger()
- const tenants = await TenantRepository.getPayingTenantIds(options)
- log.info(tenants)
- for (const { id } of tenants) {
- const payload = {
- type: NodeWorkerMessageType.NODE_MICROSERVICE,
- service: 'enrich-organizations',
- tenantId: id,
- } as NodeWorkerMessageBase
- log.info({ payload }, 'enricher worker payload')
- await sendNodeWorkerMessage(id, payload)
- }
-}
-
-export default job
diff --git a/backend/src/bin/jobs/refreshGithubRepoSettings.ts b/backend/src/bin/jobs/refreshGithubRepoSettings.ts
new file mode 100644
index 0000000000..20a385c56e
--- /dev/null
+++ b/backend/src/bin/jobs/refreshGithubRepoSettings.ts
@@ -0,0 +1,68 @@
+/* eslint-disable no-continue */
+import cronGenerator from 'cron-time-generator'
+
+import { IS_DEV_ENV, timeout } from '@crowd/common'
+import { getServiceChildLogger } from '@crowd/logging'
+
+import SequelizeRepository from '../../database/repositories/sequelizeRepository'
+import IntegrationService from '../../services/integrationService'
+import { CrowdJob } from '../../types/jobTypes'
+
+const log = getServiceChildLogger('refreshGithubRepoSettings')
+
+const refreshForGitHub = async () => {
+ log.info('Updating Github repo settings.')
+ const dbOptions = await SequelizeRepository.getDefaultIRepositoryOptions()
+
+ interface Integration {
+ id: string
+ tenantId: string
+ integrationIdentifier: string
+ }
+
+ const githubIntegrations = await dbOptions.database.sequelize.query(
+ `SELECT id, "tenantId", "integrationIdentifier" FROM integrations
+ WHERE platform = 'github' AND "deletedAt" IS NULL
+ AND "createdAt" < NOW() - INTERVAL '1 minute' AND "integrationIdentifier" IS NOT NULL`,
+ )
+
+ for (const integration of githubIntegrations[0] as Integration[]) {
+ log.info(`Updating repo settings for Github integration: ${integration.id}`)
+
+ try {
+ const options = await SequelizeRepository.getDefaultIRepositoryOptions()
+ options.currentTenant = { id: integration.tenantId }
+
+ const integrationService = new IntegrationService(options)
+ // newly discovered repos will be mapped to default segment of the integration
+ await integrationService.updateGithubIntegrationSettings(integration.integrationIdentifier)
+
+ log.info(`Successfully updated repo settings for Github integration: ${integration.id}`)
+ } catch (err) {
+ log.error(
+ `Error updating repo settings for Github integration ${integration.id}: ${err.message}`,
+ )
+ } finally {
+ await timeout(1000)
+ }
+ }
+
+ log.info('Finished updating Github repo settings.')
+}
+
+export const refreshGithubRepoSettings = async () => {
+ log.info('Updating Github repo settings.')
+
+ await refreshForGitHub()
+}
+
+const job: CrowdJob = {
+ name: 'Refresh Github repo settings',
+ // every day
+ cronTime: IS_DEV_ENV ? cronGenerator.every(5).minutes() : cronGenerator.every(1).days(),
+ onTrigger: async () => {
+ await refreshGithubRepoSettings()
+ },
+}
+
+export default job
diff --git a/backend/src/bin/jobs/refreshGitlabToken.ts b/backend/src/bin/jobs/refreshGitlabToken.ts
new file mode 100644
index 0000000000..74e46fbd40
--- /dev/null
+++ b/backend/src/bin/jobs/refreshGitlabToken.ts
@@ -0,0 +1,75 @@
+import axios, { AxiosRequestConfig, AxiosResponse } from 'axios'
+import cronGenerator from 'cron-time-generator'
+
+import { timeout } from '@crowd/common'
+import { getServiceChildLogger } from '@crowd/logging'
+
+import { GITLAB_CONFIG } from '@/conf'
+
+import SequelizeRepository from '../../database/repositories/sequelizeRepository'
+import { CrowdJob } from '../../types/jobTypes'
+
+const log = getServiceChildLogger('refreshGitlabTokenCronJob')
+
+const job: CrowdJob = {
+ name: 'Refresh Gitlab token',
+ // every hour
+ cronTime: cronGenerator.every(1).hours(),
+ onTrigger: async () => {
+ log.info('Checking Gitlab tokens for refresh.')
+ const dbOptions = await SequelizeRepository.getDefaultIRepositoryOptions()
+
+ interface Integration {
+ id: string
+ token: string
+ refreshToken: string
+ }
+
+ const gitlabTokens = await dbOptions.database.sequelize.query(
+ `SELECT id, token, "refreshToken" FROM integrations
+ WHERE platform = 'gitlab' AND "deletedAt" IS NULL
+ AND "createdAt" < NOW() - INTERVAL '1 hour'`,
+ )
+
+ for (const integration of gitlabTokens[0] as Integration[]) {
+ log.info(`Refreshing token for Gitlab integration: ${integration.id}`)
+
+ try {
+ const config: AxiosRequestConfig = {
+ method: 'post',
+ url: 'https://gitlab.com/oauth/token',
+ data: {
+ grant_type: 'refresh_token',
+ refresh_token: integration.refreshToken,
+ client_id: GITLAB_CONFIG.clientId,
+ client_secret: GITLAB_CONFIG.clientSecret,
+ },
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ }
+
+ const response: AxiosResponse = await axios(config)
+
+ const newToken = response.data.access_token
+ const newRefreshToken = response.data.refresh_token
+
+ await dbOptions.database.integration.update(
+ {
+ token: newToken,
+ refreshToken: newRefreshToken,
+ },
+ { where: { id: integration.id } },
+ )
+
+ log.info(`Successfully refreshed token for Gitlab integration: ${integration.id}`)
+ } catch (err) {
+ log.error(`Error refreshing token for Gitlab integration ${integration.id}: ${err.message}`)
+ } finally {
+ await timeout(1000)
+ }
+ }
+ },
+}
+
+export default job
diff --git a/backend/src/bin/jobs/refreshGroupsioToken.ts b/backend/src/bin/jobs/refreshGroupsioToken.ts
new file mode 100644
index 0000000000..6c0fd0b5d8
--- /dev/null
+++ b/backend/src/bin/jobs/refreshGroupsioToken.ts
@@ -0,0 +1,83 @@
+import axios, { AxiosRequestConfig, AxiosResponse } from 'axios'
+import cronGenerator from 'cron-time-generator'
+import moment from 'moment'
+
+import { decryptData } from '@crowd/common'
+import { getServiceChildLogger } from '@crowd/logging'
+
+import SequelizeRepository from '../../database/repositories/sequelizeRepository'
+import { CrowdJob } from '../../types/jobTypes'
+
+const log = getServiceChildLogger('refreshgroupsioTokenCronJob')
+
+const job: CrowdJob = {
+ name: 'Refresh Groups IO token',
+ // every day
+ cronTime: cronGenerator.every(1).days(),
+ onTrigger: async () => {
+ log.info('Checking expiry for current groups io token.')
+ const dbOptions = await SequelizeRepository.getDefaultIRepositoryOptions()
+
+ interface SetttingsObj {
+ email: string
+ token: string
+ groups: string[]
+ password: string
+ tokenError: string
+ tokenExpiry: string
+ updateMemberAttributes: boolean
+ }
+
+ const expiredGroupsIOTokens = await dbOptions.database.sequelize.query(
+ `select id, settings from integrations
+ where platform = 'groupsio'
+ and "deletedAt" is null
+ and DATE_PART('day', to_date( settings ->> 'tokenExpiry', 'YYYY-MM-DD') - now() ) < 2`,
+ )
+
+ for (const integration of expiredGroupsIOTokens[0]) {
+ const thisSetting: SetttingsObj = integration.settings
+ thisSetting.tokenError = ''
+
+ log.info('Refreshing token for groups: ', thisSetting.groups)
+
+ try {
+ const decryptedPassword = decryptData(thisSetting.password)
+
+ const config: AxiosRequestConfig = {
+ method: 'post',
+ url: 'https://groups.io/api/v1/login',
+ params: {
+ email: thisSetting.email,
+ password: decryptedPassword,
+ },
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ }
+
+ const response: AxiosResponse = await axios(config)
+
+ // we need to get cookie from the response and it's expiry
+ const cookie = response.headers['set-cookie'][0].split(';')[0]
+ const cookieExpiryString: string = response.headers['set-cookie'][0]
+ .split(';')[3]
+ .split('=')[1]
+ const cookieExpiry = moment(cookieExpiryString).format('YYYY-MM-DD HH:mm:ss.sss Z')
+
+ thisSetting.token = cookie
+ thisSetting.tokenExpiry = cookieExpiry
+ } catch (err) {
+ thisSetting.tokenError = err.message
+ log.error(err.message)
+ } finally {
+ await dbOptions.database.integration.update(
+ { settings: thisSetting },
+ { where: { id: integration.id } },
+ )
+ }
+ }
+ },
+}
+
+export default job
diff --git a/backend/src/bin/jobs/refreshMaterializedViews.ts b/backend/src/bin/jobs/refreshMaterializedViews.ts
deleted file mode 100644
index a042cc3dad..0000000000
--- a/backend/src/bin/jobs/refreshMaterializedViews.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import cronGenerator from 'cron-time-generator'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import { CrowdJob } from '../../types/jobTypes'
-
-let processing = false
-
-const job: CrowdJob = {
- name: 'Refresh Materialized View',
- // every two hours
- cronTime: cronGenerator.every(2).minutes(),
- onTrigger: async () => {
- if (!processing) {
- processing = true
- } else {
- return
- }
- const dbOptions = await SequelizeRepository.getDefaultIRepositoryOptions()
-
- await dbOptions.database.sequelize.query(
- 'refresh materialized view concurrently "memberActivityAggregatesMVs"',
- )
-
- processing = false
- },
-}
-
-export default job
diff --git a/backend/src/bin/jobs/refreshMaterializedViewsForCube.ts b/backend/src/bin/jobs/refreshMaterializedViewsForCube.ts
deleted file mode 100644
index 1b9a2aab10..0000000000
--- a/backend/src/bin/jobs/refreshMaterializedViewsForCube.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { Logger, logExecutionTimeV2 } from '@crowd/logging'
-import { CrowdJob } from '../../types/jobTypes'
-import { databaseInit } from '../../database/databaseConnection'
-
-let processing = false
-
-const job: CrowdJob = {
- name: 'Refresh Materialized View For Cube',
- cronTime: '1,31 * * * *',
- onTrigger: async (log: Logger) => {
- if (!processing) {
- processing = true
- } else {
- return
- }
-
- // initialize database with 15 minutes query timeout
- const database = await databaseInit(1000 * 60 * 15)
-
- const materializedViews = [
- 'mv_members_cube',
- 'mv_activities_cube',
- 'mv_organizations_cube',
- 'mv_segments_cube',
- ]
-
- for (const view of materializedViews) {
- await logExecutionTimeV2(
- () =>
- database.sequelize.query(`REFRESH MATERIALIZED VIEW CONCURRENTLY "${view}"`, {
- useMaster: true,
- }),
- log,
- `Refresh Materialized View ${view}`,
- )
- }
-
- processing = false
- },
-}
-
-export default job
diff --git a/backend/src/bin/jobs/refreshSampleData.ts b/backend/src/bin/jobs/refreshSampleData.ts
deleted file mode 100644
index efed37c975..0000000000
--- a/backend/src/bin/jobs/refreshSampleData.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { CrowdJob } from '../../types/jobTypes'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerMessageType } from '../../serverless/types/workerTypes'
-import { NodeWorkerMessageBase } from '../../types/mq/nodeWorkerMessageBase'
-
-const job: CrowdJob = {
- name: 'Refresh sample data',
- // every day
- cronTime: '0 0 * * *',
- onTrigger: async () => {
- await sendNodeWorkerMessage('refresh-sample-data', {
- type: NodeWorkerMessageType.NODE_MICROSERVICE,
- service: 'refresh-sample-data',
- } as NodeWorkerMessageBase)
- },
-}
-
-export default job
diff --git a/backend/src/bin/jobs/weeklyAnalyticsEmailsCoordinator.ts b/backend/src/bin/jobs/weeklyAnalyticsEmailsCoordinator.ts
deleted file mode 100644
index e1b9954617..0000000000
--- a/backend/src/bin/jobs/weeklyAnalyticsEmailsCoordinator.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { timeout } from '@crowd/common'
-import { CrowdJob } from '../../types/jobTypes'
-import TenantService from '../../services/tenantService'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerMessageBase } from '../../types/mq/nodeWorkerMessageBase'
-import { NodeWorkerMessageType } from '../../serverless/types/workerTypes'
-
-const job: CrowdJob = {
- name: 'Weekly Analytics Emails coordinator',
- cronTime: '0 8 * * MON',
- onTrigger: async () => {
- const tenants = await TenantService._findAndCountAllForEveryUser({})
-
- for (const tenant of tenants.rows) {
- await sendNodeWorkerMessage(tenant.id, {
- type: NodeWorkerMessageType.NODE_MICROSERVICE,
- tenant: tenant.id,
- service: 'weekly-analytics-emails',
- } as NodeWorkerMessageBase)
-
- // Wait 1 second between messages to potentially reduce spike load on cube between each tenant runs
- await timeout(1000)
- }
- },
-}
-
-export default job
diff --git a/backend/src/bin/nodejs-worker.ts b/backend/src/bin/nodejs-worker.ts
deleted file mode 100644
index e1fae5e069..0000000000
--- a/backend/src/bin/nodejs-worker.ts
+++ /dev/null
@@ -1,244 +0,0 @@
-import { timeout } from '@crowd/common'
-import { Logger, getChildLogger, getServiceLogger, logExecutionTimeV2 } from '@crowd/logging'
-import { SpanStatusCode, getServiceTracer } from '@crowd/tracing'
-import { DeleteMessageRequest, Message, ReceiveMessageRequest } from 'aws-sdk/clients/sqs'
-import moment from 'moment'
-import { SQS_CONFIG } from '../conf'
-import { processDbOperationsMessage } from '../serverless/dbOperations/workDispatcher'
-import { processNodeMicroserviceMessage } from '../serverless/microservices/nodejs/workDispatcher'
-import { NodeWorkerMessageType } from '../serverless/types/workerTypes'
-import { sendNodeWorkerMessage } from '../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerMessageBase } from '../types/mq/nodeWorkerMessageBase'
-import { deleteMessage, receiveMessage, sendMessage } from '../utils/sqs'
-import { processIntegration, processWebhook } from './worker/integrations'
-
-/* eslint-disable no-constant-condition */
-
-const tracer = getServiceTracer()
-const serviceLogger = getServiceLogger()
-
-let exiting = false
-
-const messagesInProgress = new Map()
-
-process.on('SIGTERM', async () => {
- serviceLogger.warn('Detected SIGTERM signal, started exiting!')
- exiting = true
-})
-
-const receive = (delayed?: boolean): Promise => {
- const params: ReceiveMessageRequest = {
- QueueUrl: delayed ? SQS_CONFIG.nodejsWorkerDelayableQueue : SQS_CONFIG.nodejsWorkerQueue,
- MessageAttributeNames: !delayed
- ? undefined
- : ['remainingDelaySeconds', 'tenantId', 'targetQueueUrl'],
- }
-
- return receiveMessage(params)
-}
-
-const removeFromQueue = (receiptHandle: string, delayed?: boolean): Promise => {
- const params: DeleteMessageRequest = {
- QueueUrl: delayed ? SQS_CONFIG.nodejsWorkerDelayableQueue : SQS_CONFIG.nodejsWorkerQueue,
- ReceiptHandle: receiptHandle,
- }
-
- return deleteMessage(params)
-}
-
-async function handleDelayedMessages() {
- const delayedHandlerLogger = getChildLogger('delayedMessages', serviceLogger, {
- queue: SQS_CONFIG.nodejsWorkerDelayableQueue,
- })
- delayedHandlerLogger.info('Listing for delayed messages!')
-
- // noinspection InfiniteLoopJS
- while (!exiting) {
- const message = await receive(true)
-
- if (message) {
- await tracer.startActiveSpan('ProcessDelayedMessage', async (span) => {
- try {
- const msg: NodeWorkerMessageBase = JSON.parse(message.Body)
- const messageLogger = getChildLogger('messageHandler', serviceLogger, {
- messageId: message.MessageId,
- type: msg.type,
- })
-
- if (message.MessageAttributes && message.MessageAttributes.remainingDelaySeconds) {
- // re-delay
- const newDelay = parseInt(
- message.MessageAttributes.remainingDelaySeconds.StringValue,
- 10,
- )
- const tenantId = message.MessageAttributes.tenantId.StringValue
- messageLogger.debug({ newDelay, tenantId }, 'Re-delaying message!')
- await sendNodeWorkerMessage(tenantId, msg, newDelay)
- } else {
- // just emit to the normal queue for processing
- const tenantId = message.MessageAttributes.tenantId.StringValue
-
- if (message.MessageAttributes.targetQueueUrl) {
- const targetQueueUrl = message.MessageAttributes.targetQueueUrl.StringValue
- messageLogger.debug({ tenantId, targetQueueUrl }, 'Successfully delayed a message!')
- await sendMessage({
- QueueUrl: targetQueueUrl,
- MessageGroupId: tenantId,
- MessageDeduplicationId: `${tenantId}-${moment().valueOf()}`,
- MessageBody: JSON.stringify(msg),
- })
- } else {
- messageLogger.debug({ tenantId }, 'Successfully delayed a message!')
- await sendNodeWorkerMessage(tenantId, msg)
- }
- }
-
- await removeFromQueue(message.ReceiptHandle, true)
- span.setStatus({
- code: SpanStatusCode.OK,
- })
- } catch (err) {
- span.setStatus({
- code: SpanStatusCode.ERROR,
- message: err,
- })
- } finally {
- span.end()
- }
- })
- } else {
- delayedHandlerLogger.trace('No message received!')
- }
- }
-
- delayedHandlerLogger.warn('Exiting!')
-}
-
-let processingMessages = 0
-const isWorkerAvailable = (): boolean => processingMessages <= 3
-const addWorkerJob = (): void => {
- processingMessages++
-}
-const removeWorkerJob = (): void => {
- processingMessages--
-}
-
-async function handleMessages() {
- const handlerLogger = getChildLogger('messages', serviceLogger, {
- queue: SQS_CONFIG.nodejsWorkerQueue,
- })
- handlerLogger.info('Listening for messages!')
-
- const processSingleMessage = async (message: Message): Promise => {
- await tracer.startActiveSpan('ProcessMessage', async (span) => {
- const msg: NodeWorkerMessageBase = JSON.parse(message.Body)
-
- const messageLogger = getChildLogger('messageHandler', serviceLogger, {
- messageId: message.MessageId,
- type: msg.type,
- })
-
- try {
- if (
- msg.type === NodeWorkerMessageType.NODE_MICROSERVICE &&
- (msg as any).service === 'enrich_member_organizations'
- ) {
- messageLogger.warn(
- 'Skipping enrich_member_organizations message! Purging the queue because they are not needed anymore!',
- )
- await removeFromQueue(message.ReceiptHandle)
- return
- }
-
- messageLogger.info(
- { messageType: msg.type, messagePayload: JSON.stringify(msg) },
- 'Received a new queue message!',
- )
-
- let processFunction: (msg: NodeWorkerMessageBase, logger?: Logger) => Promise
-
- switch (msg.type) {
- case NodeWorkerMessageType.INTEGRATION_PROCESS:
- processFunction = processIntegration
- break
- case NodeWorkerMessageType.NODE_MICROSERVICE:
- processFunction = processNodeMicroserviceMessage
- break
- case NodeWorkerMessageType.DB_OPERATIONS:
- processFunction = processDbOperationsMessage
- break
- case NodeWorkerMessageType.PROCESS_WEBHOOK:
- processFunction = processWebhook
- break
-
- default:
- messageLogger.error('Error while parsing queue message! Invalid type.')
- }
-
- if (processFunction) {
- await logExecutionTimeV2(
- async () => {
- // remove the message from the queue as it's about to be processed
- await removeFromQueue(message.ReceiptHandle)
- messagesInProgress.set(message.MessageId, msg)
- try {
- await processFunction(msg, messageLogger)
- } catch (err) {
- messageLogger.error(err, 'Error while processing queue message!')
- } finally {
- messagesInProgress.delete(message.MessageId)
- }
- },
- messageLogger,
- 'Processing queue message!',
- )
- }
-
- span.setStatus({
- code: SpanStatusCode.OK,
- })
- } catch (err) {
- span.setStatus({
- code: SpanStatusCode.ERROR,
- message: err,
- })
- messageLogger.error(err, { payload: msg }, 'Error while processing queue message!')
- } finally {
- span.end()
- }
- })
- }
-
- // noinspection InfiniteLoopJS
- while (!exiting) {
- if (isWorkerAvailable()) {
- const message = await receive()
-
- if (message) {
- addWorkerJob()
- processSingleMessage(message).then(removeWorkerJob).catch(removeWorkerJob)
- } else {
- serviceLogger.trace('No message received!')
- }
- } else {
- await timeout(200)
- }
- }
-
- // mark in flight messages as exiting
- for (const msg of messagesInProgress.values()) {
- ;(msg as any).exiting = true
- }
-
- while (messagesInProgress.size !== 0) {
- handlerLogger.warn(`Waiting for ${messagesInProgress.size} messages to finish!`)
- await timeout(500)
- }
-
- handlerLogger.warn('Exiting!')
-}
-
-setImmediate(async () => {
- const promises = [handleMessages(), handleDelayedMessages()]
- await Promise.all(promises)
-})
diff --git a/backend/src/bin/scripts/backfill-email-domain-member-organization-dates.ts b/backend/src/bin/scripts/backfill-email-domain-member-organization-dates.ts
new file mode 100644
index 0000000000..aa423fa5ff
--- /dev/null
+++ b/backend/src/bin/scripts/backfill-email-domain-member-organization-dates.ts
@@ -0,0 +1,179 @@
+import commandLineArgs from 'command-line-args'
+
+import { inferMemberOrganizationStintChanges } from '@crowd/common_services'
+import {
+ changeMemberOrganizationAffiliationOverrides,
+ createMemberOrganization,
+ fetchEmailDomainMemberOrganizationActivityDates,
+ fetchEmailDomainMemberOrganizationsWithoutDates,
+ fetchManyOrganizationAffiliationPolicies,
+ fetchMemberOrganizationsBySource,
+ pgpQx,
+ updateMemberOrganization,
+} from '@crowd/data-access-layer'
+import { getDbConnection } from '@crowd/data-access-layer/src/database'
+import { deleteMemberSegmentAffiliations } from '@crowd/data-access-layer/src/member_segment_affiliations'
+import { chunkArray } from '@crowd/data-access-layer/src/old/apps/merge_suggestions_worker/utils'
+import { getServiceLogger } from '@crowd/logging'
+import { getRedisClient } from '@crowd/redis'
+import { OrganizationSource } from '@crowd/types'
+
+import { DB_CONFIG, REDIS_CONFIG } from '@/conf'
+
+const log = getServiceLogger()
+
+const options = [
+ {
+ name: 'testRun',
+ alias: 't',
+ type: Boolean,
+ description: 'Run in test mode (limit to 1 batch and 10 members).',
+ },
+ {
+ name: 'afterMemberId',
+ alias: 'a',
+ type: String,
+ description: 'The member ID to start processing after.',
+ },
+ {
+ name: 'batchSize',
+ alias: 'b',
+ type: Number,
+ description: 'The number of members to fetch in each batch.',
+ },
+ {
+ name: 'help',
+ alias: 'h',
+ type: Boolean,
+ description: 'Print this usage guide.',
+ },
+]
+
+const parameters = commandLineArgs(options)
+
+setImmediate(async () => {
+ const testRun = parameters.testRun ?? false
+ const BATCH_SIZE = parameters.batchSize ?? (testRun ? 10 : 500)
+ let afterMemberId = parameters.afterMemberId ?? undefined
+
+ const db = await getDbConnection({
+ host: DB_CONFIG.writeHost,
+ port: DB_CONFIG.port,
+ database: DB_CONFIG.database,
+ user: DB_CONFIG.username,
+ password: DB_CONFIG.password,
+ })
+
+ const qx = pgpQx(db)
+ const redis = await getRedisClient(REDIS_CONFIG, true)
+
+ log.info({ testRun, BATCH_SIZE, afterMemberId }, 'Running script with the following parameters!')
+
+ let hasMore = true
+
+ while (hasMore) {
+ const memberIds = await fetchEmailDomainMemberOrganizationsWithoutDates(
+ qx,
+ BATCH_SIZE,
+ afterMemberId,
+ )
+
+ if (memberIds.length > 0) {
+ for (const chunk of chunkArray(memberIds, 50)) {
+ await Promise.all(
+ chunk.map(async (memberId) => {
+ if (testRun) {
+ log.info({ memberId }, 'Processing member!')
+ }
+
+ try {
+ const [existingMemberOrganizations, activityDates] = await Promise.all([
+ fetchMemberOrganizationsBySource(qx, memberId, OrganizationSource.EMAIL_DOMAIN),
+ fetchEmailDomainMemberOrganizationActivityDates(qx, memberId),
+ ])
+
+ const changes = inferMemberOrganizationStintChanges(
+ memberId,
+ existingMemberOrganizations,
+ activityDates,
+ )
+
+ if (testRun) {
+ log.info(
+ { existingMemberOrganizations, activityDates, changes },
+ 'Previewing changes for member.',
+ )
+ }
+
+ if (changes.length > 0) {
+ await qx.tx(async (tx) => {
+ for (const change of changes) {
+ if (change.type === 'insert') {
+ const memberOrganizationId = await createMemberOrganization(tx, memberId, {
+ organizationId: change.organizationId,
+ dateStart: change.dateStart,
+ dateEnd: change.dateEnd,
+ source: OrganizationSource.EMAIL_DOMAIN,
+ })
+
+ const orgAffiliationPolicyById =
+ await fetchManyOrganizationAffiliationPolicies(tx, [change.organizationId])
+
+ if (
+ memberOrganizationId &&
+ orgAffiliationPolicyById.get(change.organizationId)
+ ) {
+ await changeMemberOrganizationAffiliationOverrides(tx, [
+ {
+ memberId,
+ memberOrganizationId,
+ allowAffiliation: false,
+ },
+ ])
+ await deleteMemberSegmentAffiliations(tx, {
+ memberId,
+ organizationId: change.organizationId,
+ })
+ }
+ } else if (change.type === 'update') {
+ await updateMemberOrganization(tx, memberId, change.id, {
+ dateStart: change.dateStart,
+ dateEnd: change.dateEnd,
+ })
+ }
+
+ if (testRun) {
+ log.info(
+ { memberId, orgId: change.organizationId, type: change.type },
+ 'Member organization updated.',
+ )
+ }
+ }
+ })
+ await redis.sAdd('recalculate-member-affiliations', [memberId])
+ } else if (testRun) {
+ log.info({ memberId }, 'No changes found for member!')
+ }
+ } catch (err) {
+ log.error({ memberId, err }, 'Failed to process for member!')
+ throw err
+ }
+ }),
+ )
+ }
+
+ const lastMemberId = memberIds[memberIds.length - 1]
+ afterMemberId = lastMemberId
+
+ log.info({ lastMemberId, count: memberIds.length }, 'Batch processed!')
+
+ if (testRun || memberIds.length < BATCH_SIZE) {
+ hasMore = false
+ }
+ } else {
+ hasMore = false
+ }
+ }
+
+ process.exit(0)
+})
diff --git a/backend/src/bin/scripts/cache-dashboard.ts b/backend/src/bin/scripts/cache-dashboard.ts
new file mode 100644
index 0000000000..de97c18f32
--- /dev/null
+++ b/backend/src/bin/scripts/cache-dashboard.ts
@@ -0,0 +1,73 @@
+import commandLineArgs from 'command-line-args'
+import commandLineUsage from 'command-line-usage'
+import { randomUUID } from 'crypto'
+import * as fs from 'fs'
+import path from 'path'
+
+import { getTemporalClient } from '@crowd/temporal'
+
+import { TEMPORAL_CONFIG } from '@/conf'
+
+/* eslint-disable no-console */
+
+const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
+
+const options = [
+ {
+ name: 'help',
+ alias: 'h',
+ type: Boolean,
+ description: 'Print this usage guide.',
+ },
+ {
+ name: 'tenantId',
+ alias: 't',
+ type: String,
+ description: 'Tenant ID',
+ },
+ {
+ name: 'allTenants',
+ alias: 'a',
+ type: Boolean,
+ description: 'all tenants',
+ },
+]
+const sections = [
+ {
+ content: banner,
+ raw: true,
+ },
+ {
+ header: `Cache dashboard to redis for given tenants`,
+ content: 'Cache dashboard to redis for given tenants',
+ },
+ {
+ header: 'Options',
+ optionList: options,
+ },
+]
+
+const usage = commandLineUsage(sections)
+const parameters = commandLineArgs(options)
+
+if (parameters.help) {
+ console.log(usage)
+} else {
+ setImmediate(async () => {
+ const temporal = await getTemporalClient(TEMPORAL_CONFIG)
+
+ const uuid = randomUUID()
+
+ await temporal.workflow.start('spawnDashboardCacheRefreshForAllTenants', {
+ taskQueue: 'cache',
+ workflowId: `spawnDashboardCacheRefreshForAllTenants/${uuid}`,
+ retry: {
+ maximumAttempts: 10,
+ },
+ args: [],
+ searchAttributes: {},
+ })
+
+ process.exit(0)
+ })
+}
diff --git a/backend/src/bin/scripts/change-tenant-plan.ts b/backend/src/bin/scripts/change-tenant-plan.ts
deleted file mode 100644
index 296e9db74e..0000000000
--- a/backend/src/bin/scripts/change-tenant-plan.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import commandLineArgs from 'command-line-args'
-import commandLineUsage from 'command-line-usage'
-import * as fs from 'fs'
-import path from 'path'
-import { getServiceLogger } from '@crowd/logging'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-
-/* eslint-disable no-console */
-
-const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
-
-const log = getServiceLogger()
-
-const options = [
- {
- name: 'tenant',
- alias: 't',
- type: String,
- description: 'The unique ID of tenant that you would like to update.',
- },
- {
- name: 'plan',
- alias: 'p',
- type: String,
- description: `Plan that will be applied to the tenant. Accepted values are 'Growth' and 'Essential'.`,
- },
- {
- name: 'trialEndsAt',
- alias: 'x',
- description:
- 'YYYY-MM-dd format trial end date. If this value is ommited, isTrial will be set to false.',
- type: String,
- defaultValue: null,
- },
- {
- name: 'help',
- alias: 'h',
- type: Boolean,
- description: 'Print this usage guide.',
- },
-]
-const sections = [
- {
- content: banner,
- raw: true,
- },
- {
- header: 'Update tenant plan',
- content: 'Updates tenant plan.',
- },
- {
- header: 'Options',
- optionList: options,
- },
-]
-
-const usage = commandLineUsage(sections)
-const parameters = commandLineArgs(options)
-
-if (parameters.help || !parameters.tenant || !parameters.plan) {
- console.log(usage)
-} else if (parameters.plan !== 'Growth' && parameters.plan !== 'Essential') {
- console.log(usage)
- console.log(`Invalid plan ${parameters.plan}`)
-} else {
- setImmediate(async () => {
- const plan = parameters.plan
- const isTrial = parameters.trialEndsAt !== null
- const trialEndsAt = parameters.trialEndsAt
-
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
- const tenantIds = parameters.tenant.split(',')
-
- for (const tenantId of tenantIds) {
- const tenant = await options.database.tenant.findByPk(tenantId)
-
- if (!tenant) {
- log.error({ tenantId }, 'Tenant not found!')
- process.exit(1)
- } else {
- log.info({ tenantId, isTrial }, `Tenant found - updating tenant plan to ${plan}!`)
- await tenant.update({
- plan,
- isTrialPlan: isTrial,
- trialEndsAt,
- })
- }
- }
-
- process.exit(0)
- })
-}
diff --git a/backend/src/bin/scripts/continue-run.ts b/backend/src/bin/scripts/continue-run.ts
deleted file mode 100644
index af5dd5be49..0000000000
--- a/backend/src/bin/scripts/continue-run.ts
+++ /dev/null
@@ -1,103 +0,0 @@
-import commandLineArgs from 'command-line-args'
-import commandLineUsage from 'command-line-usage'
-import * as fs from 'fs'
-import path from 'path'
-import { getServiceLogger } from '@crowd/logging'
-import { IntegrationRunState } from '@crowd/types'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerIntegrationProcessMessage } from '../../types/mq/nodeWorkerIntegrationProcessMessage'
-import IntegrationRunRepository from '../../database/repositories/integrationRunRepository'
-
-/* eslint-disable no-console */
-
-const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
-
-const log = getServiceLogger()
-
-const options = [
- {
- name: 'run',
- alias: 'r',
- typeLabel: '{underline runId}',
- type: String,
- description:
- 'The unique ID of integration run that you would like to continue processing. Use comma delimiter when sending multiple integration runs.',
- },
- {
- name: 'disableFiringCrowdWebhooks',
- alias: 'd',
- typeLabel: '{underline disableFiringCrowdWebhooks}',
- type: Boolean,
- defaultOption: false,
- description: 'Should it disable firing outgoing crowd webhooks?',
- },
- {
- name: 'help',
- alias: 'h',
- type: Boolean,
- description: 'Print this usage guide.',
- },
-]
-const sections = [
- {
- content: banner,
- raw: true,
- },
- {
- header: 'Continue Processing Integration Run',
- content: 'Trigger processing of integration run.',
- },
- {
- header: 'Options',
- optionList: options,
- },
-]
-
-const usage = commandLineUsage(sections)
-const parameters = commandLineArgs(options)
-
-if (parameters.help && !parameters.run) {
- console.log(usage)
-} else {
- setImmediate(async () => {
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
-
- const fireCrowdWebhooks = !parameters.disableFiringCrowdWebhooks
-
- const runRepo = new IntegrationRunRepository(options)
-
- const runIds = parameters.run.split(',')
- for (const runId of runIds) {
- const run = await runRepo.findById(runId)
-
- if (!run) {
- log.error({ runId }, 'Integration run not found!')
- process.exit(1)
- } else {
- await log.info({ runId }, 'Integration run found - triggering SQS message!')
-
- if (run.state !== IntegrationRunState.PENDING) {
- log.warn(
- { currentState: run.state },
- `Setting integration state to ${IntegrationRunState.PENDING}!`,
- )
- await runRepo.restart(run.id)
- }
-
- if (!fireCrowdWebhooks) {
- log.info(
- 'fireCrowdWebhooks is false - This continue-run will not trigger outgoing crowd webhooks!',
- )
- }
-
- await sendNodeWorkerMessage(
- run.tenantId,
- new NodeWorkerIntegrationProcessMessage(run.id, null, fireCrowdWebhooks),
- )
- }
- }
-
- process.exit(0)
- })
-}
diff --git a/backend/src/bin/scripts/enrich-members-and-organizations.ts b/backend/src/bin/scripts/enrich-members-and-organizations.ts
deleted file mode 100644
index 38e049afec..0000000000
--- a/backend/src/bin/scripts/enrich-members-and-organizations.ts
+++ /dev/null
@@ -1,154 +0,0 @@
-import commandLineArgs from 'command-line-args'
-import commandLineUsage from 'command-line-usage'
-import * as fs from 'fs'
-import path from 'path'
-import { getServiceLogger } from '@crowd/logging'
-import SequelizeRepository from '@/database/repositories/sequelizeRepository'
-import MemberRepository from '@/database/repositories/memberRepository'
-import { sendBulkEnrichMessage, sendNodeWorkerMessage } from '@/serverless/utils/nodeWorkerSQS'
-import OrganizationRepository from '@/database/repositories/organizationRepository'
-import { NodeWorkerMessageType } from '@/serverless/types/workerTypes'
-import { NodeWorkerMessageBase } from '@/types/mq/nodeWorkerMessageBase'
-import getUserContext from '@/database/utils/getUserContext'
-import { IRepositoryOptions } from '@/database/repositories/IRepositoryOptions'
-import SegmentService from '@/services/segmentService'
-
-/* eslint-disable no-console */
-
-const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
-
-const log = getServiceLogger()
-
-const options = [
- {
- name: 'tenant',
- alias: 't',
- type: String,
- description: 'The unique ID of tenant that you would like to enrich.',
- },
- {
- name: 'help',
- alias: 'h',
- type: Boolean,
- description: 'Print this usage guide.',
- },
- {
- name: 'organization',
- alias: 'o',
- type: Boolean,
- defaultValue: false,
- description: 'Enrich organizations of the tenant',
- },
- {
- name: 'member',
- alias: 'm',
- type: Boolean,
- defaultValue: false,
- description: 'Enrich members of the tenant',
- },
-]
-const sections = [
- {
- content: banner,
- raw: true,
- },
- {
- header: 'Enrich members, organizations or both of the tenant',
- content: 'Enrich all enrichable members, organizations or both of the tenant',
- },
- {
- header: 'Options',
- optionList: options,
- },
-]
-
-const usage = commandLineUsage(sections)
-const parameters = commandLineArgs(options)
-
-if (parameters.help || (!parameters.tenant && (!parameters.organization || !parameters.member))) {
- console.log(usage)
-} else {
- setImmediate(async () => {
- const tenantIds = parameters.tenant.split(',')
- const enrichMembers = parameters.member
- const enrichOrganizations = parameters.organization
- const limit = 1000
-
- for (const tenantId of tenantIds) {
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
- const tenant = await options.database.tenant.findByPk(tenantId)
-
- if (!tenant) {
- log.error({ tenantId }, 'Tenant not found!')
- process.exit(1)
- } else {
- log.info(
- { tenantId },
- `Tenant found - starting enrichment operation for tenant ${tenantId}`,
- )
-
- const userContext: IRepositoryOptions = await getUserContext(tenantId)
- const segmentService = new SegmentService(userContext)
- const { rows: segments } = await segmentService.querySubprojects({})
-
- log.info({ tenantId }, `Total segments found in the tenant: ${segments.length}`)
-
- // get all segment ids for the tenant
- const segmentIds = segments.map((segment) => segment.id)
-
- const optionsWithTenant = await SequelizeRepository.getDefaultIRepositoryOptions(
- userContext,
- tenant,
- segments,
- )
-
- if (enrichMembers) {
- let offset = 0
- let totalMembers = 0
-
- do {
- const { ids: memberIds, count: membersCount } =
- await MemberRepository.getMemberIdsandCount(
- { limit, offset, countOnly: false },
- optionsWithTenant,
- )
-
- totalMembers = membersCount
- log.info({ tenantId }, `Total members found in the tenant: ${membersCount}`)
-
- await sendBulkEnrichMessage(tenantId, memberIds, segmentIds, false, true)
-
- offset += limit
- } while (totalMembers > offset)
-
- log.info({ tenantId }, `Members enrichment operation finished for tenant ${tenantId}`)
- }
-
- if (enrichOrganizations) {
- const organizations = await OrganizationRepository.findAndCountAll({}, optionsWithTenant)
-
- const totalOrganizations = organizations.count
-
- log.info({ tenantId }, `Total organizations found in the tenant: ${totalOrganizations}`)
-
- const payload = {
- type: NodeWorkerMessageType.NODE_MICROSERVICE,
- service: 'enrich-organizations',
- tenantId,
- // Since there is no pagination implemented for the organizations enrichment,
- // we set a limit of 10,000 to ensure all organizations are included when enriched in bulk.
- maxEnrichLimit: 10000,
- } as NodeWorkerMessageBase
-
- await sendNodeWorkerMessage(tenantId, payload)
- log.info(
- { tenantId },
- `Organizations enrichment operation finished for tenant ${tenantId}`,
- )
- }
- }
- }
-
- process.exit(0)
- })
-}
diff --git a/backend/src/bin/scripts/enrich-organizations-synchronous.ts b/backend/src/bin/scripts/enrich-organizations-synchronous.ts
deleted file mode 100644
index 6f9f51e744..0000000000
--- a/backend/src/bin/scripts/enrich-organizations-synchronous.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import commandLineArgs from 'command-line-args'
-import commandLineUsage from 'command-line-usage'
-import * as fs from 'fs'
-import path from 'path'
-import { getServiceLogger } from '@crowd/logging'
-import { BulkorganizationEnrichmentWorker } from '@/serverless/microservices/nodejs/bulk-enrichment/bulkOrganizationEnrichmentWorker'
-
-/* eslint-disable no-console */
-
-const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
-
-const log = getServiceLogger()
-
-const options = [
- {
- name: 'tenant',
- alias: 't',
- type: String,
- description: 'The unique ID of tenant that you would like to enrich.',
- },
- {
- name: 'limit',
- alias: 'l',
- type: Number,
- description: 'The maximum number of organizations to enrich.',
- },
- {
- name: 'help',
- alias: 'h',
- type: Boolean,
- description: 'Print this usage guide.',
- },
-]
-const sections = [
- {
- content: banner,
- raw: true,
- },
- {
- header: 'Enrich organizations of the tenant synchronously',
- content: 'Enrich all enrichable organizations of the tenant',
- },
- {
- header: 'Options',
- optionList: options,
- },
-]
-
-const usage = commandLineUsage(sections)
-const parameters = commandLineArgs(options)
-
-if (parameters.help || !parameters.tenant || !parameters.limit) {
- console.log(usage)
-} else {
- setImmediate(async () => {
- const tenantIds = parameters.tenant.split(',')
- const limit = parameters.limit
-
- for (const tenantId of tenantIds) {
- await BulkorganizationEnrichmentWorker(tenantId, limit, true, true)
- log.info(`Done for tenant ${tenantId}`)
- }
-
- process.exit(0)
- })
-}
diff --git a/backend/src/bin/scripts/fix-members-activities-after-unaffilation.ts b/backend/src/bin/scripts/fix-members-activities-after-unaffilation.ts
new file mode 100644
index 0000000000..dbb66ca9fc
--- /dev/null
+++ b/backend/src/bin/scripts/fix-members-activities-after-unaffilation.ts
@@ -0,0 +1,120 @@
+import commandLineArgs from 'command-line-args'
+
+import { signalMemberUpdate } from '@crowd/common_services'
+import { getDbConnection } from '@crowd/data-access-layer/src/database'
+import { getServiceLogger } from '@crowd/logging'
+import { getTemporalClient } from '@crowd/temporal'
+
+import { DB_CONFIG, TEMPORAL_CONFIG } from '@/conf'
+
+const log = getServiceLogger()
+
+const options = [
+ {
+ name: 'organizationId',
+ alias: 'o',
+ typeLabel: '{underline organizationId}',
+ type: String,
+ description: 'The organization ID to process members for.',
+ },
+ {
+ name: 'dryRun',
+ alias: 'd',
+ type: Boolean,
+ description: 'Run in dry-run mode (show what would be processed).',
+ },
+ {
+ name: 'help',
+ alias: 'h',
+ type: Boolean,
+ description: 'Print this usage guide.',
+ },
+]
+
+const parameters = commandLineArgs(options)
+
+setImmediate(async () => {
+ const organizationId = parameters.organizationId
+ const dryRun = parameters.dryRun ?? false
+
+ log.info({ organizationId, dryRun }, 'Running script with the following parameters!')
+
+ const db = await getDbConnection({
+ host: DB_CONFIG.readHost,
+ port: DB_CONFIG.port,
+ database: DB_CONFIG.database,
+ user: DB_CONFIG.username,
+ password: DB_CONFIG.password,
+ })
+ const temporal = await getTemporalClient(TEMPORAL_CONFIG)
+
+ try {
+ const memberIds = await db.any(
+ `
+ SELECT DISTINCT ar."memberId" AS id
+ FROM "activityRelations" ar
+ JOIN "memberOrganizations" mo
+ ON ar."memberId" = mo."memberId"
+ AND ar."organizationId" = mo."organizationId"
+ LEFT JOIN "memberOrganizationAffiliationOverrides" moao
+ ON mo."id" = moao."memberOrganizationId"
+ WHERE ar."organizationId" = $1
+ AND (
+ (
+ mo."deletedAt" IS NOT NULL
+ AND NOT EXISTS (
+ SELECT 1
+ FROM "memberOrganizations" mo2
+ WHERE mo2."memberId" = mo."memberId"
+ AND mo2."organizationId" = mo."organizationId"
+ AND mo2."deletedAt" IS NULL
+ )
+ )
+ OR (
+ mo."deletedAt" IS NULL
+ AND moao."allowAffiliation" = false
+ )
+ );
+ `,
+ [organizationId],
+ )
+
+ log.info(`Found ${memberIds.length} members to process`)
+
+ if (memberIds.length === 0) {
+ log.info('No members found. Implement the query to get actual memberIds.')
+ return
+ }
+
+ if (dryRun) {
+ log.info('DRY RUN - Would update affiliations for the following members:')
+ memberIds.forEach((member: { id: string }) => {
+ log.info(` - Member ID: ${member.id}`)
+ })
+ return
+ }
+
+ let processedCount = 0
+ for (const member of memberIds) {
+ try {
+ log.info(`Processing member: ${member.id}`)
+
+ await signalMemberUpdate(temporal, member.id, {
+ memberOrganizationIds: [organizationId],
+ })
+
+ processedCount++
+ log.info(`Successfully triggered workflow for member: ${member.id}`)
+ } catch (error) {
+ log.error(`Failed to process member ${member.id}:`, error)
+ }
+ }
+
+ log.info(`Script completed. Processed ${processedCount}/${memberIds.length} members.`)
+ } catch (error) {
+ log.error('Script failed:', error)
+ throw error
+ }
+
+ process.exit(0)
+})
diff --git a/backend/src/bin/scripts/fix-missing-org-displayName.ts b/backend/src/bin/scripts/fix-missing-org-displayName.ts
new file mode 100644
index 0000000000..d2ffb5f7f2
--- /dev/null
+++ b/backend/src/bin/scripts/fix-missing-org-displayName.ts
@@ -0,0 +1,166 @@
+/* eslint-disable @typescript-eslint/dot-notation */
+
+/* eslint-disable no-console */
+
+/* eslint-disable import/no-extraneous-dependencies */
+import commandLineArgs from 'command-line-args'
+import commandLineUsage from 'command-line-usage'
+
+import { QueryExecutor } from '@crowd/data-access-layer/src/queryExecutor'
+
+import { databaseInit } from '@/database/databaseConnection'
+import { IRepositoryOptions } from '@/database/repositories/IRepositoryOptions'
+import OrganizationRepository from '@/database/repositories/organizationRepository'
+import SequelizeRepository from '@/database/repositories/sequelizeRepository'
+
+const options = [
+ {
+ name: 'help',
+ alias: 'h',
+ type: Boolean,
+ description: 'Print this usage guide.',
+ },
+ {
+ name: 'tenantId',
+ alias: 't',
+ type: String,
+ description: 'Tenant Id',
+ },
+]
+const sections = [
+ {
+ header: `Fix empty displayName in organizations`,
+ content: 'Script will fix organizations with empty displayName',
+ },
+ {
+ header: 'Options',
+ optionList: options,
+ },
+]
+
+const usage = commandLineUsage(sections)
+const parameters = commandLineArgs(options)
+
+function getOrgsWithoutDisplayName(
+ qx: QueryExecutor,
+ tenantId: string,
+ { limit = 50, countOnly = false },
+) {
+ return qx.select(
+ `
+ SELECT
+ ${countOnly ? 'COUNT(*)' : 'o.id'}
+ FROM organizations o
+ WHERE o."tenantId" = $(tenantId)
+ AND o."displayName" IS NULL
+ ${countOnly ? '' : 'LIMIT $(limit)'}
+ `,
+ { tenantId, limit },
+ )
+}
+
+async function getOrgIdentities(qx: QueryExecutor, orgId: string, tenantId: string) {
+ return qx.select(
+ `
+ SELECT value
+ FROM "organizationIdentities"
+ WHERE "organizationId" = $(orgId)
+ AND "tenantId" = $(tenantId)
+ LIMIT 1
+ `,
+ { orgId, tenantId },
+ )
+}
+
+async function getOrgAttributes(qx: QueryExecutor, orgId: string) {
+ return qx.select(
+ `
+ SELECT value
+ FROM "orgAttributes"
+ WHERE "organizationId" = $(orgId)
+ AND name = 'name'
+ LIMIT 1
+ `,
+ { orgId },
+ )
+}
+
+async function updateOrgDisplayName(qx: QueryExecutor, orgId: string, displayName: string) {
+ await qx.result(
+ `
+ UPDATE organizations
+ SET "displayName" = $(displayName)
+ WHERE id = $(id)
+ `,
+ { id: orgId, displayName },
+ )
+}
+
+if (parameters.help || !parameters.tenantId) {
+ console.log(usage)
+} else {
+ setImmediate(async () => {
+ const prodDb = await databaseInit()
+ const tenantId = parameters.tenantId
+ const qx = SequelizeRepository.getQueryExecutor({
+ database: prodDb,
+ } as IRepositoryOptions)
+
+ const options = await SequelizeRepository.getDefaultIRepositoryOptions()
+
+ const BATCH_SIZE = 50
+ let processed = 0
+
+ const totalOrgs = await getOrgsWithoutDisplayName(qx, tenantId, { countOnly: true })
+
+ console.log(`Total organizations without displayName: ${totalOrgs[0].count}`)
+
+ let orgs = await getOrgsWithoutDisplayName(qx, tenantId, { limit: BATCH_SIZE })
+
+ while (totalOrgs[0].count > processed) {
+ for (const org of orgs) {
+ let displayName
+ let updateAttributes = false
+
+ const attributes = await getOrgAttributes(qx, org.id)
+
+ if (attributes.length > 0) {
+ displayName = attributes[0]?.value
+ } else {
+ const identities = await getOrgIdentities(qx, org.id, tenantId)
+ displayName = identities && identities[0]?.value
+ updateAttributes = true
+ }
+
+ if (displayName) {
+ await updateOrgDisplayName(qx, org.id, displayName)
+
+ if (updateAttributes) {
+ await OrganizationRepository.updateOrgAttributes(
+ org.id,
+ {
+ attributes: {
+ name: {
+ custom: [displayName],
+ default: displayName,
+ },
+ },
+ },
+ options,
+ )
+ }
+ } else {
+ console.log(`Organization ${org.id} does not have displayName`)
+ }
+
+ processed++
+ }
+
+ console.log(`Processed ${processed}/${totalOrgs[0].count} organizations`)
+
+ orgs = await getOrgsWithoutDisplayName(qx, tenantId, { limit: BATCH_SIZE })
+ }
+
+ process.exit(0)
+ })
+}
diff --git a/backend/src/bin/scripts/generate-merge-suggestions.ts b/backend/src/bin/scripts/generate-merge-suggestions.ts
deleted file mode 100644
index 911f5fc184..0000000000
--- a/backend/src/bin/scripts/generate-merge-suggestions.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import commandLineArgs from 'command-line-args'
-import commandLineUsage from 'command-line-usage'
-import * as fs from 'fs'
-import path from 'path'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerMessageType } from '../../serverless/types/workerTypes'
-import { NodeWorkerMessageBase } from '@/types/mq/nodeWorkerMessageBase'
-
-/* eslint-disable no-console */
-
-const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
-
-const options = [
- {
- name: 'tenant',
- alias: 't',
- type: String,
- description:
- 'The unique ID of that tenant that you would like to generate merge suggestions for.',
- },
- {
- name: 'help',
- alias: 'h',
- type: Boolean,
- description: 'Print this usage guide.',
- },
-]
-const sections = [
- {
- content: banner,
- raw: true,
- },
- {
- header: 'Generate merge suggestions for a tenant',
- content: 'Generate merge suggestions for a tenant',
- },
- {
- header: 'Options',
- optionList: options,
- },
-]
-
-const usage = commandLineUsage(sections)
-const parameters = commandLineArgs(options)
-
-if (parameters.help || !parameters.tenant) {
- console.log(usage)
-} else {
- setImmediate(async () => {
- const tenantIds = parameters.tenant.split(',')
-
- for (const tenantId of tenantIds) {
- await sendNodeWorkerMessage(tenantId, {
- type: NodeWorkerMessageType.NODE_MICROSERVICE,
- tenant: tenantId,
- service: 'merge-suggestions',
- } as NodeWorkerMessageBase)
- }
-
- process.exit(0)
- })
-}
diff --git a/backend/src/bin/scripts/import-lfx-memberships.ts b/backend/src/bin/scripts/import-lfx-memberships.ts
new file mode 100644
index 0000000000..5d9fb167cf
--- /dev/null
+++ b/backend/src/bin/scripts/import-lfx-memberships.ts
@@ -0,0 +1,165 @@
+/* eslint-disable @typescript-eslint/dot-notation */
+
+/* eslint-disable no-console */
+
+/* eslint-disable import/no-extraneous-dependencies */
+import commandLineArgs from 'command-line-args'
+import commandLineUsage from 'command-line-usage'
+import { parse } from 'csv-parse/sync'
+import * as fs from 'fs'
+import uniq from 'lodash/uniq'
+import moment from 'moment'
+import path from 'path'
+
+import { LfxMembership, insertLfxMembership } from '@crowd/data-access-layer/src/lfx_memberships'
+import {
+ findOrgIdByDisplayName,
+ findOrgIdByDomain,
+} from '@crowd/data-access-layer/src/organizations'
+import { findProjectGroupByName } from '@crowd/data-access-layer/src/segments'
+
+import { databaseInit } from '@/database/databaseConnection'
+import { IRepositoryOptions } from '@/database/repositories/IRepositoryOptions'
+import SequelizeRepository from '@/database/repositories/sequelizeRepository'
+
+const options = [
+ {
+ name: 'help',
+ alias: 'h',
+ type: Boolean,
+ description: 'Print this usage guide.',
+ },
+ {
+ name: 'file',
+ alias: 'f',
+ type: String,
+ description: 'Path to CSV file to import',
+ },
+ {
+ name: 'tenantId',
+ alias: 't',
+ type: String,
+ description: 'Tenant Id. Hint: what you probably need is 875c38bd-2b1b-4e91-ad07-0cfbabb4c49f',
+ },
+]
+const sections = [
+ {
+ header: `Import LFX Membership `,
+ content:
+ 'Merges two members, then unmerges these and cross checks unmerge result with original data.',
+ },
+ {
+ header: 'Options',
+ optionList: options,
+ },
+]
+
+const usage = commandLineUsage(sections)
+const parameters = commandLineArgs(options)
+
+function parseDomains(domains: string) {
+ return uniq(
+ domains
+ .split(',')
+ .map((domain) => domain.trim())
+ .filter((domain) => domain.length > 0)
+
+ // the rest if for values that look like this: "andesdigital.cl\n\n--- Merged Data:\n\ andesdigital.cl"
+ .flatMap((domain) => domain.split('\n'))
+ .filter((domain) => domain.match(/^[a-z0-9.-]+$/)),
+ )
+}
+
+async function findOrgId(qx, record) {
+ let org = await findOrgIdByDomain(qx, [record['Account Domain']])
+ if (org) {
+ return org
+ }
+
+ org = await findOrgIdByDomain(qx, record['Domain Alias'])
+ if (org) {
+ return org
+ }
+
+ org = await findOrgIdByDisplayName(qx, { orgName: record['Account Name'], exact: true })
+ if (org) {
+ return org
+ }
+
+ org = await findOrgIdByDisplayName(qx, {
+ orgName: record['Account Name'],
+ exact: false,
+ })
+ return org
+}
+
+if (parameters.help || !parameters.file || !parameters.tenantId) {
+ console.log(usage)
+} else {
+ setImmediate(async () => {
+ const prodDb = await databaseInit()
+ const qx = SequelizeRepository.getQueryExecutor({
+ database: prodDb,
+ } as IRepositoryOptions)
+
+ await qx.result(`DELETE FROM "lfxMemberships"`)
+
+ console.log('All records deleted')
+
+ const fileData = fs.readFileSync(path.resolve(parameters.file), 'latin1')
+
+ const records = parse(fileData, {
+ columns: true,
+ skip_empty_lines: true,
+ })
+
+ console.log('New records:', records.length)
+
+ for (let i = 0; i < records.length; i++) {
+ const record = records[i]
+ const orgName = record['Account Name']
+
+ // Exclude individual no account organizations from LF Members
+ if (
+ ![
+ 'Individual - No Account',
+ 'Individual ? No Account',
+ 'individual with no account',
+ ].includes(orgName)
+ ) {
+ record['Domain Alias'] = parseDomains(record['Domain Alias'])
+
+ const segment = await findProjectGroupByName(qx, {
+ name: record['Project'],
+ })
+ const orgId = await findOrgId(qx, record)
+ const row = {
+ organizationId: orgId,
+ segmentId: segment?.id,
+ accountName: orgName,
+ parentAccount: record['Parent Account'],
+ project: record['Project'],
+ productName: record['Product Name'],
+ purchaseHistoryName: record['Purchase History Name'],
+ installDate: moment(record['Install Date'], 'MM/DD/YYYY').toDate(),
+ usageEndDate: moment(record['Usage End Date'], 'MM/DD/YYYY').toDate(),
+ status: record['Status'],
+ priceCurrency: record['Price Currency'],
+ price: parseInt(record['Price'], 10),
+ productFamily: record['Product Family'],
+ tier: record['Tier'],
+ accountDomain: record['Account Domain'],
+ domainAlias: record['Domain Alias'],
+ } as LfxMembership
+
+ await insertLfxMembership(qx, row)
+
+ console.log('Inserted record:', i, orgName)
+ } else {
+ console.log('Ignored Individual - No account:', i, orgName)
+ }
+ }
+
+ process.exit(0)
+ })
+}
diff --git a/backend/src/bin/scripts/insightsProjects/cleanup-duplicate-insights-projects.ts b/backend/src/bin/scripts/insightsProjects/cleanup-duplicate-insights-projects.ts
new file mode 100644
index 0000000000..a1502368c4
--- /dev/null
+++ b/backend/src/bin/scripts/insightsProjects/cleanup-duplicate-insights-projects.ts
@@ -0,0 +1,189 @@
+/* eslint-disable no-console */
+
+/* eslint-disable no-continue */
+
+/**
+ * TBD
+ */
+import commandLineArgs from 'command-line-args'
+import commandLineUsage from 'command-line-usage'
+import * as fs from 'fs'
+import path from 'path'
+
+import { databaseInit } from '@/database/databaseConnection'
+import { IRepositoryOptions } from '@/database/repositories/IRepositoryOptions'
+import SequelizeRepository from '@/database/repositories/sequelizeRepository'
+
+const options = [
+ {
+ name: 'help',
+ alias: 'h',
+ type: Boolean,
+ description: 'Print this usage guide.',
+ },
+ {
+ name: 'file',
+ alias: 'f',
+ type: String,
+ description: 'Path to JSON file to consolidate projects from',
+ },
+ {
+ name: 'dryRun',
+ alias: 'd',
+ type: Boolean,
+ description:
+ 'Dry run mode. Will not delete any projects. Will print the projects to be deleted.',
+ },
+]
+
+const sections = [
+ {
+ header: 'Consolidate Insights Projects',
+ content: 'Consolidates insights projects based on the main repository URL from the CSV file.',
+ },
+ {
+ header: 'Options',
+ optionList: options,
+ },
+]
+
+/**
+ * Parses a JSON file containing project information.
+ * @param filePath - The path to the JSON file to parse
+ * @returns An array of project objects containing project information from the JSON
+ */
+function parseJSON(filePath: string) {
+ const fileData = fs.readFileSync(path.resolve(filePath), 'utf-8')
+ return JSON.parse(fileData)
+}
+
+async function cleanUpDuplicateProjects(qx, internalProjects, dryRun: boolean) {
+ let matchedCount = 0
+ let deletedCount = 0
+
+ // Check for segmentId in related projects
+ for (const project of internalProjects) {
+ const projectToDelete = await qx.result(
+ `SELECT * FROM "insightsProjects"
+ WHERE "github" = $1
+ AND "segmentId" IS NULL
+ AND "isLF" = false`,
+ [project],
+ )
+
+ if (projectToDelete.rows.length > 0) {
+ matchedCount++
+ console.log(`Project ${projectToDelete.rows[0].name} match`)
+ } else {
+ console.log(`No match for ${project}`)
+ continue
+ }
+
+ if (!dryRun) {
+ const replacementProject = await qx.result(
+ `SELECT *
+ FROM "insightsProjects" ip
+ WHERE ip.id != $1
+ AND $2 = ANY(ip."repositories")
+ LIMIT 1`,
+ [projectToDelete.rows[0].id, project],
+ )
+
+ if (replacementProject.rows.length > 0) {
+ const updatedLinks = await qx.result(
+ `
+ UPDATE "collectionsInsightsProjects" cip
+ SET
+ "insightsProjectId" = $1,
+ "updatedAt" = NOW()
+ WHERE "insightsProjectId" = $2
+ AND NOT EXISTS (
+ SELECT 1
+ FROM "collectionsInsightsProjects"
+ WHERE "collectionId" = cip."collectionId"
+ AND "insightsProjectId" = $1
+ )
+ RETURNING *
+ `,
+ [replacementProject.rows[0].id, projectToDelete.rows[0].id],
+ )
+
+ if (updatedLinks.rows.length > 0) {
+ console.log(
+ `Updated collection insights project to point to replacement project ${replacementProject.rows[0].id}`,
+ )
+ } else {
+ console.log(`Skipping to update links for ${projectToDelete.rows[0].name} project`)
+ }
+
+ const deletedLinks = await qx.result(
+ `UPDATE "collectionsInsightsProjects"
+ SET "deletedAt" = NOW()
+ WHERE "insightsProjectId" = $1 AND "deletedAt" IS NULL
+ RETURNING *`,
+ [projectToDelete.rows[0].id],
+ )
+ if (deletedLinks.rows.length > 0) {
+ console.log(`Deleted ${deletedLinks.rows.length} collection insights project links`)
+ } else {
+ console.log(`Skipping to delete links for ${projectToDelete.rows[0].name} project`)
+ }
+
+ await qx.result(
+ `DELETE FROM "insightsProjects"
+ WHERE id = $1`,
+ [projectToDelete.rows[0].id],
+ )
+ deletedCount++
+ console.log(`Deleted ${projectToDelete.rows[0].name} project`)
+ } else {
+ console.log(
+ `Skipping ${projectToDelete.rows[0].name} project because no replacement project found`,
+ )
+ }
+ }
+ }
+
+ console.log(`\nSummary:`)
+ console.log(`- Found ${matchedCount} matching projects`)
+ if (!dryRun) {
+ console.log(`- Deleted ${deletedCount} projects`)
+ } else {
+ console.log(`- Would delete ${matchedCount} projects (dry run)`)
+ }
+}
+
+const usage = commandLineUsage(sections)
+const parameters = commandLineArgs(options)
+
+if (parameters.help || !parameters.file) {
+ console.log(usage)
+} else {
+ setImmediate(async () => {
+ try {
+ const prodDb = await databaseInit()
+ const qx = SequelizeRepository.getQueryExecutor({
+ database: prodDb,
+ } as IRepositoryOptions)
+
+ // Parse JSON file
+ const projects = parseJSON(parameters.file)
+ const parsedProjects = Object.keys(projects)
+ .filter((project) => projects[project].internal)
+ .map((project) => `https://github.com/${project}`)
+
+ console.log(
+ `Found ${Object.keys(projects).length} total projects in JSON and ${parsedProjects.length} are internal`,
+ )
+
+ // Consolidate projects
+ await cleanUpDuplicateProjects(qx, parsedProjects, parameters.dryRun || false)
+
+ console.log('Project cleanup completed successfully')
+ process.exit(0)
+ } catch (error) {
+ console.error('Error during project cleanup:', error)
+ process.exit(1)
+ }
+ })
+}
diff --git a/backend/src/bin/scripts/insightsProjects/cleanup-duplicate-repos-projects.ts b/backend/src/bin/scripts/insightsProjects/cleanup-duplicate-repos-projects.ts
new file mode 100644
index 0000000000..f1aa2c674e
--- /dev/null
+++ b/backend/src/bin/scripts/insightsProjects/cleanup-duplicate-repos-projects.ts
@@ -0,0 +1,202 @@
+/* eslint-disable no-console */
+
+/* eslint-disable no-continue */
+
+/**
+ * TBD
+ */
+import commandLineArgs from 'command-line-args'
+import commandLineUsage from 'command-line-usage'
+
+import { databaseInit } from '@/database/databaseConnection'
+import { IRepositoryOptions } from '@/database/repositories/IRepositoryOptions'
+import SequelizeRepository from '@/database/repositories/sequelizeRepository'
+
+const options = [
+ {
+ name: 'help',
+ alias: 'h',
+ type: Boolean,
+ description: 'Print this usage guide.',
+ },
+ {
+ name: 'dryRun',
+ alias: 'd',
+ type: Boolean,
+ description:
+ 'Dry run mode. Will not delete any projects. Will print the projects to be deleted.',
+ },
+]
+
+const sections = [
+ {
+ header: 'Consolidate Insights Projects',
+ content: 'Consolidates insights projects based on the main repository URL from the CSV file.',
+ },
+ {
+ header: 'Options',
+ optionList: options,
+ },
+]
+
+async function getProjectsWithDuplicateRepos(qx) {
+ const result = await qx.result(
+ `
+ with unnested_repos as (
+ select
+ id as id,
+ unnest(repositories) as repo_url
+ from "insightsProjects"
+ ),
+ duplicate_repos as (
+ select
+ array_agg(distinct id) as "projectIds"
+ from unnested_repos
+ group by repo_url
+ having count(distinct id) > 1
+ and repo_url ilike '%github%'
+ )
+ select
+ "projectIds"
+ from duplicate_repos;
+ `,
+ )
+
+ return result.rows
+}
+
+async function cleanUpDuplicateProjects(qx, projects, dryRun: boolean) {
+ let matchedCount = 0
+ let deletedCount = 0
+
+ // Check for segmentId in related projects
+ for (const project of projects) {
+ const result = await qx.result(
+ `
+ WITH proj AS (
+ SELECT
+ id,
+ "segmentId",
+ "isLF",
+ cardinality(repositories) AS repo_count
+ FROM "insightsProjects"
+ WHERE id IN ($1, $2)
+ ),
+ marked AS (
+ SELECT
+ id,
+ -- Flag if this project matches the delete criteria:
+ CASE
+ WHEN "segmentId" IS NULL
+ AND "isLF" = false
+ AND repo_count = 1 THEN true
+ ELSE false
+ END AS to_delete
+ FROM proj
+ )
+ SELECT
+ -- The id of the project to delete (if any)
+ (SELECT id FROM marked WHERE to_delete ORDER BY id LIMIT 1) AS "projectToDelete",
+ -- The id of the project to keep (the other one)
+ (SELECT id FROM marked WHERE NOT to_delete ORDER BY id LIMIT 1) AS "projectToKeep";
+ `,
+ [project.projectIds[0], project.projectIds[1]],
+ )
+
+ if (result.rows.length > 0) {
+ matchedCount++
+ const projectToKeep = result.rows[0].projectToKeep
+ const projectToDelete = result.rows[0].projectToDelete
+
+ console.log(`Project to delete: ${projectToDelete}`)
+ console.log(`Project to keep: ${projectToKeep}`)
+
+ if (!dryRun && projectToDelete) {
+ const updatedLinks = await qx.result(
+ `
+ UPDATE "collectionsInsightsProjects" cip
+ SET
+ "insightsProjectId" = $1,
+ "updatedAt" = NOW()
+ WHERE "insightsProjectId" = $2
+ AND NOT EXISTS (
+ SELECT 1
+ FROM "collectionsInsightsProjects"
+ WHERE "collectionId" = cip."collectionId"
+ AND "insightsProjectId" = $1
+ )
+ RETURNING *
+ `,
+ [projectToKeep, projectToDelete],
+ )
+
+ if (updatedLinks.rows.length > 0) {
+ console.log(
+ `Updated collection insights project to point to replacement project ${projectToKeep}`,
+ )
+ } else {
+ console.log(`Skipping to update links for ${projectToDelete} project`)
+ }
+
+ const deletedLinks = await qx.result(
+ `UPDATE "collectionsInsightsProjects"
+ SET "deletedAt" = NOW()
+ WHERE "insightsProjectId" = $1 AND "deletedAt" IS NULL
+ RETURNING *`,
+ [projectToDelete],
+ )
+ if (deletedLinks.rows.length > 0) {
+ console.log(`Deleted ${deletedLinks.rows.length} collection insights project links`)
+ } else {
+ console.log(`Skipping to delete links for ${projectToDelete} project`)
+ }
+
+ await qx.result(
+ `DELETE FROM "insightsProjects"
+ WHERE id = $1`,
+ [projectToDelete],
+ )
+ deletedCount++
+ console.log(`Deleted ${projectToDelete} project`)
+ }
+ } else {
+ console.log(`No match for ${project.projectIds[0]} and ${project.projectIds[1]}`)
+ continue
+ }
+ }
+
+ console.log(`\nSummary:`)
+ console.log(`- Found ${matchedCount} matching projects`)
+ if (!dryRun) {
+ console.log(`- Deleted ${deletedCount} projects`)
+ } else {
+ console.log(`- Would delete ${matchedCount} projects (dry run)`)
+ }
+}
+
+const usage = commandLineUsage(sections)
+const parameters = commandLineArgs(options)
+
+if (parameters.help) {
+ console.log(usage)
+} else {
+ setImmediate(async () => {
+ try {
+ const prodDb = await databaseInit()
+ const qx = SequelizeRepository.getQueryExecutor({
+ database: prodDb,
+ } as IRepositoryOptions)
+
+ const projects = await getProjectsWithDuplicateRepos(qx)
+
+ // Consolidate projects
+ await cleanUpDuplicateProjects(qx, projects, parameters.dryRun || false)
+
+ console.log('Project cleanup completed successfully')
+ process.exit(0)
+ } catch (error) {
+ console.error('Error during project cleanup:', error)
+ process.exit(1)
+ }
+ })
+}
diff --git a/backend/src/bin/scripts/insightsProjects/import-pcc-projects-data.ts b/backend/src/bin/scripts/insightsProjects/import-pcc-projects-data.ts
new file mode 100644
index 0000000000..5c21b6dd40
--- /dev/null
+++ b/backend/src/bin/scripts/insightsProjects/import-pcc-projects-data.ts
@@ -0,0 +1,155 @@
+/* eslint-disable @typescript-eslint/dot-notation */
+
+/* eslint-disable no-console */
+
+/* eslint-disable import/no-extraneous-dependencies */
+
+/**
+ * Access Snowflake's instance: https://app.snowflake.com/jnmhvwd/xpb85243
+ * Create a new worksheet and run the query below.
+ * Download the results as a CSV file.
+ *
+ * How to run this script:
+ * 1. Push and deploy your changes on this file if needed
+ * 2. cd crowd-kube/lf-production
+ * 3. kubectl config use-context
+ * 4. kubepods | grep script-
+ * 5. kubectl cp /local/path/report.csv ://usr/crowd/app/crowd.dev/backend/pcc_projects_data.csv
+ * 6. kubectl exec -it -- sh
+ * 7. cd crowd.dev
+ * 8. git status
+ * 9. git pull (make sure you are on the right branch)
+ * 10. cd backend
+ * 11. Make sure your csv file is in the right location and that you have all changes you need. And then run the script.
+ * 12. LOG_LEVEL=debug SERVICE=script ./node_modules/.bin/tsx src/bin/scripts/import-pcc-projects-data.ts --file ./pcc_projects_data.csv
+ *
+SELECT
+ CASE WHEN p.NAME IN ('', 'nil') THEN NULL ELSE p.name END AS NAME,
+ CASE WHEN p.SLUG__C IN ('', 'nil') THEN NULL ELSE p.slug__c END AS SLUG__C,
+ CASE WHEN p.REPOSITORYURL__C IN ('', 'nil') THEN NULL ELSE p.REPOSITORYURL__C END AS REPOSITORYURL__C,
+ CASE WHEN p.DESCRIPTION__C IN ('', 'nil') THEN NULL ELSE p.DESCRIPTION__C END AS DESCRIPTION__C,
+ CASE WHEN p.WEBSITE__C IN ('', 'nil') THEN NULL ELSE p.WEBSITE__C END AS WEBSITE__C,
+ CASE WHEN p.TWITTER__C IN ('', 'nil') THEN NULL ELSE p.TWITTER__C END AS TWITTER__C,
+ CASE WHEN p.LINKEDIN__C IN ('', 'nil') THEN NULL ELSE p.LINKEDIN__C END AS LINKEDIN__C
+FROM
+ FIVETRAN_INGEST.SFDC_CONNECTOR_PROD_SALESFORCE.PROJECT__C p
+JOIN
+ FIVETRAN_INGEST.crowd_prod_public.segments s
+ ON p.slug__c = s.slug
+WHERE
+ s.parentslug IS NOT NULL
+ AND s.grandparentslug IS NOT NULL;
+
+*/
+import commandLineArgs from 'command-line-args'
+import commandLineUsage from 'command-line-usage'
+import { parse } from 'csv-parse/sync'
+import * as fs from 'fs'
+import path from 'path'
+
+import { databaseInit } from '@/database/databaseConnection'
+import { IRepositoryOptions } from '@/database/repositories/IRepositoryOptions'
+import SequelizeRepository from '@/database/repositories/sequelizeRepository'
+
+const options = [
+ {
+ name: 'help',
+ alias: 'h',
+ type: Boolean,
+ description: 'Print this usage guide.',
+ },
+ {
+ name: 'file',
+ alias: 'f',
+ type: String,
+ description: 'Path to CSV file to import',
+ },
+]
+
+const sections = [
+ {
+ header: 'Update Insights Projects with PCC Data',
+ content: 'Updates insights projects with data from PCC projects CSV export.',
+ },
+ {
+ header: 'Options',
+ optionList: options,
+ },
+]
+
+const usage = commandLineUsage(sections)
+const parameters = commandLineArgs(options)
+
+if (parameters.help || !parameters.file) {
+ console.log(usage)
+} else {
+ setImmediate(async () => {
+ const prodDb = await databaseInit()
+ const qx = SequelizeRepository.getQueryExecutor({
+ database: prodDb,
+ } as IRepositoryOptions)
+
+ const fileData = fs.readFileSync(path.resolve(parameters.file), 'utf-8')
+
+ const records = parse(fileData, {
+ columns: true,
+ skip_empty_lines: true,
+ })
+
+ console.log('Processing records:', records.length)
+
+ let updatedCount = 0
+ let notFoundCount = 0
+
+ for (let i = 0; i < records.length; i++) {
+ const record = records[i]
+ const slug = record['SLUG__C']
+
+ console.log(`Processing record ${i + 1}/${records.length}:`, slug)
+
+ try {
+ // Find matching insights project
+ const result = await qx.result(
+ `UPDATE "insightsProjects"
+ SET
+ description = CASE WHEN $1 IS NOT NULL THEN $1 ELSE description END,
+ github = CASE WHEN $2 IS NOT NULL THEN $2 ELSE github END,
+ twitter = CASE WHEN $3 IS NOT NULL THEN $3 ELSE twitter END,
+ linkedin = CASE WHEN $4 IS NOT NULL THEN $4 ELSE linkedin END,
+ website = CASE WHEN $5 IS NOT NULL THEN $5 ELSE website END,
+ "updatedAt" = NOW()
+ WHERE slug = $6
+ RETURNING *`,
+ [
+ record['DESCRIPTION__C'] || null,
+ record['REPOSITORYURL__C'] || null,
+ record['TWITTER__C'] || null,
+ record['LINKEDIN__C'] || null,
+ record['WEBSITE__C'] || null,
+ slug,
+ ],
+ )
+
+ if (result > 0) {
+ console.log('Updated project:', slug)
+ updatedCount++
+ } else {
+ console.log('No matching project found for slug:', slug)
+ notFoundCount++
+ }
+ } catch (error) {
+ console.error('Error updating project:', slug, error)
+ notFoundCount++
+ }
+ }
+
+ console.log('\nFinal Summary:')
+ console.log('Total projects processed:', records.length)
+ console.log('Successfully updated:', updatedCount)
+ console.log('Not found or failed:', notFoundCount)
+ console.log(`Success rate: ${((updatedCount / records.length) * 100).toFixed(2)}%`)
+
+ console.log('Processing complete')
+ process.exit(0)
+ })
+}
diff --git a/backend/src/bin/scripts/merge-duplicated-members.ts b/backend/src/bin/scripts/merge-duplicated-members.ts
deleted file mode 100644
index a1599e1dbe..0000000000
--- a/backend/src/bin/scripts/merge-duplicated-members.ts
+++ /dev/null
@@ -1,213 +0,0 @@
-import { QueryTypes } from 'sequelize'
-import { Logger, getChildLogger, getServiceLogger } from '@crowd/logging'
-import { generateUUIDv1, timeout } from '@crowd/common'
-import MemberRepository from '../../database/repositories/memberRepository'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import MemberService from '../../services/memberService'
-
-/* eslint-disable no-continue */
-/* eslint-disable @typescript-eslint/no-loop-func */
-
-const log = getServiceLogger()
-
-function checkUsernames(allUsernames: any[]): boolean {
- for (let i = 0; i < allUsernames.length; i++) {
- const usernames = allUsernames[i]
- for (const [platform, username] of Object.entries(usernames)) {
- for (let j = i; j < allUsernames.length; j++) {
- if (allUsernames[j][platform] && allUsernames[j][platform] !== username) {
- return false
- }
- }
- }
- }
-
- return true
-}
-
-function checkEmails(allEmails: string[][]): boolean {
- for (let i = 0; i < allEmails.length; i++) {
- const emails = allEmails[i]
- for (let j = i; j < allEmails.length; j++) {
- const emails2 = allEmails[j]
- for (let k = 0; k < emails.length; k++) {
- if (emails[k] !== emails2[k]) {
- return false
- }
- }
- }
- }
-
- return true
-}
-
-async function doMerge(data, logger: Logger) {
- // merge all instances to the first one
- const firstId = data.all_ids[0]
- const tenantOptions = await SequelizeRepository.getDefaultIRepositoryOptions(undefined, {
- id: data.tenantId,
- })
- tenantOptions.log = logger
- const service = new MemberService(tenantOptions)
-
- for (let i = 1; i < data.all_ids.length; i++) {
- logger.info(`Merging ${data.all_ids[i]} into ${firstId}...`)
- const id = data.all_ids[i]
- await service.merge(firstId, id)
- }
-}
-
-async function check(): Promise {
- let count = 0
- const dbOptions = await SequelizeRepository.getDefaultIRepositoryOptions()
-
- const seq = SequelizeRepository.getSequelize(dbOptions)
-
- log.info('Querying database for duplicated members...')
-
- const results = await seq.query(
- ` with activity_counts as (select count(id) as count, "memberId"
- from activities
- group by "memberId")
- select keys.platform,
- m.username ->> keys.platform as username,
- m."tenantId",
- count(*) as duplicate_count,
- coalesce(sum(ac.count), 0) as total_activitites,
- json_agg(m.id) as all_ids,
- jsonb_agg(m.emails) as all_emails,
- jsonb_agg(m.username) as all_usernames
- from members m
- left join activity_counts ac on ac."memberId" = m.id,
- lateral jsonb_object_keys(m.username) as keys(platform)
- group by keys.platform,
- m.username ->> keys.platform,
- m."tenantId"
- having count(*) > 1
- order by duplicate_count desc,
- keys.platform,
- m."tenantId";`,
- {
- type: QueryTypes.SELECT,
- },
- )
-
- log.info(`Found ${results.length} duplicated members.`)
-
- let jobs = 0
-
- const promises = []
-
- for (const [i, data] of results.entries() as any) {
- log.info(`Processing ${i + 1}/${results.length}...`)
-
- if (data.username.toLowerCase().includes('deleted')) {
- log.warn('Skipping deleted member...')
- continue
- }
-
- if (checkUsernames(data.all_usernames) && checkEmails(data.all_emails)) {
- const logger = getChildLogger('merger', log, {
- requestId: generateUUIDv1(),
- platform: data.platform,
- tenantId: data.tenantId,
- username: data.username,
- })
- logger.info(`Found ${data.all_ids.length} duplicated members with same usernames and emails.`)
-
- while (jobs >= 5) {
- log.info('Waiting for job opening...')
- await timeout(500)
- }
-
- jobs++
- log.info({ jobs }, 'Job started!')
- promises.push(
- doMerge(data, logger)
- .then(() => {
- jobs--
- log.info({ jobs }, 'Job done!')
- })
- .catch((err) => {
- logger.error(err, { ids: data.all_ids }, 'Error while merging members!')
- jobs--
- log.info({ jobs }, 'Job done with error!')
- }),
- )
- count++
- } else {
- const logger = getChildLogger('fixer', log, {
- requestId: generateUUIDv1(),
- platform: data.platform,
- tenantId: data.tenantId,
- username: data.username,
- })
- logger.info(
- 'Can not automatically merge - first member in the group by joinedAt will get the identity and the rest will get them as weakIdentities.',
- )
-
- const options = { ...dbOptions, log: logger, currentTenant: { id: data.tenantId } }
-
- let transaction
- try {
- transaction = await SequelizeRepository.createTransaction(options)
- const txOptions = { ...options, transaction }
-
- const allMembers = []
- for (const id of data.all_ids) {
- const member = await MemberRepository.findById(id, txOptions)
- allMembers.push(member)
- }
-
- // sort so the oldest members by joinedAt are first
- allMembers.sort((a, b) => new Date(a.joinedAt).getTime() - new Date(b.joinedAt).getTime())
-
- // first member stays the same - it will keep the identity
- // these ones will get the duplicated identity as weakIdentities
- const otherMembers = allMembers.slice(1)
-
- for (const member of otherMembers) {
- logger.info({ memberId: member.id }, 'Removing identity from member.username column!')
- // let's remove this identity from the member.username column
- delete member.username[data.platform]
- await MemberRepository.update(
- member.id,
- {
- username: member.username,
- },
- txOptions,
- )
- }
-
- logger.info('Adding duplicated identity to other members as weakIdentity...')
- // finally let's add the duplicated identity as weakIdentity
- await MemberRepository.addToWeakIdentities(
- otherMembers.map((m) => m.id),
- data.username,
- data.platform,
- txOptions,
- )
-
- await SequelizeRepository.commitTransaction(transaction)
- count++
- } catch (err) {
- logger.error(err, 'Error while merging members that can not be automatically merged!')
- if (transaction) {
- await SequelizeRepository.rollbackTransaction(transaction)
- }
- }
- }
- }
-
- await Promise.all(promises)
- return count
-}
-
-setImmediate(async () => {
- log.info('Starting merge duplicated members script...')
- let count = await check()
-
- while (count > 0) {
- count = await check()
- }
-})
diff --git a/backend/src/bin/scripts/merge-duplicated-organizations.ts b/backend/src/bin/scripts/merge-duplicated-organizations.ts
index 19902c3d09..29646d2b35 100644
--- a/backend/src/bin/scripts/merge-duplicated-organizations.ts
+++ b/backend/src/bin/scripts/merge-duplicated-organizations.ts
@@ -1,8 +1,11 @@
import { QueryTypes } from 'sequelize'
+
import { getServiceLogger } from '@crowd/logging'
+
+import SegmentRepository from '@/database/repositories/segmentRepository'
+
import SequelizeRepository from '../../database/repositories/sequelizeRepository'
import OrganizationService from '../../services/organizationService'
-import SegmentRepository from '@/database/repositories/segmentRepository'
/* eslint-disable no-continue */
/* eslint-disable @typescript-eslint/no-loop-func */
@@ -63,7 +66,7 @@ async function mergeOrganizationsWithSameWebsite(): Promise {
const primaryOrganizationId = orgInfo.organizationIds.shift()
for (const orgId of orgInfo.organizationIds) {
log.info(`Merging organization ${orgId} into ${primaryOrganizationId}!`)
- await service.merge(primaryOrganizationId, orgId)
+ await service.mergeSync(primaryOrganizationId, orgId, null)
}
}
} while (mergeableOrganizations.length > 0)
diff --git a/backend/src/bin/scripts/merge-members.ts b/backend/src/bin/scripts/merge-members.ts
index 00dd232dec..bb7cec12bc 100644
--- a/backend/src/bin/scripts/merge-members.ts
+++ b/backend/src/bin/scripts/merge-members.ts
@@ -2,10 +2,13 @@ import commandLineArgs from 'command-line-args'
import commandLineUsage from 'command-line-usage'
import * as fs from 'fs'
import path from 'path'
+
+import { CommonMemberService } from '@crowd/common_services'
+import { optionsQx } from '@crowd/data-access-layer'
+import { MemberField, findMemberById } from '@crowd/data-access-layer/src/members'
import { getServiceLogger } from '@crowd/logging'
-import MemberRepository from '../../database/repositories/memberRepository'
+
import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import MemberService from '../../services/memberService'
/* eslint-disable no-console */
@@ -63,12 +66,20 @@ if (parameters.help || !parameters.originalId || !parameters.targetId) {
const targetIds = parameters.targetId.split(',')
const options = await SequelizeRepository.getDefaultIRepositoryOptions()
+ const qx = SequelizeRepository.getQueryExecutor(options)
+
+ const originalMember = await findMemberById(qx, originalId, [
+ MemberField.ID,
+ MemberField.TENANT_ID,
+ ])
- const originalMember = await MemberRepository.findById(originalId, options, true, true, true)
options.currentTenant = { id: originalMember.tenantId }
for (const targetId of targetIds) {
- const targetMember = await MemberRepository.findById(targetId, options, true, true, true)
+ const targetMember = await findMemberById(qx, targetId, [
+ MemberField.ID,
+ MemberField.TENANT_ID,
+ ])
if (originalMember.tenantId !== targetMember.tenantId) {
log.error(
@@ -76,7 +87,7 @@ if (parameters.help || !parameters.originalId || !parameters.targetId) {
)
} else {
log.info(`Merging ${targetId} into ${originalId}...`)
- const service = new MemberService(options)
+ const service = new CommonMemberService(optionsQx(options), options.temporal, log)
try {
await service.merge(originalId, targetId)
} catch (err) {
diff --git a/backend/src/bin/scripts/merge-organizations.ts b/backend/src/bin/scripts/merge-organizations.ts
index a3513af201..c154199362 100644
--- a/backend/src/bin/scripts/merge-organizations.ts
+++ b/backend/src/bin/scripts/merge-organizations.ts
@@ -2,11 +2,14 @@ import commandLineArgs from 'command-line-args'
import commandLineUsage from 'command-line-usage'
import * as fs from 'fs'
import path from 'path'
+
import { getServiceLogger } from '@crowd/logging'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
+
import OrganizationRepository from '@/database/repositories/organizationRepository'
import OrganizationService from '@/services/organizationService'
+import SequelizeRepository from '../../database/repositories/sequelizeRepository'
+
/* eslint-disable no-console */
const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
@@ -87,7 +90,7 @@ if (parameters.help || !parameters.originalId || !parameters.toMergeId || !param
log.info(`Merging ${toMergeId} into ${originalId}...`)
const service = new OrganizationService(options)
try {
- await service.merge(originalId, toMergeId)
+ await service.mergeSync(originalId, toMergeId, null)
} catch (err) {
log.error(`Error merging organizations: ${err.message}`)
process.exit(1)
diff --git a/backend/src/bin/scripts/merge-similar-organizations.ts b/backend/src/bin/scripts/merge-similar-organizations.ts
new file mode 100644
index 0000000000..6be6f7b54e
--- /dev/null
+++ b/backend/src/bin/scripts/merge-similar-organizations.ts
@@ -0,0 +1,181 @@
+import commandLineArgs from 'command-line-args'
+import commandLineUsage from 'command-line-usage'
+import * as fs from 'fs'
+import path from 'path'
+import { QueryTypes } from 'sequelize'
+
+import { optionsQx } from '@crowd/data-access-layer'
+import { addMergeAction, setMergeAction } from '@crowd/data-access-layer/src/mergeActions/repo'
+import { MergeActionState, MergeActionType } from '@crowd/types'
+
+import { IRepositoryOptions } from '@/database/repositories/IRepositoryOptions'
+import getUserContext from '@/database/utils/getUserContext'
+import OrganizationService from '@/services/organizationService'
+import TenantService from '@/services/tenantService'
+
+import SequelizeRepository from '../../database/repositories/sequelizeRepository'
+
+/* eslint-disable no-console */
+
+const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
+
+const options = [
+ {
+ name: 'tenant',
+ alias: 't',
+ type: String,
+ description: 'The unique ID of tenant',
+ },
+ {
+ name: 'allTenants',
+ alias: 'a',
+ type: Boolean,
+ defaultValue: false,
+ description: 'Set this flag to merge similar organizations for all tenants.',
+ },
+ {
+ name: 'similarityThreshold',
+ alias: 's',
+ type: String,
+ defaultValue: false,
+ description:
+ 'Similarity threshold of organization merge suggestions. Suggestions lower than this value will not be merged. Defaults to 0.95',
+ },
+ {
+ name: 'hardLimit',
+ alias: 'l',
+ type: String,
+ defaultValue: false,
+ description: `Hard limit for # of organizations that'll be merged. Mostly a flag for testing purposes.`,
+ },
+ {
+ name: 'help',
+ alias: 'h',
+ type: Boolean,
+ description: 'Print this usage guide.',
+ },
+]
+const sections = [
+ {
+ content: banner,
+ raw: true,
+ },
+ {
+ header: 'Merge organizations with similarity higher than given threshold.',
+ content: 'Merge organizations with similarity higher than given threshold.',
+ },
+ {
+ header: 'Options',
+ optionList: options,
+ },
+]
+
+const usage = commandLineUsage(sections)
+const parameters = commandLineArgs(options)
+
+if (parameters.help || (!parameters.tenant && !parameters.allTenants)) {
+ console.log(usage)
+} else {
+ setImmediate(async () => {
+ const options = await SequelizeRepository.getDefaultIRepositoryOptions()
+
+ let tenantIds
+
+ if (parameters.allTenants) {
+ tenantIds = (await TenantService._findAndCountAllForEveryUser({})).rows.map((t) => t.id)
+ } else if (parameters.tenant) {
+ tenantIds = parameters.tenant.split(',')
+ } else {
+ tenantIds = []
+ }
+
+ for (const tenantId of tenantIds) {
+ const userContext: IRepositoryOptions = await getUserContext(tenantId)
+ const orgService = new OrganizationService(userContext)
+
+ let hasMoreData = true
+ let counter = 0
+
+ while (hasMoreData) {
+ // find organization merge suggestions of tenant
+ const result = await options.database.sequelize.query(
+ `
+ SELECT
+ "ot"."organizationId",
+ "ot"."toMergeId",
+ "ot".similarity,
+ "ot".status,
+ "org1"."displayName" AS "orgDisplayName",
+ "org2"."displayName" AS "mergeDisplayName"
+ FROM
+ "organizationToMerge" "ot"
+ LEFT JOIN
+ "organizations" "org1"
+ ON
+ "ot"."organizationId" = "org1"."id"
+ LEFT JOIN
+ "organizations" "org2"
+ ON
+ "ot"."toMergeId" = "org2"."id"
+ WHERE
+ ("ot".similarity > :similarityThreshold) AND
+ ("org1"."displayName" ilike "org2"."displayName") AND
+ ("org1"."tenantId" = :tenantId) AND
+ ("org2"."tenantId" = :tenantId)
+ ORDER BY
+ "ot".similarity DESC
+ LIMIT 100
+ OFFSET :offset;`,
+ {
+ replacements: {
+ similarityThreshold: parameters.similarityThreshold || 0.95,
+ offset: 0,
+ tenantId,
+ },
+ type: QueryTypes.SELECT,
+ },
+ )
+
+ if (result.length === 0) {
+ hasMoreData = false
+ } else {
+ for (const row of result) {
+ try {
+ console.log(
+ `Merging [${row.organizationId}] "${row.orgDisplayName}" into ${row.toMergeId} "${row.mergeDisplayName}"...`,
+ )
+ await addMergeAction(
+ optionsQx(userContext),
+ MergeActionType.ORG,
+ row.organizationId,
+ row.toMergeId,
+ undefined,
+ )
+ await orgService.mergeSync(row.organizationId, row.toMergeId, null)
+ } catch (err) {
+ console.log('Error merging organizations - continuing with the rest', err)
+ await setMergeAction(
+ optionsQx(userContext),
+ MergeActionType.ORG,
+ row.organizationId,
+ row.toMergeId,
+ {
+ state: MergeActionState.ERROR,
+ },
+ )
+ }
+
+ if (parameters.hardLimit && counter >= parameters.hardLimit) {
+ console.log(`Hard limit of ${parameters.hardLimit} reached. Exiting...`)
+ process.exit(0)
+ }
+
+ counter += 1
+ }
+ }
+ }
+ }
+
+ process.exit(0)
+ })
+}
diff --git a/backend/src/bin/scripts/process-bot-members.ts b/backend/src/bin/scripts/process-bot-members.ts
new file mode 100644
index 0000000000..68cf47e862
--- /dev/null
+++ b/backend/src/bin/scripts/process-bot-members.ts
@@ -0,0 +1,93 @@
+import commandLineArgs from 'command-line-args'
+
+import { DEFAULT_TENANT_ID } from '@crowd/common'
+import { fetchBotCandidateMembers, pgpQx } from '@crowd/data-access-layer'
+import { getDbConnection } from '@crowd/data-access-layer/src/database'
+import { chunkArray } from '@crowd/data-access-layer/src/old/apps/merge_suggestions_worker/utils'
+import { getServiceLogger } from '@crowd/logging'
+import { getTemporalClient } from '@crowd/temporal'
+
+import { DB_CONFIG, TEMPORAL_CONFIG } from '@/conf'
+
+const log = getServiceLogger()
+
+const options = [
+ {
+ name: 'testRun',
+ alias: 't',
+ type: Boolean,
+ description: 'Run in test mode (limit to 10 members).',
+ },
+ {
+ name: 'help',
+ alias: 'h',
+ type: Boolean,
+ description: 'Print this usage guide.',
+ },
+]
+
+const parameters = commandLineArgs(options)
+
+setImmediate(async () => {
+ const testRun = parameters.testRun ?? false
+ const BATCH_SIZE = testRun ? 10 : 100
+
+ const db = await getDbConnection({
+ host: DB_CONFIG.readHost,
+ port: DB_CONFIG.port,
+ database: DB_CONFIG.database,
+ user: DB_CONFIG.username,
+ password: DB_CONFIG.password,
+ })
+
+ const qx = pgpQx(db)
+ const temporal = await getTemporalClient(TEMPORAL_CONFIG)
+
+ log.info({ testRun, BATCH_SIZE }, 'Running script with the following parameters!')
+
+ let botLikeMembers = []
+
+ do {
+ botLikeMembers = await fetchBotCandidateMembers(qx, BATCH_SIZE)
+
+ const chunks = chunkArray(botLikeMembers, 10)
+
+ for (const chunk of chunks) {
+ // parallel processing
+ await Promise.all(
+ chunk.map(async (memberId) => {
+ if (testRun) {
+ log.info({ memberId }, 'Triggering workflow for member!')
+ }
+
+ try {
+ await temporal.workflow.start('processMemberBotAnalysisWithLLM', {
+ taskQueue: 'profiles',
+ workflowId: `member-bot-analysis-with-llm/${memberId}`,
+ retry: {
+ maximumAttempts: 10,
+ },
+ args: [{ memberId }],
+ searchAttributes: {
+ TenantId: [DEFAULT_TENANT_ID],
+ },
+ })
+
+ // wait till the workflow is finished
+ await temporal.workflow.result(`member-bot-analysis-with-llm/${memberId}`)
+ } catch (err) {
+ log.error({ memberId, err }, 'Failed to trigger workflow for member!')
+ throw err
+ }
+ }),
+ )
+ }
+
+ if (testRun) {
+ log.info('Test run - stopping after first batch!')
+ break
+ }
+ } while (botLikeMembers.length > 0)
+
+ process.exit(0)
+})
diff --git a/backend/src/bin/scripts/process-integration.ts b/backend/src/bin/scripts/process-integration.ts
deleted file mode 100644
index 499571d6bf..0000000000
--- a/backend/src/bin/scripts/process-integration.ts
+++ /dev/null
@@ -1,210 +0,0 @@
-import { processPaginated, singleOrDefault } from '@crowd/common'
-import { INTEGRATION_SERVICES } from '@crowd/integrations'
-import { getServiceLogger } from '@crowd/logging'
-import commandLineArgs from 'command-line-args'
-import commandLineUsage from 'command-line-usage'
-import * as fs from 'fs'
-import path from 'path'
-import { IntegrationRunState } from '@crowd/types'
-import IntegrationRepository from '../../database/repositories/integrationRepository'
-import IntegrationRunRepository from '../../database/repositories/integrationRunRepository'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import { getIntegrationRunWorkerEmitter } from '../../serverless/utils/serviceSQS'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerIntegrationProcessMessage } from '../../types/mq/nodeWorkerIntegrationProcessMessage'
-
-/* eslint-disable no-console */
-
-const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
-
-const log = getServiceLogger()
-
-const options = [
- {
- name: 'integration',
- alias: 'i',
- typeLabel: '{underline integrationId}',
- type: String,
- description:
- 'The unique ID of integration that you would like to process. Use comma delimiter when sending multiple integrations.',
- },
- {
- name: 'onboarding',
- alias: 'o',
- description: 'Process integration as if it was onboarding.',
- type: Boolean,
- defaultValue: false,
- },
- {
- name: 'disableFiringCrowdWebhooks',
- alias: 'd',
- typeLabel: '{underline disableFiringCrowdWebhooks}',
- type: Boolean,
- defaultOption: false,
- description: 'Should it disable firing outgoing crowd webhooks?',
- },
- {
- name: 'platform',
- alias: 'p',
- description: 'The platform for which we should run all integrations.',
- },
- {
- name: 'help',
- alias: 'h',
- type: Boolean,
- description: 'Print this usage guide.',
- },
-]
-const sections = [
- {
- content: banner,
- raw: true,
- },
- {
- header: 'Process Integration',
- content: 'Trigger processing of integrations.',
- },
- {
- header: 'Options',
- optionList: options,
- },
-]
-
-const usage = commandLineUsage(sections)
-const parameters = commandLineArgs(options)
-
-const triggerIntegrationRun = async (
- runRepo: IntegrationRunRepository,
- tenantId: string,
- integrationId: string,
- onboarding: boolean,
- fireCrowdWebhooks: boolean,
-) => {
- const existingRun = await runRepo.findLastProcessingRun(integrationId)
-
- if (existingRun && existingRun.onboarding) {
- log.error('Integration is already processing, skipping!')
- return
- }
-
- log.info(
- { integrationId, onboarding },
- 'Integration found - creating a new run in the old framework!',
- )
- const run = await runRepo.create({
- integrationId,
- tenantId,
- onboarding,
- state: IntegrationRunState.PENDING,
- })
-
- log.info(
- { integrationId, onboarding },
- 'Triggering SQS message for the old framework integration!',
- )
- await sendNodeWorkerMessage(
- tenantId,
- new NodeWorkerIntegrationProcessMessage(run.id, null, fireCrowdWebhooks),
- )
-}
-
-const triggerNewIntegrationRun = async (
- tenantId: string,
- integrationId: string,
- platform: string,
- onboarding: boolean,
-) => {
- log.info(
- { integrationId, onboarding },
- 'Triggering SQS message for the new framework integration!',
- )
-
- const emitter = await getIntegrationRunWorkerEmitter()
- await emitter.triggerIntegrationRun(tenantId, platform, integrationId, onboarding)
-}
-
-if (parameters.help || (!parameters.integration && !parameters.platform)) {
- console.log(usage)
-} else {
- setImmediate(async () => {
- const onboarding = parameters.onboarding
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
-
- const fireCrowdWebhooks = !parameters.disableFiringCrowdWebhooks
-
- const runRepo = new IntegrationRunRepository(options)
-
- if (parameters.platform) {
- let inNewFramework = false
-
- if (singleOrDefault(INTEGRATION_SERVICES, (s) => s.type === parameters.platform)) {
- inNewFramework = true
- }
-
- await processPaginated(
- async (page) => IntegrationRepository.findAllActive(parameters.platform, page, 10),
- async (integrations) => {
- for (const i of integrations) {
- const integration = i as any
-
- if (inNewFramework) {
- await triggerNewIntegrationRun(
- integration.tenantId,
- integration.id,
- integration.platform,
- onboarding,
- )
- } else {
- await triggerIntegrationRun(
- runRepo,
- integration.tenantId,
- integration.id,
- onboarding,
- fireCrowdWebhooks,
- )
- }
- }
- },
- )
- } else {
- const integrationIds = parameters.integration.split(',')
- for (const integrationId of integrationIds) {
- const integration = await options.database.integration.findOne({
- where: { id: integrationId },
- })
-
- if (!integration) {
- log.error({ integrationId }, 'Integration not found!')
- process.exit(1)
- } else {
- log.info({ integrationId, onboarding }, 'Integration found - triggering SQS message!')
-
- let inNewFramework = false
-
- if (singleOrDefault(INTEGRATION_SERVICES, (s) => s.type === integration.platform)) {
- inNewFramework = true
- }
-
- if (inNewFramework) {
- await triggerNewIntegrationRun(
- integration.tenantId,
- integration.id,
- integration.platform,
- onboarding,
- )
- } else {
- await triggerIntegrationRun(
- runRepo,
- integration.tenantId,
- integration.id,
- onboarding,
- fireCrowdWebhooks,
- )
- }
- }
- }
- }
-
- process.exit(0)
- })
-}
diff --git a/backend/src/bin/scripts/process-stream.ts b/backend/src/bin/scripts/process-stream.ts
deleted file mode 100644
index a207c14e6f..0000000000
--- a/backend/src/bin/scripts/process-stream.ts
+++ /dev/null
@@ -1,82 +0,0 @@
-import commandLineArgs from 'command-line-args'
-import commandLineUsage from 'command-line-usage'
-import * as fs from 'fs'
-import path from 'path'
-import { getServiceLogger } from '@crowd/logging'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerIntegrationProcessMessage } from '../../types/mq/nodeWorkerIntegrationProcessMessage'
-import IntegrationRunRepository from '../../database/repositories/integrationRunRepository'
-import IntegrationStreamRepository from '../../database/repositories/integrationStreamRepository'
-
-/* eslint-disable no-console */
-
-const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
-
-const log = getServiceLogger()
-
-const options = [
- {
- name: 'stream',
- alias: 's',
- typeLabel: '{underline streamId}',
- type: String,
- description:
- 'The unique ID of integration stream that you would like to process. Use comma delimiter when sending multiple integration streams.',
- },
- {
- name: 'help',
- alias: 'h',
- type: Boolean,
- description: 'Print this usage guide.',
- },
-]
-const sections = [
- {
- content: banner,
- raw: true,
- },
- {
- header: 'Process integration stream',
- content: 'Trigger processing of integration stream.',
- },
- {
- header: 'Options',
- optionList: options,
- },
-]
-
-const usage = commandLineUsage(sections)
-const parameters = commandLineArgs(options)
-
-if (parameters.help && !parameters.stream) {
- console.log(usage)
-} else {
- setImmediate(async () => {
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
-
- const streamRepo = new IntegrationStreamRepository(options)
- const runRepo = new IntegrationRunRepository(options)
-
- const streamIds = parameters.stream.split(',')
- for (const streamId of streamIds) {
- const stream = await streamRepo.findById(streamId)
-
- if (!stream) {
- log.error({ streamId }, 'Integration stream not found!')
- process.exit(1)
- } else {
- log.info({ streamId }, 'Integration stream found! Triggering SQS message!')
-
- const run = await runRepo.findById(stream.runId)
-
- await sendNodeWorkerMessage(
- run.tenantId,
- new NodeWorkerIntegrationProcessMessage(run.id, stream.id),
- )
- }
- }
-
- process.exit(0)
- })
-}
diff --git a/backend/src/bin/scripts/process-webhook.ts b/backend/src/bin/scripts/process-webhook.ts
deleted file mode 100644
index 8026b15b9a..0000000000
--- a/backend/src/bin/scripts/process-webhook.ts
+++ /dev/null
@@ -1,135 +0,0 @@
-import { getServiceLogger } from '@crowd/logging'
-import { getRedisClient } from '@crowd/redis'
-import commandLineArgs from 'command-line-args'
-import commandLineUsage from 'command-line-usage'
-import * as fs from 'fs'
-import path from 'path'
-import { QueryTypes } from 'sequelize'
-import { IntegrationProcessor } from '@/serverless/integrations/services/integrationProcessor'
-import { REDIS_CONFIG } from '../../conf'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-
-/* eslint-disable no-console */
-
-const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
-
-const log = getServiceLogger()
-
-const options = [
- {
- name: 'webhook',
- alias: 'w',
- typeLabel: '{underline webhookId}',
- type: String,
- description:
- 'The unique ID of webhook that you would like to process. Use comma delimiter when sending multiple webhooks.',
- },
- {
- name: 'tenant',
- alias: 't',
- typeLabel: '{underline tenantId}',
- type: String,
- description:
- 'The unique ID of tenant that you would like to process. Use in combination with type.',
- },
- {
- name: 'type',
- alias: 'p',
- typeLabel: '{underline type}',
- type: String,
- description: 'The webhook type to process. Use in combination with tenant.',
- },
- {
- name: 'help',
- alias: 'h',
- type: Boolean,
- description: 'Print this usage guide.',
- },
-]
-const sections = [
- {
- content: banner,
- raw: true,
- },
- {
- header: 'Process Webhook',
- content: 'Trigger processing of webhooks.',
- },
- {
- header: 'Options',
- optionList: options,
- },
-]
-
-const usage = commandLineUsage(sections)
-const parameters = commandLineArgs(options)
-
-if (parameters.help || (!parameters.webhook && (!parameters.tenant || !parameters.type))) {
- console.log(usage)
-} else {
- setImmediate(async () => {
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
- const redisEmitter = await getRedisClient(REDIS_CONFIG)
- const integrationProcessorInstance = new IntegrationProcessor(options, redisEmitter)
-
- if (parameters.webhook) {
- const webhookIds = parameters.webhook.split(',')
-
- for (const webhookId of webhookIds) {
- log.info({ webhookId }, 'Webhook found - processing!')
- await integrationProcessorInstance.processWebhook(webhookId, true, true)
- }
- } else if (parameters.tenant && parameters.type) {
- const seq = SequelizeRepository.getSequelize(options)
-
- let ids = (
- await seq.query(
- `
- select id from "incomingWebhooks"
- where state in ('PENDING', 'ERROR')
- and "tenantId" = :tenantId and type = :type
- order by id
- limit 100
- `,
- {
- type: QueryTypes.SELECT,
- replacements: {
- tenantId: parameters.tenant,
- type: parameters.type,
- },
- },
- )
- ).map((r) => (r as any).id)
-
- while (ids.length > 0) {
- for (const webhookId of ids) {
- log.info({ webhookId }, 'Webhook found - processing!')
- await integrationProcessorInstance.processWebhook(webhookId, true, true)
- }
-
- ids = (
- await seq.query(
- `
- select id from "incomingWebhooks"
- where state in ('PENDING', 'ERROR')
- and "tenantId" = :tenantId and type = :type
- and id > :id
- order by id
- limit 100
- `,
- {
- type: QueryTypes.SELECT,
- replacements: {
- tenantId: parameters.tenant,
- type: parameters.type,
- id: ids[ids.length - 1],
- },
- },
- )
- ).map((r) => (r as any).id)
- }
- }
-
- process.exit(0)
- })
-}
diff --git a/backend/src/bin/scripts/refresh-github-repo-settings.ts b/backend/src/bin/scripts/refresh-github-repo-settings.ts
new file mode 100644
index 0000000000..97e729c3dd
--- /dev/null
+++ b/backend/src/bin/scripts/refresh-github-repo-settings.ts
@@ -0,0 +1,22 @@
+import { getServiceChildLogger } from '@crowd/logging'
+
+import { refreshGithubRepoSettings } from '../jobs/refreshGithubRepoSettings'
+
+const logger = getServiceChildLogger('refreshGithubRepoSettings')
+
+setImmediate(async () => {
+ try {
+ const startTime = Date.now()
+ logger.info('Starting refresh of Github repo settings')
+
+ await refreshGithubRepoSettings()
+
+ const duration = Date.now() - startTime
+ logger.info(`Completed refresh of Github repo settings in ${duration}ms`)
+
+ process.exit(0)
+ } catch (error) {
+ logger.error(`Error refreshing Github repo settings: ${error.message}`)
+ process.exit(1)
+ }
+})
diff --git a/backend/src/bin/scripts/send-weekly-analytics-email.ts b/backend/src/bin/scripts/send-weekly-analytics-email.ts
deleted file mode 100644
index 3ba2d50bf0..0000000000
--- a/backend/src/bin/scripts/send-weekly-analytics-email.ts
+++ /dev/null
@@ -1,114 +0,0 @@
-import commandLineArgs from 'command-line-args'
-import commandLineUsage from 'command-line-usage'
-import * as fs from 'fs'
-import moment from 'moment'
-import path from 'path'
-import { getServiceLogger } from '@crowd/logging'
-import { timeout } from '@crowd/common'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import { NodeWorkerMessageType } from '../../serverless/types/workerTypes'
-import { NodeWorkerMessageBase } from '../../types/mq/nodeWorkerMessageBase'
-import RecurringEmailsHistoryRepository from '../../database/repositories/recurringEmailsHistoryRepository'
-import { RecurringEmailType } from '../../types/recurringEmailsHistoryTypes'
-import TenantService from '@/services/tenantService'
-
-/* eslint-disable no-console */
-
-const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
-
-const log = getServiceLogger()
-
-const options = [
- {
- name: 'tenant',
- alias: 't',
- type: String,
- description: 'The unique ID of tenant that you would like to send weekly emails to.',
- },
- {
- name: 'sendToAllTenants',
- alias: 'a',
- type: Boolean,
- defaultValue: false,
- description:
- 'Set this flag to send the analytics e-mails to all tenants. Tenants that already got a weekly analytics e-mail for the previous week will be discarded.',
- },
- {
- name: 'help',
- alias: 'h',
- type: Boolean,
- description: 'Print this usage guide.',
- },
-]
-const sections = [
- {
- content: banner,
- raw: true,
- },
- {
- header: 'Send weekly analytics email to given tenant.',
- content:
- 'Sends weekly analytics email to given tenant. The daterange will be from previous week.',
- },
- {
- header: 'Options',
- optionList: options,
- },
-]
-
-const usage = commandLineUsage(sections)
-const parameters = commandLineArgs(options)
-
-if (parameters.help || (!parameters.tenant && !parameters.sendToAllTenants)) {
- console.log(usage)
-} else {
- setImmediate(async () => {
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
-
- let tenantIds
-
- if (parameters.sendToAllTenants) {
- tenantIds = (await TenantService._findAndCountAllForEveryUser({})).rows.map((t) => t.id)
- } else if (parameters.tenant) {
- tenantIds = parameters.tenant.split(',')
- } else {
- tenantIds = []
- }
-
- const weekOfYear = moment().utc().startOf('isoWeek').subtract(7, 'days').isoWeek().toString()
- const rehRepository = new RecurringEmailsHistoryRepository(options)
-
- for (const tenantId of tenantIds) {
- const tenant = await options.database.tenant.findByPk(tenantId)
- const isEmailAlreadySent =
- (await rehRepository.findByWeekOfYear(
- tenantId,
- weekOfYear,
- RecurringEmailType.WEEKLY_ANALYTICS,
- )) !== null
-
- if (!tenant) {
- log.error({ tenantId }, 'Tenant not found! Skipping.')
- } else if (isEmailAlreadySent) {
- log.info(
- { tenantId },
- 'Analytics email for this week is already sent to this tenant. Skipping.',
- )
- } else {
- log.info({ tenantId }, `Tenant found - sending weekly email message!`)
- await sendNodeWorkerMessage(tenant.id, {
- type: NodeWorkerMessageType.NODE_MICROSERVICE,
- tenant: tenant.id,
- service: 'weekly-analytics-emails',
- } as NodeWorkerMessageBase)
-
- if (tenantIds.length > 1) {
- await timeout(1000)
- }
- }
- }
-
- process.exit(0)
- })
-}
diff --git a/backend/src/bin/scripts/trigger-webhook.ts b/backend/src/bin/scripts/trigger-webhook.ts
deleted file mode 100644
index 8490dec005..0000000000
--- a/backend/src/bin/scripts/trigger-webhook.ts
+++ /dev/null
@@ -1,167 +0,0 @@
-import commandLineArgs from 'command-line-args'
-import commandLineUsage from 'command-line-usage'
-import * as fs from 'fs'
-import path from 'path'
-import { getServiceLogger } from '@crowd/logging'
-import { timeout } from '@crowd/common'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import { sendNodeWorkerMessage } from '../../serverless/utils/nodeWorkerSQS'
-import IncomingWebhookRepository from '../../database/repositories/incomingWebhookRepository'
-import { WebhookState, WebhookType } from '../../types/webhooks'
-import { NodeWorkerProcessWebhookMessage } from '../../types/mq/nodeWorkerProcessWebhookMessage'
-import { sqs, getCurrentQueueSize } from '../../services/aws'
-import { WebhookProcessor } from '../../serverless/integrations/services/webhookProcessor'
-import { SQS_CONFIG } from '../../conf'
-
-/* eslint-disable no-console */
-
-const banner = fs.readFileSync(path.join(__dirname, 'banner.txt'), 'utf8')
-
-const log = getServiceLogger()
-
-const options = [
- {
- name: 'webhook',
- alias: 'w',
- typeLabel: '{underline webhookId}',
- type: String,
- description:
- 'The unique ID of webhook that you would like to process. Use comma delimiter when sending multiple webhooks.',
- },
- {
- name: 'force',
- alias: 'f',
- typeLabel: '{underline force}',
- type: Boolean,
- defaultOption: false,
- description: 'Force processing of webhooks.',
- },
- {
- name: 'processPlatformErrors',
- alias: 'p',
- typeLabel: '{underline processPlatformErrors}',
- type: String,
- defaultOption: false,
- description: `Retry error state webhooks in specified platform. Currently supported: ['github', 'discord'].`,
- },
- {
- name: 'help',
- alias: 'h',
- type: Boolean,
- description: 'Print this usage guide.',
- },
-]
-const sections = [
- {
- content: banner,
- raw: true,
- },
- {
- header: 'Process Webhook',
- content: 'Trigger processing of webhooks.',
- },
- {
- header: 'Options',
- optionList: options,
- },
-]
-
-const usage = commandLineUsage(sections)
-const parameters = commandLineArgs(options)
-
-if (parameters.help || (!parameters.webhook && !parameters.processPlatformErrors)) {
- console.log(usage)
-} else {
- setImmediate(async () => {
- const options = await SequelizeRepository.getDefaultIRepositoryOptions()
- const repo = new IncomingWebhookRepository(options)
- let currentPage = 1
- const PROCESS_QUEUE_THRESHOLD = 100
- const PAGE_SIZE = 1000
-
- if (parameters.processPlatformErrors) {
- let webhookType: WebhookType
-
- if (parameters.processPlatformErrors === 'github') {
- webhookType = WebhookType.GITHUB
- } else if (parameters.processPlatformErrors === 'discord') {
- webhookType = WebhookType.DISCORD
- } else {
- console.log(usage)
- process.exit(0)
- }
-
- log.debug('Processing error state webhooks!')
- let webhooks = await repo.findError(
- currentPage,
- PAGE_SIZE,
- WebhookProcessor.MAX_RETRY_LIMIT,
- webhookType,
- )
-
- log.info(webhooks.map((w) => w.id))
-
- while (webhooks.length > 0) {
- for (const webhook of webhooks) {
- log.info({ webhook }, 'Webhook found - triggering SQS message!')
- await sendNodeWorkerMessage(
- webhook.tenantId,
- new NodeWorkerProcessWebhookMessage(webhook.tenantId, webhook.id, true, false),
- )
- }
-
- // no need to process further if result isn't same as page size
- if (webhooks.length < PAGE_SIZE) {
- log.info('Finished processing.')
- break
- }
-
- let queueSize = await getCurrentQueueSize(sqs, SQS_CONFIG.nodejsWorkerQueue)
-
- // ensure queueSize before sending new page message
- while (queueSize > PROCESS_QUEUE_THRESHOLD) {
- log.info(
- `Queue size(${queueSize}) is bigger than threshold(${PROCESS_QUEUE_THRESHOLD}), waiting 30 seconds before retrying.`,
- )
- await timeout(30000)
- queueSize = await getCurrentQueueSize(sqs, SQS_CONFIG.nodejsWorkerQueue)
- }
-
- currentPage += 1
-
- log.info(
- `Queue size(${queueSize}) below threshold(${PROCESS_QUEUE_THRESHOLD}) - Continuing with page${currentPage}`,
- )
-
- webhooks = await repo.findError(
- currentPage,
- PAGE_SIZE,
- WebhookProcessor.MAX_RETRY_LIMIT,
- webhookType,
- )
- }
- } else {
- const webhookIds = parameters.webhook.split(',')
-
- for (const webhookId of webhookIds) {
- const webhook = await repo.findById(webhookId)
-
- if (!webhook) {
- log.error({ webhookId }, 'Webhook not found!')
- process.exit(1)
- } else if (!parameters.force && webhook.state !== WebhookState.PENDING) {
- log.error({ webhookId }, 'Webhook is not in pending state!')
- process.exit(1)
- } else {
- log.info({ webhookId }, 'Webhook found - triggering SQS message!')
- await sendNodeWorkerMessage(
- webhook.tenantId,
- new NodeWorkerProcessWebhookMessage(webhook.tenantId, webhook.id, parameters.force),
- )
- }
- }
- }
-
- process.exit(0)
- })
-}
diff --git a/backend/src/bin/scripts/unleash-init.ts b/backend/src/bin/scripts/unleash-init.ts
deleted file mode 100644
index 61af560df7..0000000000
--- a/backend/src/bin/scripts/unleash-init.ts
+++ /dev/null
@@ -1,392 +0,0 @@
-import Sequelize, { QueryTypes } from 'sequelize'
-import { getServiceLogger } from '@crowd/logging'
-import { generateUUIDv1 } from '@crowd/common'
-import { UnleashContextField } from '../../types/unleashContext'
-import { UNLEASH_CONFIG } from '../../conf'
-import Plans from '../../security/plans'
-import { FeatureFlag } from '../../types/common'
-import { PLAN_LIMITS } from '../../feature-flags/isFeatureEnabled'
-
-/* eslint-disable no-console */
-
-const log = getServiceLogger()
-
-const constaintConfiguration = {
- [FeatureFlag.AUTOMATIONS]: [
- [
- {
- values: [Plans.values.scale],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- {
- value: PLAN_LIMITS[Plans.values.scale][FeatureFlag.AUTOMATIONS].toString(),
- values: [],
- inverted: false,
- operator: 'NUM_LT',
- contextName: 'automationCount',
- caseInsensitive: false,
- },
- ],
- [
- {
- values: [Plans.values.growth],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- {
- value: PLAN_LIMITS[Plans.values.growth][FeatureFlag.AUTOMATIONS].toString(),
- values: [],
- inverted: false,
- operator: 'NUM_LT',
- contextName: 'automationCount',
- caseInsensitive: false,
- },
- ],
- [
- {
- values: [Plans.values.essential],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- {
- value: PLAN_LIMITS[Plans.values.essential][FeatureFlag.AUTOMATIONS].toString(),
- values: [],
- inverted: false,
- operator: 'NUM_LT',
- contextName: 'automationCount',
- caseInsensitive: false,
- },
- ],
- ],
- [FeatureFlag.CSV_EXPORT]: [
- [
- {
- values: [Plans.values.scale],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- {
- value: PLAN_LIMITS[Plans.values.scale][FeatureFlag.CSV_EXPORT].toString(),
- values: [],
- inverted: false,
- operator: 'NUM_LT',
- contextName: 'csvExportCount',
- caseInsensitive: false,
- },
- ],
- [
- {
- values: [Plans.values.growth],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- {
- value: PLAN_LIMITS[Plans.values.growth][FeatureFlag.CSV_EXPORT].toString(),
- values: [],
- inverted: false,
- operator: 'NUM_LT',
- contextName: 'csvExportCount',
- caseInsensitive: false,
- },
- ],
- [
- {
- values: [Plans.values.essential],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- {
- value: PLAN_LIMITS[Plans.values.essential][FeatureFlag.CSV_EXPORT].toString(),
- values: [],
- inverted: false,
- operator: 'NUM_LT',
- contextName: 'csvExportCount',
- caseInsensitive: false,
- },
- ],
- ],
- [FeatureFlag.EAGLE_EYE]: [
- [
- {
- values: [Plans.values.growth, Plans.values.eagleEye, Plans.values.scale],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- ],
- ],
- [FeatureFlag.LINKEDIN]: [
- [
- {
- values: [Plans.values.growth, Plans.values.scale],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- ],
- ],
- [FeatureFlag.HUBSPOT]: [
- [
- {
- values: [Plans.values.scale],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- ],
- ],
- [FeatureFlag.MEMBER_ENRICHMENT]: [
- [
- {
- values: [Plans.values.scale],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- {
- value: PLAN_LIMITS[Plans.values.scale][FeatureFlag.MEMBER_ENRICHMENT].toString(),
- values: [],
- inverted: false,
- operator: 'NUM_LT',
- contextName: 'memberEnrichmentCount',
- caseInsensitive: false,
- },
- ],
- [
- {
- values: [Plans.values.growth],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- {
- value: PLAN_LIMITS[Plans.values.growth][FeatureFlag.MEMBER_ENRICHMENT].toString(),
- values: [],
- inverted: false,
- operator: 'NUM_LT',
- contextName: 'memberEnrichmentCount',
- caseInsensitive: false,
- },
- ],
- ],
- [FeatureFlag.ORGANIZATION_ENRICHMENT]: [
- [
- {
- values: [Plans.values.scale],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- {
- value: PLAN_LIMITS[Plans.values.scale][FeatureFlag.ORGANIZATION_ENRICHMENT].toString(),
- values: [],
- inverted: false,
- operator: 'NUM_LT',
- contextName: 'organizationEnrichmentCount',
- caseInsensitive: false,
- },
- ],
- [
- {
- values: [Plans.values.growth],
- inverted: false,
- operator: 'IN',
- contextName: 'plan',
- caseInsensitive: false,
- },
- {
- value: PLAN_LIMITS[Plans.values.growth][FeatureFlag.ORGANIZATION_ENRICHMENT].toString(),
- values: [],
- inverted: false,
- operator: 'NUM_LT',
- contextName: 'organizationEnrichmentCount',
- caseInsensitive: false,
- },
- ],
- ],
- [FeatureFlag.SEGMENTS]: [],
-}
-
-let seq: any
-
-setImmediate(async () => {
- seq = new (Sequelize)(
- UNLEASH_CONFIG.db.database,
- UNLEASH_CONFIG.db.username,
- UNLEASH_CONFIG.db.password,
- {
- dialect: 'postgres',
- port: UNLEASH_CONFIG.db.port,
- replication: {
- read: [{ host: UNLEASH_CONFIG.db.host }],
- write: { host: UNLEASH_CONFIG.db.host },
- },
- logging: false,
- },
- )
-
- await createApiToken(UNLEASH_CONFIG.adminApiKey, 'admin-token', 'admin')
- await createApiToken(UNLEASH_CONFIG.frontendApiKey, 'frontend-token', 'frontend')
- await createApiToken(UNLEASH_CONFIG.backendApiKey, 'backend-token', 'client')
-
- const allContextFields = Object.values(UnleashContextField)
- for (const field of allContextFields) {
- await createContextField(field)
- }
-
- const allFeatureFlags = Object.values(FeatureFlag)
- for (const flag of allFeatureFlags) {
- await createFeatureFlag(flag)
- await createStrategy(flag, constaintConfiguration[flag])
- }
-
- process.exit(0)
-})
-
-async function createApiToken(token: string, name: string, type: string): Promise {
- const results = await seq.query(
- 'select * from api_tokens where secret = :token and type = :type and username = :name;',
- {
- replacements: {
- token,
- name,
- type,
- },
- type: QueryTypes.SELECT,
- },
- )
- if (results.length === 0) {
- log.info(`${name} token not found - creating...`)
- await seq.query(
- `insert into api_tokens(secret, username, type, environment) values (:token, :name, :type, 'production')`,
- {
- replacements: {
- token,
- name,
- type,
- },
- type: QueryTypes.INSERT,
- },
- )
- } else {
- log.info(`${name} token found!`)
- }
-}
-
-async function createContextField(field: string): Promise {
- const results = await seq.query(`select * from context_fields where name = :field`, {
- replacements: {
- field,
- },
- type: QueryTypes.SELECT,
- })
-
- if (results.length === 0) {
- log.info(`Context field ${field} not found - creating...`)
- await seq.query(`insert into context_fields(name, stickiness) values (:field, true)`, {
- replacements: {
- field,
- },
- type: QueryTypes.INSERT,
- })
- } else {
- log.info(`Context field ${field} found!`)
- }
-}
-
-async function createFeatureFlag(flag: FeatureFlag): Promise {
- const results = await seq.query(
- `select * from features where name = :flag and type = 'permission'`,
- {
- replacements: {
- flag,
- },
- type: QueryTypes.SELECT,
- },
- )
-
- if (results.length === 0) {
- log.info(`Feature flag ${flag} not found - creating...`)
- await seq.query(
- `insert into features(name, description, type) values (:flag, '', 'permission')`,
- {
- replacements: {
- flag,
- },
- type: QueryTypes.INSERT,
- },
- )
- await seq.query(
- `insert into feature_environments(environment, feature_name, enabled) values ('production', :flag, true)`,
- {
- replacements: {
- flag,
- },
- type: QueryTypes.INSERT,
- },
- )
- } else {
- log.info(`Feature flag ${flag} found!`)
- }
-}
-
-async function createStrategy(flag: FeatureFlag, constraints: any[]): Promise {
- const results = await seq.query(
- `select * from feature_strategies where feature_name = :flag and project_name = 'default' and environment = 'production' and strategy_name = 'default'`,
- {
- replacements: {
- flag,
- },
- type: QueryTypes.SELECT,
- },
- )
-
- if (results.length > 0) {
- log.warn(`Feature flag ${flag} constraints found - re-creating...`)
- await seq.query(
- `delete from feature_strategies where feature_name = :flag and project_name = 'default' and environment = 'production' and strategy_name = 'default'`,
- {
- replacements: {
- flag,
- },
- type: QueryTypes.DELETE,
- },
- )
- }
-
- log.info(`Feature flag ${flag} constraints not found - creating...`)
-
- for (const constraint of constraints) {
- const id = generateUUIDv1()
- await seq.query(
- `insert into feature_strategies(id, feature_name, project_name, environment, strategy_name, constraints) values (:id, :flag, 'default', 'production', 'default', :constraint)`,
- {
- replacements: {
- flag,
- id,
- constraint: JSON.stringify(constraint),
- },
- type: QueryTypes.INSERT,
- },
- )
- }
-}
diff --git a/backend/src/database/migrations/U1670239828__tenantPlanUpdates.sql b/backend/src/bin/tmp/.gitkeep
similarity index 100%
rename from backend/src/database/migrations/U1670239828__tenantPlanUpdates.sql
rename to backend/src/bin/tmp/.gitkeep
diff --git a/backend/src/bin/worker/integrations.ts b/backend/src/bin/worker/integrations.ts
deleted file mode 100644
index 387de96fa8..0000000000
--- a/backend/src/bin/worker/integrations.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { getRedisClient } from '@crowd/redis'
-import { Logger } from '@crowd/logging'
-import { REDIS_CONFIG } from '../../conf'
-import SequelizeRepository from '../../database/repositories/sequelizeRepository'
-import { IntegrationProcessor } from '../../serverless/integrations/services/integrationProcessor'
-import { IServiceOptions } from '../../services/IServiceOptions'
-import { NodeWorkerIntegrationProcessMessage } from '../../types/mq/nodeWorkerIntegrationProcessMessage'
-import { NodeWorkerProcessWebhookMessage } from '../../types/mq/nodeWorkerProcessWebhookMessage'
-
-let integrationProcessorInstance: IntegrationProcessor
-
-async function getIntegrationProcessor(logger: Logger): Promise {
- if (integrationProcessorInstance) return integrationProcessorInstance
-
- const options: IServiceOptions = {
- ...(await SequelizeRepository.getDefaultIRepositoryOptions()),
- log: logger,
- }
-
- const redisEmitter = await getRedisClient(REDIS_CONFIG)
-
- integrationProcessorInstance = new IntegrationProcessor(options, redisEmitter)
-
- return integrationProcessorInstance
-}
-
-export const processIntegration = async (
- msg: NodeWorkerIntegrationProcessMessage,
- messageLogger: Logger,
-): Promise => {
- const processor = await getIntegrationProcessor(messageLogger)
- await processor.process(msg)
-}
-
-export const processWebhook = async (
- msg: NodeWorkerProcessWebhookMessage,
- messageLogger: Logger,
-): Promise => {
- const processor = await getIntegrationProcessor(messageLogger)
- await processor.processWebhook(msg.webhookId, msg.force, msg.fireCrowdWebhooks)
-}
diff --git a/backend/src/conf/configTypes.ts b/backend/src/conf/configTypes.ts
index 8b4dd7deaa..68df3b898a 100644
--- a/backend/src/conf/configTypes.ts
+++ b/backend/src/conf/configTypes.ts
@@ -1,6 +1,5 @@
export enum ServiceType {
API = 'api',
- NODEJS_WORKER = 'nodejs-worker',
JOB_GENERATOR = 'job-generator',
}
@@ -11,22 +10,12 @@ export enum TenantMode {
}
export interface AwsCredentials {
- accountId: string
+ endpoint: string
accessKeyId: string
secretAccessKey: string
region: string
}
-export interface SQSConfiguration {
- host?: string
- port?: number
- nodejsWorkerQueue: string
- nodejsWorkerDelayableQueue: string
- integrationRunWorkerQueue: string
- pythonWorkerQueue: string
- aws: AwsCredentials
-}
-
export interface S3Configuration {
host?: string
port?: number
@@ -52,8 +41,6 @@ export interface DbConfiguration {
password?: string
apiUsername?: string
apiPassword?: string
- nodejsWorkerUsername?: string
- nodejsWorkerPassword?: string
jobGeneratorUsername?: string
jobGeneratorPassword?: string
@@ -81,17 +68,14 @@ export interface ApiConfiguration {
export interface Auth0Configuration {
clientId: string
jwks: string
+ issuerBaseURLs: string
+ audience: string
}
-export interface PlansConfiguration {
- stripePricePremium: string
- stripePriceEnterprise: string
- stripeSecretKey: string
- stripWebhookSigningSecret: string
- stripeEagleEyePlanProductId: string
- stripeGrowthPlanProductId: string
+export interface SSOConfiguration {
+ crowdTenantId: string
+ lfTenantId: string
}
-
export interface DevtoConfiguration {
globalLimit?: number
}
@@ -117,11 +101,6 @@ export interface SlackConfiguration {
appToken?: string
}
-export interface SlackNotifierConfiguration {
- clientId: string
- clientSecret: string
-}
-
export interface GoogleConfiguration {
clientId: string
clientSecret: string
@@ -143,36 +122,11 @@ export interface GithubConfiguration {
privateKey: string
webhookSecret: string
isCommitDataEnabled: string
+ isSnowflakeEnabled: string
globalLimit?: number
callbackUrl: string
}
-export interface SendgridConfiguration {
- key: string
- webhookSigningSecret: string
- emailFrom: string
- nameFrom: string
- templateEmailAddressVerification: string
- templateInvitation: string
- templatePasswordReset: string
- templateWeeklyAnalytics: string
- templateIntegrationDone: string
- templateCsvExport: string
- templateEagleEyeDigest: string
- weeklyAnalyticsUnsubscribeGroupId: string
-}
-
-export interface NetlifyConfiguration {
- apiKey: string
- siteDomain: string
-}
-
-export interface CubeJSConfiguration {
- url: string
- jwtSecret: string
- jwtExpiry: string
-}
-
export interface NangoConfiguration {
url: string
secretKey: string
@@ -192,46 +146,24 @@ export interface EagleEyeConfiguration {
apiKey: string
}
-export interface UnleashConfiguration {
- url: string
- adminApiKey: string
- frontendApiKey: string
- backendApiKey: string
-
- db: {
- host: string
- port: number
- username: string
- password: string
- database: string
- }
+export interface GithubTokenConfiguration {
+ clientId: string
+ installationId: string
+ privateKey: string
}
export interface StackExchangeConfiguration {
key: string
}
-export interface SlackAlertingConfiguration {
- url: string
-}
-
-export interface SampleDataConfiguration {
- tenantId: string
-}
-
export interface IntegrationProcessingConfiguration {
maxRetries: number
}
-export interface WeeklyEmailsConfiguration {
- enabled: string // true - enabled, anything else - disabled
-}
-
export interface IOpenSearchConfig {
node: string
- region?: string
- accessKeyId?: string
- secretAccessKey?: string
+ username: string
+ password: string
}
export interface CrowdAnalyticsConfiguration {
@@ -240,3 +172,37 @@ export interface CrowdAnalyticsConfiguration {
baseUrl: string
apiToken: string
}
+
+export interface EncryptionConfiguration {
+ secretKey: string
+ initVector: string
+}
+
+export interface IOpenStatusApiConfig {
+ baseUrl: string
+}
+
+export interface GitlabConfiguration {
+ clientId: string
+ clientSecret: string
+ callbackUrl: string
+ webhookToken: string
+}
+
+export interface IRedditConfig {
+ clientId: string
+ clientSecret: string
+}
+
+export interface SnowflakeConfiguration {
+ privateKey: string
+ account: string
+ username: string
+ database: string
+ warehouse: string
+ role: string
+}
+
+export interface LinuxFoundationConfiguration {
+ collectionId: string
+}
diff --git a/backend/src/conf/index.ts b/backend/src/conf/index.ts
index 41220ae8ba..553167cde5 100644
--- a/backend/src/conf/index.ts
+++ b/backend/src/conf/index.ts
@@ -1,43 +1,51 @@
import config from 'config'
+
+import { IDatabaseConfig } from '@crowd/data-access-layer/src/database'
+import { ISearchSyncApiConfig } from '@crowd/opensearch'
+import { IQueueClientConfig } from '@crowd/queue'
import { IRedisConfiguration } from '@crowd/redis'
+import { ITemporalConfig } from '@crowd/temporal'
+import { IGithubIssueReporterConfiguration, IJiraIssueReporterConfiguration } from '@crowd/types'
+
import {
- SQSConfiguration,
- S3Configuration,
- DbConfiguration,
- PlansConfiguration,
- TwitterConfiguration,
ApiConfiguration,
- SlackConfiguration,
- GoogleConfiguration,
- DiscordConfiguration,
- ServiceType,
- SegmentConfiguration,
- GithubConfiguration,
- SendgridConfiguration,
- NetlifyConfiguration,
- TenantMode,
- CubeJSConfiguration,
- ComprehendConfiguration,
+ Auth0Configuration,
ClearbitConfiguration,
- DevtoConfiguration,
- NangoConfiguration,
- EnrichmentConfiguration,
+ ComprehendConfiguration,
+ CrowdAnalyticsConfiguration,
+ DbConfiguration,
+ DiscordConfiguration,
EagleEyeConfiguration,
- UnleashConfiguration,
- StackExchangeConfiguration,
- SlackAlertingConfiguration,
- SampleDataConfiguration,
+ EncryptionConfiguration,
+ EnrichmentConfiguration,
+ GithubConfiguration,
+ GithubTokenConfiguration,
+ GitlabConfiguration,
+ GoogleConfiguration,
+ IOpenSearchConfig,
+ IOpenStatusApiConfig,
+ IRedditConfig,
IntegrationProcessingConfiguration,
- SlackNotifierConfiguration,
+ LinuxFoundationConfiguration,
+ NangoConfiguration,
OrganizationEnrichmentConfiguration,
- IOpenSearchConfig,
- Auth0Configuration,
- WeeklyEmailsConfiguration,
- CrowdAnalyticsConfiguration,
+ S3Configuration,
+ SSOConfiguration,
+ SegmentConfiguration,
+ ServiceType,
+ SlackConfiguration,
+ SnowflakeConfiguration,
+ StackExchangeConfiguration,
+ TenantMode,
+ TwitterConfiguration,
} from './configTypes'
// TODO-kube
+export const ENCRYPTION_SECRET_KEY = process.env.ENCRYPTION_SECRET_KEY
+
+export const ENCRYPTION_INIT_VECTOR = process.env.ENCRYPTION_INIT_VECTOR
+
export const KUBE_MODE: boolean = process.env.KUBE_MODE !== undefined
export const SERVICE: ServiceType = process.env.SERVICE as ServiceType
@@ -59,7 +67,10 @@ export const LOG_LEVEL: string = process.env.LOG_LEVEL || 'info'
export const IS_CLOUD_ENV: boolean = IS_PROD_ENV || IS_STAGING_ENV
-export const SQS_CONFIG: SQSConfiguration = config.get('sqs')
+export const ENCRYPTION_CONFIG: EncryptionConfiguration =
+ config.get('encryption')
+
+export const QUEUE_CONFIG: IQueueClientConfig = config.get('queue')
export const REDIS_CONFIG: IRedisConfiguration = config.get('redis')
@@ -67,6 +78,14 @@ export const S3_CONFIG: S3Configuration = config.get('s3')
export const DB_CONFIG: DbConfiguration = config.get('db')
+export const PRODUCT_DB_CONFIG: IDatabaseConfig = config.has('productDb')
+ ? config.get('productDb')
+ : undefined
+
+export const PACKAGES_DB_CONFIG: IDatabaseConfig | undefined = config.has('packagesDb')
+ ? config.get('packagesDb')
+ : undefined
+
export const SEGMENT_CONFIG: SegmentConfiguration = config.get('segment')
export const COMPREHEND_CONFIG: ComprehendConfiguration =
@@ -78,28 +97,23 @@ export const API_CONFIG: ApiConfiguration = config.get('api')
export const AUTH0_CONFIG: Auth0Configuration = config.get('auth0')
-export const PLANS_CONFIG: PlansConfiguration = config.get('plans')
-
-export const DEVTO_CONFIG: DevtoConfiguration = config.get('devto')
+export const SSO_CONFIG: SSOConfiguration = config.get('sso')
export const TWITTER_CONFIG: TwitterConfiguration = config.get('twitter')
export const SLACK_CONFIG: SlackConfiguration = config.get('slack')
-export const SLACK_NOTIFIER_CONFIG: SlackNotifierConfiguration =
- config.get('slackNotifier')
-
export const GOOGLE_CONFIG: GoogleConfiguration = config.get('google')
export const DISCORD_CONFIG: DiscordConfiguration = config.get('discord')
export const GITHUB_CONFIG: GithubConfiguration = config.get('github')
-export const SENDGRID_CONFIG: SendgridConfiguration = config.get('sendgrid')
-
-export const NETLIFY_CONFIG: NetlifyConfiguration = config.get('netlify')
+export const GITHUB_ISSUE_REPORTER_CONFIG: IGithubIssueReporterConfiguration =
+ config.get('githubIssueReporter')
-export const CUBEJS_CONFIG: CubeJSConfiguration = config.get('cubejs')
+export const JIRA_ISSUE_REPORTER_CONFIG: IJiraIssueReporterConfiguration =
+ config.get('jiraIssueReporter')
export const NANGO_CONFIG: NangoConfiguration = config.get('nango')
@@ -111,7 +125,8 @@ export const ORGANIZATION_ENRICHMENT_CONFIG: OrganizationEnrichmentConfiguration
export const EAGLE_EYE_CONFIG: EagleEyeConfiguration = config.get('eagleEye')
-export const UNLEASH_CONFIG: UnleashConfiguration = config.get('unleash')
+export const GITHUB_TOKEN_CONFIG: GithubTokenConfiguration =
+ config.get('githubToken')
export const OPENSEARCH_CONFIG: IOpenSearchConfig = config.get('opensearch')
@@ -120,17 +135,29 @@ export const STACKEXCHANGE_CONFIG: StackExchangeConfiguration =
key: process.env.STACKEXCHANGE_KEY,
}
-export const SLACK_ALERTING_CONFIG: SlackAlertingConfiguration =
- config.get('slackAlerting')
-
-export const SAMPLE_DATA_CONFIG: SampleDataConfiguration =
- config.get('sampleData')
-
export const INTEGRATION_PROCESSING_CONFIG: IntegrationProcessingConfiguration =
config.get('integrationProcessing')
-export const WEEKLY_EMAILS_CONFIG: WeeklyEmailsConfiguration =
- config.get('weeklyEmails')
-
export const CROWD_ANALYTICS_CONFIG: CrowdAnalyticsConfiguration =
config.get('crowdAnalytics')
+
+export const TEMPORAL_CONFIG: ITemporalConfig = config.get('temporal')
+
+export const SEARCH_SYNC_API_CONFIG: ISearchSyncApiConfig =
+ config.get('searchSyncApi')
+
+export const OPEN_STATUS_API_CONFIG: IOpenStatusApiConfig =
+ config.get('openStatusApi')
+
+export const GITLAB_CONFIG: GitlabConfiguration = config.get('gitlab')
+
+export const REDDIT_CONFIG: IRedditConfig = config.get('reddit')
+
+export const SNOWFLAKE_CONFIG: SnowflakeConfiguration =
+ config.get('snowflake')
+
+export const LINUX_FOUNDATION_CONFIG: LinuxFoundationConfiguration =
+ config.get('linuxFoundation')
+
+export const ENABLE_LF_COLLECTION_MANAGEMENT: boolean =
+ process.env.ENABLE_LF_COLLECTION_MANAGEMENT === 'true'
diff --git a/backend/src/cubejs/.dockerignore b/backend/src/cubejs/.dockerignore
deleted file mode 100644
index 35ac4ada57..0000000000
--- a/backend/src/cubejs/.dockerignore
+++ /dev/null
@@ -1 +0,0 @@
-**/.cubestore
\ No newline at end of file
diff --git a/backend/src/cubejs/.eslintrc.js b/backend/src/cubejs/.eslintrc.js
deleted file mode 100644
index 6680d7e49e..0000000000
--- a/backend/src/cubejs/.eslintrc.js
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = {
- rules: {
- semi: ['error', 'never'],
- 'no-undef': 0,
- },
-}
diff --git a/backend/src/cubejs/.gitignore b/backend/src/cubejs/.gitignore
deleted file mode 100644
index ed93299e91..0000000000
--- a/backend/src/cubejs/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/.cubecloud
diff --git a/backend/src/cubejs/Dockerfile b/backend/src/cubejs/Dockerfile
deleted file mode 100644
index 264a3125cb..0000000000
--- a/backend/src/cubejs/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM cubejs/cube:v0.33.55
-
-COPY ./ /cube/conf/
diff --git a/backend/src/cubejs/cube.js b/backend/src/cubejs/cube.js
deleted file mode 100644
index b3475230a9..0000000000
--- a/backend/src/cubejs/cube.js
+++ /dev/null
@@ -1,69 +0,0 @@
-// Cube.js configuration options: https://cube.dev/docs/config
-
-// NOTE: third-party dependencies and the use of require(...) are disabled for
-// CubeCloud users by default. Please contact support if you need them
-// enabled for your account. You are still allowed to require
-// @cubejs-backend/*-driver packages.
-
-module.exports = {
- queryRewrite: (query, { securityContext }) => {
- // Ensure `securityContext` has an `id` property
- if (!securityContext.tenantId) {
- throw new Error('No id found in Security Context!')
- }
- if (!securityContext.segments) {
- throw new Error('No segments found in Security Context!')
- }
- const measureCube = query.measures[0].split('.')
-
- if (
- query.timeDimensions &&
- query.timeDimensions[0] &&
- !('granularity' in query.timeDimensions[0]) &&
- (!('dateRange' in query.timeDimensions[0]) ||
- ('dateRange' in query.timeDimensions[0] && query.timeDimensions[0].dateRange === undefined))
- ) {
- query.timeDimensions = []
- }
-
- // If member score is selected as a dimension, filter -1's out
- if (query.dimensions && query.dimensions[0] && query.dimensions[0] === 'Members.score') {
- query.filters.push({
- member: 'Members.score',
- operator: 'notEquals',
- values: ['-1'],
- })
- }
-
- // Cubejs doesn't support all time dateranges with cumulative measures yet.
- // If a cumulative measure is selected
- // without time dimension daterange(all time),
- // send a long daterange
- if (
- query.measures[0] === 'Members.cumulativeCount' &&
- query.timeDimensions[0] &&
- !query.timeDimensions[0].dateRange
- ) {
- query.timeDimensions[0].dateRange = ['2020-01-01', new Date().toISOString()]
- }
-
- query.filters.push({
- member: `Members.isBot`,
- operator: 'equals',
- values: ['0'],
- })
-
- query.filters.push({
- member: `${measureCube[0]}.tenantId`,
- operator: 'equals',
- values: [securityContext.tenantId],
- })
- query.filters.push({
- member: 'Segments.id',
- operator: 'equals',
- values: securityContext.segments,
- })
-
- return query
- },
-}
diff --git a/backend/src/cubejs/cubeJsRepository.ts b/backend/src/cubejs/cubeJsRepository.ts
deleted file mode 100644
index 4629693b68..0000000000
--- a/backend/src/cubejs/cubeJsRepository.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import * as metrics from './metrics/index'
-
-class CubeJsRepository {
- static getActiveMembers = metrics.activeMembers
-
- static getNewActivities = metrics.newActivities
-
- static getNewConversations = metrics.newConversations
-
- static getNewMembers = metrics.newMembers
-
- static getNewOrganizations = metrics.newOrganizations
-
- static getActiveOrganizations = metrics.activeOrganizations
-}
-
-export default CubeJsRepository
diff --git a/backend/src/cubejs/metrics/activeMembers.ts b/backend/src/cubejs/metrics/activeMembers.ts
deleted file mode 100644
index e068732ec3..0000000000
--- a/backend/src/cubejs/metrics/activeMembers.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import CubeJsService from '../../services/cubejs/cubeJsService'
-import CubeDimensions from '../../services/cubejs/cubeDimensions'
-import CubeMeasures from '../../services/cubejs/cubeMeasures'
-
-/**
- * Gets `active members` count for a given date range.
- * Members are active when they have an activity in given date range.
- * @param cjs cubejs service instance
- * @param startDate
- * @param endDate
- * @returns
- */
-export default async (cjs: CubeJsService, startDate: moment.Moment, endDate: moment.Moment) => {
- const activeMembers =
- (
- await cjs.load({
- measures: [CubeMeasures.MEMBER_COUNT],
- timeDimensions: [
- {
- dimension: CubeDimensions.ACTIVITY_DATE,
- dateRange: [startDate.format('YYYY-MM-DD'), endDate.format('YYYY-MM-DD')],
- },
- ],
- limit: 1,
- order: { [CubeDimensions.MEMBER_JOINED_AT]: 'asc' },
- filters: [
- {
- member: CubeDimensions.IS_TEAM_MEMBER,
- operator: 'equals',
- values: ['false'],
- },
- ],
- })
- )[0][CubeMeasures.MEMBER_COUNT] ?? 0
-
- return parseInt(activeMembers, 10)
-}
diff --git a/backend/src/cubejs/metrics/activeOrganizations.ts b/backend/src/cubejs/metrics/activeOrganizations.ts
deleted file mode 100644
index a18194b8bc..0000000000
--- a/backend/src/cubejs/metrics/activeOrganizations.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import CubeJsService from '../../services/cubejs/cubeJsService'
-import CubeDimensions from '../../services/cubejs/cubeDimensions'
-import CubeMeasures from '../../services/cubejs/cubeMeasures'
-
-/**
- * Gets `active organizations` count for a given date range.
- * Organizations are active when they have an activity in given date range.
- * @param cjs cubejs service instance
- * @param startDate
- * @param endDate
- * @returns
- */
-export default async (cjs: CubeJsService, startDate: moment.Moment, endDate: moment.Moment) => {
- const activeOrganizations =
- (
- await cjs.load({
- measures: [CubeMeasures.ORGANIZATION_COUNT],
- timeDimensions: [
- {
- dimension: CubeDimensions.ACTIVITY_DATE,
- dateRange: [startDate.format('YYYY-MM-DD'), endDate.format('YYYY-MM-DD')],
- },
- ],
- limit: 1,
- order: { [CubeDimensions.ORGANIZATIONS_JOINED_AT]: 'asc' },
- filters: [
- {
- member: CubeDimensions.IS_TEAM_MEMBER,
- operator: 'equals',
- values: ['false'],
- },
- ],
- })
- )[0][CubeMeasures.ORGANIZATION_COUNT] ?? 0
-
- return parseInt(activeOrganizations, 10)
-}
diff --git a/backend/src/cubejs/metrics/index.ts b/backend/src/cubejs/metrics/index.ts
deleted file mode 100644
index f05376e28a..0000000000
--- a/backend/src/cubejs/metrics/index.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export { default as newActivities } from './newActivities'
-export { default as newConversations } from './newConversations'
-export { default as activeMembers } from './activeMembers'
-export { default as newMembers } from './newMembers'
-export { default as newOrganizations } from './newOrganizations'
-export { default as activeOrganizations } from './activeOrganizations'
diff --git a/backend/src/cubejs/metrics/newActivities.ts b/backend/src/cubejs/metrics/newActivities.ts
deleted file mode 100644
index 5e6d439f25..0000000000
--- a/backend/src/cubejs/metrics/newActivities.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import CubeJsService from '../../services/cubejs/cubeJsService'
-import CubeDimensions from '../../services/cubejs/cubeDimensions'
-import CubeMeasures from '../../services/cubejs/cubeMeasures'
-
-/**
- * Gets `new activities` count for a given date range.
- * Activities are new when activity.timestamp is in between given date range.
- * @param cjs cubejs service instance
- * @param startDate
- * @param endDate
- * @returns
- */
-export default async (cjs: CubeJsService, startDate: moment.Moment, endDate: moment.Moment) => {
- const newActivities =
- (
- await cjs.load({
- measures: [CubeMeasures.ACTIVITY_COUNT],
- timeDimensions: [
- {
- dimension: CubeDimensions.ACTIVITY_DATE,
- dateRange: [startDate.format('YYYY-MM-DD'), endDate.format('YYYY-MM-DD')],
- },
- ],
- limit: 1,
- order: { [CubeDimensions.ACTIVITY_DATE]: 'asc' },
- filters: [
- {
- member: CubeDimensions.IS_TEAM_MEMBER,
- operator: 'equals',
- values: ['false'],
- },
- ],
- })
- )[0][CubeMeasures.ACTIVITY_COUNT] ?? 0
-
- return parseInt(newActivities, 10)
-}
diff --git a/backend/src/cubejs/metrics/newConversations.ts b/backend/src/cubejs/metrics/newConversations.ts
deleted file mode 100644
index a5304cecf9..0000000000
--- a/backend/src/cubejs/metrics/newConversations.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import CubeJsService from '../../services/cubejs/cubeJsService'
-import CubeDimensions from '../../services/cubejs/cubeDimensions'
-import CubeMeasures from '../../services/cubejs/cubeMeasures'
-
-/**
- * Gets `new conversations` count for a given date range.
- * Conversations are new when conversation.firstActivityTime is in between given date range.
- * @param cjs cubejs service instance
- * @param startDate
- * @param endDate
- * @returns
- */
-export default async (cjs: CubeJsService, startDate: moment.Moment, endDate: moment.Moment) => {
- const newConversations =
- (
- await cjs.load({
- measures: [CubeMeasures.CONVERSATION_COUNT],
- timeDimensions: [
- {
- dimension: CubeDimensions.CONVERSATION_FIRST_ACTIVITY_TIME,
- dateRange: [startDate.format('YYYY-MM-DD'), endDate.format('YYYY-MM-DD')],
- },
- ],
- limit: 1,
- })
- )[0][CubeMeasures.CONVERSATION_COUNT] ?? 0
-
- return parseInt(newConversations, 10)
-}
diff --git a/backend/src/cubejs/metrics/newMembers.ts b/backend/src/cubejs/metrics/newMembers.ts
deleted file mode 100644
index 8f08985537..0000000000
--- a/backend/src/cubejs/metrics/newMembers.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import CubeJsService from '../../services/cubejs/cubeJsService'
-import CubeDimensions from '../../services/cubejs/cubeDimensions'
-import CubeMeasures from '../../services/cubejs/cubeMeasures'
-
-/**
- * Gets `new members` count for a given date range.
- * Members are new when member.joinedAt is in between given date range.
- * @param cjs cubejs service instance
- * @param startDate
- * @param endDate
- * @returns
- */
-export default async (cjs: CubeJsService, startDate: moment.Moment, endDate: moment.Moment) => {
- const newMembers =
- (
- await cjs.load({
- measures: [CubeMeasures.MEMBER_COUNT],
- timeDimensions: [
- {
- dimension: CubeDimensions.MEMBER_JOINED_AT,
- dateRange: [startDate.format('YYYY-MM-DD'), endDate.format('YYYY-MM-DD')],
- },
- ],
- limit: 1,
- order: { [CubeDimensions.MEMBER_JOINED_AT]: 'asc' },
- filters: [
- {
- member: CubeDimensions.IS_TEAM_MEMBER,
- operator: 'equals',
- values: ['false'],
- },
- ],
- })
- )[0][CubeMeasures.MEMBER_COUNT] ?? 0
-
- return parseInt(newMembers, 10)
-}
diff --git a/backend/src/cubejs/metrics/newOrganizations.ts b/backend/src/cubejs/metrics/newOrganizations.ts
deleted file mode 100644
index 3a2eec1921..0000000000
--- a/backend/src/cubejs/metrics/newOrganizations.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import CubeJsService from '../../services/cubejs/cubeJsService'
-import CubeDimensions from '../../services/cubejs/cubeDimensions'
-import CubeMeasures from '../../services/cubejs/cubeMeasures'
-
-/**
- * Gets `new organizations` count for a given date range.
- * Organizations are new when organization.joinedAt is in between given date range.
- * @param cjs cubejs service instance
- * @param startDate
- * @param endDate
- * @returns
- */
-export default async (cjs: CubeJsService, startDate: moment.Moment, endDate: moment.Moment) => {
- const newOrganizations =
- (
- await cjs.load({
- measures: [CubeMeasures.ORGANIZATION_COUNT],
- timeDimensions: [
- {
- dimension: CubeDimensions.ORGANIZATIONS_JOINED_AT,
- dateRange: [startDate.format('YYYY-MM-DD'), endDate.format('YYYY-MM-DD')],
- },
- ],
- limit: 1,
- order: { [CubeDimensions.ORGANIZATIONS_JOINED_AT]: 'asc' },
- filters: [
- {
- member: CubeDimensions.IS_TEAM_MEMBER,
- operator: 'equals',
- values: ['false'],
- },
- ],
- })
- )[0][CubeMeasures.ORGANIZATION_COUNT] ?? 0
-
- return parseInt(newOrganizations, 10)
-}
diff --git a/backend/src/cubejs/package-lock.json b/backend/src/cubejs/package-lock.json
deleted file mode 100644
index 4bc24bc01c..0000000000
--- a/backend/src/cubejs/package-lock.json
+++ /dev/null
@@ -1,10782 +0,0 @@
-{
- "name": "cubejs",
- "version": "1.0.0",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "cubejs",
- "version": "1.0.0",
- "license": "ISC",
- "dependencies": {
- "@cubejs-backend/server-core": "^0.32.27"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
- "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz",
- "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==",
- "dependencies": {
- "@babel/highlight": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz",
- "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz",
- "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==",
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.21.4",
- "@babel/generator": "^7.21.4",
- "@babel/helper-compilation-targets": "^7.21.4",
- "@babel/helper-module-transforms": "^7.21.2",
- "@babel/helpers": "^7.21.0",
- "@babel/parser": "^7.21.4",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.4",
- "@babel/types": "^7.21.4",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.2",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz",
- "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==",
- "dependencies": {
- "@babel/types": "^7.21.4",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
- "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz",
- "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==",
- "dependencies": {
- "@babel/helper-explode-assignable-expression": "^7.18.6",
- "@babel/types": "^7.18.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz",
- "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==",
- "dependencies": {
- "@babel/compat-data": "^7.21.4",
- "@babel/helper-validator-option": "^7.21.0",
- "browserslist": "^4.21.3",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz",
- "integrity": "sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.21.0",
- "@babel/helper-member-expression-to-functions": "^7.21.0",
- "@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/helper-replace-supers": "^7.20.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
- "@babel/helper-split-export-declaration": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz",
- "integrity": "sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "regexpu-core": "^5.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
- "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.17.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2",
- "semver": "^6.1.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0-0"
- }
- },
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-explode-assignable-expression": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
- "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
- "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
- "dependencies": {
- "@babel/template": "^7.20.7",
- "@babel/types": "^7.21.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz",
- "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==",
- "dependencies": {
- "@babel/types": "^7.21.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz",
- "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==",
- "dependencies": {
- "@babel/types": "^7.21.4"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
- "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.20.2",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/helper-validator-identifier": "^7.19.1",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.2",
- "@babel/types": "^7.21.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
- "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
- "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
- "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-wrap-function": "^7.18.9",
- "@babel/types": "^7.18.9"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-replace-supers": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz",
- "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==",
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-member-expression-to-functions": "^7.20.7",
- "@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.20.7",
- "@babel/types": "^7.20.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
- "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
- "dependencies": {
- "@babel/types": "^7.20.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
- "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
- "dependencies": {
- "@babel/types": "^7.20.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
- "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.19.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
- "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
- "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-wrap-function": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz",
- "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==",
- "dependencies": {
- "@babel/helper-function-name": "^7.19.0",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.20.5",
- "@babel/types": "^7.20.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
- "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
- "dependencies": {
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.0",
- "@babel/types": "^7.21.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz",
- "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==",
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz",
- "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz",
- "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
- "@babel/plugin-proposal-optional-chaining": "^7.20.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.13.0"
- }
- },
- "node_modules/@babel/plugin-proposal-async-generator-functions": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz",
- "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==",
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-remap-async-to-generator": "^7.18.9",
- "@babel/plugin-syntax-async-generators": "^7.8.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-class-properties": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
- "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-class-static-block": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz",
- "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.21.0",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.12.0"
- }
- },
- "node_modules/@babel/plugin-proposal-dynamic-import": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
- "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-export-namespace-from": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
- "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.9",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-json-strings": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
- "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz",
- "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
- "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-numeric-separator": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
- "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-object-rest-spread": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
- "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
- "dependencies": {
- "@babel/compat-data": "^7.20.5",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.20.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
- "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-optional-chaining": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz",
- "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-private-methods": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
- "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz",
- "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-create-class-features-plugin": "^7.21.0",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
- "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-static-block": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
- "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz",
- "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.19.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-private-property-in-object": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
- "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz",
- "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz",
- "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==",
- "dependencies": {
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-remap-async-to-generator": "^7.18.9"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
- "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz",
- "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-classes": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz",
- "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.21.0",
- "@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-replace-supers": "^7.20.7",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz",
- "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/template": "^7.20.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.21.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz",
- "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
- "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
- "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.9"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
- "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
- "dependencies": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-for-of": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz",
- "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-function-name": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
- "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.18.9",
- "@babel/helper-function-name": "^7.18.9",
- "@babel/helper-plugin-utils": "^7.18.9"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-literals": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
- "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.9"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
- "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz",
- "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.20.11",
- "@babel/helper-plugin-utils": "^7.20.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz",
- "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.21.2",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-simple-access": "^7.20.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz",
- "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==",
- "dependencies": {
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-module-transforms": "^7.20.11",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-validator-identifier": "^7.19.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
- "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz",
- "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.20.5",
- "@babel/helper-plugin-utils": "^7.20.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-new-target": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
- "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-object-super": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
- "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/helper-replace-supers": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-parameters": {
- "version": "7.21.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz",
- "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
- "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz",
- "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "regenerator-transform": "^0.15.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
- "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
- "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-spread": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz",
- "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
- "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
- "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.9"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
- "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.9"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz",
- "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.9"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
- "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-env": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz",
- "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==",
- "dependencies": {
- "@babel/compat-data": "^7.21.4",
- "@babel/helper-compilation-targets": "^7.21.4",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-validator-option": "^7.21.0",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7",
- "@babel/plugin-proposal-async-generator-functions": "^7.20.7",
- "@babel/plugin-proposal-class-properties": "^7.18.6",
- "@babel/plugin-proposal-class-static-block": "^7.21.0",
- "@babel/plugin-proposal-dynamic-import": "^7.18.6",
- "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
- "@babel/plugin-proposal-json-strings": "^7.18.6",
- "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
- "@babel/plugin-proposal-numeric-separator": "^7.18.6",
- "@babel/plugin-proposal-object-rest-spread": "^7.20.7",
- "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
- "@babel/plugin-proposal-optional-chaining": "^7.21.0",
- "@babel/plugin-proposal-private-methods": "^7.18.6",
- "@babel/plugin-proposal-private-property-in-object": "^7.21.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.20.0",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-transform-arrow-functions": "^7.20.7",
- "@babel/plugin-transform-async-to-generator": "^7.20.7",
- "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
- "@babel/plugin-transform-block-scoping": "^7.21.0",
- "@babel/plugin-transform-classes": "^7.21.0",
- "@babel/plugin-transform-computed-properties": "^7.20.7",
- "@babel/plugin-transform-destructuring": "^7.21.3",
- "@babel/plugin-transform-dotall-regex": "^7.18.6",
- "@babel/plugin-transform-duplicate-keys": "^7.18.9",
- "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
- "@babel/plugin-transform-for-of": "^7.21.0",
- "@babel/plugin-transform-function-name": "^7.18.9",
- "@babel/plugin-transform-literals": "^7.18.9",
- "@babel/plugin-transform-member-expression-literals": "^7.18.6",
- "@babel/plugin-transform-modules-amd": "^7.20.11",
- "@babel/plugin-transform-modules-commonjs": "^7.21.2",
- "@babel/plugin-transform-modules-systemjs": "^7.20.11",
- "@babel/plugin-transform-modules-umd": "^7.18.6",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5",
- "@babel/plugin-transform-new-target": "^7.18.6",
- "@babel/plugin-transform-object-super": "^7.18.6",
- "@babel/plugin-transform-parameters": "^7.21.3",
- "@babel/plugin-transform-property-literals": "^7.18.6",
- "@babel/plugin-transform-regenerator": "^7.20.5",
- "@babel/plugin-transform-reserved-words": "^7.18.6",
- "@babel/plugin-transform-shorthand-properties": "^7.18.6",
- "@babel/plugin-transform-spread": "^7.20.7",
- "@babel/plugin-transform-sticky-regex": "^7.18.6",
- "@babel/plugin-transform-template-literals": "^7.18.9",
- "@babel/plugin-transform-typeof-symbol": "^7.18.9",
- "@babel/plugin-transform-unicode-escapes": "^7.18.10",
- "@babel/plugin-transform-unicode-regex": "^7.18.6",
- "@babel/preset-modules": "^0.1.5",
- "@babel/types": "^7.21.4",
- "babel-plugin-polyfill-corejs2": "^0.3.3",
- "babel-plugin-polyfill-corejs3": "^0.6.0",
- "babel-plugin-polyfill-regenerator": "^0.4.1",
- "core-js-compat": "^3.25.1",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-modules": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
- "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
- "@babel/plugin-transform-dotall-regex": "^7.4.4",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/regjsgen": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
- },
- "node_modules/@babel/runtime": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
- "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
- "dependencies": {
- "regenerator-runtime": "^0.13.11"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/standalone": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.21.4.tgz",
- "integrity": "sha512-Rw4nGqH/iyVeYxARKcz7iGP+njkPsVqJ45TmXMONoGoxooWjXCAs+CUcLeAZdBGCLqgaPvHKCYvIaDT2Iq+KfA==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
- "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
- "dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz",
- "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==",
- "dependencies": {
- "@babel/code-frame": "^7.21.4",
- "@babel/generator": "^7.21.4",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.21.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.21.4",
- "@babel/types": "^7.21.4",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz",
- "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==",
- "dependencies": {
- "@babel/helper-string-parser": "^7.19.4",
- "@babel/helper-validator-identifier": "^7.19.1",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@cubejs-backend/api-gateway": {
- "version": "0.32.27",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/api-gateway/-/api-gateway-0.32.27.tgz",
- "integrity": "sha512-l4joKt9f7e5VImaw4G+tVZrvpO2G67J/0fjvIj2fCwk3tRlNqTqrjADnofykkCeR1LntB8miipj2bdZMrECGog==",
- "dependencies": {
- "@cubejs-backend/native": "^0.32.27",
- "@cubejs-backend/shared": "^0.32.25",
- "@ungap/structured-clone": "^0.3.4",
- "body-parser": "^1.19.0",
- "chrono-node": "^2.6.2",
- "express-graphql": "^0.12.0",
- "graphql": "^15.8.0",
- "graphql-scalars": "^1.10.0",
- "joi": "^17.8.3",
- "jsonwebtoken": "^8.3.0",
- "jwk-to-pem": "^2.0.4",
- "moment": "^2.24.0",
- "moment-timezone": "^0.5.27",
- "nexus": "^1.1.0",
- "node-fetch": "^2.6.1",
- "querystring": "^0.2.1",
- "ramda": "^0.27.0",
- "uuid": "^8.3.2"
- },
- "engines": {
- "node": "^14.0.0 || ^16.0.0 || >=17.0.0"
- }
- },
- "node_modules/@cubejs-backend/base-driver": {
- "version": "0.32.26",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/base-driver/-/base-driver-0.32.26.tgz",
- "integrity": "sha512-OVplhEEdSGHYxgGbNEmN9IXieZbaEjfLgi8mBmlr9OTC1b3cecFHrV8tvRRqi6Emi8ZLtsMjmQx4LOcv7fVn/A==",
- "dependencies": {
- "@cubejs-backend/shared": "^0.32.25",
- "ramda": "^0.27.0"
- },
- "engines": {
- "node": "^14.0.0 || ^16.0.0 || >=17.0.0"
- }
- },
- "node_modules/@cubejs-backend/cloud": {
- "version": "0.32.25",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/cloud/-/cloud-0.32.25.tgz",
- "integrity": "sha512-bk+3kAE4PKIBI7by8utyKTpA9zJJwBZLvRe8Ica0V+z+pFSEooPu4Pnp2hcoalqZ0GMKQkyRDZzbGu7zTVUK7w==",
- "dependencies": {
- "@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/shared": "^0.32.25",
- "chokidar": "^3.5.1",
- "env-var": "^6.3.0",
- "fs-extra": "^9.1.0",
- "jsonwebtoken": "^8.5.1",
- "request": "^2.88.2",
- "request-promise": "^4.2.5"
- },
- "engines": {
- "node": "^14.0.0 || ^16.0.0 || >=17.0.0"
- }
- },
- "node_modules/@cubejs-backend/cloud/node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@cubejs-backend/cloud/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@cubejs-backend/cloud/node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@cubejs-backend/cubesql": {
- "version": "0.32.19",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/cubesql/-/cubesql-0.32.19.tgz",
- "integrity": "sha512-b605Vw2OeFkn0dQmHd9FR2uEHzFCLlduTIez/4WpWw7MilcX1T810AMXIdwxbn9DPl/ILc5MvHn9hZ74SqE4dw==",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@cubejs-backend/cubestore": {
- "version": "0.32.25",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/cubestore/-/cubestore-0.32.25.tgz",
- "integrity": "sha512-k22AR9znDL8vcKDe6ieIg9cbSRzfnW+lSAd+v+0R0nJ8Z/8SU0lXOzTecWkOmihJ4U+Gxqd1tueazzEO2BRfWQ==",
- "hasInstallScript": true,
- "dependencies": {
- "@cubejs-backend/shared": "^0.32.25",
- "@octokit/core": "^3.2.5",
- "source-map-support": "^0.5.19"
- },
- "bin": {
- "cubestore-dev": "bin/cubestore-dev"
- },
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@cubejs-backend/cubestore-driver": {
- "version": "0.32.26",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/cubestore-driver/-/cubestore-driver-0.32.26.tgz",
- "integrity": "sha512-WIBE8NUAdCQds2Rue4wL27cIO3esK5n+Y3DP43M72iw6/BP9f09VlbgQJORWtY9mF0g1P0ZEwwFhHvAR0yEfKA==",
- "dependencies": {
- "@cubejs-backend/base-driver": "^0.32.26",
- "@cubejs-backend/cubestore": "^0.32.25",
- "@cubejs-backend/shared": "^0.32.25",
- "csv-write-stream": "^2.0.0",
- "flatbuffers": "23.3.3",
- "fs-extra": "^9.1.0",
- "generic-pool": "^3.6.0",
- "moment-timezone": "^0.5.31",
- "node-fetch": "^2.6.1",
- "sqlstring": "^2.3.3",
- "tempy": "^1.0.1",
- "uuid": "^8.3.2",
- "ws": "^7.4.3"
- },
- "engines": {
- "node": "^14.0.0 || ^16.0.0 || >=17.0.0"
- }
- },
- "node_modules/@cubejs-backend/cubestore-driver/node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@cubejs-backend/cubestore-driver/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@cubejs-backend/cubestore-driver/node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@cubejs-backend/dotenv": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/dotenv/-/dotenv-9.0.2.tgz",
- "integrity": "sha512-yC1juhXEjM7K97KfXubDm7WGipd4Lpxe+AT8XeTRE9meRULrKlw0wtE2E8AQkGOfTBn+P1SCkePQ/BzIbOh1VA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@cubejs-backend/native": {
- "version": "0.32.27",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/native/-/native-0.32.27.tgz",
- "integrity": "sha512-LIqsSH6sprAqHbQdLcw6bqGtYKyaCf1TiqPx8OmFQp7GgNudkyk5ZfeXPWUhCnCnZX+q+A/K9EcDzxgY6GvLuQ==",
- "hasInstallScript": true,
- "dependencies": {
- "@cubejs-backend/cubesql": "^0.32.19",
- "@cubejs-backend/shared": "^0.32.25",
- "@mapbox/node-pre-gyp": "^1"
- },
- "engines": {
- "node": "^14.0.0 || ^16.0.0 || >=17.0.0"
- }
- },
- "node_modules/@cubejs-backend/query-orchestrator": {
- "version": "0.32.27",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/query-orchestrator/-/query-orchestrator-0.32.27.tgz",
- "integrity": "sha512-+FQt2bm5trfpmsXY8sLT0fYKqSfStNGSzsf3RFOdWZ4vofiBg8psNMQlKF8DlFlVtuKcNPSk/hcmPqce+heagg==",
- "dependencies": {
- "@cubejs-backend/base-driver": "^0.32.26",
- "@cubejs-backend/cubestore-driver": "^0.32.26",
- "@cubejs-backend/shared": "^0.32.25",
- "csv-write-stream": "^2.0.0",
- "es5-ext": "0.10.53",
- "generic-pool": "^3.7.1",
- "ioredis": "^4.27.8",
- "lru-cache": "^6.0.0",
- "moment-range": "^4.0.2",
- "moment-timezone": "^0.5.33",
- "ramda": "^0.27.2",
- "redis": "^3.0.2"
- },
- "engines": {
- "node": "^14.0.0 || ^16.0.0 || >=17.0.0"
- }
- },
- "node_modules/@cubejs-backend/query-orchestrator/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@cubejs-backend/query-orchestrator/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/@cubejs-backend/schema-compiler": {
- "version": "0.32.27",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/schema-compiler/-/schema-compiler-0.32.27.tgz",
- "integrity": "sha512-klV7r6uR6+7HJaINBHBdKaxlMGc/Hz10VMhFG8acYSz2zvFpQ+vDbcvnNbi0dBLpjQfCoWeJfpbxjrVL5XXvsQ==",
- "dependencies": {
- "@babel/code-frame": "^7.12.11",
- "@babel/core": "^7.12.10",
- "@babel/generator": "^7.12.10",
- "@babel/parser": "^7.12.10",
- "@babel/preset-env": "^7.12.10",
- "@babel/standalone": "^7.12.10",
- "@babel/traverse": "^7.12.10",
- "@babel/types": "^7.12.12",
- "@cubejs-backend/shared": "^0.32.25",
- "antlr4ts": "0.5.0-alpha.4",
- "camelcase": "^6.2.0",
- "cron-parser": "^3.5.0",
- "humps": "^2.0.1",
- "inflection": "^1.12.0",
- "joi": "^17.8.3",
- "js-yaml": "^4.1.0",
- "lru-cache": "^5.1.1",
- "moment-range": "^4.0.1",
- "moment-timezone": "^0.5.33",
- "node-dijkstra": "^2.5.0",
- "ramda": "^0.27.2",
- "syntax-error": "^1.3.0"
- },
- "engines": {
- "node": "^14.0.0 || ^16.0.0 || >=17.0.0"
- }
- },
- "node_modules/@cubejs-backend/server-core": {
- "version": "0.32.27",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/server-core/-/server-core-0.32.27.tgz",
- "integrity": "sha512-vlAhRFScey4tlDU5mR9jZEitod1A5Um/+8dx/sD4zJ5YrZn3o34AneC8vD8ERpuM1ZGhuiEix3sW0hrJ7isc6w==",
- "dependencies": {
- "@cubejs-backend/api-gateway": "^0.32.27",
- "@cubejs-backend/cloud": "^0.32.25",
- "@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/query-orchestrator": "^0.32.27",
- "@cubejs-backend/schema-compiler": "^0.32.27",
- "@cubejs-backend/shared": "^0.32.25",
- "@cubejs-backend/templates": "^0.32.25",
- "codesandbox-import-utils": "^2.1.12",
- "cross-spawn": "^7.0.1",
- "fs-extra": "^8.1.0",
- "is-docker": "^2.1.1",
- "joi": "^17.8.3",
- "jsonwebtoken": "^8.4.0",
- "lodash.clonedeep": "^4.5.0",
- "lru-cache": "^5.1.1",
- "moment": "^2.29.1",
- "node-fetch": "^2.6.0",
- "p-limit": "^3.1.0",
- "promise-timeout": "^1.3.0",
- "ramda": "^0.27.0",
- "semver": "^6.3.0",
- "serve-static": "^1.13.2",
- "sqlstring": "^2.3.1",
- "uuid": "^8.3.2",
- "ws": "^7.5.3"
- },
- "engines": {
- "node": "^14.0.0 || ^16.0.0 || >=17.0.0"
- }
- },
- "node_modules/@cubejs-backend/shared": {
- "version": "0.32.25",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/shared/-/shared-0.32.25.tgz",
- "integrity": "sha512-C7FJYHf3COPVRa/EUAkw3csqndUOrhg7AEBbqBmZvW3RNFfV/I7IJhpd4GXJqe/hlWt5Af0KzNu+oN4qttEXKQ==",
- "dependencies": {
- "@oclif/color": "^0.1.2",
- "bytes": "^3.1.0",
- "cli-progress": "^3.9.0",
- "cross-spawn": "^7.0.3",
- "decompress": "^4.2.1",
- "env-var": "^6.3.0",
- "fs-extra": "^9.1.0",
- "http-proxy-agent": "^4.0.1",
- "moment-range": "^4.0.1",
- "moment-timezone": "^0.5.33",
- "node-fetch": "^2.6.1",
- "shelljs": "^0.8.5",
- "throttle-debounce": "^3.0.1",
- "uuid": "^8.3.2"
- },
- "engines": {
- "node": "^14.0.0 || ^16.0.0 || >=17.0.0"
- }
- },
- "node_modules/@cubejs-backend/shared/node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@cubejs-backend/shared/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@cubejs-backend/shared/node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@cubejs-backend/templates": {
- "version": "0.32.25",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/templates/-/templates-0.32.25.tgz",
- "integrity": "sha512-MH5b/gtw0cWSmVDFd7BkoryjYjNaqfKSVThO8l0zy7quOote+gEN0BMYP9UGv1qEP/G2zrosrqZ9juISzk8hrQ==",
- "dependencies": {
- "@cubejs-backend/shared": "^0.32.25",
- "cross-spawn": "^7.0.3",
- "decompress": "^4.2.1",
- "decompress-targz": "^4.1.1",
- "fs-extra": "^9.1.0",
- "node-fetch": "^2.6.1",
- "ramda": "^0.27.2",
- "source-map-support": "^0.5.19"
- },
- "engines": {
- "node": "^14.0.0 || ^16.0.0 || >=17.0.0"
- }
- },
- "node_modules/@cubejs-backend/templates/node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "dependencies": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@cubejs-backend/templates/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@cubejs-backend/templates/node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/@hapi/hoek": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
- "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ=="
- },
- "node_modules/@hapi/topo": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
- "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
- "dependencies": {
- "@hapi/hoek": "^9.0.0"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
- "dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.18",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
- "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
- "dependencies": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
- }
- },
- "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
- },
- "node_modules/@mapbox/node-pre-gyp": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz",
- "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==",
- "dependencies": {
- "detect-libc": "^2.0.0",
- "https-proxy-agent": "^5.0.0",
- "make-dir": "^3.1.0",
- "node-fetch": "^2.6.7",
- "nopt": "^5.0.0",
- "npmlog": "^5.0.1",
- "rimraf": "^3.0.2",
- "semver": "^7.3.5",
- "tar": "^6.1.11"
- },
- "bin": {
- "node-pre-gyp": "bin/node-pre-gyp"
- }
- },
- "node_modules/@mapbox/node-pre-gyp/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@mapbox/node-pre-gyp/node_modules/semver": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
- "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@mapbox/node-pre-gyp/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@oclif/color": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@oclif/color/-/color-0.1.2.tgz",
- "integrity": "sha512-M9o+DOrb8l603qvgz1FogJBUGLqcMFL1aFg2ZEL0FbXJofiNTLOWIeB4faeZTLwE6dt0xH9GpCVpzksMMzGbmA==",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "chalk": "^3.0.0",
- "strip-ansi": "^5.2.0",
- "supports-color": "^5.4.0",
- "tslib": "^1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/@oclif/color/node_modules/chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@oclif/color/node_modules/chalk/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@oclif/color/node_modules/chalk/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@oclif/color/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@oclif/color/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/@oclif/color/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@octokit/auth-token": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
- "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
- "dependencies": {
- "@octokit/types": "^6.0.3"
- }
- },
- "node_modules/@octokit/core": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
- "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
- "dependencies": {
- "@octokit/auth-token": "^2.4.4",
- "@octokit/graphql": "^4.5.8",
- "@octokit/request": "^5.6.3",
- "@octokit/request-error": "^2.0.5",
- "@octokit/types": "^6.0.3",
- "before-after-hook": "^2.2.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/endpoint": {
- "version": "6.0.12",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
- "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
- "dependencies": {
- "@octokit/types": "^6.0.3",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/graphql": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
- "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
- "dependencies": {
- "@octokit/request": "^5.6.0",
- "@octokit/types": "^6.0.3",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ=="
- },
- "node_modules/@octokit/request": {
- "version": "5.6.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
- "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
- "dependencies": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.16.1",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/request-error": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
- "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
- "dependencies": {
- "@octokit/types": "^6.0.3",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "node_modules/@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "dependencies": {
- "@octokit/openapi-types": "^12.11.0"
- }
- },
- "node_modules/@sideway/address": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
- "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==",
- "dependencies": {
- "@hapi/hoek": "^9.0.0"
- }
- },
- "node_modules/@sideway/formula": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
- "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg=="
- },
- "node_modules/@sideway/pinpoint": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
- "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ=="
- },
- "node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@ungap/structured-clone": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-0.3.4.tgz",
- "integrity": "sha512-TSVh8CpnwNAsPC5wXcIyh92Bv1gq6E9cNDeeLu7Z4h8V4/qWtXJp7y42qljRkqcpmsve1iozwv1wr+3BNdILCg=="
- },
- "node_modules/abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-node": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
- "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
- "dependencies": {
- "acorn": "^7.0.0",
- "acorn-walk": "^7.0.0",
- "xtend": "^4.0.2"
- }
- },
- "node_modules/acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dependencies": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/antlr4ts": {
- "version": "0.5.0-alpha.4",
- "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz",
- "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ=="
- },
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/aproba": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
- "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
- },
- "node_modules/are-we-there-yet": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
- "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
- "dependencies": {
- "delegates": "^1.0.0",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/asn1": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
- "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
- "dependencies": {
- "safer-buffer": "~2.1.0"
- }
- },
- "node_modules/asn1.js": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
- "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
- "dependencies": {
- "bn.js": "^4.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "node_modules/at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/aws4": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
- "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
- },
- "node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
- "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
- "dependencies": {
- "@babel/compat-data": "^7.17.7",
- "@babel/helper-define-polyfill-provider": "^0.3.3",
- "semver": "^6.1.1"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
- "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.3.3",
- "core-js-compat": "^3.25.1"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
- "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.3.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
- "dependencies": {
- "tweetnacl": "^0.14.3"
- }
- },
- "node_modules/before-after-hook": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
- "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ=="
- },
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/binaryextensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz",
- "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==",
- "engines": {
- "node": ">=0.8"
- },
- "funding": {
- "url": "https://bevry.me/fund"
- }
- },
- "node_modules/bl": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
- "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
- "dependencies": {
- "readable-stream": "^2.3.5",
- "safe-buffer": "^5.1.1"
- }
- },
- "node_modules/bl/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/bl/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/bl/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
- },
- "node_modules/bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- },
- "node_modules/body-parser": {
- "version": "1.20.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
- "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
- "dependencies": {
- "bytes": "3.1.2",
- "content-type": "~1.0.5",
- "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.2",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/body-parser/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/body-parser/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/brorand": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w=="
- },
- "node_modules/browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- }
- ],
- "dependencies": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "node_modules/buffer-alloc": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
- "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
- "dependencies": {
- "buffer-alloc-unsafe": "^1.1.0",
- "buffer-fill": "^1.0.0"
- }
- },
- "node_modules/buffer-alloc-unsafe": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
- "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
- },
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
- },
- "node_modules/buffer-fill": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
- "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
- },
- "node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001480",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001480.tgz",
- "integrity": "sha512-q7cpoPPvZYgtyC4VaBSN0Bt+PJ4c4EYRf0DrduInOz2SkFpHD5p3LnvEpqBp7UnJn+8x1Ogl1s38saUxe+ihQQ==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ]
- },
- "node_modules/caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/chrono-node": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/chrono-node/-/chrono-node-2.6.3.tgz",
- "integrity": "sha512-VkWaaZnNulqzNH9i4XCdyI05OX6MFEnCMNKdZOR4w//wS5/E2qkwAss/O5sj6SfTZK84fX4SSOG4pzqjqIseiA==",
- "dependencies": {
- "dayjs": "^1.10.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- }
- },
- "node_modules/clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cli-progress": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz",
- "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==",
- "dependencies": {
- "string-width": "^4.2.3"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cluster-key-slot": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz",
- "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/codesandbox-import-util-types": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/codesandbox-import-util-types/-/codesandbox-import-util-types-2.2.3.tgz",
- "integrity": "sha512-Qj00p60oNExthP2oR3vvXmUGjukij+rxJGuiaKM6tyUmSyimdZsqHI/TUvFFClAffk9s7hxGnQgWQ8KCce27qQ=="
- },
- "node_modules/codesandbox-import-utils": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/codesandbox-import-utils/-/codesandbox-import-utils-2.2.3.tgz",
- "integrity": "sha512-ymtmcgZKU27U+nM2qUb21aO8Ut/u2S9s6KorOgG81weP+NA0UZkaHKlaRqbLJ9h4i/4FLvwmEXYAnTjNmp6ogg==",
- "dependencies": {
- "codesandbox-import-util-types": "^2.2.3",
- "istextorbinary": "^2.2.1",
- "lz-string": "^1.4.4"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
- },
- "node_modules/color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
- "bin": {
- "color-support": "bin.js"
- }
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "node_modules/console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
- },
- "node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
- },
- "node_modules/core-js-compat": {
- "version": "3.30.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.1.tgz",
- "integrity": "sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw==",
- "dependencies": {
- "browserslist": "^4.21.5"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
- },
- "node_modules/cron-parser": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-3.5.0.tgz",
- "integrity": "sha512-wyVZtbRs6qDfFd8ap457w3XVntdvqcwBGxBoTvJQH9KGVKL/fB+h2k3C8AqiVxvUQKN1Ps/Ns46CNViOpVDhfQ==",
- "dependencies": {
- "is-nan": "^1.3.2",
- "luxon": "^1.26.0"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/crypto-random-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
- "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/csv-write-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/csv-write-stream/-/csv-write-stream-2.0.0.tgz",
- "integrity": "sha512-QTraH6FOYfM5f+YGwx71hW1nR9ZjlWri67/D4CWtiBkdce0UAa91Vc0yyHg0CjC0NeEGnvO/tBSJkA1XF9D9GQ==",
- "dependencies": {
- "argparse": "^1.0.7",
- "generate-object-property": "^1.0.0",
- "ndjson": "^1.3.0"
- },
- "bin": {
- "csv-write": "cli.js"
- }
- },
- "node_modules/d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
- "dependencies": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
- }
- },
- "node_modules/dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
- "dependencies": {
- "assert-plus": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/dayjs": {
- "version": "1.11.7",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz",
- "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decompress": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz",
- "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==",
- "dependencies": {
- "decompress-tar": "^4.0.0",
- "decompress-tarbz2": "^4.0.0",
- "decompress-targz": "^4.0.0",
- "decompress-unzip": "^4.0.1",
- "graceful-fs": "^4.1.10",
- "make-dir": "^1.0.0",
- "pify": "^2.3.0",
- "strip-dirs": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/decompress-tar": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
- "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
- "dependencies": {
- "file-type": "^5.2.0",
- "is-stream": "^1.1.0",
- "tar-stream": "^1.5.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/decompress-tarbz2": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
- "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
- "dependencies": {
- "decompress-tar": "^4.1.0",
- "file-type": "^6.1.0",
- "is-stream": "^1.1.0",
- "seek-bzip": "^1.0.5",
- "unbzip2-stream": "^1.0.9"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/decompress-tarbz2/node_modules/file-type": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
- "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/decompress-targz": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
- "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
- "dependencies": {
- "decompress-tar": "^4.1.1",
- "file-type": "^5.2.0",
- "is-stream": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/decompress-unzip": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
- "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==",
- "dependencies": {
- "file-type": "^3.8.0",
- "get-stream": "^2.2.0",
- "pify": "^2.3.0",
- "yauzl": "^2.4.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/decompress-unzip/node_modules/file-type": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
- "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decompress/node_modules/make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dependencies": {
- "pify": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/decompress/node_modules/make-dir/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/define-properties": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
- "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
- "dependencies": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/del": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
- "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
- "dependencies": {
- "globby": "^11.0.1",
- "graceful-fs": "^4.2.4",
- "is-glob": "^4.0.1",
- "is-path-cwd": "^2.2.0",
- "is-path-inside": "^3.0.2",
- "p-map": "^4.0.0",
- "rimraf": "^3.0.2",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/del/node_modules/p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dependencies": {
- "aggregate-error": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
- },
- "node_modules/denque": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
- "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/deprecation": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
- "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/detect-libc": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
- "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
- "dependencies": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "node_modules/ecdsa-sig-formatter": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
- "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/editions": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/editions/-/editions-2.3.1.tgz",
- "integrity": "sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA==",
- "dependencies": {
- "errlop": "^2.0.0",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=0.8"
- },
- "funding": {
- "url": "https://bevry.me/fund"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.365",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.365.tgz",
- "integrity": "sha512-FRHZO+1tUNO4TOPXmlxetkoaIY8uwHzd1kKopK/Gx2SKn1L47wJXWD44wxP5CGRyyP98z/c8e1eBzJrgPeiBOg=="
- },
- "node_modules/elliptic": {
- "version": "6.5.4",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
- "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
- "dependencies": {
- "bn.js": "^4.11.9",
- "brorand": "^1.1.0",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.1",
- "inherits": "^2.0.4",
- "minimalistic-assert": "^1.0.1",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dependencies": {
- "once": "^1.4.0"
- }
- },
- "node_modules/env-var": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/env-var/-/env-var-6.3.0.tgz",
- "integrity": "sha512-gaNzDZuVaJQJlP2SigAZLu/FieZN5MzdN7lgHNehESwlRanHwGQ/WUtJ7q//dhrj3aGBZM45yEaKOuvSJaf4mA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/errlop": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/errlop/-/errlop-2.2.0.tgz",
- "integrity": "sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw==",
- "engines": {
- "node": ">=0.8"
- },
- "funding": {
- "url": "https://bevry.me/fund"
- }
- },
- "node_modules/es5-ext": {
- "version": "0.10.53",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
- "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
- "dependencies": {
- "es6-iterator": "~2.0.3",
- "es6-symbol": "~3.1.3",
- "next-tick": "~1.0.0"
- }
- },
- "node_modules/es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/es6-symbol": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
- "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
- "dependencies": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express-graphql": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.12.0.tgz",
- "integrity": "sha512-DwYaJQy0amdy3pgNtiTDuGGM2BLdj+YO2SgbKoLliCfuHv3VVTt7vNG/ZqK2hRYjtYHE2t2KB705EU94mE64zg==",
- "deprecated": "This package is no longer maintained. We recommend using `graphql-http` instead. Please consult the migration document https://github.com/graphql/graphql-http#migrating-express-grpahql.",
- "dependencies": {
- "accepts": "^1.3.7",
- "content-type": "^1.0.4",
- "http-errors": "1.8.0",
- "raw-body": "^2.4.1"
- },
- "engines": {
- "node": ">= 10.x"
- },
- "peerDependencies": {
- "graphql": "^14.7.0 || ^15.3.0"
- }
- },
- "node_modules/express-graphql/node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express-graphql/node_modules/http-errors": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz",
- "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express-graphql/node_modules/statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express-graphql/node_modules/toidentifier": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/ext": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
- "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
- "dependencies": {
- "type": "^2.7.2"
- }
- },
- "node_modules/ext/node_modules/type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "node_modules/extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
- "engines": [
- "node >=0.6.0"
- ]
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "node_modules/fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
- },
- "node_modules/fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dependencies": {
- "pend": "~1.2.0"
- }
- },
- "node_modules/file-type": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
- "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/flatbuffers": {
- "version": "23.3.3",
- "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-23.3.3.tgz",
- "integrity": "sha512-jmreOaAT1t55keaf+Z259Tvh8tR/Srry9K8dgCgvizhKSEr6gLGgaOJI2WFL5fkOpGOGRZwxUrlFn0GCmXUy6g=="
- },
- "node_modules/forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 0.12"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
- },
- "node_modules/fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/fs-minipass/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/fs-minipass/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
- },
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "node_modules/gauge": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
- "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
- "dependencies": {
- "aproba": "^1.0.3 || ^2.0.0",
- "color-support": "^1.1.2",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.1",
- "object-assign": "^4.1.1",
- "signal-exit": "^3.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1",
- "wide-align": "^1.1.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/gauge/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/gauge/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/generate-object-property": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
- "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==",
- "dependencies": {
- "is-property": "^1.0.0"
- }
- },
- "node_modules/generic-pool": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz",
- "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-stream": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
- "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==",
- "dependencies": {
- "object-assign": "^4.0.1",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
- "dependencies": {
- "assert-plus": "^1.0.0"
- }
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
- },
- "node_modules/graphql": {
- "version": "15.8.0",
- "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz",
- "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==",
- "engines": {
- "node": ">= 10.x"
- }
- },
- "node_modules/graphql-scalars": {
- "version": "1.21.3",
- "resolved": "https://registry.npmjs.org/graphql-scalars/-/graphql-scalars-1.21.3.tgz",
- "integrity": "sha512-QLWw3BHmqHZMp9JeYmPpjq7JT9aw/H8TpwmWKJEuMSE3+O7Xe7TduQbOLFzbs1q9UxX6CVkc0O1JO/YfkP/pAw==",
- "dependencies": {
- "tslib": "^2.5.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
- }
- },
- "node_modules/graphql-scalars/node_modules/tslib": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
- "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
- },
- "node_modules/har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "deprecated": "this library is no longer supported",
- "dependencies": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/has-property-descriptors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
- "dependencies": {
- "get-intrinsic": "^1.1.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
- },
- "node_modules/hash.js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
- "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
- }
- },
- "node_modules/hmac-drbg": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
- "dependencies": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
- "dependencies": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- },
- "engines": {
- "node": ">=0.8",
- "npm": ">=1.3.7"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/humps": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/humps/-/humps-2.0.1.tgz",
- "integrity": "sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g=="
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/inflection": {
- "version": "1.13.4",
- "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz",
- "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==",
- "engines": [
- "node >= 0.4.0"
- ]
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/ioredis": {
- "version": "4.28.5",
- "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz",
- "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==",
- "dependencies": {
- "cluster-key-slot": "^1.1.0",
- "debug": "^4.3.1",
- "denque": "^1.1.0",
- "lodash.defaults": "^4.2.0",
- "lodash.flatten": "^4.4.0",
- "lodash.isarguments": "^3.1.0",
- "p-map": "^2.1.0",
- "redis-commands": "1.7.0",
- "redis-errors": "^1.2.0",
- "redis-parser": "^3.0.0",
- "standard-as-callback": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/ioredis"
- }
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.12.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz",
- "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==",
- "dependencies": {
- "has": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-nan": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
- "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-natural-number": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
- "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ=="
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-path-cwd": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
- "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-plain-object": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-property": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="
- },
- "node_modules/is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
- },
- "node_modules/isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
- },
- "node_modules/istextorbinary": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.6.0.tgz",
- "integrity": "sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA==",
- "dependencies": {
- "binaryextensions": "^2.1.2",
- "editions": "^2.2.0",
- "textextensions": "^2.5.0"
- },
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://bevry.me/fund"
- }
- },
- "node_modules/iterall": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz",
- "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg=="
- },
- "node_modules/joi": {
- "version": "17.9.1",
- "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.1.tgz",
- "integrity": "sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw==",
- "dependencies": {
- "@hapi/hoek": "^9.0.0",
- "@hapi/topo": "^5.0.0",
- "@sideway/address": "^4.1.3",
- "@sideway/formula": "^3.0.1",
- "@sideway/pinpoint": "^2.0.0"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/js-yaml/node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
- },
- "node_modules/jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
- },
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "dependencies": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- },
- "engines": {
- "node": ">=4",
- "npm": ">=1.4.28"
- }
- },
- "node_modules/jsonwebtoken/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
- "dependencies": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
- "node_modules/jwa": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
- "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
- "dependencies": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/jwk-to-pem": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-2.0.5.tgz",
- "integrity": "sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A==",
- "dependencies": {
- "asn1.js": "^5.3.0",
- "elliptic": "^6.5.4",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/jws": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
- "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
- "dependencies": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "node_modules/lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
- },
- "node_modules/lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
- },
- "node_modules/lodash.defaults": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
- "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="
- },
- "node_modules/lodash.flatten": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
- "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g=="
- },
- "node_modules/lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
- },
- "node_modules/lodash.isarguments": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
- "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg=="
- },
- "node_modules/lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
- },
- "node_modules/lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
- },
- "node_modules/lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
- },
- "node_modules/lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
- },
- "node_modules/lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
- },
- "node_modules/lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/luxon": {
- "version": "1.28.1",
- "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz",
- "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/lz-string": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
- "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
- "bin": {
- "lz-string": "bin/bin.js"
- }
- },
- "node_modules/make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/minimalistic-assert": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
- },
- "node_modules/minimalistic-crypto-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg=="
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/minipass": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
- "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minizlib/node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minizlib/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/moment": {
- "version": "2.29.4",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
- "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/moment-range": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/moment-range/-/moment-range-4.0.2.tgz",
- "integrity": "sha512-n8sceWwSTjmz++nFHzeNEUsYtDqjgXgcOBzsHi+BoXQU2FW+eU92LUaK8gqOiSu5PG57Q9sYj1Fz4LRDj4FtKA==",
- "dependencies": {
- "es6-symbol": "^3.1.0"
- },
- "engines": {
- "node": "*"
- },
- "peerDependencies": {
- "moment": ">= 2"
- }
- },
- "node_modules/moment-timezone": {
- "version": "0.5.43",
- "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz",
- "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==",
- "dependencies": {
- "moment": "^2.29.4"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/ndjson": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-1.5.0.tgz",
- "integrity": "sha512-hUPLuaziboGjNF7wHngkgVc0FOclR8dDk/HfEvTtDr/iUrqBWiRcRSTK3/nLOqKH33th714BrMmTPtObI9gZxQ==",
- "dependencies": {
- "json-stringify-safe": "^5.0.1",
- "minimist": "^1.2.0",
- "split2": "^2.1.0",
- "through2": "^2.0.3"
- },
- "bin": {
- "ndjson": "cli.js"
- }
- },
- "node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/next-tick": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
- "integrity": "sha512-mc/caHeUcdjnC/boPWJefDr4KUIWQNv+tlnFnJd38QMou86QtxQzBJfxgGRzvx8jazYRqrVlaHarfO72uNxPOg=="
- },
- "node_modules/nexus": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/nexus/-/nexus-1.3.0.tgz",
- "integrity": "sha512-w/s19OiNOs0LrtP7pBmD9/FqJHvZLmCipVRt6v1PM8cRUYIbhEswyNKGHVoC4eHZGPSnD+bOf5A3+gnbt0A5/A==",
- "dependencies": {
- "iterall": "^1.3.0",
- "tslib": "^2.0.3"
- },
- "peerDependencies": {
- "graphql": "15.x || 16.x"
- }
- },
- "node_modules/nexus/node_modules/tslib": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
- "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
- },
- "node_modules/node-dijkstra": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/node-dijkstra/-/node-dijkstra-2.5.0.tgz",
- "integrity": "sha512-2REYb1lo8yDRAY1gsdhjwQdGVSh47VI5Z5wS8sCqydO/P1OVAKOwLuV1fDxNLvbrtMspW7k2UZ2JKIKP06hl+A=="
- },
- "node_modules/node-fetch": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
- "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
- "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
- },
- "node_modules/nopt": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
- "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
- "dependencies": {
- "abbrev": "1"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npmlog": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
- "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
- "dependencies": {
- "are-we-there-yet": "^2.0.0",
- "console-control-strings": "^1.1.0",
- "gauge": "^3.0.0",
- "set-blocking": "^2.0.0"
- }
- },
- "node_modules/oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-map": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
- "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
- },
- "node_modules/performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
- },
- "node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
- "dependencies": {
- "pinkie": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "node_modules/promise-timeout": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/promise-timeout/-/promise-timeout-1.3.0.tgz",
- "integrity": "sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg=="
- },
- "node_modules/psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
- },
- "node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/querystring": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
- "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==",
- "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
- "engines": {
- "node": ">=0.4.x"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/ramda": {
- "version": "0.27.2",
- "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz",
- "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA=="
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
- "dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
- "dependencies": {
- "resolve": "^1.1.6"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/redis": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
- "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
- "dependencies": {
- "denque": "^1.5.0",
- "redis-commands": "^1.7.0",
- "redis-errors": "^1.2.0",
- "redis-parser": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/node-redis"
- }
- },
- "node_modules/redis-commands": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
- "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
- },
- "node_modules/redis-errors": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
- "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/redis-parser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
- "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==",
- "dependencies": {
- "redis-errors": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
- },
- "node_modules/regenerate-unicode-properties": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
- "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
- "dependencies": {
- "regenerate": "^1.4.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regenerator-runtime": {
- "version": "0.13.11",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
- "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
- },
- "node_modules/regenerator-transform": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
- "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
- "dependencies": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "node_modules/regexpu-core": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
- "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
- "dependencies": {
- "@babel/regjsgen": "^0.8.0",
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regjsparser": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
- "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
- "dependencies": {
- "jsesc": "~0.5.0"
- },
- "bin": {
- "regjsparser": "bin/parser"
- }
- },
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "bin": {
- "jsesc": "bin/jsesc"
- }
- },
- "node_modules/request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
- "dependencies": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/request-promise": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz",
- "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==",
- "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142",
- "dependencies": {
- "bluebird": "^3.5.0",
- "request-promise-core": "1.1.4",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "peerDependencies": {
- "request": "^2.34"
- }
- },
- "node_modules/request-promise-core": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
- "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
- "dependencies": {
- "lodash": "^4.17.19"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "peerDependencies": {
- "request": "^2.34"
- }
- },
- "node_modules/request/node_modules/qs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
- "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/request/node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "bin": {
- "uuid": "bin/uuid"
- }
- },
- "node_modules/resolve": {
- "version": "1.22.3",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.3.tgz",
- "integrity": "sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==",
- "dependencies": {
- "is-core-module": "^2.12.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/seek-bzip": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
- "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
- "dependencies": {
- "commander": "^2.8.1"
- },
- "bin": {
- "seek-bunzip": "bin/seek-bunzip",
- "seek-table": "bin/seek-bzip-table"
- }
- },
- "node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/send/node_modules/debug/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
- "node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shelljs": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
- "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
- "dependencies": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- },
- "bin": {
- "shjs": "bin/shjs"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/split2": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
- "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
- "dependencies": {
- "through2": "^2.0.2"
- }
- },
- "node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
- },
- "node_modules/sqlstring": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
- "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/sshpk": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
- "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
- "dependencies": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- },
- "bin": {
- "sshpk-conv": "bin/sshpk-conv",
- "sshpk-sign": "bin/sshpk-sign",
- "sshpk-verify": "bin/sshpk-verify"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/standard-as-callback": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz",
- "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A=="
- },
- "node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/stealthy-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
- "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/strip-dirs": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
- "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
- "dependencies": {
- "is-natural-number": "^4.0.1"
- }
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/syntax-error": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
- "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==",
- "dependencies": {
- "acorn-node": "^1.2.0"
- }
- },
- "node_modules/tar": {
- "version": "6.1.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
- "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
- "dependencies": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^4.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/tar-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
- "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
- "dependencies": {
- "bl": "^1.0.0",
- "buffer-alloc": "^1.2.0",
- "end-of-stream": "^1.0.0",
- "fs-constants": "^1.0.0",
- "readable-stream": "^2.3.0",
- "to-buffer": "^1.1.1",
- "xtend": "^4.0.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/tar-stream/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/tar-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/tar-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/tar/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/temp-dir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
- "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tempy": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz",
- "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==",
- "dependencies": {
- "del": "^6.0.0",
- "is-stream": "^2.0.0",
- "temp-dir": "^2.0.0",
- "type-fest": "^0.16.0",
- "unique-string": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/tempy/node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/textextensions": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.6.0.tgz",
- "integrity": "sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ==",
- "engines": {
- "node": ">=0.8"
- },
- "funding": {
- "url": "https://bevry.me/fund"
- }
- },
- "node_modules/throttle-debounce": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
- "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
- },
- "node_modules/through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/through2/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/through2/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/through2/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/to-buffer": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
- "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dependencies": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
- "node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
- },
- "node_modules/type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
- "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
- },
- "node_modules/type-fest": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
- "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/unbzip2-stream": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
- "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
- "dependencies": {
- "buffer": "^5.2.1",
- "through": "^2.3.8"
- }
- },
- "node_modules/unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
- "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
- "dependencies": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
- "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unique-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
- "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
- "dependencies": {
- "crypto-random-string": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/universal-user-agent": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
- "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
- },
- "node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
- },
- "node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
- "engines": [
- "node >=0.6.0"
- ],
- "dependencies": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/wide-align": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
- "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
- "dependencies": {
- "string-width": "^1.0.2 || 2 || 3 || 4"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
- },
- "node_modules/ws": {
- "version": "7.5.9",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
- "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
- "engines": {
- "node": ">=8.3.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "engines": {
- "node": ">=0.4"
- }
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
- },
- "node_modules/yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "dependencies": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- }
- },
- "dependencies": {
- "@ampproject/remapping": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
- "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
- "requires": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@babel/code-frame": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz",
- "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==",
- "requires": {
- "@babel/highlight": "^7.18.6"
- }
- },
- "@babel/compat-data": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz",
- "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g=="
- },
- "@babel/core": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz",
- "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==",
- "requires": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.21.4",
- "@babel/generator": "^7.21.4",
- "@babel/helper-compilation-targets": "^7.21.4",
- "@babel/helper-module-transforms": "^7.21.2",
- "@babel/helpers": "^7.21.0",
- "@babel/parser": "^7.21.4",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.4",
- "@babel/types": "^7.21.4",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.2",
- "semver": "^6.3.0"
- }
- },
- "@babel/generator": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz",
- "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==",
- "requires": {
- "@babel/types": "^7.21.4",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
- }
- },
- "@babel/helper-annotate-as-pure": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
- "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz",
- "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==",
- "requires": {
- "@babel/helper-explode-assignable-expression": "^7.18.6",
- "@babel/types": "^7.18.9"
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz",
- "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==",
- "requires": {
- "@babel/compat-data": "^7.21.4",
- "@babel/helper-validator-option": "^7.21.0",
- "browserslist": "^4.21.3",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.0"
- }
- },
- "@babel/helper-create-class-features-plugin": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz",
- "integrity": "sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==",
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.21.0",
- "@babel/helper-member-expression-to-functions": "^7.21.0",
- "@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/helper-replace-supers": "^7.20.7",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
- "@babel/helper-split-export-declaration": "^7.18.6"
- }
- },
- "@babel/helper-create-regexp-features-plugin": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz",
- "integrity": "sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==",
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "regexpu-core": "^5.3.1"
- }
- },
- "@babel/helper-define-polyfill-provider": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz",
- "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==",
- "requires": {
- "@babel/helper-compilation-targets": "^7.17.7",
- "@babel/helper-plugin-utils": "^7.16.7",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2",
- "semver": "^6.1.2"
- }
- },
- "@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg=="
- },
- "@babel/helper-explode-assignable-expression": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz",
- "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==",
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-function-name": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
- "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
- "requires": {
- "@babel/template": "^7.20.7",
- "@babel/types": "^7.21.0"
- }
- },
- "@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-member-expression-to-functions": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz",
- "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==",
- "requires": {
- "@babel/types": "^7.21.0"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz",
- "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==",
- "requires": {
- "@babel/types": "^7.21.4"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
- "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
- "requires": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.20.2",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/helper-validator-identifier": "^7.19.1",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.2",
- "@babel/types": "^7.21.2"
- }
- },
- "@babel/helper-optimise-call-expression": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz",
- "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==",
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
- "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ=="
- },
- "@babel/helper-remap-async-to-generator": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz",
- "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==",
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-wrap-function": "^7.18.9",
- "@babel/types": "^7.18.9"
- }
- },
- "@babel/helper-replace-supers": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz",
- "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==",
- "requires": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-member-expression-to-functions": "^7.20.7",
- "@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.20.7",
- "@babel/types": "^7.20.7"
- }
- },
- "@babel/helper-simple-access": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
- "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
- "requires": {
- "@babel/types": "^7.20.2"
- }
- },
- "@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz",
- "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==",
- "requires": {
- "@babel/types": "^7.20.0"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
- "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-string-parser": {
- "version": "7.19.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
- "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw=="
- },
- "@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
- },
- "@babel/helper-validator-option": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
- "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ=="
- },
- "@babel/helper-wrap-function": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz",
- "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==",
- "requires": {
- "@babel/helper-function-name": "^7.19.0",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.20.5",
- "@babel/types": "^7.20.5"
- }
- },
- "@babel/helpers": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
- "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
- "requires": {
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.0",
- "@babel/types": "^7.21.0"
- }
- },
- "@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
- "requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz",
- "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw=="
- },
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz",
- "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz",
- "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
- "@babel/plugin-proposal-optional-chaining": "^7.20.7"
- }
- },
- "@babel/plugin-proposal-async-generator-functions": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz",
- "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==",
- "requires": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-remap-async-to-generator": "^7.18.9",
- "@babel/plugin-syntax-async-generators": "^7.8.4"
- }
- },
- "@babel/plugin-proposal-class-properties": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
- "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-proposal-class-static-block": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz",
- "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==",
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.21.0",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- }
- },
- "@babel/plugin-proposal-dynamic-import": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz",
- "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-export-namespace-from": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz",
- "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.9",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-json-strings": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz",
- "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-logical-assignment-operators": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz",
- "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- }
- },
- "@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
- "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-numeric-separator": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz",
- "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- }
- },
- "@babel/plugin-proposal-object-rest-spread": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz",
- "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==",
- "requires": {
- "@babel/compat-data": "^7.20.5",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.20.7"
- }
- },
- "@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz",
- "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-optional-chaining": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz",
- "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- }
- },
- "@babel/plugin-proposal-private-methods": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
- "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==",
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz",
- "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==",
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-create-class-features-plugin": "^7.21.0",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- }
- },
- "@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
- "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
- "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
- "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.12.13"
- }
- },
- "@babel/plugin-syntax-class-static-block": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
- "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
- "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
- "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.3"
- }
- },
- "@babel/plugin-syntax-import-assertions": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz",
- "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.19.0"
- }
- },
- "@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
- "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
- "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
- "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
- "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.10.4"
- }
- },
- "@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
- "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
- "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
- "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.8.0"
- }
- },
- "@babel/plugin-syntax-private-property-in-object": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
- "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
- "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.14.5"
- }
- },
- "@babel/plugin-transform-arrow-functions": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz",
- "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-async-to-generator": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz",
- "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==",
- "requires": {
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-remap-async-to-generator": "^7.18.9"
- }
- },
- "@babel/plugin-transform-block-scoped-functions": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz",
- "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-block-scoping": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz",
- "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-classes": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz",
- "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==",
- "requires": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.21.0",
- "@babel/helper-optimise-call-expression": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-replace-supers": "^7.20.7",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "globals": "^11.1.0"
- }
- },
- "@babel/plugin-transform-computed-properties": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz",
- "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/template": "^7.20.7"
- }
- },
- "@babel/plugin-transform-destructuring": {
- "version": "7.21.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz",
- "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-dotall-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz",
- "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==",
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-duplicate-keys": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz",
- "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.9"
- }
- },
- "@babel/plugin-transform-exponentiation-operator": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz",
- "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==",
- "requires": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-for-of": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz",
- "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-function-name": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz",
- "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==",
- "requires": {
- "@babel/helper-compilation-targets": "^7.18.9",
- "@babel/helper-function-name": "^7.18.9",
- "@babel/helper-plugin-utils": "^7.18.9"
- }
- },
- "@babel/plugin-transform-literals": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz",
- "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.9"
- }
- },
- "@babel/plugin-transform-member-expression-literals": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz",
- "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-modules-amd": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz",
- "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==",
- "requires": {
- "@babel/helper-module-transforms": "^7.20.11",
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-modules-commonjs": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz",
- "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==",
- "requires": {
- "@babel/helper-module-transforms": "^7.21.2",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-simple-access": "^7.20.2"
- }
- },
- "@babel/plugin-transform-modules-systemjs": {
- "version": "7.20.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz",
- "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==",
- "requires": {
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-module-transforms": "^7.20.11",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-validator-identifier": "^7.19.1"
- }
- },
- "@babel/plugin-transform-modules-umd": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz",
- "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==",
- "requires": {
- "@babel/helper-module-transforms": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz",
- "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==",
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.20.5",
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-new-target": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz",
- "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-object-super": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz",
- "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/helper-replace-supers": "^7.18.6"
- }
- },
- "@babel/plugin-transform-parameters": {
- "version": "7.21.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz",
- "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-property-literals": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz",
- "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-regenerator": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz",
- "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "regenerator-transform": "^0.15.1"
- }
- },
- "@babel/plugin-transform-reserved-words": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz",
- "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-shorthand-properties": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz",
- "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-spread": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz",
- "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0"
- }
- },
- "@babel/plugin-transform-sticky-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz",
- "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/plugin-transform-template-literals": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz",
- "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.9"
- }
- },
- "@babel/plugin-transform-typeof-symbol": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz",
- "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.9"
- }
- },
- "@babel/plugin-transform-unicode-escapes": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz",
- "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.18.9"
- }
- },
- "@babel/plugin-transform-unicode-regex": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz",
- "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==",
- "requires": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- }
- },
- "@babel/preset-env": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz",
- "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==",
- "requires": {
- "@babel/compat-data": "^7.21.4",
- "@babel/helper-compilation-targets": "^7.21.4",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-validator-option": "^7.21.0",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7",
- "@babel/plugin-proposal-async-generator-functions": "^7.20.7",
- "@babel/plugin-proposal-class-properties": "^7.18.6",
- "@babel/plugin-proposal-class-static-block": "^7.21.0",
- "@babel/plugin-proposal-dynamic-import": "^7.18.6",
- "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
- "@babel/plugin-proposal-json-strings": "^7.18.6",
- "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
- "@babel/plugin-proposal-numeric-separator": "^7.18.6",
- "@babel/plugin-proposal-object-rest-spread": "^7.20.7",
- "@babel/plugin-proposal-optional-catch-binding": "^7.18.6",
- "@babel/plugin-proposal-optional-chaining": "^7.21.0",
- "@babel/plugin-proposal-private-methods": "^7.18.6",
- "@babel/plugin-proposal-private-property-in-object": "^7.21.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.18.6",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.20.0",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-transform-arrow-functions": "^7.20.7",
- "@babel/plugin-transform-async-to-generator": "^7.20.7",
- "@babel/plugin-transform-block-scoped-functions": "^7.18.6",
- "@babel/plugin-transform-block-scoping": "^7.21.0",
- "@babel/plugin-transform-classes": "^7.21.0",
- "@babel/plugin-transform-computed-properties": "^7.20.7",
- "@babel/plugin-transform-destructuring": "^7.21.3",
- "@babel/plugin-transform-dotall-regex": "^7.18.6",
- "@babel/plugin-transform-duplicate-keys": "^7.18.9",
- "@babel/plugin-transform-exponentiation-operator": "^7.18.6",
- "@babel/plugin-transform-for-of": "^7.21.0",
- "@babel/plugin-transform-function-name": "^7.18.9",
- "@babel/plugin-transform-literals": "^7.18.9",
- "@babel/plugin-transform-member-expression-literals": "^7.18.6",
- "@babel/plugin-transform-modules-amd": "^7.20.11",
- "@babel/plugin-transform-modules-commonjs": "^7.21.2",
- "@babel/plugin-transform-modules-systemjs": "^7.20.11",
- "@babel/plugin-transform-modules-umd": "^7.18.6",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5",
- "@babel/plugin-transform-new-target": "^7.18.6",
- "@babel/plugin-transform-object-super": "^7.18.6",
- "@babel/plugin-transform-parameters": "^7.21.3",
- "@babel/plugin-transform-property-literals": "^7.18.6",
- "@babel/plugin-transform-regenerator": "^7.20.5",
- "@babel/plugin-transform-reserved-words": "^7.18.6",
- "@babel/plugin-transform-shorthand-properties": "^7.18.6",
- "@babel/plugin-transform-spread": "^7.20.7",
- "@babel/plugin-transform-sticky-regex": "^7.18.6",
- "@babel/plugin-transform-template-literals": "^7.18.9",
- "@babel/plugin-transform-typeof-symbol": "^7.18.9",
- "@babel/plugin-transform-unicode-escapes": "^7.18.10",
- "@babel/plugin-transform-unicode-regex": "^7.18.6",
- "@babel/preset-modules": "^0.1.5",
- "@babel/types": "^7.21.4",
- "babel-plugin-polyfill-corejs2": "^0.3.3",
- "babel-plugin-polyfill-corejs3": "^0.6.0",
- "babel-plugin-polyfill-regenerator": "^0.4.1",
- "core-js-compat": "^3.25.1",
- "semver": "^6.3.0"
- }
- },
- "@babel/preset-modules": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
- "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
- "requires": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
- "@babel/plugin-transform-dotall-regex": "^7.4.4",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
- }
- },
- "@babel/regjsgen": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA=="
- },
- "@babel/runtime": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
- "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
- "requires": {
- "regenerator-runtime": "^0.13.11"
- }
- },
- "@babel/standalone": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.21.4.tgz",
- "integrity": "sha512-Rw4nGqH/iyVeYxARKcz7iGP+njkPsVqJ45TmXMONoGoxooWjXCAs+CUcLeAZdBGCLqgaPvHKCYvIaDT2Iq+KfA=="
- },
- "@babel/template": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
- "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
- "requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7"
- }
- },
- "@babel/traverse": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz",
- "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==",
- "requires": {
- "@babel/code-frame": "^7.21.4",
- "@babel/generator": "^7.21.4",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.21.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.21.4",
- "@babel/types": "^7.21.4",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- }
- },
- "@babel/types": {
- "version": "7.21.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz",
- "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==",
- "requires": {
- "@babel/helper-string-parser": "^7.19.4",
- "@babel/helper-validator-identifier": "^7.19.1",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@cubejs-backend/api-gateway": {
- "version": "0.32.27",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/api-gateway/-/api-gateway-0.32.27.tgz",
- "integrity": "sha512-l4joKt9f7e5VImaw4G+tVZrvpO2G67J/0fjvIj2fCwk3tRlNqTqrjADnofykkCeR1LntB8miipj2bdZMrECGog==",
- "requires": {
- "@cubejs-backend/native": "^0.32.27",
- "@cubejs-backend/shared": "^0.32.25",
- "@ungap/structured-clone": "^0.3.4",
- "body-parser": "^1.19.0",
- "chrono-node": "^2.6.2",
- "express-graphql": "^0.12.0",
- "graphql": "^15.8.0",
- "graphql-scalars": "^1.10.0",
- "joi": "^17.8.3",
- "jsonwebtoken": "^8.3.0",
- "jwk-to-pem": "^2.0.4",
- "moment": "^2.24.0",
- "moment-timezone": "^0.5.27",
- "nexus": "^1.1.0",
- "node-fetch": "^2.6.1",
- "querystring": "^0.2.1",
- "ramda": "^0.27.0",
- "uuid": "^8.3.2"
- }
- },
- "@cubejs-backend/base-driver": {
- "version": "0.32.26",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/base-driver/-/base-driver-0.32.26.tgz",
- "integrity": "sha512-OVplhEEdSGHYxgGbNEmN9IXieZbaEjfLgi8mBmlr9OTC1b3cecFHrV8tvRRqi6Emi8ZLtsMjmQx4LOcv7fVn/A==",
- "requires": {
- "@cubejs-backend/shared": "^0.32.25",
- "ramda": "^0.27.0"
- }
- },
- "@cubejs-backend/cloud": {
- "version": "0.32.25",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/cloud/-/cloud-0.32.25.tgz",
- "integrity": "sha512-bk+3kAE4PKIBI7by8utyKTpA9zJJwBZLvRe8Ica0V+z+pFSEooPu4Pnp2hcoalqZ0GMKQkyRDZzbGu7zTVUK7w==",
- "requires": {
- "@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/shared": "^0.32.25",
- "chokidar": "^3.5.1",
- "env-var": "^6.3.0",
- "fs-extra": "^9.1.0",
- "jsonwebtoken": "^8.5.1",
- "request": "^2.88.2",
- "request-promise": "^4.2.5"
- },
- "dependencies": {
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
- }
- }
- },
- "@cubejs-backend/cubesql": {
- "version": "0.32.19",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/cubesql/-/cubesql-0.32.19.tgz",
- "integrity": "sha512-b605Vw2OeFkn0dQmHd9FR2uEHzFCLlduTIez/4WpWw7MilcX1T810AMXIdwxbn9DPl/ILc5MvHn9hZ74SqE4dw=="
- },
- "@cubejs-backend/cubestore": {
- "version": "0.32.25",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/cubestore/-/cubestore-0.32.25.tgz",
- "integrity": "sha512-k22AR9znDL8vcKDe6ieIg9cbSRzfnW+lSAd+v+0R0nJ8Z/8SU0lXOzTecWkOmihJ4U+Gxqd1tueazzEO2BRfWQ==",
- "requires": {
- "@cubejs-backend/shared": "^0.32.25",
- "@octokit/core": "^3.2.5",
- "source-map-support": "^0.5.19"
- }
- },
- "@cubejs-backend/cubestore-driver": {
- "version": "0.32.26",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/cubestore-driver/-/cubestore-driver-0.32.26.tgz",
- "integrity": "sha512-WIBE8NUAdCQds2Rue4wL27cIO3esK5n+Y3DP43M72iw6/BP9f09VlbgQJORWtY9mF0g1P0ZEwwFhHvAR0yEfKA==",
- "requires": {
- "@cubejs-backend/base-driver": "^0.32.26",
- "@cubejs-backend/cubestore": "^0.32.25",
- "@cubejs-backend/shared": "^0.32.25",
- "csv-write-stream": "^2.0.0",
- "flatbuffers": "23.3.3",
- "fs-extra": "^9.1.0",
- "generic-pool": "^3.6.0",
- "moment-timezone": "^0.5.31",
- "node-fetch": "^2.6.1",
- "sqlstring": "^2.3.3",
- "tempy": "^1.0.1",
- "uuid": "^8.3.2",
- "ws": "^7.4.3"
- },
- "dependencies": {
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
- }
- }
- },
- "@cubejs-backend/dotenv": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/dotenv/-/dotenv-9.0.2.tgz",
- "integrity": "sha512-yC1juhXEjM7K97KfXubDm7WGipd4Lpxe+AT8XeTRE9meRULrKlw0wtE2E8AQkGOfTBn+P1SCkePQ/BzIbOh1VA=="
- },
- "@cubejs-backend/native": {
- "version": "0.32.27",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/native/-/native-0.32.27.tgz",
- "integrity": "sha512-LIqsSH6sprAqHbQdLcw6bqGtYKyaCf1TiqPx8OmFQp7GgNudkyk5ZfeXPWUhCnCnZX+q+A/K9EcDzxgY6GvLuQ==",
- "requires": {
- "@cubejs-backend/cubesql": "^0.32.19",
- "@cubejs-backend/shared": "^0.32.25",
- "@mapbox/node-pre-gyp": "^1"
- }
- },
- "@cubejs-backend/query-orchestrator": {
- "version": "0.32.27",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/query-orchestrator/-/query-orchestrator-0.32.27.tgz",
- "integrity": "sha512-+FQt2bm5trfpmsXY8sLT0fYKqSfStNGSzsf3RFOdWZ4vofiBg8psNMQlKF8DlFlVtuKcNPSk/hcmPqce+heagg==",
- "requires": {
- "@cubejs-backend/base-driver": "^0.32.26",
- "@cubejs-backend/cubestore-driver": "^0.32.26",
- "@cubejs-backend/shared": "^0.32.25",
- "csv-write-stream": "^2.0.0",
- "es5-ext": "0.10.53",
- "generic-pool": "^3.7.1",
- "ioredis": "^4.27.8",
- "lru-cache": "^6.0.0",
- "moment-range": "^4.0.2",
- "moment-timezone": "^0.5.33",
- "ramda": "^0.27.2",
- "redis": "^3.0.2"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "@cubejs-backend/schema-compiler": {
- "version": "0.32.27",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/schema-compiler/-/schema-compiler-0.32.27.tgz",
- "integrity": "sha512-klV7r6uR6+7HJaINBHBdKaxlMGc/Hz10VMhFG8acYSz2zvFpQ+vDbcvnNbi0dBLpjQfCoWeJfpbxjrVL5XXvsQ==",
- "requires": {
- "@babel/code-frame": "^7.12.11",
- "@babel/core": "^7.12.10",
- "@babel/generator": "^7.12.10",
- "@babel/parser": "^7.12.10",
- "@babel/preset-env": "^7.12.10",
- "@babel/standalone": "^7.12.10",
- "@babel/traverse": "^7.12.10",
- "@babel/types": "^7.12.12",
- "@cubejs-backend/shared": "^0.32.25",
- "antlr4ts": "0.5.0-alpha.4",
- "camelcase": "^6.2.0",
- "cron-parser": "^3.5.0",
- "humps": "^2.0.1",
- "inflection": "^1.12.0",
- "joi": "^17.8.3",
- "js-yaml": "^4.1.0",
- "lru-cache": "^5.1.1",
- "moment-range": "^4.0.1",
- "moment-timezone": "^0.5.33",
- "node-dijkstra": "^2.5.0",
- "ramda": "^0.27.2",
- "syntax-error": "^1.3.0"
- }
- },
- "@cubejs-backend/server-core": {
- "version": "0.32.27",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/server-core/-/server-core-0.32.27.tgz",
- "integrity": "sha512-vlAhRFScey4tlDU5mR9jZEitod1A5Um/+8dx/sD4zJ5YrZn3o34AneC8vD8ERpuM1ZGhuiEix3sW0hrJ7isc6w==",
- "requires": {
- "@cubejs-backend/api-gateway": "^0.32.27",
- "@cubejs-backend/cloud": "^0.32.25",
- "@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/query-orchestrator": "^0.32.27",
- "@cubejs-backend/schema-compiler": "^0.32.27",
- "@cubejs-backend/shared": "^0.32.25",
- "@cubejs-backend/templates": "^0.32.25",
- "codesandbox-import-utils": "^2.1.12",
- "cross-spawn": "^7.0.1",
- "fs-extra": "^8.1.0",
- "is-docker": "^2.1.1",
- "joi": "^17.8.3",
- "jsonwebtoken": "^8.4.0",
- "lodash.clonedeep": "^4.5.0",
- "lru-cache": "^5.1.1",
- "moment": "^2.29.1",
- "node-fetch": "^2.6.0",
- "p-limit": "^3.1.0",
- "promise-timeout": "^1.3.0",
- "ramda": "^0.27.0",
- "semver": "^6.3.0",
- "serve-static": "^1.13.2",
- "sqlstring": "^2.3.1",
- "uuid": "^8.3.2",
- "ws": "^7.5.3"
- }
- },
- "@cubejs-backend/shared": {
- "version": "0.32.25",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/shared/-/shared-0.32.25.tgz",
- "integrity": "sha512-C7FJYHf3COPVRa/EUAkw3csqndUOrhg7AEBbqBmZvW3RNFfV/I7IJhpd4GXJqe/hlWt5Af0KzNu+oN4qttEXKQ==",
- "requires": {
- "@oclif/color": "^0.1.2",
- "bytes": "^3.1.0",
- "cli-progress": "^3.9.0",
- "cross-spawn": "^7.0.3",
- "decompress": "^4.2.1",
- "env-var": "^6.3.0",
- "fs-extra": "^9.1.0",
- "http-proxy-agent": "^4.0.1",
- "moment-range": "^4.0.1",
- "moment-timezone": "^0.5.33",
- "node-fetch": "^2.6.1",
- "shelljs": "^0.8.5",
- "throttle-debounce": "^3.0.1",
- "uuid": "^8.3.2"
- },
- "dependencies": {
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
- }
- }
- },
- "@cubejs-backend/templates": {
- "version": "0.32.25",
- "resolved": "https://registry.npmjs.org/@cubejs-backend/templates/-/templates-0.32.25.tgz",
- "integrity": "sha512-MH5b/gtw0cWSmVDFd7BkoryjYjNaqfKSVThO8l0zy7quOote+gEN0BMYP9UGv1qEP/G2zrosrqZ9juISzk8hrQ==",
- "requires": {
- "@cubejs-backend/shared": "^0.32.25",
- "cross-spawn": "^7.0.3",
- "decompress": "^4.2.1",
- "decompress-targz": "^4.1.1",
- "fs-extra": "^9.1.0",
- "node-fetch": "^2.6.1",
- "ramda": "^0.27.2",
- "source-map-support": "^0.5.19"
- },
- "dependencies": {
- "fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
- "requires": {
- "at-least-node": "^1.0.0",
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
- }
- }
- },
- "@hapi/hoek": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
- "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ=="
- },
- "@hapi/topo": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
- "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==",
- "requires": {
- "@hapi/hoek": "^9.0.0"
- }
- },
- "@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
- "requires": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
- },
- "@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.18",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
- "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
- "requires": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
- },
- "dependencies": {
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
- }
- }
- },
- "@mapbox/node-pre-gyp": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz",
- "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==",
- "requires": {
- "detect-libc": "^2.0.0",
- "https-proxy-agent": "^5.0.0",
- "make-dir": "^3.1.0",
- "node-fetch": "^2.6.7",
- "nopt": "^5.0.0",
- "npmlog": "^5.0.1",
- "rimraf": "^3.0.2",
- "semver": "^7.3.5",
- "tar": "^6.1.11"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "semver": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz",
- "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@oclif/color": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@oclif/color/-/color-0.1.2.tgz",
- "integrity": "sha512-M9o+DOrb8l603qvgz1FogJBUGLqcMFL1aFg2ZEL0FbXJofiNTLOWIeB4faeZTLwE6dt0xH9GpCVpzksMMzGbmA==",
- "requires": {
- "ansi-styles": "^3.2.1",
- "chalk": "^3.0.0",
- "strip-ansi": "^5.2.0",
- "supports-color": "^5.4.0",
- "tslib": "^1"
- },
- "dependencies": {
- "chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- }
- }
- },
- "@octokit/auth-token": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
- "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
- "requires": {
- "@octokit/types": "^6.0.3"
- }
- },
- "@octokit/core": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz",
- "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==",
- "requires": {
- "@octokit/auth-token": "^2.4.4",
- "@octokit/graphql": "^4.5.8",
- "@octokit/request": "^5.6.3",
- "@octokit/request-error": "^2.0.5",
- "@octokit/types": "^6.0.3",
- "before-after-hook": "^2.2.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/endpoint": {
- "version": "6.0.12",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
- "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
- "requires": {
- "@octokit/types": "^6.0.3",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/graphql": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz",
- "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==",
- "requires": {
- "@octokit/request": "^5.6.0",
- "@octokit/types": "^6.0.3",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ=="
- },
- "@octokit/request": {
- "version": "5.6.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
- "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
- "requires": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.16.1",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/request-error": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
- "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
- "requires": {
- "@octokit/types": "^6.0.3",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- },
- "@sideway/address": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
- "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==",
- "requires": {
- "@hapi/hoek": "^9.0.0"
- }
- },
- "@sideway/formula": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
- "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg=="
- },
- "@sideway/pinpoint": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz",
- "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ=="
- },
- "@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
- },
- "@ungap/structured-clone": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-0.3.4.tgz",
- "integrity": "sha512-TSVh8CpnwNAsPC5wXcIyh92Bv1gq6E9cNDeeLu7Z4h8V4/qWtXJp7y42qljRkqcpmsve1iozwv1wr+3BNdILCg=="
- },
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
- },
- "accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "requires": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- }
- },
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
- },
- "acorn-node": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
- "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
- "requires": {
- "acorn": "^7.0.0",
- "acorn-walk": "^7.0.0",
- "xtend": "^4.0.2"
- }
- },
- "acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA=="
- },
- "agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "requires": {
- "debug": "4"
- }
- },
- "aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "requires": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- }
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g=="
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "antlr4ts": {
- "version": "0.5.0-alpha.4",
- "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz",
- "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ=="
- },
- "anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "aproba": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
- "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
- },
- "are-we-there-yet": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
- "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^3.6.0"
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
- },
- "asn1": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
- "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "asn1.js": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
- "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
- "requires": {
- "bn.js": "^4.0.0",
- "inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
- },
- "at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA=="
- },
- "aws4": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
- "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
- },
- "babel-plugin-polyfill-corejs2": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz",
- "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==",
- "requires": {
- "@babel/compat-data": "^7.17.7",
- "@babel/helper-define-polyfill-provider": "^0.3.3",
- "semver": "^6.1.1"
- }
- },
- "babel-plugin-polyfill-corejs3": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz",
- "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==",
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.3.3",
- "core-js-compat": "^3.25.1"
- }
- },
- "babel-plugin-polyfill-regenerator": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz",
- "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==",
- "requires": {
- "@babel/helper-define-polyfill-provider": "^0.3.3"
- }
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "before-after-hook": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
- "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ=="
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
- },
- "binaryextensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz",
- "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg=="
- },
- "bl": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
- "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
- "requires": {
- "readable-stream": "^2.3.5",
- "safe-buffer": "^5.1.1"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
- },
- "bn.js": {
- "version": "4.12.0",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
- },
- "body-parser": {
- "version": "1.20.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
- "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
- "requires": {
- "bytes": "3.1.2",
- "content-type": "~1.0.5",
- "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.2",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- }
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "brorand": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w=="
- },
- "browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "requires": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- }
- },
- "buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "buffer-alloc": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
- "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
- "requires": {
- "buffer-alloc-unsafe": "^1.1.0",
- "buffer-fill": "^1.0.0"
- }
- },
- "buffer-alloc-unsafe": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
- "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
- },
- "buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="
- },
- "buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
- },
- "buffer-fill": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
- "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
- },
- "bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="
- },
- "caniuse-lite": {
- "version": "1.0.30001480",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001480.tgz",
- "integrity": "sha512-q7cpoPPvZYgtyC4VaBSN0Bt+PJ4c4EYRf0DrduInOz2SkFpHD5p3LnvEpqBp7UnJn+8x1Ogl1s38saUxe+ihQQ=="
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- }
- },
- "chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
- },
- "chrono-node": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/chrono-node/-/chrono-node-2.6.3.tgz",
- "integrity": "sha512-VkWaaZnNulqzNH9i4XCdyI05OX6MFEnCMNKdZOR4w//wS5/E2qkwAss/O5sj6SfTZK84fX4SSOG4pzqjqIseiA==",
- "requires": {
- "dayjs": "^1.10.0"
- }
- },
- "clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="
- },
- "cli-progress": {
- "version": "3.12.0",
- "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz",
- "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==",
- "requires": {
- "string-width": "^4.2.3"
- }
- },
- "cluster-key-slot": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz",
- "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA=="
- },
- "codesandbox-import-util-types": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/codesandbox-import-util-types/-/codesandbox-import-util-types-2.2.3.tgz",
- "integrity": "sha512-Qj00p60oNExthP2oR3vvXmUGjukij+rxJGuiaKM6tyUmSyimdZsqHI/TUvFFClAffk9s7hxGnQgWQ8KCce27qQ=="
- },
- "codesandbox-import-utils": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/codesandbox-import-utils/-/codesandbox-import-utils-2.2.3.tgz",
- "integrity": "sha512-ymtmcgZKU27U+nM2qUb21aO8Ut/u2S9s6KorOgG81weP+NA0UZkaHKlaRqbLJ9h4i/4FLvwmEXYAnTjNmp6ogg==",
- "requires": {
- "codesandbox-import-util-types": "^2.2.3",
- "istextorbinary": "^2.2.1",
- "lz-string": "^1.4.4"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
- },
- "color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
- },
- "content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
- },
- "convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
- },
- "core-js-compat": {
- "version": "3.30.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.1.tgz",
- "integrity": "sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw==",
- "requires": {
- "browserslist": "^4.21.5"
- }
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
- },
- "cron-parser": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-3.5.0.tgz",
- "integrity": "sha512-wyVZtbRs6qDfFd8ap457w3XVntdvqcwBGxBoTvJQH9KGVKL/fB+h2k3C8AqiVxvUQKN1Ps/Ns46CNViOpVDhfQ==",
- "requires": {
- "is-nan": "^1.3.2",
- "luxon": "^1.26.0"
- }
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "crypto-random-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
- "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="
- },
- "csv-write-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/csv-write-stream/-/csv-write-stream-2.0.0.tgz",
- "integrity": "sha512-QTraH6FOYfM5f+YGwx71hW1nR9ZjlWri67/D4CWtiBkdce0UAa91Vc0yyHg0CjC0NeEGnvO/tBSJkA1XF9D9GQ==",
- "requires": {
- "argparse": "^1.0.7",
- "generate-object-property": "^1.0.0",
- "ndjson": "^1.3.0"
- }
- },
- "d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
- "requires": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
- }
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "dayjs": {
- "version": "1.11.7",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz",
- "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "decompress": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz",
- "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==",
- "requires": {
- "decompress-tar": "^4.0.0",
- "decompress-tarbz2": "^4.0.0",
- "decompress-targz": "^4.0.0",
- "decompress-unzip": "^4.0.1",
- "graceful-fs": "^4.1.10",
- "make-dir": "^1.0.0",
- "pify": "^2.3.0",
- "strip-dirs": "^2.0.0"
- },
- "dependencies": {
- "make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "requires": {
- "pify": "^3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg=="
- }
- }
- }
- }
- },
- "decompress-tar": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
- "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
- "requires": {
- "file-type": "^5.2.0",
- "is-stream": "^1.1.0",
- "tar-stream": "^1.5.2"
- }
- },
- "decompress-tarbz2": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
- "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
- "requires": {
- "decompress-tar": "^4.1.0",
- "file-type": "^6.1.0",
- "is-stream": "^1.1.0",
- "seek-bzip": "^1.0.5",
- "unbzip2-stream": "^1.0.9"
- },
- "dependencies": {
- "file-type": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
- "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg=="
- }
- }
- },
- "decompress-targz": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
- "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
- "requires": {
- "decompress-tar": "^4.1.1",
- "file-type": "^5.2.0",
- "is-stream": "^1.1.0"
- }
- },
- "decompress-unzip": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
- "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==",
- "requires": {
- "file-type": "^3.8.0",
- "get-stream": "^2.2.0",
- "pify": "^2.3.0",
- "yauzl": "^2.4.2"
- },
- "dependencies": {
- "file-type": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
- "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA=="
- }
- }
- },
- "define-properties": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
- "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
- "requires": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- }
- },
- "del": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
- "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
- "requires": {
- "globby": "^11.0.1",
- "graceful-fs": "^4.2.4",
- "is-glob": "^4.0.1",
- "is-path-cwd": "^2.2.0",
- "is-path-inside": "^3.0.2",
- "p-map": "^4.0.0",
- "rimraf": "^3.0.2",
- "slash": "^3.0.0"
- },
- "dependencies": {
- "p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "requires": {
- "aggregate-error": "^3.0.0"
- }
- }
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
- },
- "denque": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
- "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw=="
- },
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
- },
- "deprecation": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
- "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
- },
- "destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
- },
- "detect-libc": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
- "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="
- },
- "dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "ecdsa-sig-formatter": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
- "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "editions": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/editions/-/editions-2.3.1.tgz",
- "integrity": "sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA==",
- "requires": {
- "errlop": "^2.0.0",
- "semver": "^6.3.0"
- }
- },
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "electron-to-chromium": {
- "version": "1.4.365",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.365.tgz",
- "integrity": "sha512-FRHZO+1tUNO4TOPXmlxetkoaIY8uwHzd1kKopK/Gx2SKn1L47wJXWD44wxP5CGRyyP98z/c8e1eBzJrgPeiBOg=="
- },
- "elliptic": {
- "version": "6.5.4",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
- "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
- "requires": {
- "bn.js": "^4.11.9",
- "brorand": "^1.1.0",
- "hash.js": "^1.0.0",
- "hmac-drbg": "^1.0.1",
- "inherits": "^2.0.4",
- "minimalistic-assert": "^1.0.1",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
- },
- "end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "requires": {
- "once": "^1.4.0"
- }
- },
- "env-var": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/env-var/-/env-var-6.3.0.tgz",
- "integrity": "sha512-gaNzDZuVaJQJlP2SigAZLu/FieZN5MzdN7lgHNehESwlRanHwGQ/WUtJ7q//dhrj3aGBZM45yEaKOuvSJaf4mA=="
- },
- "errlop": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/errlop/-/errlop-2.2.0.tgz",
- "integrity": "sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw=="
- },
- "es5-ext": {
- "version": "0.10.53",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
- "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
- "requires": {
- "es6-iterator": "~2.0.3",
- "es6-symbol": "~3.1.3",
- "next-tick": "~1.0.0"
- }
- },
- "es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
- "requires": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "es6-symbol": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
- "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
- "requires": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
- }
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
- },
- "express-graphql": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.12.0.tgz",
- "integrity": "sha512-DwYaJQy0amdy3pgNtiTDuGGM2BLdj+YO2SgbKoLliCfuHv3VVTt7vNG/ZqK2hRYjtYHE2t2KB705EU94mE64zg==",
- "requires": {
- "accepts": "^1.3.7",
- "content-type": "^1.0.4",
- "http-errors": "1.8.0",
- "raw-body": "^2.4.1"
- },
- "dependencies": {
- "depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
- },
- "http-errors": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz",
- "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==",
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- }
- },
- "statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
- },
- "toidentifier": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
- }
- }
- },
- "ext": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
- "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
- "requires": {
- "type": "^2.7.2"
- },
- "dependencies": {
- "type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
- }
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g=="
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
- },
- "fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "requires": {
- "pend": "~1.2.0"
- }
- },
- "file-type": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
- "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ=="
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "flatbuffers": {
- "version": "23.3.3",
- "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-23.3.3.tgz",
- "integrity": "sha512-jmreOaAT1t55keaf+Z259Tvh8tR/Srry9K8dgCgvizhKSEr6gLGgaOJI2WFL5fkOpGOGRZwxUrlFn0GCmXUy6g=="
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw=="
- },
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
- },
- "fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
- },
- "fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
- "fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "requires": {
- "minipass": "^3.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "gauge": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
- "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
- "requires": {
- "aproba": "^1.0.3 || ^2.0.0",
- "color-support": "^1.1.2",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.1",
- "object-assign": "^4.1.1",
- "signal-exit": "^3.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1",
- "wide-align": "^1.1.2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- }
- }
- },
- "generate-object-property": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
- "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==",
- "requires": {
- "is-property": "^1.0.0"
- }
- },
- "generic-pool": {
- "version": "3.9.0",
- "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz",
- "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g=="
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
- },
- "get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- }
- },
- "get-stream": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
- "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==",
- "requires": {
- "object-assign": "^4.0.1",
- "pinkie-promise": "^2.0.0"
- }
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
- },
- "globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
- },
- "graphql": {
- "version": "15.8.0",
- "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz",
- "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw=="
- },
- "graphql-scalars": {
- "version": "1.21.3",
- "resolved": "https://registry.npmjs.org/graphql-scalars/-/graphql-scalars-1.21.3.tgz",
- "integrity": "sha512-QLWw3BHmqHZMp9JeYmPpjq7JT9aw/H8TpwmWKJEuMSE3+O7Xe7TduQbOLFzbs1q9UxX6CVkc0O1JO/YfkP/pAw==",
- "requires": {
- "tslib": "^2.5.0"
- },
- "dependencies": {
- "tslib": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
- "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
- }
- }
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q=="
- },
- "har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "requires": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- }
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
- },
- "has-property-descriptors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
- "requires": {
- "get-intrinsic": "^1.1.1"
- }
- },
- "has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
- },
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
- },
- "hash.js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
- "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "requires": {
- "inherits": "^2.0.3",
- "minimalistic-assert": "^1.0.1"
- }
- },
- "hmac-drbg": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
- "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
- "requires": {
- "hash.js": "^1.0.3",
- "minimalistic-assert": "^1.0.0",
- "minimalistic-crypto-utils": "^1.0.1"
- }
- },
- "http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "requires": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- }
- },
- "http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "requires": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- }
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "requires": {
- "agent-base": "6",
- "debug": "4"
- }
- },
- "humps": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/humps/-/humps-2.0.1.tgz",
- "integrity": "sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g=="
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
- },
- "ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ=="
- },
- "indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
- },
- "inflection": {
- "version": "1.13.4",
- "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz",
- "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw=="
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="
- },
- "ioredis": {
- "version": "4.28.5",
- "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz",
- "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==",
- "requires": {
- "cluster-key-slot": "^1.1.0",
- "debug": "^4.3.1",
- "denque": "^1.1.0",
- "lodash.defaults": "^4.2.0",
- "lodash.flatten": "^4.4.0",
- "lodash.isarguments": "^3.1.0",
- "p-map": "^2.1.0",
- "redis-commands": "1.7.0",
- "redis-errors": "^1.2.0",
- "redis-parser": "^3.0.0",
- "standard-as-callback": "^2.1.0"
- }
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-core-module": {
- "version": "2.12.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz",
- "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==",
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-docker": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-nan": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
- "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
- "requires": {
- "call-bind": "^1.0.0",
- "define-properties": "^1.1.3"
- }
- },
- "is-natural-number": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
- "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ=="
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
- },
- "is-path-cwd": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
- "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ=="
- },
- "is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
- },
- "is-plain-object": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="
- },
- "is-property": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="
- },
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
- },
- "istextorbinary": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.6.0.tgz",
- "integrity": "sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA==",
- "requires": {
- "binaryextensions": "^2.1.2",
- "editions": "^2.2.0",
- "textextensions": "^2.5.0"
- }
- },
- "iterall": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz",
- "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg=="
- },
- "joi": {
- "version": "17.9.1",
- "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.1.tgz",
- "integrity": "sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw==",
- "requires": {
- "@hapi/hoek": "^9.0.0",
- "@hapi/topo": "^5.0.0",
- "@sideway/address": "^4.1.3",
- "@sideway/formula": "^3.0.1",
- "@sideway/pinpoint": "^2.0.0"
- }
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "requires": {
- "argparse": "^2.0.1"
- },
- "dependencies": {
- "argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
- }
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
- },
- "json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
- },
- "json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
- },
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "requires": {
- "graceful-fs": "^4.1.6"
- }
- },
- "jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "requires": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- }
- }
- },
- "jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- }
- },
- "jwa": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
- "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jwk-to-pem": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-2.0.5.tgz",
- "integrity": "sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A==",
- "requires": {
- "asn1.js": "^5.3.0",
- "elliptic": "^6.5.4",
- "safe-buffer": "^5.0.1"
- }
- },
- "jws": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
- "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
- "requires": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
- },
- "lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
- },
- "lodash.defaults": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
- "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="
- },
- "lodash.flatten": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
- "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g=="
- },
- "lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
- },
- "lodash.isarguments": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
- "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg=="
- },
- "lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
- },
- "lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
- },
- "lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
- },
- "lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
- },
- "lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
- },
- "lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
- },
- "lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "requires": {
- "yallist": "^3.0.2"
- }
- },
- "luxon": {
- "version": "1.28.1",
- "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz",
- "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw=="
- },
- "lz-string": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
- "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="
- },
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
- },
- "merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
- },
- "micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "minimalistic-assert": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
- },
- "minimalistic-crypto-utils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg=="
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
- },
- "minipass": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
- "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ=="
- },
- "minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "requires": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "dependencies": {
- "minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
- },
- "moment": {
- "version": "2.29.4",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
- "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
- },
- "moment-range": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/moment-range/-/moment-range-4.0.2.tgz",
- "integrity": "sha512-n8sceWwSTjmz++nFHzeNEUsYtDqjgXgcOBzsHi+BoXQU2FW+eU92LUaK8gqOiSu5PG57Q9sYj1Fz4LRDj4FtKA==",
- "requires": {
- "es6-symbol": "^3.1.0"
- }
- },
- "moment-timezone": {
- "version": "0.5.43",
- "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz",
- "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==",
- "requires": {
- "moment": "^2.29.4"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "ndjson": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-1.5.0.tgz",
- "integrity": "sha512-hUPLuaziboGjNF7wHngkgVc0FOclR8dDk/HfEvTtDr/iUrqBWiRcRSTK3/nLOqKH33th714BrMmTPtObI9gZxQ==",
- "requires": {
- "json-stringify-safe": "^5.0.1",
- "minimist": "^1.2.0",
- "split2": "^2.1.0",
- "through2": "^2.0.3"
- }
- },
- "negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
- },
- "next-tick": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
- "integrity": "sha512-mc/caHeUcdjnC/boPWJefDr4KUIWQNv+tlnFnJd38QMou86QtxQzBJfxgGRzvx8jazYRqrVlaHarfO72uNxPOg=="
- },
- "nexus": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/nexus/-/nexus-1.3.0.tgz",
- "integrity": "sha512-w/s19OiNOs0LrtP7pBmD9/FqJHvZLmCipVRt6v1PM8cRUYIbhEswyNKGHVoC4eHZGPSnD+bOf5A3+gnbt0A5/A==",
- "requires": {
- "iterall": "^1.3.0",
- "tslib": "^2.0.3"
- },
- "dependencies": {
- "tslib": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
- "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
- }
- }
- },
- "node-dijkstra": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/node-dijkstra/-/node-dijkstra-2.5.0.tgz",
- "integrity": "sha512-2REYb1lo8yDRAY1gsdhjwQdGVSh47VI5Z5wS8sCqydO/P1OVAKOwLuV1fDxNLvbrtMspW7k2UZ2JKIKP06hl+A=="
- },
- "node-fetch": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
- "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
- "requires": {
- "whatwg-url": "^5.0.0"
- }
- },
- "node-releases": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
- "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
- },
- "nopt": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
- "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
- "requires": {
- "abbrev": "1"
- }
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
- },
- "npmlog": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
- "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
- "requires": {
- "are-we-there-yet": "^2.0.0",
- "console-control-strings": "^1.1.0",
- "gauge": "^3.0.0",
- "set-blocking": "^2.0.0"
- }
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
- },
- "object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
- },
- "object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
- },
- "on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "requires": {
- "wrappy": "1"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-map": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
- "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="
- },
- "parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
- },
- "pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
- },
- "picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg=="
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "promise-timeout": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/promise-timeout/-/promise-timeout-1.3.0.tgz",
- "integrity": "sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg=="
- },
- "psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
- },
- "punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
- },
- "qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "requires": {
- "side-channel": "^1.0.4"
- }
- },
- "querystring": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
- "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg=="
- },
- "queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
- },
- "ramda": {
- "version": "0.27.2",
- "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz",
- "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA=="
- },
- "range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
- },
- "raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
- "requires": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- }
- },
- "readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
- "requires": {
- "resolve": "^1.1.6"
- }
- },
- "redis": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
- "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
- "requires": {
- "denque": "^1.5.0",
- "redis-commands": "^1.7.0",
- "redis-errors": "^1.2.0",
- "redis-parser": "^3.0.0"
- }
- },
- "redis-commands": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
- "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
- },
- "redis-errors": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
- "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w=="
- },
- "redis-parser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
- "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==",
- "requires": {
- "redis-errors": "^1.0.0"
- }
- },
- "regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="
- },
- "regenerate-unicode-properties": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
- "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
- "requires": {
- "regenerate": "^1.4.2"
- }
- },
- "regenerator-runtime": {
- "version": "0.13.11",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
- "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
- },
- "regenerator-transform": {
- "version": "0.15.1",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
- "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
- "requires": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "regexpu-core": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
- "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
- "requires": {
- "@babel/regjsgen": "^0.8.0",
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- }
- },
- "regjsparser": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
- "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
- "requires": {
- "jsesc": "~0.5.0"
- },
- "dependencies": {
- "jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA=="
- }
- }
- },
- "request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "qs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
- "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA=="
- },
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
- }
- }
- },
- "request-promise": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz",
- "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==",
- "requires": {
- "bluebird": "^3.5.0",
- "request-promise-core": "1.1.4",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
- }
- },
- "request-promise-core": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
- "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
- "requires": {
- "lodash": "^4.17.19"
- }
- },
- "resolve": {
- "version": "1.22.3",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.3.tgz",
- "integrity": "sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==",
- "requires": {
- "is-core-module": "^2.12.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "seek-bzip": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
- "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
- "requires": {
- "commander": "^2.8.1"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- },
- "send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "requires": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- }
- }
- },
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- }
- }
- },
- "serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- }
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
- },
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
- },
- "shelljs": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
- "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
- "requires": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- }
- },
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "split2": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
- "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
- "requires": {
- "through2": "^2.0.2"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
- },
- "sqlstring": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
- "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg=="
- },
- "sshpk": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
- "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "standard-as-callback": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz",
- "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A=="
- },
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
- },
- "stealthy-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
- "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g=="
- },
- "string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "requires": {
- "safe-buffer": "~5.2.0"
- }
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- }
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "strip-dirs": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
- "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
- "requires": {
- "is-natural-number": "^4.0.1"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
- },
- "syntax-error": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
- "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==",
- "requires": {
- "acorn-node": "^1.2.0"
- }
- },
- "tar": {
- "version": "6.1.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz",
- "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
- "requires": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^4.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "dependencies": {
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "tar-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
- "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
- "requires": {
- "bl": "^1.0.0",
- "buffer-alloc": "^1.2.0",
- "end-of-stream": "^1.0.0",
- "fs-constants": "^1.0.0",
- "readable-stream": "^2.3.0",
- "to-buffer": "^1.1.1",
- "xtend": "^4.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "temp-dir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
- "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg=="
- },
- "tempy": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz",
- "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==",
- "requires": {
- "del": "^6.0.0",
- "is-stream": "^2.0.0",
- "temp-dir": "^2.0.0",
- "type-fest": "^0.16.0",
- "unique-string": "^2.0.0"
- },
- "dependencies": {
- "is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
- }
- }
- },
- "textextensions": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.6.0.tgz",
- "integrity": "sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ=="
- },
- "throttle-debounce": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
- "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg=="
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
- },
- "through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "requires": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "to-buffer": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
- "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
- },
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
- "tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
- },
- "type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
- "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
- },
- "type-fest": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
- "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg=="
- },
- "type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- }
- },
- "unbzip2-stream": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
- "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
- "requires": {
- "buffer": "^5.2.1",
- "through": "^2.3.8"
- }
- },
- "unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
- "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ=="
- },
- "unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
- "requires": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- }
- },
- "unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA=="
- },
- "unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
- "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w=="
- },
- "unique-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
- "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
- "requires": {
- "crypto-random-string": "^2.0.0"
- }
- },
- "universal-user-agent": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
- "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
- },
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
- },
- "update-browserslist-db": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
- "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
- "requires": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- }
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
- },
- "uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
- "whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "requires": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "wide-align": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
- "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
- "requires": {
- "string-width": "^1.0.2 || 2 || 3 || 4"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
- },
- "ws": {
- "version": "7.5.9",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
- "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
- "requires": {}
- },
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
- },
- "yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "requires": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
- }
- },
- "yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
- }
- }
-}
diff --git a/backend/src/cubejs/package.json b/backend/src/cubejs/package.json
deleted file mode 100644
index ca9f0e0d5d..0000000000
--- a/backend/src/cubejs/package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "cubejs",
- "version": "1.0.0",
- "description": "",
- "main": ".eslintrc.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "ISC",
- "dependencies": {
- "@cubejs-backend/server-core": "^0.32.27"
- }
-}
diff --git a/backend/src/cubejs/schema/Activities.js b/backend/src/cubejs/schema/Activities.js
deleted file mode 100644
index e7e0758adb..0000000000
--- a/backend/src/cubejs/schema/Activities.js
+++ /dev/null
@@ -1,61 +0,0 @@
-cube('Activities', {
- sql_table: 'mv_activities_cube',
-
- measures: {
- count: {
- sql: `${CUBE}.id`,
- type: 'count_distinct',
- drillMembers: [tenantId, date],
- },
- cumulativeCount: {
- type: 'count',
- rollingWindow: {
- trailing: 'unbounded',
- },
- },
- },
-
- dimensions: {
- id: {
- sql: `${CUBE}.id`,
- type: 'string',
- primaryKey: true,
- },
-
- iscontribution: {
- sql: `${CUBE}."isContribution"`,
- type: 'string',
- },
-
- sentimentMood: {
- sql: `${CUBE}."sentimentMood"`,
- type: 'string',
- },
-
- platform: {
- sql: `${CUBE}.platform`,
- type: 'string',
- },
-
- channel: {
- sql: `${CUBE}.channel`,
- type: 'string',
- },
-
- tenantId: {
- sql: `${CUBE}."tenantId"`,
- type: 'string',
- shown: false,
- },
-
- type: {
- sql: `${CUBE}.type`,
- type: 'string',
- },
-
- date: {
- sql: `${CUBE}.timestamp`,
- type: 'time',
- },
- },
-})
diff --git a/backend/src/cubejs/schema/Conversations.js b/backend/src/cubejs/schema/Conversations.js
deleted file mode 100644
index 3fb8b6286b..0000000000
--- a/backend/src/cubejs/schema/Conversations.js
+++ /dev/null
@@ -1,61 +0,0 @@
-cube('Conversations', {
- sql: `SELECT
- con.*,
- a.platform AS platform,
- a.channel AS category
- FROM
- conversations con
- LEFT JOIN activities a ON con.id = a."conversationId"
- GROUP BY
- con.id,
- a.platform,
- a.channel`,
-
- joins: {
- Activities: {
- sql: `${CUBE}.id = ${Activities}."conversationId"`,
- relationship: 'hasMany',
- },
- },
-
- measures: {
- count: {
- type: 'count',
- drillMembers: [tenantId, createdat],
- },
- },
-
- dimensions: {
- id: {
- sql: `${CUBE}.id`,
- type: 'string',
- primaryKey: true,
- },
-
- tenantId: {
- sql: `${CUBE}."tenantId"`,
- type: 'string',
- shown: false,
- },
-
- published: {
- sql: `${CUBE}.published`,
- type: 'string',
- },
-
- createdat: {
- sql: `${CUBE}."createdAt"`,
- type: 'time',
- },
-
- platform: {
- sql: `${CUBE}."platform"`,
- type: 'string',
- },
-
- category: {
- sql: `${CUBE}."category"`,
- type: 'string',
- },
- },
-})
diff --git a/backend/src/cubejs/schema/MemberOrganizations.js b/backend/src/cubejs/schema/MemberOrganizations.js
deleted file mode 100644
index caad050585..0000000000
--- a/backend/src/cubejs/schema/MemberOrganizations.js
+++ /dev/null
@@ -1,21 +0,0 @@
-cube('MemberOrganizations', {
- sql_table: '"memberOrganizations"',
-
- preAggregations: {},
-
- joins: {
- Organizations: {
- sql: `${CUBE}."organizationId" = ${Organizations}.id`,
- relationship: 'belongsTo',
- },
-
- Activities: {
- sql: `${CUBE}."memberId" = ${Activities}."memberId"`,
- relationship: 'hasMany',
- },
- },
-
- measures: {},
-
- dimensions: {},
-})
diff --git a/backend/src/cubejs/schema/MemberSegments.js b/backend/src/cubejs/schema/MemberSegments.js
deleted file mode 100644
index fab2e41c5f..0000000000
--- a/backend/src/cubejs/schema/MemberSegments.js
+++ /dev/null
@@ -1,21 +0,0 @@
-cube('MemberSegments', {
- sql_table: '"memberSegments"',
-
- preAggregations: {},
-
- joins: {
- Members: {
- sql: `${CUBE}."memberId" = ${Members}.id`,
- relationship: 'belongsTo',
- },
-
- Segments: {
- sql: `${CUBE}."segmentId" = ${Segments}."id"`,
- relationship: 'belongsTo',
- },
- },
-
- measures: {},
-
- dimensions: {},
-})
diff --git a/backend/src/cubejs/schema/MemberTags.js b/backend/src/cubejs/schema/MemberTags.js
deleted file mode 100644
index 56c368d559..0000000000
--- a/backend/src/cubejs/schema/MemberTags.js
+++ /dev/null
@@ -1,14 +0,0 @@
-cube('MemberTags', {
- sql_table: '"memberTags"',
-
- joins: {
- Tags: {
- relationship: 'hasMany',
- sql: `${CUBE}."tagId" = ${Tags}."id"`,
- },
- },
-
- measures: {},
-
- dimensions: {},
-})
diff --git a/backend/src/cubejs/schema/Members.js b/backend/src/cubejs/schema/Members.js
deleted file mode 100644
index d79531dbf5..0000000000
--- a/backend/src/cubejs/schema/Members.js
+++ /dev/null
@@ -1,86 +0,0 @@
-cube('Members', {
- sql_table: 'mv_members_cube',
-
- joins: {
- Activities: {
- sql: `${CUBE}.id = ${Activities}."memberId"`,
- relationship: 'hasMany',
- },
-
- MemberTags: {
- sql: `${CUBE}.id = ${MemberTags}."memberId"`,
- relationship: 'belongsTo',
- },
-
- MemberOrganizations: {
- sql: `${CUBE}.id = ${MemberOrganizations}."memberId"`,
- relationship: 'belongsTo',
- },
-
- MemberSegments: {
- sql: `${CUBE}.id = ${MemberSegments}."memberId"`,
- relationship: 'belongsTo',
- },
- },
-
- measures: {
- count: {
- sql: `${CUBE}.id`,
- type: 'count_distinct',
- },
-
- cumulativeCount: {
- type: 'count',
- rollingWindow: {
- trailing: 'unbounded',
- },
- },
- },
-
- dimensions: {
- id: {
- sql: `${CUBE}.id`,
- type: 'string',
- primaryKey: true,
- },
-
- tenantId: {
- sql: `${CUBE}."tenantId"`,
- type: 'string',
- shown: false,
- },
-
- location: {
- sql: `${CUBE}.location`,
- type: 'string',
- },
-
- isTeamMember: {
- sql: `${CUBE}."isTeamMember"`,
- type: 'boolean',
- },
- isBot: {
- sql: `${CUBE}."isBot"`,
- type: 'boolean',
- },
- isOrganization: {
- sql: `${CUBE}."isOrganization"`,
- type: 'boolean',
- },
-
- joinedAt: {
- sql: `${CUBE}."joinedAt"`,
- type: 'time',
- },
-
- joinedAtUnixTs: {
- sql: `${CUBE}."joinedAtUnixTs"`,
- type: 'number',
- },
-
- score: {
- sql: `${CUBE}."score"`,
- type: 'number',
- },
- },
-})
diff --git a/backend/src/cubejs/schema/OrganizationSegments.js b/backend/src/cubejs/schema/OrganizationSegments.js
deleted file mode 100644
index ffc5d2570b..0000000000
--- a/backend/src/cubejs/schema/OrganizationSegments.js
+++ /dev/null
@@ -1,21 +0,0 @@
-cube('OrganizationSegments', {
- sql_table: '"organizationSegments"',
-
- preAggregations: {},
-
- joins: {
- Organizations: {
- sql: `${CUBE}."organizationId" = ${Organizations}.id`,
- relationship: 'belongsTo',
- },
-
- Segments: {
- sql: `${CUBE}."segmentId" = ${Segments}."id"`,
- relationship: 'belongsTo',
- },
- },
-
- measures: {},
-
- dimensions: {},
-})
diff --git a/backend/src/cubejs/schema/Organizations.js b/backend/src/cubejs/schema/Organizations.js
deleted file mode 100644
index 3562a59715..0000000000
--- a/backend/src/cubejs/schema/Organizations.js
+++ /dev/null
@@ -1,40 +0,0 @@
-cube('Organizations', {
- sql_table: 'mv_organizations_cube',
- joins: {
- MemberOrganizations: {
- sql: `${CUBE}.id = ${MemberOrganizations}."organizationId"`,
- relationship: 'hasMany',
- },
- OrganizationSegments: {
- sql: `${CUBE}.id = ${OrganizationSegments}."organizationId"`,
- relationship: 'belongsTo',
- },
- },
- measures: {
- count: {
- sql: `${CUBE}.id`,
- type: 'count_distinct',
- drillMembers: [tenantId],
- },
- },
- dimensions: {
- id: {
- sql: `${CUBE}.id`,
- type: 'string',
- primaryKey: true,
- },
-
- tenantId: {
- sql: `${CUBE}."tenantId"`,
- type: 'string',
- },
- createdat: {
- sql: `${CUBE}."createdAt"`,
- type: 'time',
- },
- joinedAt: {
- sql: `${CUBE}."earliestJoinedAt"`,
- type: 'time',
- },
- },
-})
diff --git a/backend/src/cubejs/schema/Segments.js b/backend/src/cubejs/schema/Segments.js
deleted file mode 100644
index 903ffb2d70..0000000000
--- a/backend/src/cubejs/schema/Segments.js
+++ /dev/null
@@ -1,29 +0,0 @@
-cube('Segments', {
- sql_table: 'mv_segments_cube',
-
- preAggregations: {},
-
- joins: {
- Activities: {
- sql: `${CUBE}.id = ${Activities}."segmentId"`,
- relationship: 'hasMany',
- },
- OrganizationSegments: {
- sql: `${CUBE}.id = ${OrganizationSegments}."segmentId"`,
- relationship: 'belongsTo',
- },
- },
-
- dimensions: {
- name: {
- sql: `${CUBE}."name"`,
- type: 'string',
- },
-
- id: {
- sql: `${CUBE}.id`,
- type: 'string',
- primaryKey: true,
- },
- },
-})
diff --git a/backend/src/cubejs/schema/Sentiment.js b/backend/src/cubejs/schema/Sentiment.js
deleted file mode 100644
index 4d4d13fdc1..0000000000
--- a/backend/src/cubejs/schema/Sentiment.js
+++ /dev/null
@@ -1,58 +0,0 @@
-cube('Sentiment', {
- sql: `select
- a.id,
- a."tenantId" ,
- a."platform" ,
- a."timestamp" ,
- a."memberId" ,
- (a.sentiment->>'sentiment')::integer as sentiment,
- case
- when (a.sentiment->>'sentiment')::integer < 34 then 'negative'
- when (a.sentiment->>'sentiment')::integer > 66 then 'positive'
- else 'neutral'
- end as mood
- from
- activities a
- where
- a.sentiment->>'sentiment' is not null`,
-
- preAggregations: {},
-
- joins: {
- Members: {
- sql: `${CUBE}."memberId" = ${Members}."id"`,
- relationship: 'belongsTo',
- },
- },
-
- measures: {
- averageSentiment: {
- type: 'avg',
- sql: 'sentiment',
- },
- },
-
- dimensions: {
- id: {
- sql: `${CUBE}.id`,
- type: 'string',
- primaryKey: true,
- },
-
- tenantId: {
- sql: `${CUBE}."tenantId"`,
- type: 'string',
- shown: false,
- },
-
- platform: {
- sql: `${CUBE}.platform`,
- type: 'string',
- },
-
- date: {
- sql: `${CUBE}.timestamp`,
- type: 'time',
- },
- },
-})
diff --git a/backend/src/cubejs/schema/Tags.js b/backend/src/cubejs/schema/Tags.js
deleted file mode 100644
index aaff0f85ed..0000000000
--- a/backend/src/cubejs/schema/Tags.js
+++ /dev/null
@@ -1,14 +0,0 @@
-cube(`Tags`, {
- sql_table: 'tags',
-
- preAggregations: {},
-
- joins: {},
-
- dimensions: {
- name: {
- sql: `${CUBE}.name`,
- type: `string`,
- },
- },
-})
diff --git a/backend/src/database/databaseConnection.ts b/backend/src/database/databaseConnection.ts
index fb7a799e8a..f4094cea2d 100644
--- a/backend/src/database/databaseConnection.ts
+++ b/backend/src/database/databaseConnection.ts
@@ -5,10 +5,22 @@ let cached
/**
* Initializes the connection to the Database
*/
-export async function databaseInit(queryTimeoutMilliseconds: number = 30000) {
+export async function databaseInit(
+ queryTimeoutMilliseconds: number = 60000,
+ forceNewInstance: boolean = false,
+ databaseHostnameOverride: string = null,
+) {
+ if (forceNewInstance) {
+ return models(queryTimeoutMilliseconds, databaseHostnameOverride)
+ }
+
if (!cached) {
- cached = models(queryTimeoutMilliseconds)
+ cached = models(queryTimeoutMilliseconds, databaseHostnameOverride)
}
return cached
}
+
+export async function databaseClose(database) {
+ await database.sequelize.close()
+}
diff --git a/backend/src/database/flyway_migrate.sh b/backend/src/database/flyway_migrate.sh
index 4bad150f77..b2a4582979 100755
--- a/backend/src/database/flyway_migrate.sh
+++ b/backend/src/database/flyway_migrate.sh
@@ -10,6 +10,8 @@ flyway \
-password="$PGPASSWORD" \
-connectRetries=60 \
-outOfOrder=true \
- -placeholderReplacement=false\
+ -mixed=true \
+ -placeholderReplacement=false \
-schemas=public \
- migrate
\ No newline at end of file
+ -X \
+ migrate
diff --git a/backend/src/database/initializers/activities.json b/backend/src/database/initializers/activities.json
deleted file mode 100644
index 4d6b95ef03..0000000000
--- a/backend/src/database/initializers/activities.json
+++ /dev/null
@@ -1,28268 +0,0 @@
-[
- {
- "crowdInfo": {
- "body": "yeah same, I'm in the middle of something",
- "channel": "random",
- "slackId": "1643815623.203779",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643815623203779"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T15:27:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yeah same, I'm in the middle of something",
- "channel": "random",
- "slackId": "1643815623.203779",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643815623203779"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T15:27:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yeah same, I'm in the middle of something",
- "channel": "random",
- "slackId": "1643815623.203779",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643815623203779"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T15:27:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yeah same, I'm in the middle of something",
- "channel": "random",
- "slackId": "1643815623.203779",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643815623203779"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T15:27:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I’m going to skip too :v:",
- "channel": "random",
- "slackId": "1643815597.525419",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643815597525419"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T15:26:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I’m going to skip too :v:",
- "channel": "random",
- "slackId": "1643815597.525419",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643815597525419"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T15:26:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I’m going to skip too :v:",
- "channel": "random",
- "slackId": "1643815597.525419",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643815597525419"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-02-02T15:26:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I’m going to skip too :v:",
- "channel": "random",
- "slackId": "1643815597.525419",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643815597525419"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T15:26:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Guys I have to skip coffee break, so sorry!",
- "channel": "random",
- "slackId": "1643815490.117279",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643815490117279"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 1,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T15:24:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Guys I have to skip coffee break, so sorry!",
- "channel": "random",
- "slackId": "1643815490.117279",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643815490117279"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T15:24:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Guys I have to skip coffee break, so sorry!",
- "channel": "random",
- "slackId": "1643815490.117279",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643815490117279"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T15:24:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Guys I have to skip coffee break, so sorry!",
- "channel": "random",
- "slackId": "1643815490.117279",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643815490117279"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T15:24:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": " something interesting for us? (@Anil Bostanci @Joan Reyero) just had a chat with the founder",
- "channel": "dev",
- "slackId": "1643803149.117499",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643803149117499"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T11:59:09.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": " something interesting for us? (@Anil Bostanci @Joan Reyero) just had a chat with the founder",
- "channel": "dev",
- "slackId": "1643803149.117499",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643803149117499"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T11:59:09.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": " something interesting for us? (@Anil Bostanci @Joan Reyero) just had a chat with the founder",
- "channel": "dev",
- "slackId": "1643803149.117499",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643803149117499"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T11:59:09.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": " something interesting for us? (@Anil Bostanci @Joan Reyero) just had a chat with the founder",
- "channel": "dev",
- "slackId": "1643803149.117499",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643803149117499"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-02T11:59:09.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "In the middle of something. Will have to skip coffee break today",
- "channel": "random",
- "slackId": "1643729415.005949",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643729415005949"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T15:30:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "In the middle of something. Will have to skip coffee break today",
- "channel": "random",
- "slackId": "1643729415.005949",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643729415005949"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T15:30:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "In the middle of something. Will have to skip coffee break today",
- "channel": "random",
- "slackId": "1643729415.005949",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643729415005949"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-02-01T15:30:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "In the middle of something. Will have to skip coffee break today",
- "channel": "random",
- "slackId": "1643729415.005949",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643729415005949"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-02-01T15:30:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1643728672.002100",
- "thread": {
- "id": "1643726374.210029",
- "body": "Perfect :v:"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 1,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T15:17:52.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1643728672.002100",
- "thread": {
- "id": "1643726374.210029",
- "body": "Perfect :v:"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T15:17:52.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1643728672.002100",
- "thread": {
- "id": "1643726374.210029",
- "body": "Perfect :v:"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T15:17:52.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1643728672.002100",
- "thread": {
- "id": "1643726374.210029",
- "body": "Perfect :v:"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T15:17:52.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Perfect :v:",
- "channel": "dev",
- "slackId": "1643726374.210029",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643726374210029?thread_ts=1643725075.827419&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:39:34.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Perfect :v:",
- "channel": "dev",
- "slackId": "1643726374.210029",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643726374210029?thread_ts=1643725075.827419&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:39:34.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Perfect :v:",
- "channel": "dev",
- "slackId": "1643726374.210029",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643726374210029?thread_ts=1643725075.827419&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-02-01T14:39:34.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Perfect :v:",
- "channel": "dev",
- "slackId": "1643726374.210029",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643726374210029?thread_ts=1643725075.827419&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:39:34.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Fixed by upgrading my Node version from v10 to v16.13.2!\nThank @Mario Balca for your help :slightly_smiling_face:",
- "channel": "dev",
- "slackId": "1643726355.920559",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643726355920559?thread_ts=1643725075.827419&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 1,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:39:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Fixed by upgrading my Node version from v10 to v16.13.2!\nThank @Mario Balca for your help :slightly_smiling_face:",
- "channel": "dev",
- "slackId": "1643726355.920559",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643726355920559?thread_ts=1643725075.827419&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:39:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Fixed by upgrading my Node version from v10 to v16.13.2!\nThank @Mario Balca for your help :slightly_smiling_face:",
- "channel": "dev",
- "slackId": "1643726355.920559",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643726355920559?thread_ts=1643725075.827419&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:39:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Fixed by upgrading my Node version from v10 to v16.13.2!\nThank @Mario Balca for your help :slightly_smiling_face:",
- "channel": "dev",
- "slackId": "1643726355.920559",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643726355920559?thread_ts=1643725075.827419&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:39:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Hmmm maybe we can quickly jump into a slack huddle and I can to try to help",
- "channel": "dev",
- "slackId": "1643725255.139779",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643725255139779?thread_ts=1643725075.827419&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:20:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Hmmm maybe we can quickly jump into a slack huddle and I can to try to help",
- "channel": "dev",
- "slackId": "1643725255.139779",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643725255139779?thread_ts=1643725075.827419&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:20:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Hmmm maybe we can quickly jump into a slack huddle and I can to try to help",
- "channel": "dev",
- "slackId": "1643725255.139779",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643725255139779?thread_ts=1643725075.827419&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-02-01T14:20:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Hmmm maybe we can quickly jump into a slack huddle and I can to try to help",
- "channel": "dev",
- "slackId": "1643725255.139779",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643725255139779?thread_ts=1643725075.827419&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:20:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "thinking_face",
- "slackId": "1643725135.001200",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:18:55.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "thinking_face",
- "slackId": "1643725135.001200",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:18:55.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "thinking_face",
- "slackId": "1643725135.001200",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-02-01T14:18:55.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "thinking_face",
- "slackId": "1643725135.001200",
- "thread": {
- "id": "1643725075.827419",
- "body": "Hey guys, I was trying to run the frontend of crowd-dev, I ran `npm install` and then `npm start` but I got this error, any ideas? Thanks :)"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:18:55.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643725075.827419",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643725075827419"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 1,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:17:55.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643725075.827419",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643725075827419"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:17:55.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643725075.827419",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643725075827419"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:17:55.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643725075.827419",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643725075827419"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:17:55.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643724836.136399",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643724836136399"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 1,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:13:56.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643724836.136399",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643724836136399"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:13:56.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643724836.136399",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643724836136399"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:13:56.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643724836.136399",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643724836136399"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T14:13:56.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": ":joy::joy:",
- "channel": "twitter",
- "slackId": "1643719471.759179",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1643719471759179"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T12:44:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": ":joy::joy:",
- "channel": "twitter",
- "slackId": "1643719471.759179",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1643719471759179"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T12:44:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": ":joy::joy:",
- "channel": "twitter",
- "slackId": "1643719471.759179",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1643719471759179"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-02-01T12:44:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": ":joy::joy:",
- "channel": "twitter",
- "slackId": "1643719471.759179",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1643719471759179"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-02-01T12:44:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sorry for flexing haha",
- "channel": "twitter",
- "slackId": "1643719118.782799",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1643719118782799"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T12:38:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sorry for flexing haha",
- "channel": "twitter",
- "slackId": "1643719118.782799",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1643719118782799"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T12:38:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sorry for flexing haha",
- "channel": "twitter",
- "slackId": "1643719118.782799",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1643719118782799"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T12:38:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sorry for flexing haha",
- "channel": "twitter",
- "slackId": "1643719118.782799",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1643719118782799"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-02-01T12:38:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "procurement",
- "slackId": "1643577153.009819",
- "url": "https://crowddevspace.slack.com/archives/C02C2PPMHRB/p1643577153009819"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 1,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-30T21:12:33.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1643577153.064039",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643577153064039"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-30T21:12:33.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "procurement",
- "slackId": "1643577153.009819",
- "url": "https://crowddevspace.slack.com/archives/C02C2PPMHRB/p1643577153009819"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-30T21:12:33.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "fantasy-football",
- "slackId": "1643577153.033869",
- "url": "https://crowddevspace.slack.com/archives/C02EF5YGPCL/p1643577153033869"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-30T21:12:33.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "general",
- "slackId": "1643577152.962369",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1643577152962369"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 1,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-30T21:12:32.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "general",
- "slackId": "1643577152.962369",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1643577152962369"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-30T21:12:32.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "general",
- "slackId": "1643577152.962369",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1643577152962369"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-30T21:12:32.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "sign-ups",
- "slackId": "1643577152.983069",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1643577152983069"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Africa/Algiers"
- }
- },
- "username": "Mehdi Mabrouki",
- "type": "member",
- "score": 2,
- "email": "mehdi@crowd.dev",
- "organisation": "",
- "location": "Africa/Algiers (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-30T21:12:32.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "fire",
- "slackId": "1643392217.000800",
- "thread": {
- "id": "1643390597.319629",
- "body": " this is amazing"
- },
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T17:50:17.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "fire",
- "slackId": "1643392217.000800",
- "thread": {
- "id": "1643390597.319629",
- "body": " this is amazing"
- },
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T17:50:17.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "fire",
- "slackId": "1643392217.000800",
- "thread": {
- "id": "1643390597.319629",
- "body": " this is amazing"
- },
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-28T17:50:17.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "fire",
- "slackId": "1643392217.000800",
- "thread": {
- "id": "1643390597.319629",
- "body": " this is amazing"
- },
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-28T17:50:17.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "smile",
- "slackId": "1643392210.000700",
- "thread": {
- "id": "1643390597.319629",
- "body": " this is amazing"
- },
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T17:50:10.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "smile",
- "slackId": "1643392210.000700",
- "thread": {
- "id": "1643390597.319629",
- "body": " this is amazing"
- },
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T17:50:10.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "smile",
- "slackId": "1643392210.000700",
- "thread": {
- "id": "1643390597.319629",
- "body": " this is amazing"
- },
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-28T17:50:10.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "smile",
- "slackId": "1643392210.000700",
- "thread": {
- "id": "1643390597.319629",
- "body": " this is amazing"
- },
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-28T17:50:10.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": " this is amazing",
- "channel": "random",
- "slackId": "1643390597.319629",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643390597319629"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T17:23:17.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": " this is amazing",
- "channel": "random",
- "slackId": "1643390597.319629",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643390597319629"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T17:23:17.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": " this is amazing",
- "channel": "random",
- "slackId": "1643390597.319629",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643390597319629"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T17:23:17.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": " this is amazing",
- "channel": "random",
- "slackId": "1643390597.319629",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643390597319629"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T17:23:17.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1643385428.154199",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643385428154199"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T15:57:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1643385428.154199",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643385428154199"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T15:57:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1643385428.154199",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643385428154199"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T15:57:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1643385428.154199",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643385428154199"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T15:57:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1643371282.003100",
- "thread": {
- "id": "1643371257.571759",
- "body": "I pushed a new version just now, tests were failing"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T12:01:22.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1643371282.003100",
- "thread": {
- "id": "1643371257.571759",
- "body": "I pushed a new version just now, tests were failing"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T12:01:22.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1643371282.003100",
- "thread": {
- "id": "1643371257.571759",
- "body": "I pushed a new version just now, tests were failing"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-28T12:01:22.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1643371282.003100",
- "thread": {
- "id": "1643371257.571759",
- "body": "I pushed a new version just now, tests were failing"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T12:01:22.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I pushed a new version just now, tests were failing",
- "channel": "dev",
- "slackId": "1643371257.571759",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643371257571759?thread_ts=1643370668.747659&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643370668.747659",
- "body": "Nice thanks!"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T12:00:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I pushed a new version just now, tests were failing",
- "channel": "dev",
- "slackId": "1643371257.571759",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643371257571759?thread_ts=1643370668.747659&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643370668.747659",
- "body": "Nice thanks!"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T12:00:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I pushed a new version just now, tests were failing",
- "channel": "dev",
- "slackId": "1643371257.571759",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643371257571759?thread_ts=1643370668.747659&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643370668.747659",
- "body": "Nice thanks!"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T12:00:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I pushed a new version just now, tests were failing",
- "channel": "dev",
- "slackId": "1643371257.571759",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643371257571759?thread_ts=1643370668.747659&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643370668.747659",
- "body": "Nice thanks!"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T12:00:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1643370832.002900",
- "thread": {
- "id": "1643370668.747659",
- "body": "Nice thanks!"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:53:52.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1643370832.002900",
- "thread": {
- "id": "1643370668.747659",
- "body": "Nice thanks!"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:53:52.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1643370832.002900",
- "thread": {
- "id": "1643370668.747659",
- "body": "Nice thanks!"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:53:52.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1643370832.002900",
- "thread": {
- "id": "1643370668.747659",
- "body": "Nice thanks!"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:53:52.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Nice thanks!",
- "channel": "dev",
- "slackId": "1643370668.747659",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370668747659"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:51:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Nice thanks!",
- "channel": "dev",
- "slackId": "1643370668.747659",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370668747659"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:51:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Nice thanks!",
- "channel": "dev",
- "slackId": "1643370668.747659",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370668747659"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-28T11:51:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Nice thanks!",
- "channel": "dev",
- "slackId": "1643370668.747659",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370668747659"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:51:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "i merged Joan's changes too to this",
- "channel": "dev",
- "slackId": "1643370635.602419",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370635602419"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:50:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "i merged Joan's changes too to this",
- "channel": "dev",
- "slackId": "1643370635.602419",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370635602419"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:50:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "i merged Joan's changes too to this",
- "channel": "dev",
- "slackId": "1643370635.602419",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370635602419"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:50:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "i merged Joan's changes too to this",
- "channel": "dev",
- "slackId": "1643370635.602419",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370635602419"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:50:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "you can merge my current working branch (members-to-merge-relations) to ur branch. errors should disappear",
- "channel": "dev",
- "slackId": "1643370608.948779",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370608948779"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:50:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "you can merge my current working branch (members-to-merge-relations) to ur branch. errors should disappear",
- "channel": "dev",
- "slackId": "1643370608.948779",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370608948779"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:50:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "you can merge my current working branch (members-to-merge-relations) to ur branch. errors should disappear",
- "channel": "dev",
- "slackId": "1643370608.948779",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370608948779"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:50:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "you can merge my current working branch (members-to-merge-relations) to ur branch. errors should disappear",
- "channel": "dev",
- "slackId": "1643370608.948779",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370608948779"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:50:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yeah those are fixed in the new branches but not merged into main yet",
- "channel": "dev",
- "slackId": "1643370563.620339",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370563620339"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:49:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yeah those are fixed in the new branches but not merged into main yet",
- "channel": "dev",
- "slackId": "1643370563.620339",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370563620339"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:49:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yeah those are fixed in the new branches but not merged into main yet",
- "channel": "dev",
- "slackId": "1643370563.620339",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370563620339"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:49:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yeah those are fixed in the new branches but not merged into main yet",
- "channel": "dev",
- "slackId": "1643370563.620339",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370563620339"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:49:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643370304.105919",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370304105919"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:45:04.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643370304.105919",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370304105919"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:45:04.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643370304.105919",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370304105919"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-28T11:45:04.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643370304.105919",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370304105919"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:45:04.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643370280.206799",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370280206799"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:44:40.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643370280.206799",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370280206799"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:44:40.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643370280.206799",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370280206799"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-28T11:44:40.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1643370280.206799",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643370280206799"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-28T11:44:40.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Yeah",
- "channel": "dev",
- "slackId": "1643304915.001300",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643304915001300?thread_ts=1643301420.000700&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643301420.000700",
- "body": "@Joan Reyero @Anil Bostanci Just noticed that we’re 1 major behind in `Sequilize` , maybe it would be cool to get it to version 7 right from the start"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T17:35:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Yeah",
- "channel": "dev",
- "slackId": "1643304915.001300",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643304915001300?thread_ts=1643301420.000700&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643301420.000700",
- "body": "@Joan Reyero @Anil Bostanci Just noticed that we’re 1 major behind in `Sequilize` , maybe it would be cool to get it to version 7 right from the start"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T17:35:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Yeah",
- "channel": "dev",
- "slackId": "1643304915.001300",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643304915001300?thread_ts=1643301420.000700&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643301420.000700",
- "body": "@Joan Reyero @Anil Bostanci Just noticed that we’re 1 major behind in `Sequilize` , maybe it would be cool to get it to version 7 right from the start"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-27T17:35:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Yeah",
- "channel": "dev",
- "slackId": "1643304915.001300",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643304915001300?thread_ts=1643301420.000700&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643301420.000700",
- "body": "@Joan Reyero @Anil Bostanci Just noticed that we’re 1 major behind in `Sequilize` , maybe it would be cool to get it to version 7 right from the start"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-27T17:35:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1 :thumbsup:",
- "channel": "dev",
- "slackId": "1643304875.001100",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643304875001100?thread_ts=1643301420.000700&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643301420.000700",
- "body": "@Joan Reyero @Anil Bostanci Just noticed that we’re 1 major behind in `Sequilize` , maybe it would be cool to get it to version 7 right from the start"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T17:34:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1 :thumbsup:",
- "channel": "dev",
- "slackId": "1643304875.001100",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643304875001100?thread_ts=1643301420.000700&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643301420.000700",
- "body": "@Joan Reyero @Anil Bostanci Just noticed that we’re 1 major behind in `Sequilize` , maybe it would be cool to get it to version 7 right from the start"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T17:34:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1 :thumbsup:",
- "channel": "dev",
- "slackId": "1643304875.001100",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643304875001100?thread_ts=1643301420.000700&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643301420.000700",
- "body": "@Joan Reyero @Anil Bostanci Just noticed that we’re 1 major behind in `Sequilize` , maybe it would be cool to get it to version 7 right from the start"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T17:34:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1 :thumbsup:",
- "channel": "dev",
- "slackId": "1643304875.001100",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643304875001100?thread_ts=1643301420.000700&cid=C01NBV2BDDK",
- "thread": {
- "id": "1643301420.000700",
- "body": "@Joan Reyero @Anil Bostanci Just noticed that we’re 1 major behind in `Sequilize` , maybe it would be cool to get it to version 7 right from the start"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T17:34:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero @Anil Bostanci Just noticed that we’re 1 major behind in `Sequilize` , maybe it would be cool to get it to version 7 right from the start",
- "channel": "dev",
- "slackId": "1643301420.000700",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643301420000700"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T16:37:00.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero @Anil Bostanci Just noticed that we’re 1 major behind in `Sequilize` , maybe it would be cool to get it to version 7 right from the start",
- "channel": "dev",
- "slackId": "1643301420.000700",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643301420000700"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T16:37:00.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero @Anil Bostanci Just noticed that we’re 1 major behind in `Sequilize` , maybe it would be cool to get it to version 7 right from the start",
- "channel": "dev",
- "slackId": "1643301420.000700",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643301420000700"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-27T16:37:00.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero @Anil Bostanci Just noticed that we’re 1 major behind in `Sequilize` , maybe it would be cool to get it to version 7 right from the start",
- "channel": "dev",
- "slackId": "1643301420.000700",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643301420000700"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T16:37:00.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "me too :+1:",
- "channel": "random",
- "slackId": "1643297543.003400",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643297543003400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T15:32:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "me too :+1:",
- "channel": "random",
- "slackId": "1643297543.003400",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643297543003400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T15:32:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "me too :+1:",
- "channel": "random",
- "slackId": "1643297543.003400",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643297543003400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-27T15:32:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "me too :+1:",
- "channel": "random",
- "slackId": "1643297543.003400",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643297543003400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T15:32:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "i will be skipping coffee break today - need to wrap some stuff up",
- "channel": "random",
- "slackId": "1643297526.003200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643297526003200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T15:32:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "i will be skipping coffee break today - need to wrap some stuff up",
- "channel": "random",
- "slackId": "1643297526.003200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643297526003200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T15:32:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "i will be skipping coffee break today - need to wrap some stuff up",
- "channel": "random",
- "slackId": "1643297526.003200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643297526003200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T15:32:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "i will be skipping coffee break today - need to wrap some stuff up",
- "channel": "random",
- "slackId": "1643297526.003200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643297526003200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T15:32:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Let’s gooo",
- "channel": "random",
- "slackId": "1643297243.002200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643297243002200?thread_ts=1643289699.001200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1643289699.001200",
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T15:27:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Let’s gooo",
- "channel": "random",
- "slackId": "1643297243.002200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643297243002200?thread_ts=1643289699.001200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1643289699.001200",
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T15:27:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Let’s gooo",
- "channel": "random",
- "slackId": "1643297243.002200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643297243002200?thread_ts=1643289699.001200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1643289699.001200",
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-27T15:27:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Let’s gooo",
- "channel": "random",
- "slackId": "1643297243.002200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643297243002200?thread_ts=1643289699.001200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1643289699.001200",
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T15:27:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yes!! :fire:",
- "channel": "random",
- "slackId": "1643289757.002000",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643289757002000?thread_ts=1643289699.001200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1643289699.001200",
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T13:22:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yes!! :fire:",
- "channel": "random",
- "slackId": "1643289757.002000",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643289757002000?thread_ts=1643289699.001200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1643289699.001200",
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T13:22:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yes!! :fire:",
- "channel": "random",
- "slackId": "1643289757.002000",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643289757002000?thread_ts=1643289699.001200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1643289699.001200",
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T13:22:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yes!! :fire:",
- "channel": "random",
- "slackId": "1643289757.002000",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643289757002000?thread_ts=1643289699.001200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1643289699.001200",
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T13:22:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Wow! Awesome :sunglasses: :clap: ",
- "channel": "random",
- "slackId": "1643289751.001800",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643289751001800?thread_ts=1643289699.001200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1643289699.001200",
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T13:22:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Wow! Awesome :sunglasses: :clap: ",
- "channel": "random",
- "slackId": "1643289751.001800",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643289751001800?thread_ts=1643289699.001200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1643289699.001200",
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T13:22:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Wow! Awesome :sunglasses: :clap: ",
- "channel": "random",
- "slackId": "1643289751.001800",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643289751001800?thread_ts=1643289699.001200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1643289699.001200",
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-27T13:22:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Wow! Awesome :sunglasses: :clap: ",
- "channel": "random",
- "slackId": "1643289751.001800",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643289751001800?thread_ts=1643289699.001200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1643289699.001200",
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-27T13:22:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:",
- "channel": "random",
- "slackId": "1643289699.001200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643289699001200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T13:21:39.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:",
- "channel": "random",
- "slackId": "1643289699.001200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643289699001200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T13:21:39.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:",
- "channel": "random",
- "slackId": "1643289699.001200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643289699001200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T13:21:39.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "getting an intro to the guy who built the Ubuntu community :smile: would that be a cool reference? :stuck_out_tongue:",
- "channel": "random",
- "slackId": "1643289699.001200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643289699001200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T13:21:39.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "\ninteresting take on YC and Stripe =D",
- "channel": "random",
- "slackId": "1643283741.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643283741000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T11:42:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "\ninteresting take on YC and Stripe =D",
- "channel": "random",
- "slackId": "1643283741.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643283741000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T11:42:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "\ninteresting take on YC and Stripe =D",
- "channel": "random",
- "slackId": "1643283741.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643283741000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T11:42:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "\ninteresting take on YC and Stripe =D",
- "channel": "random",
- "slackId": "1643283741.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643283741000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-27T11:42:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "pray",
- "slackId": "1643201302.000500",
- "thread": {
- "id": "1643185566.000300",
- "body": "active member numbers should be correct now\nthere was a problem in the cache table creation"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T12:48:22.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "pray",
- "slackId": "1643201302.000500",
- "thread": {
- "id": "1643185566.000300",
- "body": "active member numbers should be correct now\nthere was a problem in the cache table creation"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T12:48:22.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "pray",
- "slackId": "1643201302.000500",
- "thread": {
- "id": "1643185566.000300",
- "body": "active member numbers should be correct now\nthere was a problem in the cache table creation"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-26T12:48:22.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "pray",
- "slackId": "1643201302.000500",
- "thread": {
- "id": "1643185566.000300",
- "body": "active member numbers should be correct now\nthere was a problem in the cache table creation"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T12:48:22.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "dev",
- "slackId": "1643195797.000200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643195797000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T11:16:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "dev",
- "slackId": "1643195797.000200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643195797000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T11:16:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "dev",
- "slackId": "1643195797.000200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643195797000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-26T11:16:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "dev",
- "slackId": "1643195797.000200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1643195797000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T11:16:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "will have to skip stand-up & coffee break today - schedule is insanely full :sweat_smile:",
- "channel": "random",
- "slackId": "1643190524.000800",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643190524000800"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T09:48:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "will have to skip stand-up & coffee break today - schedule is insanely full :sweat_smile:",
- "channel": "random",
- "slackId": "1643190524.000800",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643190524000800"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T09:48:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "will have to skip stand-up & coffee break today - schedule is insanely full :sweat_smile:",
- "channel": "random",
- "slackId": "1643190524.000800",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643190524000800"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T09:48:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "will have to skip stand-up & coffee break today - schedule is insanely full :sweat_smile:",
- "channel": "random",
- "slackId": "1643190524.000800",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1643190524000800"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T09:48:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "active member numbers should be correct now\nthere was a problem in the cache table creation",
- "channel": "bugs",
- "slackId": "1643185566.000300",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643185566000300?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T08:26:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "active member numbers should be correct now\nthere was a problem in the cache table creation",
- "channel": "bugs",
- "slackId": "1643185566.000300",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643185566000300?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T08:26:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "active member numbers should be correct now\nthere was a problem in the cache table creation",
- "channel": "bugs",
- "slackId": "1643185566.000300",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643185566000300?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T08:26:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "active member numbers should be correct now\nthere was a problem in the cache table creation",
- "channel": "bugs",
- "slackId": "1643185566.000300",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643185566000300?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T08:26:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "morning :sunny:",
- "channel": "bugs",
- "slackId": "1643185513.000100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643185513000100?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T08:25:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "morning :sunny:",
- "channel": "bugs",
- "slackId": "1643185513.000100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643185513000100?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T08:25:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "morning :sunny:",
- "channel": "bugs",
- "slackId": "1643185513.000100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643185513000100?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T08:25:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "morning :sunny:",
- "channel": "bugs",
- "slackId": "1643185513.000100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643185513000100?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-26T08:25:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "i will check the numbers and write back",
- "channel": "bugs",
- "slackId": "1643129377.002200",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129377002200?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:49:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "i will check the numbers and write back",
- "channel": "bugs",
- "slackId": "1643129377.002200",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129377002200?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:49:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "i will check the numbers and write back",
- "channel": "bugs",
- "slackId": "1643129377.002200",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129377002200?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:49:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "i will check the numbers and write back",
- "channel": "bugs",
- "slackId": "1643129377.002200",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129377002200?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:49:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "It’s already on staging",
- "channel": "bugs",
- "slackId": "1643129284.001900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129284001900?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:48:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "It’s already on staging",
- "channel": "bugs",
- "slackId": "1643129284.001900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129284001900?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:48:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "It’s already on staging",
- "channel": "bugs",
- "slackId": "1643129284.001900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129284001900?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-25T16:48:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "It’s already on staging",
- "channel": "bugs",
- "slackId": "1643129284.001900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129284001900?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:48:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "ok, that’s correct than… still the “Active Members” seems not to work",
- "channel": "bugs",
- "slackId": "1643129283.001700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129283001700?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:48:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "ok, that’s correct than… still the “Active Members” seems not to work",
- "channel": "bugs",
- "slackId": "1643129283.001700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129283001700?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:48:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "ok, that’s correct than… still the “Active Members” seems not to work",
- "channel": "bugs",
- "slackId": "1643129283.001700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129283001700?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:48:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "ok, that’s correct than… still the “Active Members” seems not to work",
- "channel": "bugs",
- "slackId": "1643129283.001700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129283001700?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:48:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1643129277.001600",
- "thread": {
- "id": "1643129241.001400",
- "body": "This tweak will be deployed soon enough"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:47:57.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1643129277.001600",
- "thread": {
- "id": "1643129241.001400",
- "body": "This tweak will be deployed soon enough"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:47:57.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1643129277.001600",
- "thread": {
- "id": "1643129241.001400",
- "body": "This tweak will be deployed soon enough"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-25T16:47:57.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1643129277.001600",
- "thread": {
- "id": "1643129241.001400",
- "body": "This tweak will be deployed soon enough"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-25T16:47:57.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "This tweak will be deployed soon enough",
- "channel": "bugs",
- "slackId": "1643129241.001400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129241001400?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:47:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "This tweak will be deployed soon enough",
- "channel": "bugs",
- "slackId": "1643129241.001400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129241001400?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:47:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "This tweak will be deployed soon enough",
- "channel": "bugs",
- "slackId": "1643129241.001400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129241001400?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-25T16:47:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "This tweak will be deployed soon enough",
- "channel": "bugs",
- "slackId": "1643129241.001400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129241001400?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:47:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "New Members",
- "channel": "bugs",
- "slackId": "1643129233.001200",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129233001200?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:47:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "New Members",
- "channel": "bugs",
- "slackId": "1643129233.001200",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129233001200?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:47:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "New Members",
- "channel": "bugs",
- "slackId": "1643129233.001200",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129233001200?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-25T16:47:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "New Members",
- "channel": "bugs",
- "slackId": "1643129233.001200",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129233001200?thread_ts=1643129197.001000&cid=C02LWNKS17B",
- "thread": {
- "id": "1643129197.001000",
- "body": "Should “Members” refer to “Total members” or “New Members”?"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:47:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Should “Members” refer to “Total members” or “New Members”?",
- "channel": "bugs",
- "slackId": "1643129197.001000",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129197001000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:46:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Should “Members” refer to “Total members” or “New Members”?",
- "channel": "bugs",
- "slackId": "1643129197.001000",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129197001000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:46:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Should “Members” refer to “Total members” or “New Members”?",
- "channel": "bugs",
- "slackId": "1643129197.001000",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129197001000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:46:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Should “Members” refer to “Total members” or “New Members”?",
- "channel": "bugs",
- "slackId": "1643129197.001000",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129197001000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:46:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1643129176.000500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129176000500"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:46:16.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1643129176.000500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129176000500"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:46:16.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1643129176.000500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129176000500"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:46:16.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1643129176.000500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1643129176000500"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T16:46:16.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Me too, I’m in the middle of something sorry",
- "channel": "general",
- "slackId": "1643124955.000900",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1643124955000900?thread_ts=1643124675.000300&cid=C01NTLA4EBT",
- "thread": {
- "id": "1643124675.000300",
- "body": "sorry, I will skip coffee break"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T15:35:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Me too, I’m in the middle of something sorry",
- "channel": "general",
- "slackId": "1643124955.000900",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1643124955000900?thread_ts=1643124675.000300&cid=C01NTLA4EBT",
- "thread": {
- "id": "1643124675.000300",
- "body": "sorry, I will skip coffee break"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T15:35:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Me too, I’m in the middle of something sorry",
- "channel": "general",
- "slackId": "1643124955.000900",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1643124955000900?thread_ts=1643124675.000300&cid=C01NTLA4EBT",
- "thread": {
- "id": "1643124675.000300",
- "body": "sorry, I will skip coffee break"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-25T15:35:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Me too, I’m in the middle of something sorry",
- "channel": "general",
- "slackId": "1643124955.000900",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1643124955000900?thread_ts=1643124675.000300&cid=C01NTLA4EBT",
- "thread": {
- "id": "1643124675.000300",
- "body": "sorry, I will skip coffee break"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T15:35:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sorry, I will skip coffee break",
- "channel": "general",
- "slackId": "1643124675.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1643124675000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T15:31:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sorry, I will skip coffee break",
- "channel": "general",
- "slackId": "1643124675.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1643124675000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T15:31:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sorry, I will skip coffee break",
- "channel": "general",
- "slackId": "1643124675.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1643124675000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T15:31:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sorry, I will skip coffee break",
- "channel": "general",
- "slackId": "1643124675.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1643124675000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-25T15:31:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "happy weekend everyone! :slightly_smiling_face:",
- "channel": "general",
- "slackId": "1642788167.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1642788167000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T18:02:47.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "happy weekend everyone! :slightly_smiling_face:",
- "channel": "general",
- "slackId": "1642788167.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1642788167000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T18:02:47.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "happy weekend everyone! :slightly_smiling_face:",
- "channel": "general",
- "slackId": "1642788167.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1642788167000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T18:02:47.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "happy weekend everyone! :slightly_smiling_face:",
- "channel": "general",
- "slackId": "1642788167.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NTLA4EBT/p1642788167000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T18:02:47.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642774167.000300",
- "thread": {
- "id": "1642774155.000100",
- "body": "\n^ FYI @Joan Reyero, pull request created for this issue"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T14:09:27.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642774167.000300",
- "thread": {
- "id": "1642774155.000100",
- "body": "\n^ FYI @Joan Reyero, pull request created for this issue"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T14:09:27.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642774167.000300",
- "thread": {
- "id": "1642774155.000100",
- "body": "\n^ FYI @Joan Reyero, pull request created for this issue"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-21T14:09:27.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642774167.000300",
- "thread": {
- "id": "1642774155.000100",
- "body": "\n^ FYI @Joan Reyero, pull request created for this issue"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-21T14:09:27.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "\n^ FYI @Joan Reyero, pull request created for this issue",
- "channel": "bugs",
- "slackId": "1642774155.000100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642774155000100?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T14:09:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "\n^ FYI @Joan Reyero, pull request created for this issue",
- "channel": "bugs",
- "slackId": "1642774155.000100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642774155000100?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T14:09:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "\n^ FYI @Joan Reyero, pull request created for this issue",
- "channel": "bugs",
- "slackId": "1642774155.000100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642774155000100?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-21T14:09:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "\n^ FYI @Joan Reyero, pull request created for this issue",
- "channel": "bugs",
- "slackId": "1642774155.000100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642774155000100?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T14:09:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642761686.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "bryan_holland",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T10:41:26.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642758057.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "martha_calhoun",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T09:40:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642755650.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "alejandro_garner",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T09:00:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642751029.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kathleen_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T07:43:49.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642750923.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "karen_andrews",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T07:42:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642749442.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kelly_lambert",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T07:17:22.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642746822.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "benjamin_howard",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T06:33:42.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642739901.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "dr._rebecca_nelson",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T04:38:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642739174.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "david_rogers",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T04:26:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642739166.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "krystal_summers",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T04:26:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642728501.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "david_boyd",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T01:28:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642723399.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "john_henry",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-21T00:03:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642722388.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "randy_bolton",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T23:46:28.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642720857.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "jordan_wilson",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T23:20:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642720744.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "gail_white",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T23:19:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642716921.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "james_johnson",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T22:15:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642713404.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "marie_warner",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T21:16:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642713317.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "calvin_gibbs",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T21:15:17.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642706281.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stacy_miller",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T19:18:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642702147.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kathleen_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T18:09:07.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642700600.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "jordan_wilson",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T17:43:20.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642692045.007000",
- "thread": {
- "id": "1642691523.002300",
- "body": "I’ve spotted this issue before, but haven’t had the opportunity to tackle it because it might take a few days\nMaybe I’ll tackle this now that I have an easier rest of the sprint"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:20:45.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642692045.007000",
- "thread": {
- "id": "1642691523.002300",
- "body": "I’ve spotted this issue before, but haven’t had the opportunity to tackle it because it might take a few days\nMaybe I’ll tackle this now that I have an easier rest of the sprint"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:20:45.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642692045.007000",
- "thread": {
- "id": "1642691523.002300",
- "body": "I’ve spotted this issue before, but haven’t had the opportunity to tackle it because it might take a few days\nMaybe I’ll tackle this now that I have an easier rest of the sprint"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-20T15:20:45.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642692045.007000",
- "thread": {
- "id": "1642691523.002300",
- "body": "I’ve spotted this issue before, but haven’t had the opportunity to tackle it because it might take a few days\nMaybe I’ll tackle this now that I have an easier rest of the sprint"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-20T15:20:45.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642691873.003200",
- "thread": {
- "id": "1642691523.002300",
- "body": "I’ve spotted this issue before, but haven’t had the opportunity to tackle it because it might take a few days\nMaybe I’ll tackle this now that I have an easier rest of the sprint"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:17:53.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642691873.003200",
- "thread": {
- "id": "1642691523.002300",
- "body": "I’ve spotted this issue before, but haven’t had the opportunity to tackle it because it might take a few days\nMaybe I’ll tackle this now that I have an easier rest of the sprint"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:17:53.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642691873.003200",
- "thread": {
- "id": "1642691523.002300",
- "body": "I’ve spotted this issue before, but haven’t had the opportunity to tackle it because it might take a few days\nMaybe I’ll tackle this now that I have an easier rest of the sprint"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-20T15:17:53.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642691873.003200",
- "thread": {
- "id": "1642691523.002300",
- "body": "I’ve spotted this issue before, but haven’t had the opportunity to tackle it because it might take a few days\nMaybe I’ll tackle this now that I have an easier rest of the sprint"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-20T15:17:53.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "with serverless",
- "channel": "dev",
- "slackId": "1642691642.002300",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642691642002300?thread_ts=1642691595.001900&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642691595.001900",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:14:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "with serverless",
- "channel": "dev",
- "slackId": "1642691642.002300",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642691642002300?thread_ts=1642691595.001900&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642691595.001900",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:14:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "with serverless",
- "channel": "dev",
- "slackId": "1642691642.002300",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642691642002300?thread_ts=1642691595.001900&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642691595.001900",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:14:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "with serverless",
- "channel": "dev",
- "slackId": "1642691642.002300",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642691642002300?thread_ts=1642691595.001900&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642691595.001900",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:14:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "basically os scaffoldhub?",
- "channel": "dev",
- "slackId": "1642691635.002100",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642691635002100?thread_ts=1642691595.001900&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642691595.001900",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:13:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "basically os scaffoldhub?",
- "channel": "dev",
- "slackId": "1642691635.002100",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642691635002100?thread_ts=1642691595.001900&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642691595.001900",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:13:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "basically os scaffoldhub?",
- "channel": "dev",
- "slackId": "1642691635.002100",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642691635002100?thread_ts=1642691595.001900&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642691595.001900",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:13:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "basically os scaffoldhub?",
- "channel": "dev",
- "slackId": "1642691635.002100",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642691635002100?thread_ts=1642691595.001900&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642691595.001900",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:13:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "dev",
- "slackId": "1642691595.001900",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642691595001900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:13:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "dev",
- "slackId": "1642691595.001900",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642691595001900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:13:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "dev",
- "slackId": "1642691595.001900",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642691595001900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:13:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "dev",
- "slackId": "1642691595.001900",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642691595001900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:13:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I’ve spotted this issue before, but haven’t had the opportunity to tackle it because it might take a few days\nMaybe I’ll tackle this now that I have an easy sprint",
- "channel": "bugs",
- "slackId": "1642691523.002300",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691523002300?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:12:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I’ve spotted this issue before, but haven’t had the opportunity to tackle it because it might take a few days\nMaybe I’ll tackle this now that I have an easy sprint",
- "channel": "bugs",
- "slackId": "1642691523.002300",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691523002300?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:12:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I’ve spotted this issue before, but haven’t had the opportunity to tackle it because it might take a few days\nMaybe I’ll tackle this now that I have an easy sprint",
- "channel": "bugs",
- "slackId": "1642691523.002300",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691523002300?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-20T15:12:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I’ve spotted this issue before, but haven’t had the opportunity to tackle it because it might take a few days\nMaybe I’ll tackle this now that I have an easy sprint",
- "channel": "bugs",
- "slackId": "1642691523.002300",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691523002300?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:12:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yeah with refresh it works",
- "channel": "bugs",
- "slackId": "1642691474.002100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691474002100?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:11:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yeah with refresh it works",
- "channel": "bugs",
- "slackId": "1642691474.002100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691474002100?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:11:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yeah with refresh it works",
- "channel": "bugs",
- "slackId": "1642691474.002100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691474002100?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:11:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yeah with refresh it works",
- "channel": "bugs",
- "slackId": "1642691474.002100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691474002100?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:11:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "okay in incognito it just worked",
- "channel": "bugs",
- "slackId": "1642691464.001900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691464001900?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:11:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "okay in incognito it just worked",
- "channel": "bugs",
- "slackId": "1642691464.001900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691464001900?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:11:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "okay in incognito it just worked",
- "channel": "bugs",
- "slackId": "1642691464.001900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691464001900?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:11:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "okay in incognito it just worked",
- "channel": "bugs",
- "slackId": "1642691464.001900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691464001900?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:11:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "If you do a hard refresh does it solve the issue?",
- "channel": "bugs",
- "slackId": "1642691433.001700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691433001700?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:33.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "If you do a hard refresh does it solve the issue?",
- "channel": "bugs",
- "slackId": "1642691433.001700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691433001700?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:33.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "If you do a hard refresh does it solve the issue?",
- "channel": "bugs",
- "slackId": "1642691433.001700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691433001700?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-20T15:10:33.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "If you do a hard refresh does it solve the issue?",
- "channel": "bugs",
- "slackId": "1642691433.001700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691433001700?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:33.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "both",
- "channel": "bugs",
- "slackId": "1642691419.001500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691419001500?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "both",
- "channel": "bugs",
- "slackId": "1642691419.001500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691419001500?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "both",
- "channel": "bugs",
- "slackId": "1642691419.001500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691419001500?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "both",
- "channel": "bugs",
- "slackId": "1642691419.001500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691419001500?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1642691410.001100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691410001100?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:10.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1642691410.001100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691410001100?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:10.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1642691410.001100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691410001100?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:10.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1642691410.001100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691410001100?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:10.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Does this happen after you logout from another account?",
- "channel": "bugs",
- "slackId": "1642691406.000900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691406000900?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Does this happen after you logout from another account?",
- "channel": "bugs",
- "slackId": "1642691406.000900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691406000900?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Does this happen after you logout from another account?",
- "channel": "bugs",
- "slackId": "1642691406.000900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691406000900?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-20T15:10:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Does this happen after you logout from another account?",
- "channel": "bugs",
- "slackId": "1642691406.000900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691406000900?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:10:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yes",
- "channel": "bugs",
- "slackId": "1642691399.000700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691399000700?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:09:59.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yes",
- "channel": "bugs",
- "slackId": "1642691399.000700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691399000700?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:09:59.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yes",
- "channel": "bugs",
- "slackId": "1642691399.000700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691399000700?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:09:59.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "yes",
- "channel": "bugs",
- "slackId": "1642691399.000700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691399000700?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:09:59.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "In prod?",
- "channel": "bugs",
- "slackId": "1642691396.000500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691396000500?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:09:56.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "In prod?",
- "channel": "bugs",
- "slackId": "1642691396.000500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691396000500?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:09:56.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "In prod?",
- "channel": "bugs",
- "slackId": "1642691396.000500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691396000500?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-20T15:09:56.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "In prod?",
- "channel": "bugs",
- "slackId": "1642691396.000500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691396000500?thread_ts=1642691356.000400&cid=C02LWNKS17B",
- "thread": {
- "id": "1642691356.000400",
- "body": "getting a 500 every time I log in :confused:"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:09:56.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "getting a 500 every time I log in :confused:",
- "channel": "bugs",
- "slackId": "1642691356.000400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691356000400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:09:16.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "getting a 500 every time I log in :confused:",
- "channel": "bugs",
- "slackId": "1642691356.000400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691356000400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:09:16.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "getting a 500 every time I log in :confused:",
- "channel": "bugs",
- "slackId": "1642691356.000400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691356000400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:09:16.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "getting a 500 every time I log in :confused:",
- "channel": "bugs",
- "slackId": "1642691356.000400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642691356000400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T15:09:16.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642689735.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "corey_williams",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T14:42:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642688735.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "randy_bolton",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T14:25:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642685846.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "laura_armstrong",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T13:37:26.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642684175.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stacy_miller",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T13:09:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642681111.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "jenny_cruz",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T12:18:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642680537.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "david_cunningham",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T12:08:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "title": "readme fixes & add contribution guide",
- "state": "open",
- "url": "https://github.com/nhost/nhost/pull/119",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Vadim Smirnov",
- "isHireable": true,
- "url": "https://github.com/FuzzyReason",
- "websiteUrl": "https://fuzzyreason.io/",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-20T11:31:22Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/_vscodes"
- }
- },
- "username": "FuzzyReason",
- "type": "member",
- "score": 1,
- "email": "",
- "organisation": "@nhost",
- "location": "Minsk, Belarus",
- "bio": "Software Engineer && JavaScript Addict"
- },
- "timestamp": "2022-01-20T11:31:22.000Z",
- "type": "pull_request-opened",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642676411.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tony_blevins",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T11:00:11.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Guido Schmitz",
- "isHireable": false,
- "url": "https://github.com/guidsen",
- "websiteUrl": "http://www.guidoschmitz.co",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-20T10:02:04Z"
- }
- ]
- }
- },
- "username": "guidsen",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "@FlexAppeal",
- "location": "Rotterdam, The Netherlands",
- "bio": "NodeJS. ReactJS. APIs. Architecture. Scalability."
- },
- "timestamp": "2022-01-20T10:02:04.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/shuxiaokai",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-20T09:16:10Z"
- }
- ]
- }
- },
- "username": "shuxiaokai",
- "type": "member",
- "score": 0,
- "email": "1660507550@qq.com",
- "organisation": "",
- "location": "Guangdong",
- "bio": "ppppppppython"
- },
- "timestamp": "2022-01-20T09:16:10.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "What do you think the advantage of a new table would be? \nThey are a flexible entity, so we probably would just have a 1-1 relation with tenant and a JSONB field no? ",
- "channel": "dev",
- "slackId": "1642670163.001600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642670163001600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T09:16:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "What do you think the advantage of a new table would be? \nThey are a flexible entity, so we probably would just have a 1-1 relation with tenant and a JSONB field no? ",
- "channel": "dev",
- "slackId": "1642670163.001600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642670163001600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T09:16:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "What do you think the advantage of a new table would be? \nThey are a flexible entity, so we probably would just have a 1-1 relation with tenant and a JSONB field no? ",
- "channel": "dev",
- "slackId": "1642670163.001600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642670163001600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-20T09:16:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "What do you think the advantage of a new table would be? \nThey are a flexible entity, so we probably would just have a 1-1 relation with tenant and a JSONB field no? ",
- "channel": "dev",
- "slackId": "1642670163.001600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642670163001600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-20T09:16:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642669979.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "karen_andrews",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T09:12:59.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/techinoviq9000",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-20T09:04:25Z"
- }
- ]
- }
- },
- "username": "techinoviq9000",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-20T09:04:25.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642666112.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "michael_blair",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T08:08:32.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642661745.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stephanie_allen",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T06:55:45.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642659218.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "casey_smith",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T06:13:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642656236.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "heidi_oconnor",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T05:23:56.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642656123.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stephanie_allen",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T05:22:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642654552.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "calvin_gibbs",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T04:55:52.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642652970.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "calvin_gibbs",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T04:29:30.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642650559.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "donna_colon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T03:49:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642647867.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "dawn_bridges",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T03:04:27.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642643913.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "randy_bolton",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T01:58:33.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642641190.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "brandy_sanders",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T01:13:10.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642640719.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "heidi_oconnor",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T01:05:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642636806.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stacy_miller",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-20T00:00:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642631607.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "randy_bolton",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T22:33:27.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642629901.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "scott_frye",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T22:05:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Gerard Wilkinson",
- "isHireable": true,
- "url": "https://github.com/GerryWilko",
- "websiteUrl": "https://gerardwilkinson.com",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-19T21:57:50Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/GerryWilko"
- }
- },
- "username": "GerryWilko",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "@think-active-labs @ignite-systems",
- "location": "Manchester, UK",
- "bio": "Lead Software Engineer at Ignite Systems and Director at Think Active Labs."
- },
- "timestamp": "2022-01-19T21:57:50.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642621874.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "randy_bolton",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T19:51:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642620230.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "bryan_holland",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T19:23:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642619435.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "calvin_gibbs",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T19:10:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642619006.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "randy_bolton",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T19:03:26.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642618893.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "corey_williams",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T19:01:33.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642616064.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kelly_lambert",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T18:14:24.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642614713.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "lucas_marquez",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:51:53.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "but separating the integrations to another table make some sense",
- "channel": "dev",
- "slackId": "1642612236.003600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642612236003600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:10:36.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "but separating the integrations to another table make some sense",
- "channel": "dev",
- "slackId": "1642612236.003600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642612236003600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:10:36.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "but separating the integrations to another table make some sense",
- "channel": "dev",
- "slackId": "1642612236.003600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642612236003600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:10:36.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "but separating the integrations to another table make some sense",
- "channel": "dev",
- "slackId": "1642612236.003600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642612236003600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:10:36.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "we were thinking putting them in tenant",
- "channel": "dev",
- "slackId": "1642612192.003400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642612192003400?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:09:52.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "we were thinking putting them in tenant",
- "channel": "dev",
- "slackId": "1642612192.003400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642612192003400?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:09:52.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "we were thinking putting them in tenant",
- "channel": "dev",
- "slackId": "1642612192.003400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642612192003400?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:09:52.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "we were thinking putting them in tenant",
- "channel": "dev",
- "slackId": "1642612192.003400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642612192003400?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:09:52.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "cubejs data modeling workshop starting in 5min:\n",
- "channel": "dev",
- "slackId": "1642611938.003200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642611938003200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:05:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "cubejs data modeling workshop starting in 5min:\n",
- "channel": "dev",
- "slackId": "1642611938.003200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642611938003200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:05:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "cubejs data modeling workshop starting in 5min:\n",
- "channel": "dev",
- "slackId": "1642611938.003200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642611938003200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:05:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "cubejs data modeling workshop starting in 5min:\n",
- "channel": "dev",
- "slackId": "1642611938.003200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642611938003200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T17:05:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642610309.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kelly_lambert",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T16:38:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642608763.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "david_rogers",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T16:12:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642607508.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "krystal_summers",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T15:51:48.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642606364.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "krystal_summers",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T15:32:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642605559.002500",
- "thread": {
- "id": "1642595889.001600",
- "body": "2. Yes :+1: tags could be related to Members or any other entity, for example activities, or lookalike members if we want to split those out of Members"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T15:19:19.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642605559.002500",
- "thread": {
- "id": "1642595889.001600",
- "body": "2. Yes :+1: tags could be related to Members or any other entity, for example activities, or lookalike members if we want to split those out of Members"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T15:19:19.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642605559.002500",
- "thread": {
- "id": "1642595889.001600",
- "body": "2. Yes :+1: tags could be related to Members or any other entity, for example activities, or lookalike members if we want to split those out of Members"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T15:19:19.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642605559.002500",
- "thread": {
- "id": "1642595889.001600",
- "body": "2. Yes :+1: tags could be related to Members or any other entity, for example activities, or lookalike members if we want to split those out of Members"
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T15:19:19.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642604969.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "madison_miller",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T15:09:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Domains are case insensitive but paths are (usually).\nTest this:\nhttp://www.google.com/intl/en/about/corporate/index.html\nhttp://www.google.com/intl/en/ABOUT/corporate/index.html",
- "title": "Functions filenames fail if they don't match exactly the filename",
- "parent_url": "https://github.com/nhost/nhost/issues/92",
- "url": "https://github.com/nhost/nhost/issues/92#issuecomment-1016488761",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Johan Eliasson",
- "isHireable": false,
- "url": "https://github.com/elitan",
- "websiteUrl": "https://nhost.io",
- "actions": [
- {
- "score": 3,
- "timestamp": "2021-03-01T15:34:14Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/elitasson"
- }
- },
- "username": "elitan",
- "type": "member",
- "score": 10,
- "email": "johan@eliasson.me",
- "organisation": "",
- "location": "The Internet",
- "bio": "Exploiting regularities to my benefit."
- },
- "timestamp": "2022-01-19T13:55:33.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642597094.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "thomas_moreno",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:58:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Description\nChecklist 🔏\nSome important checks that must be ensured before merging:\nDeploy to staging\nDeployment checklist\n\n Make sure all AWS λ functions are up to date with your version (if applicable)\n Make sure the anton-environment and soa-environment are updated and pushed\n\nFunctionality\n\n Has the functionality been checked in a normal staging tenant? (not local)\n Has the functionality been checked in the large tenant? (team+large@crowd.dev)\n Has the functionality been checked in an empty tenant? (team+empty@crowd.dev)\n Is there any more edge cases that should be taken into account?\n\nCode quality\n\n Are there comments in the main functionality of the code?\n Are all tests passing?\n Are all URLs to external services in .env files? Never hard-coded\n Are all secrets in anton-environment? Never, ever hard-coded\n\n🔥🚀💪🏼",
- "title": "[WIP] Refactor widgets",
- "state": "open",
- "url": "https://github.com/CrowdHQ/crowd-web/pull/70",
- "repo": "https://github.com/CrowdHQ/crowd-web"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "mariobalca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-19T12:53:42.000Z",
- "type": "pull_request-opened",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Btw where will integrations be stored now that we don’t have a project?",
- "channel": "dev",
- "slackId": "1642596058.002200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642596058002200?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:40:58.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Btw where will integrations be stored now that we don’t have a project?",
- "channel": "dev",
- "slackId": "1642596058.002200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642596058002200?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:40:58.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Btw where will integrations be stored now that we don’t have a project?",
- "channel": "dev",
- "slackId": "1642596058.002200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642596058002200?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-19T12:40:58.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Btw where will integrations be stored now that we don’t have a project?",
- "channel": "dev",
- "slackId": "1642596058.002200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642596058002200?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:40:58.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero @Jonathan Reimer thoughts?",
- "channel": "dev",
- "slackId": "1642595969.002000",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595969002000?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:39:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero @Jonathan Reimer thoughts?",
- "channel": "dev",
- "slackId": "1642595969.002000",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595969002000?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:39:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero @Jonathan Reimer thoughts?",
- "channel": "dev",
- "slackId": "1642595969.002000",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595969002000?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-19T12:39:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero @Jonathan Reimer thoughts?",
- "channel": "dev",
- "slackId": "1642595969.002000",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595969002000?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:39:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "^ But this is just an idea that seemed interesting enough to discuss giving the fact that we’re creating a new db",
- "channel": "dev",
- "slackId": "1642595952.001800",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595952001800?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:39:12.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "^ But this is just an idea that seemed interesting enough to discuss giving the fact that we’re creating a new db",
- "channel": "dev",
- "slackId": "1642595952.001800",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595952001800?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:39:12.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "^ But this is just an idea that seemed interesting enough to discuss giving the fact that we’re creating a new db",
- "channel": "dev",
- "slackId": "1642595952.001800",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595952001800?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-19T12:39:12.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "^ But this is just an idea that seemed interesting enough to discuss giving the fact that we’re creating a new db",
- "channel": "dev",
- "slackId": "1642595952.001800",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595952001800?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:39:12.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Vlad Gorodetsky",
- "isHireable": false,
- "url": "https://github.com/bai",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-19T12:38:56Z"
- }
- ]
- }
- },
- "username": "bai",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:38:56.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "2. Yes :+1: tags could be related to Members or any other entity, for example activities, or lookalike members if we want to split those out of Members",
- "channel": "dev",
- "slackId": "1642595889.001600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595889001600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:38:09.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "2. Yes :+1: tags could be related to Members or any other entity, for example activities, or lookalike members if we want to split those out of Members",
- "channel": "dev",
- "slackId": "1642595889.001600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595889001600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:38:09.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "2. Yes :+1: tags could be related to Members or any other entity, for example activities, or lookalike members if we want to split those out of Members",
- "channel": "dev",
- "slackId": "1642595889.001600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595889001600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-19T12:38:09.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "2. Yes :+1: tags could be related to Members or any other entity, for example activities, or lookalike members if we want to split those out of Members",
- "channel": "dev",
- "slackId": "1642595889.001600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595889001600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:38:09.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "1. yeah ur right - widgets need a nullable reportId field (so that they can belong to a report or not)\n2. what do you mean by polymorhpic? Like in the future activities may have tags as well? or smthn else\n3. yeah some of them is missing id field I'll add them thanks for pointing out",
- "channel": "dev",
- "slackId": "1642595810.001400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595810001400?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:36:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "1. yeah ur right - widgets need a nullable reportId field (so that they can belong to a report or not)\n2. what do you mean by polymorhpic? Like in the future activities may have tags as well? or smthn else\n3. yeah some of them is missing id field I'll add them thanks for pointing out",
- "channel": "dev",
- "slackId": "1642595810.001400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595810001400?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:36:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "1. yeah ur right - widgets need a nullable reportId field (so that they can belong to a report or not)\n2. what do you mean by polymorhpic? Like in the future activities may have tags as well? or smthn else\n3. yeah some of them is missing id field I'll add them thanks for pointing out",
- "channel": "dev",
- "slackId": "1642595810.001400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595810001400?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:36:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "1. yeah ur right - widgets need a nullable reportId field (so that they can belong to a report or not)\n2. what do you mean by polymorhpic? Like in the future activities may have tags as well? or smthn else\n3. yeah some of them is missing id field I'll add them thanks for pointing out",
- "channel": "dev",
- "slackId": "1642595810.001400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642595810001400?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T12:36:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Description\nCreate default report and related widgets after tenant creation\nChecklist 🔏\nSome important checks that must be ensured before merging:\nDeploy to staging\nDeployment checklist\n\n Make sure all AWS λ functions are up to date with your version (if applicable)\n Make sure the anton-environment and soa-environment are updated and pushed\n\nFunctionality\n\n Has the functionality been checked in a normal staging tenant? (not local)\n Has the functionality been checked in the large tenant? (team+large@crowd.dev)\n Has the functionality been checked in an empty tenant? (team+empty@crowd.dev)\n Is there any more edge cases that should be taken into account?\n\nCode quality\n\n Are there comments in the main functionality of the code?\n Are all tests passing?\n Are all URLs to external services in .env files? Never hard-coded\n Are all secrets in anton-environment? Never, ever hard-coded\n\n🔥🚀💪🏼",
- "title": "Create default report and widgets after tenant creation",
- "state": "open",
- "url": "https://github.com/CrowdHQ/crowd-web/pull/69",
- "repo": "https://github.com/CrowdHQ/crowd-web"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "mariobalca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-19T12:25:08.000Z",
- "type": "pull_request-opened",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "anand7u",
- "isHireable": true,
- "url": "https://github.com/Anan7Codes",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-30T12:42:32Z"
- }
- ],
- "websiteUrl": "rough-paper.com"
- },
- "twitter": {
- "url": "https://twitter.com/Anan7Tweets"
- }
- },
- "username": "Anan7Codes",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "Roughpaper Technologies",
- "location": "Dubai",
- "bio": "I think I'm a decent developer."
- },
- "timestamp": "2022-01-19T12:21:22.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "This is intentional. URLs and files are case-sensitive. However, I would recommend keeping all function file names to lowercase.\n\nFair enough that it is intentional.\nJust a comment, URLs are not case sensitive for the user. Try write in GoOgle.com in your browser and you'll still be directed to google.com. Same with if you try and capitalize a article url on e.g. theverge.com",
- "title": "Functions filenames fail if they don't match exactly the filename",
- "parent_url": "https://github.com/nhost/nhost/issues/92",
- "url": "https://github.com/nhost/nhost/issues/92#issuecomment-1016396935",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/Svarto",
- "actions": [
- {
- "score": 3,
- "timestamp": "2021-02-20T09:40:10Z"
- }
- ]
- }
- },
- "username": "Svarto",
- "type": "member",
- "score": 8,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:57:21.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "This is intentional. URLs and files are case-sensitive. However, I would recommend keeping all function file names to lowercase.",
- "title": "Functions filenames fail if they don't match exactly the filename",
- "parent_url": "https://github.com/nhost/nhost/issues/92",
- "url": "https://github.com/nhost/nhost/issues/92#issuecomment-1016392086",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Johan Eliasson",
- "isHireable": false,
- "url": "https://github.com/elitan",
- "websiteUrl": "https://nhost.io",
- "actions": [
- {
- "score": 3,
- "timestamp": "2021-03-01T15:34:14Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/elitasson"
- }
- },
- "username": "elitan",
- "type": "member",
- "score": 10,
- "email": "johan@eliasson.me",
- "organisation": "",
- "location": "The Internet",
- "bio": "Exploiting regularities to my benefit."
- },
- "timestamp": "2022-01-19T11:50:20.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "This is now working 👍\nPlease make sure to use the new CLI and the new npm packages. All info here: https://docs.nhost.io/get-started",
- "title": "auth.requestPasswordChange not working - message: \"\"email\" must be a string\"",
- "parent_url": "https://github.com/nhost/nhost/issues/83",
- "url": "https://github.com/nhost/nhost/issues/83#issuecomment-1016380648",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Johan Eliasson",
- "isHireable": false,
- "url": "https://github.com/elitan",
- "websiteUrl": "https://nhost.io",
- "actions": [
- {
- "score": 3,
- "timestamp": "2021-03-01T15:34:14Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/elitasson"
- }
- },
- "username": "elitan",
- "type": "member",
- "score": 10,
- "email": "johan@eliasson.me",
- "organisation": "",
- "location": "The Internet",
- "bio": "Exploiting regularities to my benefit."
- },
- "timestamp": "2022-01-19T11:40:58.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "This is now fixed in both prod and with the CLI.\nBtw @camillo18tre, make sure to use our CLI specified here: https://docs.nhost.io/platform/nhost/local-development\nand this npm package: @nhost/nhost-js.\nThe ones you're referring to are old packages for Nhost v1.",
- "title": "auth.changePassword not working - message: old_password must be a string",
- "parent_url": "https://github.com/nhost/nhost/issues/82",
- "url": "https://github.com/nhost/nhost/issues/82#issuecomment-1016379364",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Johan Eliasson",
- "isHireable": false,
- "url": "https://github.com/elitan",
- "websiteUrl": "https://nhost.io",
- "actions": [
- {
- "score": 3,
- "timestamp": "2021-03-01T15:34:14Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/elitasson"
- }
- },
- "username": "elitan",
- "type": "member",
- "score": 10,
- "email": "johan@eliasson.me",
- "organisation": "",
- "location": "The Internet",
- "bio": "Exploiting regularities to my benefit."
- },
- "timestamp": "2022-01-19T11:39:44.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642592355.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "marie_warner",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:39:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Done:\nhttps://github.com/nhost/nhost/tree/main/templates/web/react-apollo",
- "title": "Updating react template with TypeScript + codegen support.",
- "parent_url": "https://github.com/nhost/nhost/issues/54",
- "url": "https://github.com/nhost/nhost/issues/54#issuecomment-1016377856",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Johan Eliasson",
- "isHireable": false,
- "url": "https://github.com/elitan",
- "websiteUrl": "https://nhost.io",
- "actions": [
- {
- "score": 3,
- "timestamp": "2021-03-01T15:34:14Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/elitasson"
- }
- },
- "username": "elitan",
- "type": "member",
- "score": 10,
- "email": "johan@eliasson.me",
- "organisation": "",
- "location": "The Internet",
- "bio": "Exploiting regularities to my benefit."
- },
- "timestamp": "2022-01-19T11:38:22.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Storage rules are now part of Hasura permissions.",
- "title": "Move Storage Rules to Storage Tab in Console",
- "parent_url": "https://github.com/nhost/nhost/issues/25",
- "url": "https://github.com/nhost/nhost/issues/25#issuecomment-1016377139",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Johan Eliasson",
- "isHireable": false,
- "url": "https://github.com/elitan",
- "websiteUrl": "https://nhost.io",
- "actions": [
- {
- "score": 3,
- "timestamp": "2021-03-01T15:34:14Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/elitasson"
- }
- },
- "username": "elitan",
- "type": "member",
- "score": 10,
- "email": "johan@eliasson.me",
- "organisation": "",
- "location": "The Internet",
- "bio": "Exploiting regularities to my benefit."
- },
- "timestamp": "2022-01-19T11:37:38.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "This is working (and has been working for a few months) :P",
- "title": "Allow Deployments from Specific Branches",
- "parent_url": "https://github.com/nhost/nhost/issues/22",
- "url": "https://github.com/nhost/nhost/issues/22#issuecomment-1016376740",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Johan Eliasson",
- "isHireable": false,
- "url": "https://github.com/elitan",
- "websiteUrl": "https://nhost.io",
- "actions": [
- {
- "score": 3,
- "timestamp": "2021-03-01T15:34:14Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/elitasson"
- }
- },
- "username": "elitan",
- "type": "member",
- "score": 10,
- "email": "johan@eliasson.me",
- "organisation": "",
- "location": "The Internet",
- "bio": "Exploiting regularities to my benefit."
- },
- "timestamp": "2022-01-19T11:37:16.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Storage rules are now part of Hasura permissions.",
- "title": "Versioning of storage rules",
- "parent_url": "https://github.com/nhost/nhost/issues/36",
- "url": "https://github.com/nhost/nhost/issues/36#issuecomment-1016375126",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Johan Eliasson",
- "isHireable": false,
- "url": "https://github.com/elitan",
- "websiteUrl": "https://nhost.io",
- "actions": [
- {
- "score": 3,
- "timestamp": "2021-03-01T15:34:14Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/elitasson"
- }
- },
- "username": "elitan",
- "type": "member",
- "score": 10,
- "email": "johan@eliasson.me",
- "organisation": "",
- "location": "The Internet",
- "bio": "Exploiting regularities to my benefit."
- },
- "timestamp": "2022-01-19T11:35:45.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "This is now implemented. All tables in auth and storage schemas are using camelCase.\nReference: https://github.com/nhost/hasura-auth/blob/main/src/metadata.ts#L211-L235",
- "title": "Add support for camelCase in users table",
- "parent_url": "https://github.com/nhost/nhost/issues/52",
- "url": "https://github.com/nhost/nhost/issues/52#issuecomment-1016373059",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Johan Eliasson",
- "isHireable": false,
- "url": "https://github.com/elitan",
- "websiteUrl": "https://nhost.io",
- "actions": [
- {
- "score": 3,
- "timestamp": "2021-03-01T15:34:14Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/elitasson"
- }
- },
- "username": "elitan",
- "type": "member",
- "score": 10,
- "email": "johan@eliasson.me",
- "organisation": "",
- "location": "The Internet",
- "bio": "Exploiting regularities to my benefit."
- },
- "timestamp": "2022-01-19T11:33:45.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Apart from these 3 comments looks really good! Nice job guys :muscle:",
- "channel": "dev",
- "slackId": "1642591562.001200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591562001200?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:26:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Apart from these 3 comments looks really good! Nice job guys :muscle:",
- "channel": "dev",
- "slackId": "1642591562.001200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591562001200?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:26:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Apart from these 3 comments looks really good! Nice job guys :muscle:",
- "channel": "dev",
- "slackId": "1642591562.001200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591562001200?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-19T11:26:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Apart from these 3 comments looks really good! Nice job guys :muscle:",
- "channel": "dev",
- "slackId": "1642591562.001200",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591562001200?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:26:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Finally. just noticed that the relationship table `tenantUsers` has a proper id as primary key, while the member relationship tables don’t\nNot sure if this was on purpose but maybe we could use a consistent approach for all of these",
- "channel": "dev",
- "slackId": "1642591544.001000",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591544001000?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:25:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Finally. just noticed that the relationship table `tenantUsers` has a proper id as primary key, while the member relationship tables don’t\nNot sure if this was on purpose but maybe we could use a consistent approach for all of these",
- "channel": "dev",
- "slackId": "1642591544.001000",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591544001000?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:25:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Finally. just noticed that the relationship table `tenantUsers` has a proper id as primary key, while the member relationship tables don’t\nNot sure if this was on purpose but maybe we could use a consistent approach for all of these",
- "channel": "dev",
- "slackId": "1642591544.001000",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591544001000?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-19T11:25:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Finally. just noticed that the relationship table `tenantUsers` has a proper id as primary key, while the member relationship tables don’t\nNot sure if this was on purpose but maybe we could use a consistent approach for all of these",
- "channel": "dev",
- "slackId": "1642591544.001000",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591544001000?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:25:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Also, would it make sense to make tags polymorphic right from the start?",
- "channel": "dev",
- "slackId": "1642591311.000800",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591311000800?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:21:51.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Also, would it make sense to make tags polymorphic right from the start?",
- "channel": "dev",
- "slackId": "1642591311.000800",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591311000800?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:21:51.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Also, would it make sense to make tags polymorphic right from the start?",
- "channel": "dev",
- "slackId": "1642591311.000800",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591311000800?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-19T11:21:51.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Also, would it make sense to make tags polymorphic right from the start?",
- "channel": "dev",
- "slackId": "1642591311.000800",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591311000800?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:21:51.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I think we might need a non-mandatory relationship between widgets and reports, so widgets can belong to reports, or they can be standalone (for example dashboard widgets)",
- "channel": "dev",
- "slackId": "1642591210.000600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591210000600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:20:10.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I think we might need a non-mandatory relationship between widgets and reports, so widgets can belong to reports, or they can be standalone (for example dashboard widgets)",
- "channel": "dev",
- "slackId": "1642591210.000600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591210000600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:20:10.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I think we might need a non-mandatory relationship between widgets and reports, so widgets can belong to reports, or they can be standalone (for example dashboard widgets)",
- "channel": "dev",
- "slackId": "1642591210.000600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591210000600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-19T11:20:10.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I think we might need a non-mandatory relationship between widgets and reports, so widgets can belong to reports, or they can be standalone (for example dashboard widgets)",
- "channel": "dev",
- "slackId": "1642591210.000600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642591210000600?thread_ts=1642590874.000300&cid=C01NBV2BDDK",
- "thread": {
- "id": "1642590874.000300",
- "body": "table-entity relations"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:20:10.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1642590874.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642590874000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:14:34.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1642590874.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642590874000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:14:34.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1642590874.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642590874000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:14:34.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "dev",
- "slackId": "1642590874.000300",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642590874000300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:14:34.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642590772.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "jenny_cruz",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T11:12:52.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642589375.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kathleen_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T10:49:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642589168.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "robert_harmon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T10:46:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642587587.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "donna_colon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T10:19:47.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Johanna Blom",
- "isHireable": true,
- "url": "https://github.com/idsintehittapa",
- "websiteUrl": "https://www.linkedin.com/in/johanna-blom-2419a181/",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-19T09:18:35Z"
- }
- ]
- }
- },
- "username": "idsintehittapa",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "Mentimeter",
- "location": "Stockholm, Sweden",
- "bio": "Front-end developer.\r\nCreative code, art and sociology makes me tick. I use JS (with different frameworks), CSS, and HTML to develop fun and creative things."
- },
- "timestamp": "2022-01-19T09:18:35.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642583249.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "ethan_clay",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T09:07:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642582891.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tony_blevins",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T09:01:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642576492.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "michelle_calderon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T07:14:52.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642573238.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tony_blevins",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T06:20:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Issue was resolved on the Nhost end. Thanks team!",
- "title": "Bug - x-hasura-user-id is not accessible in production function",
- "parent_url": "https://github.com/nhost/nhost/issues/80",
- "url": "https://github.com/nhost/nhost/issues/80#issuecomment-1016117708",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Tuan Duong",
- "isHireable": true,
- "url": "https://github.com/wontwon",
- "actions": [
- {
- "score": 3,
- "timestamp": "2021-11-25T06:52:17Z"
- }
- ]
- }
- },
- "username": "wontwon",
- "type": "member",
- "score": 1,
- "email": "tuanduong15@gmail.com",
- "organisation": "",
- "location": "Seattle, WA",
- "bio": ""
- },
- "timestamp": "2022-01-19T06:12:31.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642572008.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kathleen_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T06:00:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642569175.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "bryan_holland",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T05:12:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642562522.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "donna_colon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T03:22:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642561085.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kathleen_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T02:58:05.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/sebagudelo",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-27T02:58:38Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/sebagudelo"
- }
- },
- "username": "sebagudelo",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-19T02:26:38.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642550745.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kelly_lambert",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-19T00:05:45.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642547368.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "michelle_calderon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T23:09:28.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost-js-sdk"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Brayden",
- "isHireable": true,
- "url": "https://github.com/BraydenTW",
- "websiteUrl": "braydentw.com"
- }
- },
- "username": "BraydenTW",
- "type": "member",
- "score": 0,
- "email": "brayden45.dev@gmail.com",
- "organisation": "",
- "location": "The Milky Way",
- "bio": "Frontend Dev & Designer | React, NextJS, Tailwind | Studio C Fan (the old cast)"
- },
- "timestamp": "2022-01-18T22:49:24.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642535340.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tara_norman",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T19:49:00.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/hasura-backend-plus"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Josh West",
- "isHireable": false,
- "url": "https://github.com/jooosh"
- }
- },
- "username": "jooosh",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "Super Humane",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-18T19:33:10.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642534179.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "dawn_bridges",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T19:29:39.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642532677.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "heidi_oconnor",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T19:04:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642532088.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "michelle_calderon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T18:54:48.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642530704.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "corey_williams",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T18:31:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642530171.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "robert_harmon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T18:22:51.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642523703.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "joseph_quinn",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T16:35:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "good stuff",
- "channel": "sign-ups",
- "slackId": "1642520065.000300",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642520065000300?thread_ts=1642519553.000100&cid=C029LDRDU6R"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T15:34:25.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "good stuff",
- "channel": "sign-ups",
- "slackId": "1642520065.000300",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642520065000300?thread_ts=1642519553.000100&cid=C029LDRDU6R"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T15:34:25.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "good stuff",
- "channel": "sign-ups",
- "slackId": "1642520065.000300",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642520065000300?thread_ts=1642519553.000100&cid=C029LDRDU6R"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T15:34:25.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "good stuff",
- "channel": "sign-ups",
- "slackId": "1642520065.000300",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642520065000300?thread_ts=1642519553.000100&cid=C029LDRDU6R"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T15:34:25.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1642520060.000200",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T15:34:20.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1642520060.000200",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T15:34:20.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1642520060.000200",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T15:34:20.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1642520060.000200",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T15:34:20.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642520040.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "benjamin_howard",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T15:34:00.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642516679.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stephanie_allen",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T14:37:59.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642515697.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stephanie_allen",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T14:21:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642508781.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "jordan_wilson",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T12:26:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642504872.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tony_blevins",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T11:21:12.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/jrrglr",
- "actions": [
- {
- "score": 3,
- "timestamp": "2022-01-28T06:02:49Z"
- }
- ]
- }
- },
- "username": "jrrglr",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-18T10:35:52.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642499094.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "calvin_gibbs",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T09:44:54.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642497889.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tony_blevins",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T09:24:49.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642493846.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "mason_strickland",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T08:17:26.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642492001.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "laura_armstrong",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T07:46:41.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642490525.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "michael_blair",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T07:22:05.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/hasura-backend-plus"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Shoki Hata",
- "isHireable": false,
- "url": "https://github.com/sho-hata",
- "websiteUrl": "https://qiita.com/sho-hata"
- },
- "twitter": {
- "url": "https://twitter.com/sho_hata_"
- }
- },
- "username": "sho-hata",
- "type": "member",
- "score": 0,
- "email": "syouki100241@gmail.com",
- "organisation": "Ateam Inc.",
- "location": "Toyama, Japan",
- "bio": "Web application developer,\r\nGolang, Hasura user"
- },
- "timestamp": "2022-01-18T06:53:17.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642484092.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "evan_stevenson",
- "type": "member",
- "score": 3,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T05:34:52.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642482761.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "laura_armstrong",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T05:12:41.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642480839.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "jenny_cruz",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T04:40:39.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642468516.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "marie_warner",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-18T01:15:16.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642461634.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "laura_armstrong",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T23:20:34.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642459763.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "brandy_sanders",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T22:49:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642455402.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "karen_andrews",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T21:36:42.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642454730.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "joseph_quinn",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T21:25:30.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642450008.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "jenny_cruz",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T20:06:48.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Vahagn Mkrtchyan",
- "isHireable": true,
- "url": "https://github.com/iCyberon",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-17T19:38:48Z"
- }
- ]
- }
- },
- "username": "iCyberon",
- "type": "member",
- "score": 0,
- "email": "vahagn.mkrtchyan@gmail.com",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-17T19:38:48.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Andrew",
- "isHireable": false,
- "url": "https://github.com/kungpaogao",
- "websiteUrl": "andrewgao.org",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-17T17:25:17Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/ndrewgao"
- }
- },
- "username": "kungpaogao",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "earth",
- "bio": "cs @ cornell"
- },
- "timestamp": "2022-01-17T17:25:17.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642437253.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "gail_white",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T16:34:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642434252.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "ethan_clay",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T15:44:12.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642432869.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "melissa_byrd",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T15:21:09.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Ivan Voitovych",
- "isHireable": false,
- "url": "https://github.com/ivanvoitovych",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-17T14:30:23Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/VoitovychIvan"
- }
- },
- "username": "ivanvoitovych",
- "type": "member",
- "score": 0,
- "email": "voitovych.ivan.v@gmail.com",
- "organisation": "Working for cats",
- "location": "Lviv",
- "bio": ""
- },
- "timestamp": "2022-01-17T14:30:23.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642428659.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "gail_white",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T14:10:59.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642423518.002800",
- "thread": {
- "id": "1642418534.002100",
- "body": "Looking good on staging. Deploying soon"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T12:45:18.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642423518.002800",
- "thread": {
- "id": "1642418534.002100",
- "body": "Looking good on staging. Deploying soon"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T12:45:18.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642423518.002800",
- "thread": {
- "id": "1642418534.002100",
- "body": "Looking good on staging. Deploying soon"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-17T12:45:18.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1642423518.002800",
- "thread": {
- "id": "1642418534.002100",
- "body": "Looking good on staging. Deploying soon"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T12:45:18.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642422883.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "donna_colon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T12:34:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642419594.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "benjamin_howard",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:39:54.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "a",
- "channel": "c1"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-03T18:09:50Z"
- }
- ]
- },
- "discord": {}
- },
- "username": "joanreyero",
- "type": "member",
- "score": 10,
- "email": "joan@crowd.dev",
- "organisation": "@CrowdDevHQ",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-17T11:34:56.790Z",
- "type": "message",
- "isContribution": true,
- "platform": "discord"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1642418623.002400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418623002400?thread_ts=1642069668.001600&cid=C02LWNKS17B",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are always zeroed now? the y-axis should still show the “total members” and not the change, right?\n\nFurthermore, the # of new members in the period does not match the graph."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:23:43.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1642418623.002400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418623002400?thread_ts=1642069668.001600&cid=C02LWNKS17B",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are always zeroed now? the y-axis should still show the “total members” and not the change, right?\n\nFurthermore, the # of new members in the period does not match the graph."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:23:43.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1642418623.002400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418623002400?thread_ts=1642069668.001600&cid=C02LWNKS17B",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are always zeroed now? the y-axis should still show the “total members” and not the change, right?\n\nFurthermore, the # of new members in the period does not match the graph."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-17T11:23:43.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1642418623.002400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418623002400?thread_ts=1642069668.001600&cid=C02LWNKS17B",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are always zeroed now? the y-axis should still show the “total members” and not the change, right?\n\nFurthermore, the # of new members in the period does not match the graph."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-17T11:23:43.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1642418536.002300",
- "thread": {
- "id": "1642418513.001900",
- "body": "ah okay, sorry never mind than"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:22:16.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1642418536.002300",
- "thread": {
- "id": "1642418513.001900",
- "body": "ah okay, sorry never mind than"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:22:16.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1642418536.002300",
- "thread": {
- "id": "1642418513.001900",
- "body": "ah okay, sorry never mind than"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-17T11:22:16.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1642418536.002300",
- "thread": {
- "id": "1642418513.001900",
- "body": "ah okay, sorry never mind than"
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-17T11:22:16.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Looking good on staging. Deploying soon",
- "channel": "bugs",
- "slackId": "1642418534.002100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418534002100?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:22:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Looking good on staging. Deploying soon",
- "channel": "bugs",
- "slackId": "1642418534.002100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418534002100?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:22:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Looking good on staging. Deploying soon",
- "channel": "bugs",
- "slackId": "1642418534.002100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418534002100?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-17T11:22:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Looking good on staging. Deploying soon",
- "channel": "bugs",
- "slackId": "1642418534.002100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418534002100?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-17T11:22:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "ah okay, sorry never mind than",
- "channel": "bugs",
- "slackId": "1642418513.001900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418513001900?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:21:53.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "ah okay, sorry never mind than",
- "channel": "bugs",
- "slackId": "1642418513.001900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418513001900?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:21:53.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "ah okay, sorry never mind than",
- "channel": "bugs",
- "slackId": "1642418513.001900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418513001900?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:21:53.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "ah okay, sorry never mind than",
- "channel": "bugs",
- "slackId": "1642418513.001900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418513001900?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:21:53.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "That’s what we discussed in the planning. Mario pushed the fixes. I am now checking them on staging and then will deploy to prod",
- "channel": "bugs",
- "slackId": "1642418489.001700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418489001700?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:21:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "That’s what we discussed in the planning. Mario pushed the fixes. I am now checking them on staging and then will deploy to prod",
- "channel": "bugs",
- "slackId": "1642418489.001700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418489001700?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:21:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "That’s what we discussed in the planning. Mario pushed the fixes. I am now checking them on staging and then will deploy to prod",
- "channel": "bugs",
- "slackId": "1642418489.001700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418489001700?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-17T11:21:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "That’s what we discussed in the planning. Mario pushed the fixes. I am now checking them on staging and then will deploy to prod",
- "channel": "bugs",
- "slackId": "1642418489.001700",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418489001700?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-17T11:21:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Weird, it’s not happening to me in local\n@Joan Reyero is the latest version of `main` deployed to prod?",
- "channel": "bugs",
- "slackId": "1642418477.001500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418477001500?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:21:17.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Weird, it’s not happening to me in local\n@Joan Reyero is the latest version of `main` deployed to prod?",
- "channel": "bugs",
- "slackId": "1642418477.001500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418477001500?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:21:17.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Weird, it’s not happening to me in local\n@Joan Reyero is the latest version of `main` deployed to prod?",
- "channel": "bugs",
- "slackId": "1642418477.001500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418477001500?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-17T11:21:17.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Weird, it’s not happening to me in local\n@Joan Reyero is the latest version of `main` deployed to prod?",
- "channel": "bugs",
- "slackId": "1642418477.001500",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418477001500?thread_ts=1642418363.001100&cid=C02LWNKS17B",
- "thread": {
- "id": "1642418363.001100",
- "body": "can’t create widgets with dimensions :confused: let me know if you need more info\n"
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:21:17.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "bugs",
- "slackId": "1642418363.001100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418363001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:19:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "bugs",
- "slackId": "1642418363.001100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418363001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:19:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "bugs",
- "slackId": "1642418363.001100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418363001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:19:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "bugs",
- "slackId": "1642418363.001100",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418363001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:19:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "The ones we’ve discussed today?",
- "channel": "bugs",
- "slackId": "1642418256.000800",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418256000800?thread_ts=1642069668.001600&cid=C02LWNKS17B",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are always zeroed now? the y-axis should still show the “total members” and not the change, right?\n\nFurthermore, the # of new members in the period does not match the graph."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:17:36.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "The ones we’ve discussed today?",
- "channel": "bugs",
- "slackId": "1642418256.000800",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418256000800?thread_ts=1642069668.001600&cid=C02LWNKS17B",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are always zeroed now? the y-axis should still show the “total members” and not the change, right?\n\nFurthermore, the # of new members in the period does not match the graph."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:17:36.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "The ones we’ve discussed today?",
- "channel": "bugs",
- "slackId": "1642418256.000800",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418256000800?thread_ts=1642069668.001600&cid=C02LWNKS17B",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are always zeroed now? the y-axis should still show the “total members” and not the change, right?\n\nFurthermore, the # of new members in the period does not match the graph."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-17T11:17:36.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "The ones we’ve discussed today?",
- "channel": "bugs",
- "slackId": "1642418256.000800",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418256000800?thread_ts=1642069668.001600&cid=C02LWNKS17B",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are always zeroed now? the y-axis should still show the “total members” and not the change, right?\n\nFurthermore, the # of new members in the period does not match the graph."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:17:36.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero @Mario Balca did we add the suggestions for y-axis somewhere?",
- "channel": "bugs",
- "slackId": "1642418181.000400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418181000400?thread_ts=1642069668.001600&cid=C02LWNKS17B",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are always zeroed now? the y-axis should still show the “total members” and not the change, right?\n\nFurthermore, the # of new members in the period does not match the graph."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:16:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero @Mario Balca did we add the suggestions for y-axis somewhere?",
- "channel": "bugs",
- "slackId": "1642418181.000400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418181000400?thread_ts=1642069668.001600&cid=C02LWNKS17B",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are always zeroed now? the y-axis should still show the “total members” and not the change, right?\n\nFurthermore, the # of new members in the period does not match the graph."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:16:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero @Mario Balca did we add the suggestions for y-axis somewhere?",
- "channel": "bugs",
- "slackId": "1642418181.000400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418181000400?thread_ts=1642069668.001600&cid=C02LWNKS17B",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are always zeroed now? the y-axis should still show the “total members” and not the change, right?\n\nFurthermore, the # of new members in the period does not match the graph."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:16:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero @Mario Balca did we add the suggestions for y-axis somewhere?",
- "channel": "bugs",
- "slackId": "1642418181.000400",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642418181000400?thread_ts=1642069668.001600&cid=C02LWNKS17B",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are always zeroed now? the y-axis should still show the “total members” and not the change, right?\n\nFurthermore, the # of new members in the period does not match the graph."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T11:16:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642416750.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "krystal_summers",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T10:52:30.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero fixed the error :v:",
- "channel": "dev",
- "slackId": "1642414334.000400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642414334000400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T10:12:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero fixed the error :v:",
- "channel": "dev",
- "slackId": "1642414334.000400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642414334000400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T10:12:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero fixed the error :v:",
- "channel": "dev",
- "slackId": "1642414334.000400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642414334000400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-17T10:12:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero fixed the error :v:",
- "channel": "dev",
- "slackId": "1642414334.000400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1642414334000400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T10:12:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642413416.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "martha_calhoun",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T09:56:56.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642413284.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "heather_chapman",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T09:54:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "test",
- "channel": "twitter",
- "slackId": "1642406155.000200",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642406155000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T07:55:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "test",
- "channel": "twitter",
- "slackId": "1642406155.000200",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642406155000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T07:55:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "test",
- "channel": "twitter",
- "slackId": "1642406155.000200",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642406155000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T07:55:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "test",
- "channel": "twitter",
- "slackId": "1642406155.000200",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642406155000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T07:55:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642403721.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kathleen_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T07:15:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/xdimension",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-17T03:33:17Z"
- }
- ]
- }
- },
- "username": "xdimension",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-17T03:33:17.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642387082.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "sherri_butler",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T02:38:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642385527.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kathleen_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T02:12:07.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642381983.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "joseph_quinn",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T01:13:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642381614.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "gail_white",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T01:06:54.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642377857.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "james_johnson",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-17T00:04:17.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642376956.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "martha_calhoun",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T23:49:16.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642375813.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "brenda_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T23:30:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Fouad Mannou",
- "isHireable": true,
- "url": "https://github.com/fouadmen",
- "websiteUrl": "https://fouadmannou.com/",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-16T23:18:13Z"
- }
- ]
- }
- },
- "username": "fouadmen",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-16T23:18:13.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642372358.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "martha_calhoun",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T22:32:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642372169.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "lucas_marquez",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T22:29:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "fire",
- "slackId": "1642363001.000700",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T19:56:41.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "fire",
- "slackId": "1642363001.000700",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T19:56:41.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "fire",
- "slackId": "1642363001.000700",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T19:56:41.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "fire",
- "slackId": "1642363001.000700",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T19:56:41.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "waitlist doesn’t know weekends",
- "channel": "sign-ups",
- "slackId": "1642362986.000600",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642362986000600"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T19:56:26.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "waitlist doesn’t know weekends",
- "channel": "sign-ups",
- "slackId": "1642362986.000600",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642362986000600"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T19:56:26.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "waitlist doesn’t know weekends",
- "channel": "sign-ups",
- "slackId": "1642362986.000600",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642362986000600"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T19:56:26.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "waitlist doesn’t know weekends",
- "channel": "sign-ups",
- "slackId": "1642362986.000600",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642362986000600"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T19:56:26.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost-js-sdk"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Milan van Schaik",
- "isHireable": false,
- "url": "https://github.com/milanvanschaik",
- "websiteUrl": "http://milanvanschaik.com"
- }
- },
- "username": "milanvanschaik",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "The Netherlands",
- "bio": ""
- },
- "timestamp": "2022-01-16T18:52:53.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Mark",
- "isHireable": false,
- "url": "https://github.com/md97212",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-16T18:17:30Z"
- }
- ]
- }
- },
- "username": "md97212",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "Qwizics",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-16T18:17:30.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Adrian Strzała",
- "isHireable": true,
- "url": "https://github.com/a-strzala",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-16T18:14:49Z"
- }
- ]
- }
- },
- "username": "a-strzala",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-16T18:14:49.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642351998.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "alejandro_garner",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T16:53:18.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642350475.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kristen_davis",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T16:27:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642349149.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "randy_bolton",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T16:05:49.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642346841.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "michelle_calderon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T15:27:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/aiaibabagit",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-16T15:23:51Z"
- }
- ]
- }
- },
- "username": "aiaibabagit",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-16T15:23:51.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642345903.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tara_norman",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T15:11:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642345595.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "bryan_holland",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T15:06:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642344103.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "james_johnson",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T14:41:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642343990.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "thomas_moreno",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T14:39:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "name": "nhost",
- "url": "https://github.com/pontus-karlsson/nhost",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/pontus-karlsson",
- "actions": [
- {
- "score": 3,
- "timestamp": "2022-01-16T12:29:41Z"
- }
- ]
- }
- },
- "username": "pontus-karlsson",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-16T12:29:41.000Z",
- "type": "fork",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642334004.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "benjamin_howard",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T11:53:24.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642332739.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "scott_frye",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T11:32:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642332124.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kelly_lambert",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T11:22:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642330851.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tara_norman",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T11:00:51.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642326715.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "melissa_byrd",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T09:51:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/lewis-ing",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-16T09:09:57Z"
- }
- ]
- }
- },
- "username": "lewis-ing",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-16T09:09:57.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642322819.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "robert_harmon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T08:46:59.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/Davy1988",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-16T08:13:28Z"
- }
- ]
- }
- },
- "username": "Davy1988",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-16T08:13:28.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642313186.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stephanie_allen",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T06:06:26.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642312660.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "martha_calhoun",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T05:57:40.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642311511.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "robert_harmon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T05:38:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642305673.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tony_blevins",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T04:01:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642304385.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "michelle_calderon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T03:39:45.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642303663.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tony_blevins",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T03:27:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642297262.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "scott_frye",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T01:41:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642292383.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "joseph_quinn",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T00:19:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642291845.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "randy_bolton",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-16T00:10:45.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642285782.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "benjamin_howard",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T22:29:42.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642285394.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "ethan_clay",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T22:23:14.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642283080.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "michelle_calderon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T21:44:40.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642282759.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "lucas_marquez",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T21:39:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642281887.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "ethan_clay",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T21:24:47.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642281711.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "joseph_quinn",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T21:21:51.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642279975.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "donna_colon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T20:52:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642274112.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stephanie_allen",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T19:15:12.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642273952.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "heidi_oconnor",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T19:12:32.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642272108.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "dawn_bridges",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T18:41:48.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642265397.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stephanie_allen",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T16:49:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642264832.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "martha_calhoun",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T16:40:32.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642259323.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "gail_white",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T15:08:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642256160.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "bryan_holland",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T14:16:00.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642255128.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "john_henry",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T13:58:48.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642251801.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "dawn_bridges",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T13:03:21.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642245406.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "benjamin_howard",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T11:16:46.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642241445.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "evan_stevenson",
- "type": "member",
- "score": 3,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T10:10:45.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642237588.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "casey_smith",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T09:06:28.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642235557.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "lucas_marquez",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T08:32:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642227291.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "corey_williams",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T06:14:51.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642226184.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "melissa_byrd",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T05:56:24.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/hasura-backend-plus"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "stokhm",
- "isHireable": false,
- "url": "https://github.com/stokhm"
- }
- },
- "username": "stokhm",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "Tokyo, Japan",
- "bio": ""
- },
- "timestamp": "2022-01-15T05:06:22.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642220219.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "heidi_oconnor",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T04:16:59.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642216076.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stacy_miller",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T03:07:56.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642212515.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "michelle_calderon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T02:08:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642210568.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "david_rogers",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T01:36:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642205393.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "dawn_bridges",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T00:09:53.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642204899.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kathleen_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-15T00:01:39.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642204566.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "alejandro_garner",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T23:56:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642200401.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "ethan_clay",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T22:46:41.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Hossam Kandil",
- "isHireable": false,
- "url": "https://github.com/hokandil",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-14T22:22:27Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/kan_hossam"
- }
- },
- "username": "hokandil",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "MBC Group",
- "location": "Dubai-UAE",
- "bio": ""
- },
- "timestamp": "2022-01-14T22:22:27.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642197890.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "heidi_oconnor",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T22:04:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642191942.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "martha_calhoun",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T20:25:42.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642191520.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "michael_blair",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T20:18:40.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642190569.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kathleen_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T20:02:49.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642188064.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "ethan_clay",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T19:21:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "glaciyan",
- "isHireable": false,
- "url": "https://github.com/glaciyan",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-14T19:16:41Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/glaciyandev"
- }
- },
- "username": "glaciyan",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "Germany",
- "bio": ""
- },
- "timestamp": "2022-01-14T19:16:41.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "zxyz",
- "isHireable": true,
- "url": "https://github.com/x-t",
- "websiteUrl": "https://zxyz.gay",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-14T19:00:08Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/zedeckswhyzed"
- }
- },
- "username": "x-t",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "Student",
- "location": "Lithuania",
- "bio": "he/him // I don't understand open source, so I use GitHub as cloud storage."
- },
- "timestamp": "2022-01-14T19:00:08.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642184790.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "ethan_clay",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T18:26:30.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642183484.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "brandy_sanders",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T18:04:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Kyoungseo Park",
- "isHireable": true,
- "url": "https://github.com/Kyungseo-Park",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-14T17:12:14Z"
- }
- ]
- }
- },
- "username": "Kyungseo-Park",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "Korea - SEOIL UNIVERSITY",
- "location": "Nonhyeon-dong, Gangnam-gu, Seoul",
- "bio": "다 패고싶네."
- },
- "timestamp": "2022-01-14T17:12:14.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642179164.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "marie_warner",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T16:52:44.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642179073.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "casey_smith",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T16:51:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642178047.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kelly_lambert",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T16:34:07.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642177757.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "lindsay_gaines",
- "type": "member",
- "score": 1,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T16:29:17.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642174956.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "gail_white",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:42:36.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Seungwoo hong",
- "isHireable": true,
- "url": "https://github.com/hongsw",
- "websiteUrl": "https://medium.com/@hongseungwoo",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-14T15:36:19Z"
- }
- ]
- }
- },
- "username": "hongsw",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "Seungwoo",
- "location": "Seoul, Republic of Korea",
- "bio": "digital nomad, Doer, Works with Elixir / Phoenix!"
- },
- "timestamp": "2022-01-14T15:36:19.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "raised_hands",
- "slackId": "1642174158.002200",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:29:18.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "raised_hands",
- "slackId": "1642174158.002200",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:29:18.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "raised_hands",
- "slackId": "1642174158.002200",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-14T15:29:18.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "raised_hands",
- "slackId": "1642174158.002200",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:29:18.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sunglasses",
- "slackId": "1642174155.002100",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:29:15.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sunglasses",
- "slackId": "1642174155.002100",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:29:15.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sunglasses",
- "slackId": "1642174155.002100",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-14T15:29:15.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sunglasses",
- "slackId": "1642174155.002100",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:29:15.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "and 3 leads in one day - waitlist is back at growing :sunglasses:",
- "channel": "sign-ups",
- "slackId": "1642174135.002000",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642174135002000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:28:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "and 3 leads in one day - waitlist is back at growing :sunglasses:",
- "channel": "sign-ups",
- "slackId": "1642174135.002000",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642174135002000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:28:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "and 3 leads in one day - waitlist is back at growing :sunglasses:",
- "channel": "sign-ups",
- "slackId": "1642174135.002000",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642174135002000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:28:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "and 3 leads in one day - waitlist is back at growing :sunglasses:",
- "channel": "sign-ups",
- "slackId": "1642174135.002000",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642174135002000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:28:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "muscle",
- "slackId": "1642174126.001700",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:28:46.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "muscle",
- "slackId": "1642174126.001700",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:28:46.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "muscle",
- "slackId": "1642174126.001700",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-14T15:28:46.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "muscle",
- "slackId": "1642174126.001700",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:28:46.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "si",
- "channel": "sign-ups",
- "slackId": "1642174112.001400",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642174112001400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:28:32.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "si",
- "channel": "sign-ups",
- "slackId": "1642174112.001400",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642174112001400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:28:32.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "si",
- "channel": "sign-ups",
- "slackId": "1642174112.001400",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642174112001400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:28:32.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "si",
- "channel": "sign-ups",
- "slackId": "1642174112.001400",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642174112001400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:28:32.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "good lead?",
- "channel": "sign-ups",
- "slackId": "1642173987.001000",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642173987001000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:26:27.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "good lead?",
- "channel": "sign-ups",
- "slackId": "1642173987.001000",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642173987001000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:26:27.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "good lead?",
- "channel": "sign-ups",
- "slackId": "1642173987.001000",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642173987001000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-14T15:26:27.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "good lead?",
- "channel": "sign-ups",
- "slackId": "1642173987.001000",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642173987001000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:26:27.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "pam pam pam :rocket:",
- "channel": "sign-ups",
- "slackId": "1642173939.000700",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642173939000700"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:25:39.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "pam pam pam :rocket:",
- "channel": "sign-ups",
- "slackId": "1642173939.000700",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642173939000700"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:25:39.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "pam pam pam :rocket:",
- "channel": "sign-ups",
- "slackId": "1642173939.000700",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642173939000700"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:25:39.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "pam pam pam :rocket:",
- "channel": "sign-ups",
- "slackId": "1642173939.000700",
- "url": "https://crowddevspace.slack.com/archives/C029LDRDU6R/p1642173939000700"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T15:25:39.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Markus Düttmann",
- "isHireable": false,
- "url": "https://github.com/duett",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-26T10:41:06Z"
- }
- ]
- }
- },
- "username": "duett",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-14T14:14:01.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642165965.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tony_blevins",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T13:12:45.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Interesting to see they have the biz model you guys were talking about",
- "channel": "random",
- "slackId": "1642165654.001300",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642165654001300?thread_ts=1642165469.001100&cid=C01NBUP9DAR",
- "thread": {
- "id": "1642165469.001100",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T13:07:34.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Interesting to see they have the biz model you guys were talking about",
- "channel": "random",
- "slackId": "1642165654.001300",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642165654001300?thread_ts=1642165469.001100&cid=C01NBUP9DAR",
- "thread": {
- "id": "1642165469.001100",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T13:07:34.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Interesting to see they have the biz model you guys were talking about",
- "channel": "random",
- "slackId": "1642165654.001300",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642165654001300?thread_ts=1642165469.001100&cid=C01NBUP9DAR",
- "thread": {
- "id": "1642165469.001100",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-14T13:07:34.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Interesting to see they have the biz model you guys were talking about",
- "channel": "random",
- "slackId": "1642165654.001300",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642165654001300?thread_ts=1642165469.001100&cid=C01NBUP9DAR",
- "thread": {
- "id": "1642165469.001100",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T13:07:34.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1642165469.001100",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642165469001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T13:04:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1642165469.001100",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642165469001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T13:04:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1642165469.001100",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642165469001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T13:04:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1642165469.001100",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642165469001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T13:04:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Changes proposed\n\nAdd bio, location, joinedAt, organisation to Member's form\nTweak Member's form input fields sizes\n\nChecklist 🔏\nSome important checks that must be ensured before merging:\nDeploy to staging\nDeployment checklist\n\n Make sure all AWS λ functions are up to date with your version (if applicable)\n Make sure the anton-environment and soa-environment are updated and pushed\n\nFunctionality\n\n Has the functionality been checked in a normal staging tenant? (not local)\n Has the functionality been checked in the large tenant? (team+large@crowd.dev)\n Has the functionality been checked in an empty tenant? (team+empty@crowd.dev)\n Is there any more edge cases that should be taken into account?\n\nCode quality\n\n Are there comments in the main functionality of the code?\n Are all tests passing?\n Are all URLs to external services in .env files? Never hard-coded\n Are all secrets in anton-environment? Never, ever hard-coded\n\n🔥🚀💪🏼",
- "title": "Add missing member fields to form",
- "state": "open",
- "url": "https://github.com/CrowdHQ/crowd-web/pull/68",
- "repo": "https://github.com/CrowdHQ/crowd-web"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "mariobalca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-14T12:59:45.000Z",
- "type": "pull_request-opened",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642162658.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "corey_williams",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T12:17:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642161002.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "joseph_quinn",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T11:50:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642157342.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "brenda_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T10:49:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642156360.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "heidi_oconnor",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T10:32:40.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642156193.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "madison_miller",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T10:29:53.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Looks promising! Might give it a try ",
- "channel": "random",
- "slackId": "1642156081.000900",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642156081000900?thread_ts=1642151221.000200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1642151221.000200",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T10:28:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Looks promising! Might give it a try ",
- "channel": "random",
- "slackId": "1642156081.000900",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642156081000900?thread_ts=1642151221.000200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1642151221.000200",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T10:28:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Looks promising! Might give it a try ",
- "channel": "random",
- "slackId": "1642156081.000900",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642156081000900?thread_ts=1642151221.000200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1642151221.000200",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-14T10:28:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Looks promising! Might give it a try ",
- "channel": "random",
- "slackId": "1642156081.000900",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642156081000900?thread_ts=1642151221.000200&cid=C01NBUP9DAR",
- "thread": {
- "id": "1642151221.000200",
- "body": ""
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T10:28:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642154189.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "david_boyd",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T09:56:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/hasura-backend-plus"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/strikeout"
- }
- },
- "username": "strikeout",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-14T09:33:28.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1642151221.000200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642151221000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T09:07:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1642151221.000200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642151221000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T09:07:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1642151221.000200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642151221000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T09:07:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1642151221.000200",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642151221000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T09:07:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642149823.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stephanie_allen",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T08:43:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642149784.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "melissa_byrd",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T08:43:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642148194.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "alejandro_garner",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T08:16:34.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/hasura-backend-plus"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/SkyleLai",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-14T08:02:21Z"
- }
- ]
- }
- },
- "username": "SkyleLai",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-14T08:05:20.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/SkyleLai",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-14T08:02:21Z"
- }
- ]
- }
- },
- "username": "SkyleLai",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-14T08:02:21.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642145905.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "benjamin_howard",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T07:38:25.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642142548.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "scott_frye",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T06:42:28.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642140846.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stephanie_allen",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T06:14:06.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642138418.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "donna_colon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T05:33:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642138177.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "bryan_holland",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T05:29:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642138063.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "david_rogers",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T05:27:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642137859.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "madison_miller",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T05:24:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642120287.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tara_norman",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T00:31:27.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642119273.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "brenda_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-14T00:14:33.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642115783.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "martha_calhoun",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T23:16:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642113394.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "ethan_clay",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T22:36:34.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642113001.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "michelle_calderon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T22:30:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642112975.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "krystal_summers",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T22:29:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642112543.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "dr._rebecca_nelson",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T22:22:23.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642112501.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "laura_armstrong",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T22:21:41.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642112373.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stephanie_allen",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T22:19:33.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642111156.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "martha_calhoun",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T21:59:16.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642110466.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "corey_williams",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T21:47:46.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642108421.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "gail_white",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T21:13:41.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642102573.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stephanie_allen",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T19:36:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642099589.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "alejandro_garner",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T18:46:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Description\nRemove workspaces from the menu and add the proper API docs.\nThe workspaces are commented out since we will definitely need them later on.\nChecklist 🔏\nSome important checks that must be ensured before merging:\nDeploy to staging\nDeployment checklist\n\n Make sure all AWS λ functions are up to date with your version (if applicable)\n Make sure the anton-environment and soa-environment are updated and pushed\n\nFunctionality\n\n Has the functionality been checked in a normal staging tenant? (not local)\n Has the functionality been checked in the large tenant? (team+large@crowd.dev)\n Has the functionality been checked in an empty tenant? (team+empty@crowd.dev)\n Is there any more edge cases that should be taken into account?\n\nCode quality\n\n Are there comments in the main functionality of the code?\n Are all URLs to external services in .env files? Never hard-coded\n Are all secrets in anton-environment? Never, ever hard-coded\n\n🔥🚀💪🏼",
- "title": "Commented out workspaces",
- "state": "merged",
- "url": "https://github.com/CrowdHQ/crowd-web/pull/67",
- "repo": "https://github.com/CrowdHQ/crowd-web"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "joanreyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-13T17:38:22.000Z",
- "type": "pull_request-closed",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642092012.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "gail_white",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T16:40:12.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I might be able to join in 10mins",
- "channel": "random",
- "slackId": "1642087893.001100",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642087893001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T15:31:33.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I might be able to join in 10mins",
- "channel": "random",
- "slackId": "1642087893.001100",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642087893001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T15:31:33.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I might be able to join in 10mins",
- "channel": "random",
- "slackId": "1642087893.001100",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642087893001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-13T15:31:33.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "I might be able to join in 10mins",
- "channel": "random",
- "slackId": "1642087893.001100",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642087893001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-13T15:31:33.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sorry, have to skip coffee break. I am in the middle of something.",
- "channel": "random",
- "slackId": "1642087825.000400",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642087825000400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T15:30:25.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sorry, have to skip coffee break. I am in the middle of something.",
- "channel": "random",
- "slackId": "1642087825.000400",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642087825000400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T15:30:25.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sorry, have to skip coffee break. I am in the middle of something.",
- "channel": "random",
- "slackId": "1642087825.000400",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642087825000400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T15:30:25.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sorry, have to skip coffee break. I am in the middle of something.",
- "channel": "random",
- "slackId": "1642087825.000400",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642087825000400"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T15:30:25.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sunglasses",
- "slackId": "1642086472.000400",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T15:07:52.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sunglasses",
- "slackId": "1642086472.000400",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T15:07:52.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sunglasses",
- "slackId": "1642086472.000400",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T15:07:52.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "sunglasses",
- "slackId": "1642086472.000400",
- "channel": "sign-ups"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T15:07:52.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642083575.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "brenda_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T14:19:35.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642082651.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tony_blevins",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T14:04:11.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642081704.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "alejandro_garner",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T13:48:24.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642078983.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "thomas_moreno",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T13:03:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642075765.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stacy_miller",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T12:09:25.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "From Joan",
- "slackId": "1642074368.000600",
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "joan",
- "type": "member",
- "score": 8,
- "email": "joan@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T11:46:08.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "New activities",
- "slackId": "1642074364.000400",
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "joan",
- "type": "member",
- "score": 8,
- "email": "joan@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T11:46:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Some more here",
- "slackId": "1642074362.000200",
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "joan",
- "type": "member",
- "score": 8,
- "email": "joan@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T11:46:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Pouplating mroe",
- "slackId": "1642074357.000500",
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "joan",
- "type": "member",
- "score": 8,
- "email": "joan@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T11:45:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Pouplating",
- "slackId": "1642074354.000300",
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "joan",
- "type": "member",
- "score": 8,
- "email": "joan@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T11:45:54.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642074051.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "robert_harmon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T11:40:51.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642072209.002100",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are..."
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T11:10:09.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642072209.002100",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are..."
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T11:10:09.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642072209.002100",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are..."
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-13T11:10:09.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642072209.002100",
- "thread": {
- "id": "1642069668.001600",
- "body": "seems like the graphs are..."
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T11:10:09.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642071353.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "randy_bolton",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T10:55:53.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@elitan Could you add Auth0 support? It looks like vanilla Hasura supports it: https://hasura.io/docs/latest/graphql/core/guides/integrations/auth0-jwt.html\n\nAny specific reason for wanting to use Auth0?",
- "title": "UI for OAuth providers",
- "parent_url": "https://github.com/nhost/nhost/issues/1",
- "url": "https://github.com/nhost/nhost/issues/1#issuecomment-1012007794",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Johan Eliasson",
- "isHireable": false,
- "url": "https://github.com/elitan",
- "websiteUrl": "https://nhost.io",
- "actions": [
- {
- "score": 3,
- "timestamp": "2021-03-01T15:34:14Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/elitasson"
- }
- },
- "username": "elitan",
- "type": "member",
- "score": 10,
- "email": "johan@eliasson.me",
- "organisation": "",
- "location": "The Internet",
- "bio": "Exploiting regularities to my benefit."
- },
- "timestamp": "2022-01-13T10:36:37.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1642069668.001600",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642069668001600"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T10:27:48.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1642069668.001600",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642069668001600"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T10:27:48.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1642069668.001600",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642069668001600"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T10:27:48.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "bugs",
- "slackId": "1642069668.001600",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642069668001600"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T10:27:48.000Z",
- "type": "file_share",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642069415.001100",
- "thread": {
- "id": "1642069396.000900",
- "body": "when connecting Discord the status..."
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T10:23:35.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642069415.001100",
- "thread": {
- "id": "1642069396.000900",
- "body": "when connecting Discord the status..."
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T10:23:35.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642069415.001100",
- "thread": {
- "id": "1642069396.000900",
- "body": "when connecting Discord the status..."
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-13T10:23:35.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642069415.001100",
- "thread": {
- "id": "1642069396.000900",
- "body": "when connecting Discord the status..."
- },
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-13T10:23:35.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "when connecting GitHub the status stays on “in progress” forever (even though the data source is connected)",
- "channel": "bugs",
- "slackId": "1642069396.000900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642069396000900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T10:23:16.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "when connecting GitHub the status stays on “in progress” forever (even though the data source is connected)",
- "channel": "bugs",
- "slackId": "1642069396.000900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642069396000900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T10:23:16.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "when connecting GitHub the status stays on “in progress” forever (even though the data source is connected)",
- "channel": "bugs",
- "slackId": "1642069396.000900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642069396000900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T10:23:16.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "when connecting GitHub the status stays on “in progress” forever (even though the data source is connected)",
- "channel": "bugs",
- "slackId": "1642069396.000900",
- "url": "https://crowddevspace.slack.com/archives/C02LWNKS17B/p1642069396000900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T10:23:16.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "A",
- "channel": "c1"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-03T18:09:50Z"
- }
- ]
- },
- "discord": {}
- },
- "username": "joanreyero",
- "type": "member",
- "score": 10,
- "email": "joan@crowd.dev",
- "organisation": "@CrowdDevHQ",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-13T10:23:03.084Z",
- "type": "message",
- "isContribution": true,
- "platform": "discord"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642068760.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "karen_andrews",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T10:12:40.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642067498.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "david_cunningham",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T09:51:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642067399.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "john_henry",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T09:49:59.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642065919.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "benjamin_howard",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T09:25:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@elitan Could you add Auth0 support? It looks like vanilla Hasura supports it: https://hasura.io/docs/latest/graphql/core/guides/integrations/auth0-jwt.html",
- "title": "UI for OAuth providers",
- "parent_url": "https://github.com/nhost/nhost/issues/1",
- "url": "https://github.com/nhost/nhost/issues/1#issuecomment-1011949365",
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Max Reynolds",
- "isHireable": false,
- "url": "https://github.com/MarcelloTheArcane",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-27T16:48:47Z"
- }
- ]
- }
- },
- "username": "MarcelloTheArcane",
- "type": "member",
- "score": 5,
- "email": "",
- "organisation": "",
- "location": "United Kingdom",
- "bio": "buymeacoffee.com/maxdotreynolds"
- },
- "timestamp": "2022-01-13T09:24:30.000Z",
- "type": "issue-comment",
- "isContribution": true,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "sample": true
- },
- "member": {
- "crowdInfo": {
- "discord": {
- "name": "Jason Chapman"
- },
- "crowd": {
- "sample": true
- }
- },
- "username": "jason_chapman",
- "type": "member",
- "score": 4,
- "email": "jason.chapman@gmail.com",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-13T09:21:36.481Z",
- "type": "joined_community",
- "isContribution": true,
- "platform": "discord"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642063284.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "heidi_oconnor",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T08:41:24.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "sample": true
- },
- "member": {
- "crowdInfo": {
- "twitter": {
- "name": "Nichole Owen",
- "organisation": "PiedPieper.io"
- },
- "crowd": {
- "sample": true
- }
- },
- "username": "nichole_owen",
- "type": "member",
- "score": 3,
- "email": "nichole.owen@PiedPieper.io",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-13T07:38:45.481Z",
- "type": "joined_community",
- "isContribution": true,
- "platform": "twitter"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642057969.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "dawn_bridges",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T07:12:49.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642057072.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "brenda_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T06:57:52.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642055833.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "karen_andrews",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T06:37:13.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642054652.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "mason_strickland",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T06:17:32.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642053609.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "david_boyd",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T06:00:09.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "sample": true
- },
- "member": {
- "crowdInfo": {
- "discord": {
- "name": "Mary Holt",
- "organisation": "PiedPieper.io"
- },
- "crowd": {
- "sample": true
- }
- },
- "username": "mary_holt",
- "type": "member",
- "score": 1,
- "email": "mary.holt@PiedPieper.io",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-13T05:31:04.481Z",
- "type": "contributed_to_community",
- "isContribution": false,
- "platform": "discord"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642046549.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "dawn_bridges",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T04:02:29.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "sample": true
- },
- "member": {
- "crowdInfo": {
- "discord": {
- "name": "Zachary Fletcher",
- "organisation": "PiedPieper.io"
- },
- "crowd": {
- "sample": true
- }
- },
- "username": "zachary_fletcher",
- "type": "member",
- "score": 5,
- "email": "zachary.fletcher@PiedPieper.io",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-13T03:29:54.481Z",
- "type": "joined_community",
- "isContribution": true,
- "platform": "hubspot"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642044565.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "sherri_butler",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T03:29:25.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642043511.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "brandy_sanders",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T03:11:51.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642042504.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "jordan_wilson",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T02:55:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642041750.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stacy_miller",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T02:42:30.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642041015.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "thomas_moreno",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T02:30:15.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/agergo",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-13T01:34:54Z"
- }
- ]
- }
- },
- "username": "agergo",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-13T01:34:54.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642037317.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "donna_colon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T01:28:37.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642036483.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "donna_colon",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T01:14:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642035902.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "karen_davis",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T01:05:02.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642033970.083923,
- "channel": "bugs"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "stacy_miller",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T00:32:50.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642033399.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "casey_smith",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-13T00:23:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "sample": true
- },
- "member": {
- "crowdInfo": {
- "twitter": {
- "name": "Christian Hoffman",
- "organisation": "PiedPieper.io"
- },
- "crowd": {
- "sample": true
- }
- },
- "username": "christian_hoffman",
- "type": "member",
- "score": 5,
- "email": "christian.hoffman@PiedPieper.io",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-12T23:54:26.481Z",
- "type": "joined_community",
- "isContribution": true,
- "platform": "twitter"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642030421.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "martha_calhoun",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T23:33:41.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642029355.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "sherri_butler",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T23:15:55.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642026519.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "casey_smith",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T22:28:39.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Leynier Gutiérrez González",
- "isHireable": true,
- "url": "https://github.com/leynier",
- "websiteUrl": "leynier.dev",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-12T21:43:42Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/leynier41"
- }
- },
- "username": "leynier",
- "type": "member",
- "score": 0,
- "email": "leynier41@gmail.com",
- "organisation": "@educup @lynotofficial @matcom",
- "location": "La Habana, Cuba",
- "bio": "Head of Engineering at @educup, CTO/Co-founder of mesirve.app - @lynotofficial, Professor at @matcom and #opensource enthusiast"
- },
- "timestamp": "2022-01-12T21:43:42.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642022404.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "dawn_bridges",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T21:20:04.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642022239.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "kathleen_jones",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T21:17:19.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642020427.083923,
- "channel": "general"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "bryan_holland",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T20:47:07.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Harald Hanek",
- "isHireable": true,
- "url": "https://github.com/harrydeluxe",
- "websiteUrl": "www.delacap.com",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-12T20:45:44Z"
- }
- ]
- }
- },
- "username": "harrydeluxe",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "DELACAP",
- "location": "Nürnberg, Germany",
- "bio": "If it’s in the browser, i can do it."
- },
- "timestamp": "2022-01-12T20:45:44.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "aaron cohen",
- "isHireable": false,
- "url": "https://github.com/avcohen",
- "websiteUrl": "https://avc.dev",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-12T20:43:04Z"
- }
- ]
- }
- },
- "username": "avcohen",
- "type": "member",
- "score": 0,
- "email": "avcohen@gmail.com",
- "organisation": "",
- "location": "afk",
- "bio": ""
- },
- "timestamp": "2022-01-12T20:43:04.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "sample": true
- },
- "member": {
- "crowdInfo": {
- "hubspot": {
- "name": "Paul Foley MD"
- },
- "crowd": {
- "sample": true
- }
- },
- "username": "paul_foley_md",
- "type": "member",
- "score": 4,
- "email": "paul.foley.md@gmail.com",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-12T20:19:02.481Z",
- "type": "joined_community",
- "isContribution": true,
- "platform": "hubspot"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "isHireable": false,
- "url": "https://github.com/artistic-differences",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-12T19:42:53Z"
- }
- ]
- }
- },
- "username": "artistic-differences",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-12T19:42:53.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Kaiden / GL",
- "isHireable": true,
- "url": "https://github.com/glsee",
- "websiteUrl": "https://see.guol.in",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-12T17:43:13Z"
- }
- ]
- },
- "twitter": {
- "url": "https://twitter.com/glsee"
- }
- },
- "username": "glsee",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "Kuala Lumpur, Malaysia",
- "bio": "🦄 seasoned technical leader and builder. CTO for hire. PSM I. Occasionally conducts trainings, coding crash courses & talks. External examiner for uni."
- },
- "timestamp": "2022-01-12T17:43:13.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642009383.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tony_blevins",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T17:43:03.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "sample": true
- },
- "member": {
- "crowdInfo": {
- "hubspot": {
- "name": "Nicholas Whitehead",
- "organisation": "Crowd.dev"
- },
- "crowd": {
- "sample": true
- }
- },
- "username": "nicholas_whitehead",
- "type": "member",
- "score": 4,
- "email": "nicholas.whitehead@Crowd.dev",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-12T17:42:27.481Z",
- "type": "joined_community",
- "isContribution": true,
- "platform": "apis"
- },
- {
- "crowdInfo": {
- "body": "Testing a message, from @joanreyero",
- "channel": "c1"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-03T18:09:50Z"
- }
- ]
- },
- "discord": {}
- },
- "username": "joanreyero",
- "type": "member",
- "score": 10,
- "email": "joan@crowd.dev",
- "organisation": "@CrowdDevHQ",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-12T17:32:24.617Z",
- "type": "message",
- "isContribution": true,
- "platform": "discord"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642008636.001900",
- "thread": {
- "id": "1642004191.001000",
- "body": "..."
- },
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T17:30:36.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642008636.001900",
- "thread": {
- "id": "1642004191.001000",
- "body": "..."
- },
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T17:30:36.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642008636.001900",
- "thread": {
- "id": "1642004191.001000",
- "body": "..."
- },
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-12T17:30:36.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642008636.001900",
- "thread": {
- "id": "1642004191.001000",
- "body": "..."
- },
- "channel": "random"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-12T17:30:36.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "sample": true
- },
- "member": {
- "crowdInfo": {
- "apis": {
- "name": "John Brown"
- },
- "crowd": {
- "sample": true
- }
- },
- "username": "john_brown",
- "type": "member",
- "score": 3,
- "email": "john.brown@gmail.com",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-12T17:07:07.481Z",
- "type": "joined_community",
- "isContribution": true,
- "platform": "apis"
- },
- {
- "crowdInfo": {
- "body": "eyes",
- "slackId": "1642006570.001700",
- "thread": {
- "id": "1642004191.001000",
- "body": "",
- "channel": "twitter",
- "slackId": "1642004263.001500",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004263001500"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "twitter",
- "slackId": "1642004263.001500",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004263001500"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "twitter",
- "slackId": "1642004263.001500",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004263001500"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "twitter",
- "slackId": "1642004263.001500",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004263001500"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:43.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.001300",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229001300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 9,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.000900",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229000900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam",
- "phone": "+43 6601652996",
- "title": "Marketing Associate"
- }
- },
- "username": "Sofia",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.001100",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Christian Hartlage",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.000700",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229000700"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.001300",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229001300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.000900",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229000900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam",
- "phone": "+43 6601652996",
- "title": "Marketing Associate"
- }
- },
- "username": "Sofia",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.001100",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Christian Hartlage",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.000700",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229000700"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.001300",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229001300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 7,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.000900",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229000900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam",
- "phone": "+43 6601652996",
- "title": "Marketing Associate"
- }
- },
- "username": "Sofia",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.001100",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Christian Hartlage",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.000700",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229000700"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.001300",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229001300"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Asia/Istanbul",
- "phone": "+90 539 853 01 66"
- }
- },
- "username": "Anil Bostanci",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Asia/Istanbul (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.000900",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229000900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam",
- "phone": "+43 6601652996",
- "title": "Marketing Associate"
- }
- },
- "username": "Sofia",
- "type": "member",
- "score": 2,
- "email": "sofia@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.001100",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229001100"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Christian Hartlage",
- "type": "member",
- "score": 10,
- "email": "chris@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004229.000700",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004229000700"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:09.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004228.000500",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004228000500"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:08.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004228.000500",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004228000500"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:08.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004228.000500",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004228000500"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-12T16:17:08.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004228.000500",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004228000500"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-12T16:17:08.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004225.000200",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004225000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:05.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004225.000200",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004225000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:05.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004225.000200",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004225000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:05.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "channel": "twitter",
- "slackId": "1642004225.000200",
- "url": "https://crowddevspace.slack.com/archives/C02TR2E08HG/p1642004225000200"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:17:05.000Z",
- "type": "channel_joined",
- "isContribution": false,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1642004191.001000",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642004191001000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:16:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1642004191.001000",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642004191001000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:16:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1642004191.001000",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642004191001000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:16:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "",
- "channel": "random",
- "slackId": "1642004191.001000",
- "url": "https://crowddevspace.slack.com/archives/C01NBUP9DAR/p1642004191001000"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Jonathan Reimer",
- "type": "member",
- "score": 10,
- "email": "jonathan@oscape.io",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:16:31.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "sample": true
- },
- "member": {
- "crowdInfo": {
- "discord": {
- "name": "Michael Gonzalez",
- "organisation": "PiedPieper.io"
- },
- "crowd": {
- "sample": true
- }
- },
- "username": "michael_gonzalez",
- "type": "member",
- "score": 6,
- "email": "michael.gonzalez@PiedPieper.io",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-12T16:01:36.481Z",
- "type": "joined_community",
- "isContribution": true,
- "platform": "hubspot"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642002990.083923,
- "channel": "feature-ideas"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "tony_blevins",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T15:56:30.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Message here",
- "slackId": 1642001558.083923,
- "channel": "help"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "corey_williams",
- "type": "member",
- "score": 10,
- "email": "anil@crowd.dev",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T15:32:38.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/hasura-backend-plus"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "DaRwin",
- "isHireable": false,
- "url": "https://github.com/darekaze",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-12T15:30:47Z"
- }
- ]
- }
- },
- "username": "darekaze",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "Trust your Intuition",
- "location": "Macau",
- "bio": "TypeScript / Node.js / React / Rust Engineer; (💖👨💻Development, 🎼Core, 🕹️Games) => 🚢 Ship with Quality"
- },
- "timestamp": "2022-01-12T15:31:12.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "repo": "https://github.com/nhost/nhost"
- },
- "member": {
- "crowdInfo": {
- "github": {
- "name": "DaRwin",
- "isHireable": false,
- "url": "https://github.com/darekaze",
- "actions": [
- {
- "score": 2,
- "timestamp": "2022-01-12T15:30:47Z"
- }
- ]
- }
- },
- "username": "darekaze",
- "type": "member",
- "score": 0,
- "email": "",
- "organisation": "Trust your Intuition",
- "location": "Macau",
- "bio": "TypeScript / Node.js / React / Rust Engineer; (💖👨💻Development, 🎼Core, 🕹️Games) => 🚢 Ship with Quality"
- },
- "timestamp": "2022-01-12T15:30:47.000Z",
- "type": "star",
- "isContribution": false,
- "platform": "github"
- },
- {
- "crowdInfo": {
- "sample": true
- },
- "member": {
- "crowdInfo": {
- "discord": {
- "name": "Carmen Thomas",
- "organisation": "PiedPieper.io"
- },
- "crowd": {
- "sample": true
- }
- },
- "username": "carmen_thomas",
- "type": "member",
- "score": 4,
- "email": "carmen.thomas@PiedPieper.io",
- "organisation": "",
- "location": "",
- "bio": ""
- },
- "timestamp": "2022-01-12T15:24:48.481Z",
- "type": "joined_community",
- "isContribution": true,
- "platform": "apis"
- },
- {
- "crowdInfo": {
- "body": "Done",
- "channel": "dev",
- "slackId": "1641994631.008000",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994631008000?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:37:11.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Done",
- "channel": "dev",
- "slackId": "1641994631.008000",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994631008000?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:37:11.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Done",
- "channel": "dev",
- "slackId": "1641994631.008000",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994631008000?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-12T13:37:11.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Done",
- "channel": "dev",
- "slackId": "1641994631.008000",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994631008000?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-12T13:37:11.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Thanks!",
- "channel": "dev",
- "slackId": "1641994501.007800",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994501007800?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:35:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Thanks!",
- "channel": "dev",
- "slackId": "1641994501.007800",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994501007800?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:35:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Thanks!",
- "channel": "dev",
- "slackId": "1641994501.007800",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994501007800?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-12T13:35:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Thanks!",
- "channel": "dev",
- "slackId": "1641994501.007800",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994501007800?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:35:01.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Yup",
- "channel": "dev",
- "slackId": "1641994497.007600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994497007600?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:34:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Yup",
- "channel": "dev",
- "slackId": "1641994497.007600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994497007600?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:34:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Yup",
- "channel": "dev",
- "slackId": "1641994497.007600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994497007600?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-12T13:34:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Yup",
- "channel": "dev",
- "slackId": "1641994497.007600",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994497007600?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- },
- "github": {
- "name": "Joan Reyero",
- "isHireable": false,
- "url": "https://github.com/joanreyero",
- "websiteUrl": "crowd.dev",
- "bio": "Co-founder and CTO at Crowd.dev"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "@CrowdDevHQ",
- "location": "Europe/London (timezone)",
- "bio": "Co-founder and CTO at Crowd.dev"
- },
- "timestamp": "2022-01-12T13:34:57.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero commited this ^ to `main`\nCan you re-deploy?",
- "channel": "dev",
- "slackId": "1641994485.007400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994485007400?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:34:45.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero commited this ^ to `main`\nCan you re-deploy?",
- "channel": "dev",
- "slackId": "1641994485.007400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994485007400?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:34:45.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero commited this ^ to `main`\nCan you re-deploy?",
- "channel": "dev",
- "slackId": "1641994485.007400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994485007400?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-12T13:34:45.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "@Joan Reyero commited this ^ to `main`\nCan you re-deploy?",
- "channel": "dev",
- "slackId": "1641994485.007400",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994485007400?thread_ts=1641991303.004500&cid=C01NBV2BDDK",
- "thread": {
- "id": "1641991303.004500",
- "body": "Hey @Jonathan Reimer @Joan Re..."
- }
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:34:45.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1641994386.007300",
- "thread": {
- "id": "1641993654.005500",
- "body": "yes! :+1:..."
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:33:06.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1641994386.007300",
- "thread": {
- "id": "1641993654.005500",
- "body": "yes! :+1:..."
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:33:06.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1641994386.007300",
- "thread": {
- "id": "1641993654.005500",
- "body": "yes! :+1:..."
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-12T13:33:06.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "white_check_mark",
- "slackId": "1641994386.007300",
- "thread": {
- "id": "1641993654.005500",
- "body": "yes! :+1:..."
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:33:06.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "pray",
- "slackId": "1641994382.007200",
- "thread": {
- "id": "1641994330.006900",
- "body": "Latest reports version is in...."
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:33:02.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "pray",
- "slackId": "1641994382.007200",
- "thread": {
- "id": "1641994330.006900",
- "body": "Latest reports version is in...."
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:33:02.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "pray",
- "slackId": "1641994382.007200",
- "thread": {
- "id": "1641994330.006900",
- "body": "Latest reports version is in...."
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-12T13:33:02.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "pray",
- "slackId": "1641994382.007200",
- "thread": {
- "id": "1641994330.006900",
- "body": "Latest reports version is in...."
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:33:02.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1641994378.007100",
- "thread": {
- "id": "1641994330.006900",
- "body": "Latest reports version is in...."
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:32:58.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1641994378.007100",
- "thread": {
- "id": "1641994330.006900",
- "body": "Latest reports version is in...."
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:32:58.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1641994378.007100",
- "thread": {
- "id": "1641994330.006900",
- "body": "Latest reports version is in...."
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- },
- "github": {
- "name": "Mário Balça",
- "isHireable": true,
- "url": "https://github.com/mariobalca",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io",
- "location": "Coimbra, Portugal"
- },
- "twitter": {
- "url": "https://twitter.com/mariobalca"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "@CrowdHQ | @tweetboard-io",
- "location": "Europe/London (timezone)",
- "bio": "Full Stack Developer @CrowdHQ | Building @tweetboard-io in public | Previously founded @ripplr-io"
- },
- "timestamp": "2022-01-12T13:32:58.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "+1",
- "slackId": "1641994378.007100",
- "thread": {
- "id": "1641994330.006900",
- "body": "Latest reports version is in...."
- },
- "channel": "dev"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/London"
- }
- },
- "username": "Mario Balca",
- "type": "member",
- "score": 10,
- "email": "mario@crowd.dev",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:32:58.000Z",
- "type": "reaction_added",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Latest reports version is in staging :muscle::skin-tone-3:\nIf your widgets show flat you need to do this for each widget:\n\n(only happens for widgets created before today)",
- "channel": "dev",
- "slackId": "1641994330.006900",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994330006900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 10,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/Amsterdam (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:32:10.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Latest reports version is in staging :muscle::skin-tone-3:\nIf your widgets show flat you need to do this for each widget:\n\n(only happens for widgets created before today)",
- "channel": "dev",
- "slackId": "1641994330.006900",
- "url": "https://crowddevspace.slack.com/archives/C01NBV2BDDK/p1641994330006900"
- },
- "member": {
- "crowdInfo": {
- "slack": {
- "timezone": "Europe/Amsterdam"
- }
- },
- "username": "Joan Reyero",
- "type": "member",
- "score": 8,
- "email": "joanreyero@gmail.com",
- "organisation": "",
- "location": "Europe/London (timezone)",
- "bio": ""
- },
- "timestamp": "2022-01-12T13:32:10.000Z",
- "type": "message",
- "isContribution": true,
- "platform": "slack"
- },
- {
- "crowdInfo": {
- "body": "Latest reports version is in staging :muscle::skin-tone-3:\nIf your widgets show flat you need to do this for each widget:\n |